見出し画像

BigQueryとスペイシャルSQL

SQLのインタビュー問題をまた更新していきますが、SQLをやる上でGoogle BigQuery、Snowflake、Amazon Redshiftの存在は大きいです。2年前はそうでもありませんでしたがBigQueryでなら、SQLでBigData GISや機械学習モデルさえ実行できるようになってきました。

今ではデータウェアハウス上でもSpatial SQL(スペイシャル SQL)が使えるようになりました。SPATIALは位置情報や地理情報、空間分析でよく使われる単語です。PostgreSQLのPostGISを使った事がある人なるご存知かと思いますが、ある店や建築物がこのエリアに含まれているかどうかとか、この緯度・経度からGeohashを割り出し、グリッドデータと紐付けて天気や衛星情報を得るなどの、地理情報と関連した検索ができるようになります。もちろんこういう事はこれまでもできてはいたのですが、BigQueryの名前が示すように数百GBやTBのデータのような大量データの中からでも数十秒から数分以内に結果を割り出してくれます。なので、これから更にデータが増え、そのデータを使って機械学習が行われていく現在、SQLを知っておく価値は更に高まりました。

アメリカでデータサイエンティストやデータエンジニアの仕事に関わっていれば、Amazon AWS, Google Cloud Platform, Microsoft Azureのどれかに、もしくは全てに関わる事があると思います。データウェアハウスでいうならAmazon Redshift, Snowflake, BigQueryでしょうか。データサイエンティストでありながら、データエンジニアリングと重なる所はよくありますし、エンジニアリング部分に関わることでAutomation、Pipeline、Orchestrationの設定を通してよりスムーズにモデルの実行をできるようになります。なのでデータサイエンティストでありながら、データエンジニアリングの知識や技術を求められる事はしばしばあります。

SQLがデータを取る存在だけであったのは一昔前の話ですが、未だその感覚でSQLでデータをデータウェアハウスからとってきてから自分のモデルの実行をするパターンはよくあると思います。しかしクラウド側で出来ることが増えるにつれ、更にデータウェアハウス側で機械学習モデルも実行する例が増えていくと思います。

機械学習において大事なのはトレーニングの速度もそうですが、実際にプロダクションで使われる速度です。そうするとトランザクショナルデータベース(リレーショナルデータベース)とは切り離した分析に特化したデータウェアハウスの存在が外せません。その点でもSQLの力は必須です。

これまでのデータベースへのアクセスを含むAPIを利用したやり方だと、下手をすると数時間ぐらいかかっていた処理がデータウェアハウスを活かすと数十秒で済むようになるからです。

例えば自分がいる周辺やある地点の天気予報をするとします。実際、一箇所の緯度・経度の情報を元に天気情報を取得する場合はAPIを利用した方が速いです。ウェブアプリなどではそれでいいかもしれませんが、データサイエンスとして分析する場合は、100箇所、1000箇所、10000箇所といった地点を調べることになります。APIを利用した場合なら試しとしてFor loop + Async + Multiprocessingの組み合わせで実行なるかもしれませんが、それでもそれぞれの緯度・経度に対応する衛星のグリッド情報を入手するだけでも数分はかかる可能性があります。しかしデータウェアハウスを使えばそれが数秒ですみます。

アメリカの大企業の技術面接問題ではSQLの事が聞かれます。まあ他のプログラミング言語問題に比べたら重要度は仕事内容によるかもしれません。ですがSQLを使えるのは強みです。DBのインデックス化やSQLコードを変えてスピードアップとかチューニングなど余計なことを考えないで済むのがデータウェアハウスです。Google BigQueryは無料で始められるのでぜひ試してみてください。

ここから先は

0字
1度限りなのでマガジンで購入される方が断然お得です

Google BigQueryなどSQLを使う場はこれまでもそしてこれからも存在します。このマガジンでは、アメリカのデータエンジニアやデー…

この記事が気に入ったらサポートをしてみませんか?