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が表示されています。このプロジェクトを選択した状態で、画面右にある「データセットを作成」を押下して下さい。データセットとは、テーブルをまとめるためのグループだと思って下さい。
適切なデータセットIDを入力し、データのロケーションを選択して下さい。ここでは「
東京 (asia-northeast1)」としています。ここで選択したデータのロケーションは必ず覚えておいて下さい。
これでデータセットが作成されました。次にテーブルを作成します。「テーブルを作成」を押下して下さい。ここでは下記のように設定しました。
- 宛先テーブル「Users」
- ID – INTEGER – REQUIRED
- Name – STRING – NULLABLE
- Age – INTEGER – NULLABLE
そして画面下部の「テーブルを作成」ボタンを押下します。これでテーブルが作成されました。それではデータ追加・抽出の流れを確認するためにクエリを実行したいと思いますが、クエリ実行時に注意しなければいけない点があります。「オプション」ボタンを押下し、ポップアップしたメニューから「クエリの設定」を選択して下さい。すると次の画面が表示されます。
ここの画面下部にある「処理を行うロケーション」から「
東京 (asia-northeast1)」を選び「保存」ボタンを押下します。これは初期値に「自動選択」が選択されていますが、US/EUのみとなっており東京は選択されません。そのため明示的に東京を選択する必要があります。
それでは作成したテーブルにデータを追加しましょう。画面右のエディタにクエリ文を書きましょう。ここでは下のようなクエリでデータを投入しました。
INSERT
NewDataSet.Users (ID, Name, Age)
VALUES
(1, 'Takahashi', 32),
(2, 'Ishibashi', 28),
(3, 'Suzuki', 45),
(4, 'Ochiai', 30),
(5, 'Nakahara', 19);
クエリ文を見るとお馴染みのクエリであることがわかります。そうです。BigQueryでは標準SQLを利用することができるのです。これだとわざわざBigQueryのために新しい構文を覚える必要はないですね。「クエリを実行」ボタンを押下しましょう。
「プレビュー」タグを選択すると、入力したデータを確認することができます。では次はデータ抽出してみましょう。エディタに次のクエリ文を入力します。
SELECT
ID, Name, Age
FROM
NewDataSet.Users
WHERE
ID = 3;
お馴染みのクエリ文ですね。「クエリを実行」すると、「結果」タブより抽出したデータを確認することができます。
まとめ
これまでMySQLのようなRDBMSの知識しかなくとも、BigQueryはすぐに扱えることが判って頂けたものと思います。実際の現場では、わざわざGCPのコンソール画面から操作することはないですが、それでも基礎的なところは標準SQLが利用できることを理解して頂けたでしょう。これから機械学習の勉強を行おうと思っている方も、BigQueryに対して構えることなく、普通のデータベースのように接してあげて下さい。