bq コマンドライン ツールの使用

bq は、BigQuery 用の Python ベースのコマンドライン ツールです。このページには、bq コマンドライン ツールの使用に関する一般的な情報が含まれています。

すべての bq コマンドとフラグの詳細なリファレンスについては、bq コマンドライン ツール リファレンスをご覧ください。

始める前に

BigQuery コマンドライン ツールを使用するには、その前に、Google Cloud Platform Console を使用してプロジェクトを作成または選択し、課金を有効化する必要があります。また、Google Cloud SDK をインストールする必要もあります。

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. GCP プロジェクトを選択または作成します。

    [リソースの管理] ページに移動

  3. プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

  4. Cloud SDK をインストールして初期化します。
  5. 新しいプロジェクトでは、BigQuery が自動的に有効になります。既存のプロジェクトで BigQuery を有効にするには、以下にアクセスします。 {% dynamic if "no_credentials" in setvar.task_params %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic if not setvar.redirect_url %}{% dynamic setvar redirect_url %}https://console.cloud.google.com{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if setvar.in_henhouse_no_auth_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}NO_AUTH{% dynamic endsetvar %}{% dynamic endif %}{% dynamic elif setvar.in_henhouse_service_account_whitelist %}{% dynamic if not setvar.credential_type %}{% dynamic setvar credential_type %}SERVICE_ACCOUNT{% dynamic endsetvar %}{% dynamic endif %}{% dynamic endif %}{% dynamic if not setvar.service_account_roles and setvar.credential_type == "SERVICE_ACCOUNT" %}{% dynamic setvar service_account_roles %}{% dynamic endsetvar %}{% dynamic endif %}{% dynamic setvar console %}{% dynamic if "no_steps" not in setvar.task_params %}
  6. {% dynamic endif %}{% dynamic if setvar.api_list %}{% dynamic if setvar.in_henhouse_no_auth_whitelist or setvar.in_henhouse_service_account_whitelist %}GCP Console プロジェクトをセットアップします。

    プロジェクトをセットアップする

    クリックして、以下を行います。

    • プロジェクトを作成または選択します。
    • プロジェクトに{% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}必要な{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %} を有効にします。
    • {% dynamic if setvar.credential_type == 'SERVICE_ACCOUNT' %}
    • サービス アカウントを作成します。
    • JSON として秘密鍵をダウンロードします。
    • {% dynamic endif %}

    これらのリソースは、GCP Console でいつでも表示および管理できます。

    {% dynamic else %}{% dynamic if "no_text" not in setvar.task_params %}{% dynamic if setvar.api_names %}{% dynamic print setvar.api_names %}{% dynamic else %}必要な{% dynamic endif %}{% dynamic if "," in setvar.api_list %} API{% dynamic elif "API" in setvar.api_names %}{% dynamic else %} API{% dynamic endif %} を有効にします。 {% dynamic endif %}

    {% dynamic if "," in setvar.api_list %}API{% dynamic else %}API{% dynamic endif %}を有効にする

    {% dynamic endif %}{% dynamic endif %}{% dynamic if "no_steps" not in setvar.task_params %}
  7. {% dynamic endif %}{% dynamic endsetvar %}{% dynamic print setvar.console %}

Cloud SDK をダウンロードしてインストールする代わりに、Google Cloud Shell にプリインストールされているバージョンの SDK を使用することもできます。

一般的な使用方法

フラグの配置

bq は、グローバル フラグとコマンドフラグの 2 種類のフラグをサポートしています。これらは、次に示す順序で使用する必要があります。

    bq --global_flag [ARGUMENT] bq_command --command-specific_flag [ARGUMENT]
  • グローバル フラグ(共通フラグ)は、すべてのコマンドで使用できます。
  • コマンド固有のフラグは、特定のコマンドに適用されます。

複数のグローバル フラグまたはコマンド固有のフラグを区切るには、スペースを使用します。次に例を示します。

    bq --global_flag [ARGUMENT] --global_flag [ARGUMENT] bq_command --command-specific_flag [ARGUMENT] --command-specific_flag [ARGUMENT]

コマンド引数は、次のいずれかの方法で指定できます。

  • --flag=[ARGUMENT]
  • --flag='[ARGUMENT]'
  • --flag="[ARGUMENT]"
  • --flag [ARGUMENT]
  • --flag '[ARGUMENT]'
  • --flag "[ARGUMENT]"

これらの各メソッドは、BigQuery ドキュメント全体で使用されています。

コマンドによっては、引数の前後に一重引用符または二重引用符を使用する必要があります。これは、引数にスペース、カンマ、またはその他の特殊文字が含まれている多くのコマンドに当てはまります。次に例を示します。

bq query --nouse_legacy_sql 'select count(*) from `bigquery-public-data.samples.shakespeare`'

ブール値を持つフラグは、引数なしで指定できます。true または false を指定する場合は、=[ARGUMENT] を指定する必要があります。

たとえば、次のコマンドでは、ブール値フラグ --use_legacy_sql に対して、フラグの前に no を指定することによって、false を指定します。

bq query --nouse_legacy_sql 'select count(*) from `bigquery-public-data.samples.shakespeare`'

あるいは、フラグの引数として false を指定するには、次のように入力します。

bq query --use_legacy_sql=false 'select count(*) from `bigquery-public-data.samples.shakespeare`'

使用可能なグローバル フラグおよびコマンド固有のフラグのリストについては、bq コマンドライン ツール リファレンスをご覧ください。

ヘルプの表示

次のコマンドを入力すると、bq コマンドライン ツールのヘルプを表示できます。

  • インストールされている bq のバージョンを参照するには、「bq version」と入力します。
  • すべてのコマンドの一覧を参照するには、「bq help」と入力します。
  • グローバル フラグの一覧を参照するには、「bq --help」と入力します。
  • 特定のコマンドのヘルプを参照するには、「bq help [COMMAND]」と入力します。
  • 特定のコマンドのヘルプとグローバル フラグの一覧を参照するには、「bq [COMMAND] --help」と入力します。

