BigQueryを完全に理解する
BigQuery とは
SQLインターフェースが使用できるデータウェアハウスです。
GUI,クライアントライブラリからのAPIなどからアクセスすることができますが、アクセス制御をかけることもできます。
サードパーティを使用したデータの読み込みや視覚化ができます。
プロジェクト
GCPのトップレベルのコンテナです。
名前と一意のIDが振られており、ユーザ情報やBigQueryのデータが格納されます。
データセット
BigQuery内のトップレベルコンテナです。
テーブルとビューはこちらに属しています。
データの保存
圧縮、暗号化、複製、チューニング、スケーリングなどの運用をします。
以下の構成で Capacitor型 のデータが保存されます。
- テーブル
- パーティション
- 列
- 行
データの操作
データに対して次の操作が行えます
アクセス制御
アクセス制御にはIAMを利用しています。
役割と権限を組み合わせることで、様々なアクセス制御ができます。
スロット
クエリ毎の演算能力の単位です。
スロットを拡張することで、複雑なクエリのパフォーマンスや、並列処理の速度が上昇します。
Dive into Deep BigQuery
- インタラクティブクエリ
即座に実行されるクエリです。
bq query --destination_table mydataset.mytable --use_legacy_sql=false 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC'
- バッチクエリ
キューに格納されリソースが使用可能になり次第、実行されるクエリです
bq query --batch --destination_table mydataset.mytable --use_legacy_sql=false 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC'
- テーブルの作成
RDBMSとは違いテーブルには存命期間があります。
bq mk -t --expiration 3600 --description "This is my table" --label organization:development mydataset.mytable qtr:STRING,sales:FLOAT,year:STRING
- テーブルの更新
bq update --description "Description of mytable" mydataset.mytable
- テーブルの削除
bq rm -t myotherproject:mydataset.mytable
- テーブルの存在確認
bq ls [DATASET]
- jsonファイルからデータの追加
bq --location=US load --autodetect --noreplace --source_format=NEWLINE_DELIMITED_JSON mydataset.mytable ./mydata.json ./myschema.json
- ビューの作成
ビューとは仮想テーブルです。
実体を持たないので、ビュー対して取得クエリを実行した場合も、ビュー作成時のクエリも同時に発行されています。
bq mk --use_legacy_sql=false --expiration 3600 --description "This is my view" --label organization:development --view 'SELECT name,number FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE gender = "M" ORDER BY number DESC' mydataset.myview