機械学習に欠かせないデータウェアハウス Google BigQuery

Google BigQuery

Google BigQuery (以下 BigQuery) は、Google が提供しているGoogle Cloud Platform (以下GCP) のサービスの一つであり、スケーラビリティに優れたフルマネージドなデータウェアハウスです。Googleの発表によると、インデックスなしでテラバイトであれば数秒、ペタバイトであれば数分でスキャンできるそうです。

一般的なウェブシステムであれば、マスターデータやユーザデータなどはMySQLなどのRDBMSに書き込んだり、システムのログなどはクラウドストレージに保存したりしているでしょう。では機械学習を行っていると、その元となる教師データなどはどこに保存すればいいでしょうか。データは少なくとも何ギガバイト、種類によると何テラバイトもの膨大なものでしょう。また機械学習の演算のために効率よくデータを取得できる必要があります。BigQueryは、そのようなデータの格納場所に適しているといえるでしょう。
https://cloud.google.com/bigquery/

BigQueryの利用

GCPには多くのデータベースサービスが備わっており、例えばGoogle Cloud SQLではGCPのコンソール画面からDBサーバを立ち上げることから始めます。しかし、このBigQueryはサーバレスな環境で用意されており、直ぐに利用開始することができます。

GCPのコンソール画面よりプロジェクトを選択します。次にナビゲーションメニューより「BigQuery」を選択します。すると下の「BigQuery」画面が表示されるでしょう。画面左にプロジェクトIDが表示されています。このプロジェクトを選択した状態で、画面右にある「データセットを作成」を押下して下さい。データセットとは、テーブルをまとめるためのグループだと思って下さい。

BigQuery

適切なデータセットIDを入力し、データのロケーションを選択して下さい。ここでは「東京 (asia-northeast1)」としています。ここで選択したデータのロケーションは必ず覚えておいて下さい。

データセットの作成

これでデータセットが作成されました。次にテーブルを作成します。「テーブルを作成」を押下して下さい。ここでは下記のように設定しました。

  • 宛先テーブル「Users」
    • ID – INTEGER – REQUIRED
    • Name – STRING – NULLABLE
    • Age – INTEGER – NULLABLE

テーブルの作成

そして画面下部の「テーブルを作成」ボタンを押下します。これでテーブルが作成されました。それではデータ追加・抽出の流れを確認するためにクエリを実行したいと思いますが、クエリ実行時に注意しなければいけない点があります。「オプション」ボタンを押下し、ポップアップしたメニューから「クエリの設定」を選択して下さい。すると次の画面が表示されます。

ロケーションの設定

ここの画面下部にある「処理を行うロケーション」から「東京 (asia-northeast1)」を選び「保存」ボタンを押下します。これは初期値に「自動選択」が選択されていますが、US/EUのみとなっており東京は選択されません。そのため明示的に東京を選択する必要があります。

それでは作成したテーブルにデータを追加しましょう。画面右のエディタにクエリ文を書きましょう。ここでは下のようなクエリでデータを投入しました。

クエリ文を見るとお馴染みのクエリであることがわかります。そうです。BigQueryでは標準SQLを利用することができるのです。これだとわざわざBigQueryのために新しい構文を覚える必要はないですね。「クエリを実行」ボタンを押下しましょう。

BigQuery INSERTクエリ

「プレビュー」タグを選択すると、入力したデータを確認することができます。では次はデータ抽出してみましょう。エディタに次のクエリ文を入力します。

お馴染みのクエリ文ですね。「クエリを実行」すると、「結果」タブより抽出したデータを確認することができます。

BigQuery SELECTクエリ

まとめ

これまでMySQLのようなRDBMSの知識しかなくとも、BigQueryはすぐに扱えることが判って頂けたものと思います。実際の現場では、わざわざGCPのコンソール画面から操作することはないですが、それでも基礎的なところは標準SQLが利用できることを理解して頂けたでしょう。これから機械学習の勉強を行おうと思っている方も、BigQueryに対して構えることなく、普通のデータベースのように接してあげて下さい。

» お仕事のご依頼はこちら