BigQueryのSQLとは?よく使うSQL構文を紹介
GoogleAnalytics4になってBigQueryが注目されていますが、データ取得のためのSQL構文はどのように作成すればよいのでしょうか。
本稿ではSQLの説明と作成方法について解説します。
目次
1.BigQueryのSQLとは
SQLとは、大量のデータから条件に該当するデータを抽出したり、データの追加や削除を行う命令を出す言語のことです。
BigQuery は、標準SQL(Google Standard SQL)とレガシーSQL と呼ばれる2つのSQL 言語をサポートしています。Google CloudはBigQuery に保存されているデータに対しては「業界標準に準拠し、拡張機能をもつ標準SQLを利用することを推奨」していますので、これからBigQueryを始める場合、まずは標準SQLでできることを確認しましょう。
2.BigQueryのSQL構文
2-1.標準SQLがサポートする構文
BigQueryの標準SQLがサポートするSQL構文(ステートメント)を分類すると、下記の表になります。
参考:Google Cloud「BigQueryでのSQLの概要」
2-2.SQL構文の内容
各分類についてそれぞれ詳しく見ていきます。
①データクエリ言語(DQL)
SQL構文としては代表的なSELECT構文ですが、一般的なデータベースでは多くの場合③のDMLにまとめられるところ、BigQuery ではDQLに含まれています。
SELECT構文はデータから必要な情報を取得するための命令文で下記のような基本構文となります。
SELECT [取り出したい列] FROM [データセット名]. [テーブル名];
※取り出したい列が複数ある場合は「,(カンマ)」でつなぐ
SELECTの後ろで取り出したい列を指定し(複数列取得する場合はカンマでつなぐ)、FROMの後ろでデータを取り出す元となるテーブルを指定します。
BigQueryでは、テーブルの指定は、「データセット名.(ドット)テーブル名」となります。
※末尾にSQL構文がそこで終了したことを示す「;(セミコロン)」を記述
取得したい要素の項目に「*(アスタリスク)」を入れると全ての要素を取得することができます。
SELECT * FROM [データセット名]. [テーブル名];
ただしアスタリスクを利用して全カラムを取得するとクエリ量が増えてしまうため、BigQueryを無料枠で利用している場合など、クエリ量の上限を超えないか注意が必要です。
また、FROMの前に「EXCEPT(除外したい列)」を入れることで、指定した列を除外することができます。
SELECT * EXCEPT(除外したい列) FROM [データセット名]. [テーブル名];
②データ定義言語(DDL)
一般的なDDL(CREATE、ALTER、DROP)が利用可能で、BigQuery 固有のリソース制御も用意されています。
他のデータベースと比較すると、CREATE INDEX 文が見当たりませんが、2022年4月にPreview 版として、検索インデックス機能がリリースされました。
Google Cloud「検索インデックスを管理する」
>>DDL公式マニュアルはこちら
CREATE構文は、スキーマやデータセットを作成するのに使用します。
CREATE TABLE {[プロジェクトID].}[データセット名].[テーブル名]
※GCPの他のプロジェクトにアクセスしない場合、プロジェクトIDは省略可。
指定する場合は「`(バッククオート)」でつなぐ
(例:`project-id.dataset_name.table_name`)
③データ操作言語(DML)
一般的なDML(CREATE、ALTER、DROP)が利用可能です。またMERGE やTRUNCATE も対応しています。TRUNCATE TABLE は、従来はDELETEを使う必要がありましたが、2020年10月リリースで新機能として対応しました。
Google Cloud「ユーザーを笑顔にするBigQuery の使いやすい SQL新機能」
>>DML公式マニュアルはこちら
INSERT構文は、テーブルに新しい行を追加するときに使います。
INSERT INTO {[プロジェクトID].}[データセット名].[テーブル名]
※プロジェクトIDに対する定義はCREATE構文と同様
④データ制御言語(DCL)
一般的なDCL と同様、アクセス権付与や権限はく奪が利用可能です。
>>DCL公式マニュアルはこちら
⑤手続き型言語・⑥トランザクション制御言語(TCL)
1つのリクエストで複数のSQL を実行可能です。2021年6月にトランザクション管理にも対応しました。
>>手続き型言語・TCL公式マニュアルはこちら
⑦その他
テーブルからのエクスポートや、テーブルへのローダー機能が利用可能です。
>>標準SQLその他公式マニュアルはこちら
3.まとめ
BigQueryのSQLについて、主に標準SQLがサポートするSQL構文の説明と作成方法について説明しました。各SQLの意味と使い方さえわかれば、簡単な構文は作成できると思います。ただ全ての要素を取得するような構文を多用してしまうと、無料枠の上限を超えてしまう可能性がありますのでご注意ください。
また複雑なSQL構文やレガシーSQLを利用したい場合などは、お気軽にお問合せください。