BigQueryとは
BigQueryは、Google Cloudが提供するフルマネージドなエンタープライズデータウェアハウスです。その最大の特徴は、ペタバイト規模のデータを秒単位で分析できる高速性と、サーバーレスで運用が容易である点にあります。
主な特徴:
-
サーバーレス: インフラの管理やスケーリングについて心配する必要がありません。Googleがすべてを管理します。
-
高速性: 分散型クエリエンジンにより、大規模なデータセットに対しても非常に高速な分析が可能です。
-
スケーラビリティ: データの増加に合わせて自動的にスケールします。
-
費用対効果: データのストレージとクエリの実行に対して課金される従量課金制です。クエリは処理されたデータ量に基づいて課金されます。
-
SQL互換性: 標準SQLをサポートしており、既存のSQL知識を活かせます。
-
データ連携: Google Cloudの様々なサービス(Cloud Storage, Cloud Dataflow, Looker Studioなど)と容易に連携できます。また、外部データソース(Amazon S3, Azure Blob Storageなど)へのクエリも可能です。
-
機械学習(BigQuery ML): SQLを使ってBigQuery内で機械学習モデルを構築・実行できます。
BigQueryの構成要素:
-
プロジェクト: Google Cloudのすべてのリソースをまとめる最上位の論理的なコンテナです。BigQueryのリソースもプロジェクト内に作成されます。
-
データセット: テーブルやビュー、モデルなどを格納する論理的なコンテナです。データベースにおけるスキーマのようなものです。
-
テーブル: 実際のデータを格納する場所です。リレーショナルデータベースのテーブルと同様に、列と行で構成されます。
-
ビュー: クエリの結果を仮想的なテーブルとして定義したものです。データはビューには格納されず、ビューが参照されるたびに基になるテーブルから取得されます。
-
ジョブ: BigQueryで行われるすべての操作(クエリの実行、データのロード/エクスポートなど)は「ジョブ」として実行されます。
BigQueryのコマンドの説明(bqコマンドラインツール)
bqコマンドラインツールは、BigQueryリソースを管理するためのコマンドラインインターフェースです。Google Cloud SDKに含まれています。
よく使うコマンドをいくつか紹介します。
プロジェクトとデータセットの操作
プロジェクトの設定:
gcloud config set project <PROJECT_ID>
BigQueryを含むGoogle Cloudリソースを操作する前に、操作対象のプロジェクトを設定します。
データセットの作成:
bq mk <DATASET_ID>
例: bq mk my_new_dataset
データセットの一覧表示:
bq ls
データセットの詳細表示:
bq show <DATASET_ID>
例: bq show my_new_dataset
データセットの削除:
bq rm -r <DATASET_ID>
-r オプションは、データセット内のすべてのテーブルも削除します。
テーブルの操作
テーブルの作成(スキーマを指定して空のテーブルを作成):
bq mk --table <DATASET_ID>.<TABLE_ID> <SCHEMA>
例: bq mk --table my_new_dataset.my_table my_column:STRING,another_column:INTEGER
JSONファイルからテーブルを作成(スキーマ自動検出):
bq load --source_format=NEWLINE_DELIMITED_JSON <DATASET_ID>.<TABLE_ID> <JSON_FILE_PATH>
CSVファイルからテーブルを作成:
bq load --source_format=CSV <DATASET_ID>.<TABLE_ID> <CSV_FILE_PATH> <SCHEMA>
または、スキーマを自動検出させる場合は --autodetect オプションを使用します。
bq load --source_format=CSV --autodetect <DATASET_ID>.<TABLE_ID> <CSV_FILE_PATH>
テーブルの一覧表示:
bq ls <DATASET_ID>
例: bq ls my_new_dataset
テーブルの詳細表示(スキーマ確認など):
bq show <DATASET_ID>.<TABLE_ID>
例: bq show my_new_dataset.my_table
テーブルのデータプレビュー:
bq head <DATASET_ID>.<TABLE_ID>
テーブルの削除:
bq rm <DATASET_ID>.<TABLE_ID>
クエリの実行
クエリの実行:
bq query --use_legacy_sql=false 'SELECT * FROM `project_id.dataset_id.table_id` LIMIT 100'
--use_legacy_sql=false は、標準SQLを使用することを示します(強く推奨)。
ファイルからクエリを実行:
bq query --use_legacy_sql=false --file=<QUERY_FILE_PATH>
ジョブの操作
実行中のジョブの一覧表示:
bq ls -j
特定のジョブの詳細表示:
bq show -j <JOB_ID>
よく使うクエリ10選
これらの情報で、BigQueryの基本的な理解と操作に役立つかと思います。
BigQueryは非常に奥深いサービスなので、公式ドキュメントも併せて参照されることをお勧めします。
1891年 ヴィクトリア朝のシャーロックホームズの世界に3名の生成AIが突如現れる。
現代社会の不可思議なビジネス課題をこの3名の生成AIが謎に迫る
- ビジネスコンテンツ × ミステリー × 生成AIの世界観をお楽しみください。
こちらの数値がBigQueryで取得した数値を1日1回自動更新する仕組みにしています。
こちらはGA4のデータを集計して1日1回自動更新する仕組みでやっています。