BigQuery での SQL の概要
このドキュメントでは、BigQuery でサポートされているステートメントと SQL 言語の概要について説明します。
GoogleSQL は ANSI 準拠の構造化クエリ言語(SQL)であり、サポートされている次のタイプのステートメントが含まれています。
- クエリ ステートメント(Data Query Language(DQL)ステートメントとも呼ばれます)は、BigQuery でデータを分析する主要な方法です。1 つ以上のテーブルや式をスキャンして、計算結果の行を返します。クエリ ステートメントには、パイプ構文(プレビュー)を含めることができます。
- プロシージャル言語ステートメントは、GoogleSQL のプロシージャルの拡張であり、1 回のリクエストで複数の SQL ステートメントを実行できます。プロシージャル ステートメントでは変数と制御フロー ステートメントを使用できますが、副作用が生じる可能性があります。
- データ定義言語(DDL)ステートメントを使用すると、データベース オブジェクト(テーブル、ビュー、関数、行レベルのアクセス ポリシーなど)を作成および変更できます。
- データ操作言語(DML)ステートメントを使用すると、BigQuery テーブルのデータを更新、挿入、削除できます。
- データ制御言語(DCL)ステートメントを使用すると、アクセスや容量などの BigQuery システム リソースを制御できます。
- トランザクション制御言語(TCL)ステートメントを使用すると、データ変更のトランザクションを管理できます。
- 読み込みステートメントとエクスポート ステートメントを使用すると、BigQuery との間でやり取りされるデータを管理できます。
BigQuery SQL 言語
BigQuery は GoogleSQL 言語をサポートしていますが、レガシー SQL 言語も使用できます。BigQuery を初めて使用する場合は、最も幅広い機能をサポートしている GoogleSQL を使用することをおすすめします。たとえば、DDL ステートメントや DML ステートメントなどの機能は、GoogleSQL を使用する場合にのみサポートされます。下位互換性を持たせるため、レガシー SQL が維持されています。レガシー SQL を使用している場合は、移行することをおすすめします。
デフォルト言語からの変更
デフォルトのクエリ言語は、データのクエリに使用するインターフェースによって決まります。別の言語に切り替えるには:
コンソール
Google Cloud コンソールのデフォルトの言語は GoogleSQL です。言語をレガシー SQL に変更するには、次の操作を行います。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで、[展開] > [クエリ設定] ボタンをクリックします。
[詳細オプション] セクションの [SQL 言語] で、[レガシー]、[保存] の順にクリックします。これで、このクエリに対してレガシー SQL オプションが設定されます。[add_box SQL クエリ] をクリックして新しいクエリを作成する場合は、レガシー SQL オプションを再度選択する必要があります。
SQL
デフォルトの SQL 言語は GoogleSQL です。クエリの中に接頭辞の #standardSQL
または #legacySQL
を含めることで、SQL 言語の種類を設定できます。これらのクエリ接頭辞では大文字と小文字が区別されません。クエリの前につける必要があり、クエリとは改行文字で区切る必要があります。次の例では、言語をレガシー SQL に設定し、出生率データセットにクエリを実行します。
Google Cloud コンソールで [BigQuery] ページに移動します。
クエリエディタで次のステートメントを入力します。
#legacySQL SELECT weight_pounds, state, year, gestation_weeks FROM [bigquery-public-data:samples.natality] ORDER BY weight_pounds DESC LIMIT 10;
[
実行] をクリックします。
クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。
bq
bq
コマンドライン ツールのデフォルトのクエリ言語は、レガシー SQL です。GoogleSQL 言語に切り替えるには、--use_legacy_sql=false
フラグまたは --nouse_legacy_sql
フラグをコマンドライン ステートメントに追加します。
GoogleSQL 言語に切り替える
クエリジョブで GoogleSQL 構文を使用するには、use_legacy_sql
パラメータを false
に設定します。
bq query \
--use_legacy_sql=false \
'SELECT
word
FROM
`bigquery-public-data.samples.shakespeare`'
GoogleSQL をデフォルトの言語として設定する
コマンドライン ツールの構成ファイル .bigqueryrc
を編集することで、GoogleSQL をコマンドライン ツールと対話型シェルのデフォルトの言語に設定できます。
.bigqueryrc
の詳細については、コマンド固有フラグのデフォルト値の設定をご覧ください。
.bigqueryrc
で --use_legacy_sql=false
を設定するには:
- テキスト エディタで
.bigqueryrc
を開きます。デフォルトの場合、.bigqueryrc
はユーザー ディレクトリにあります(例:$HOME/.bigqueryrc
)。 このファイルに次のテキストを追加します。この例では、GoogleSQL が、クエリと(ビューを作成するときに使用される)
mk
コマンドのデフォルト構文として設定されます。query
コマンドフラグまたはmk
コマンドフラグに対してすでにデフォルト値を構成している場合、[query]
または[mk]
をもう一度追加し直す必要はありません。[query] --use_legacy_sql=false [mk] --use_legacy_sql=false
ファイルを保存して閉じます。
対話型シェルを使用している場合は、変更を適用するために、対話型シェルを終了して再起動する必要があります。
使用可能なコマンドライン フラグについては、bq コマンドライン ツール リファレンスをご覧ください。
C#
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある C# の設定手順を完了してください。詳細については、BigQuery C# API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
C# ライブラリではデフォルトで GoogleSQL が使用されます。レガシー SQL 言語に切り替える
クエリジョブでレガシー SQL 構文を使用するには、UseLegacySql
パラメータを true
に設定します。
Go
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Go の設定手順を完了してください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Go クライアント ライブラリではデフォルトで GoogleSQL が使用されます。レガシー SQL 言語に切り替える
クエリジョブでレガシー SQL 構文を使用するには、クエリ構成内の UseLegacySQL
プロパティを true
に設定します。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Java クライアント ライブラリではデフォルトで GoogleSQL が使用されます。レガシー SQL 言語に切り替える
クエリジョブでレガシー SQL 構文を使用するには、useLegacySql
パラメータを true
に設定します。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Node.js の設定手順を完了してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Node.js クライアント ライブラリではデフォルトで GoogleSQL が使用されます。レガシー SQL 言語に切り替える
クエリジョブでレガシー SQL 構文を使用するには、useLegacySql
パラメータを true
に設定します。
PHP
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある PHP の設定手順を完了してください。詳細については、BigQuery PHP API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
PHP クライアント ライブラリではデフォルトで GoogleSQL が使用されます。レガシー SQL 言語に切り替える
クエリジョブでレガシー SQL 構文を使用するには、useLegacySql
パラメータを true
に設定します。
Python
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Python クライアント ライブラリではデフォルトで GoogleSQL が使用されます。レガシー SQL 言語に切り替える
クエリジョブでレガシー SQL 構文を使用するには、use_legacy_sql
パラメータを True
に設定します。
Ruby
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Ruby の設定手順を完了してください。詳細については、BigQuery Ruby API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
Ruby クライアント ライブラリではデフォルトで GoogleSQL が使用されます。レガシー SQL 言語に切り替える
クエリジョブでレガシー SQL 構文を使用するには、クエリでオプション legacy_sql: true
を渡します。
次のステップ
- BigQuery で SQL クエリを実行する方法について詳しくは、インタラクティブ クエリとバッチクエリのジョブの実行をご覧ください。
- クエリの最適化に関する一般的な情報については、クエリ パフォーマンスの最適化の概要をご覧ください。
- BigQuery でデータのクエリに使用される GoogleSQL 構文については、クエリ構文をご覧ください。
- クエリでパイプ構文を使用する方法については、パイプ構文をご覧ください。