デバッグ

次のコマンドを入力して、bq をデバッグすることができます。

  • 送受信されたリクエストを確認する
    --apilog=[PATH_TO_FILE] フラグを追加して、オペレーションのログをローカル ファイルに保存します。bq は標準の REST ベースの API 呼び出しを行うことで動作します。これは、表示すると有用な場合があります。また、問題を報告するときにも、このログを添付すると有用です。ファイルパスの代わりに - または stdout を使用すると、コンソールにログが出力されます。--apilogstderr に設定すると、標準のエラーファイルに出力されます。
  • エラーのトラブルシューティングに活用する
    ジョブのステータスを取得する場合、またはテーブルやデータセットなどのリソースに関する詳細情報を表示する場合は、--format=prettyjson フラグを入力します。このフラグを使用すると、reason プロパティを含む JSON 形式のレスポンスが出力されます。reason プロパティを使用すると、トラブルシューティングの手順を参照できます。

コマンドライン フラグのデフォルト値の設定

コマンドライン フラグのデフォルト値は、コマンドライン ツールの構成ファイル .bigqueryrc に含めることで設定できます。デフォルトのオプションを構成する前に、まず .bigqueryrc ファイルを作成する必要があります。このファイルは、任意のテキスト エディタを使用して作成できます。.bigqueryrc ファイルを作成したら、--bigqueryrc グローバル フラグを使用してファイルへのパスを指定できます。

--bigqueryrc フラグが指定されていない場合は、BIGQUERYRC 環境変数が使用されます。これが指定されていない場合、パス ~/.bigqueryrc が使用されます。デフォルトのパスは $HOME/.bigqueryrc です。

.bigqueryrc へのフラグの追加

.bigqueryrc にコマンドライン フラグのデフォルト値を追加するには:

  • ヘッダーなしでファイルの先頭にグローバル フラグを配置します。
  • コマンド固有のフラグについては、コマンド名(大かっこ内)を入力し、その下に次の形式でコマンド固有のフラグ(1 行に 1 つ)を追加します。

    [COMMAND]
    --command-specific_flag=[ARGUMENT]
    --command-specific_flag=[ARGUMENT]
    

.bigqueryrc にコマンドライン フラグを入力するときは、フラグの引数を =[ARGUMENT] の形式で指定する必要があります。

.bigqueryrc は、bq を実行するたびに読み取られるため、変更はすぐに反映されます。bq を対話モードbq shell)で実行する場合、変更を反映するにはシェルを再起動する必要があります。

この例では、次のグローバル フラグのデフォルト値を設定します。

  • --apilogstdout に設定されており、デバッグ情報がコンソールに出力されます。
  • --formatprettyjson に設定されており、人が読める JSON 形式でコマンド出力が表示されます。
  • --locationUS マルチリージョン ロケーションに設定されています。

この例では、次の query コマンド固有のフラグのデフォルト値を設定します。

  • 標準 SQL をデフォルトのクエリ構文にするために、--use_legacy_sqlfalse に設定します。

  • クエリ出力の行数を制御するために、--max_rows を 100 に設定します。

  • --maximum_bytes_billed が 10,000,000 バイト(10 MB)に設定されており、10 MB を超えるデータを読み取るクエリは失敗します。

この例では、次の load コマンド固有のフラグのデフォルト値を設定します。

  • --destination_kms_keyprojects/myproject/locations/mylocation/keyRings/myRing/cryptoKeys/myKey に設定します。
credential_file = [PATH_TO_CREDENTIAL_FILE]
--apilog=stdout
--format=prettyjson
--location=US

[query]
--use_legacy_sql=false
--max_rows=100
--maximum_bytes_billed=10000000

[load]
--destination_kms_key=projects/myproject/locations/mylocation/keyRings/myRing/cryptoKeys/myKey

設定を確認するには、次のコマンドを入力します。

cat ~/.bigqueryrc

対話型シェルでの bq の実行

対話型シェルで、bq を実行できます。ここでは、bq をコマンドの前に配置する必要がありません。対話モードを開始するには、「bq shell」と入力します。シェルを起動すると、プロンプトがデフォルトのプロジェクトの ID に変更されます。対話モードを終了するには、「exit」と入力します。

コマンドラインの例は、BigQuery ドキュメントの入門ガイドに多く記載されています。以下は、BigQuery リソースの作成、取得、一覧表示、削除、変更などの一般的なコマンドライン タスクへのリンクです。

リソースの作成

コマンドライン ツールを使用してリソースを作成する方法については、次をご覧ください。

データファイルを使用してテーブルを作成する例については、データの読み込みをご覧ください。

リソースに関する情報の取得

コマンドライン ツールを使用してリソースに関する情報を取得する方法については、次をご覧ください。

リソースの一覧表示

コマンドライン ツールを使用してリソースを一覧表示する方法については、次をご覧ください。

リソースの更新

コマンドライン ツールを使用してリソースを更新する方法については、次をご覧ください。

データの読み込み

コマンドライン ツールを使用してデータを読み込む方法については、次をご覧ください。

データのクエリ

コマンドライン ツールを使用してデータをクエリする方法については、次をご覧ください。

外部データソースの使用

コマンドライン ツールを使用して外部データソースのデータをクエリする方法については、次をご覧ください。

データのエクスポート

コマンドライン ツールを使用してデータをエクスポートする方法については、次をご覧ください。

BigQuery Data Transfer Service の使用

BigQuery Data Transfer Service でコマンドライン ツールを使用する方法については、次をご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。