システム変数のリファレンス
BigQuery は、マルチステートメント クエリまたはセッション内で次のシステム変数をサポートしています。ユーザー定義の手続き型言語変数と同様に、システム変数を使用して、クエリの実行時に情報を設定または取得できます。
名前 | 種類 | 読み取りと書き込みまたは読み取り専用 | 説明 |
---|---|---|---|
@@current_job_id |
STRING |
読み取りのみ | 現在実行中のジョブのジョブ ID。複数ステートメント クエリのコンテキストでは、複数ステートメント クエリ全体ではなく、現在のステートメントを処理するジョブが返されます。 |
@@dataset_id |
STRING |
読み取りと書き込み |
現在のプロジェクト内にあるデフォルト データセットの ID。この ID は、クエリでプロジェクトにデータセットが指定されていない場合に使用されます。SET ステートメントを使用して、現在のプロジェクト内の別のデータセット ID に @@dataset_id を割り当てることができます。システム変数の @@dataset_project_id と @@dataset_id を組み合わせて設定して使用できます。 |
@@dataset_project_id |
STRING |
読み取りと書き込み |
クエリで使用されるデータセットにプロジェクトが指定されていない場合に使用されるデフォルト プロジェクトの ID。@@dataset_project_id が設定されていない場合、または NULL に設定されている場合、クエリを実行するプロジェクト(@@project_id )が使用されます。SET ステートメントを使用すると、@@dataset_project_id を別のプロジェクト ID に割り当てることができます。システム変数の @@dataset_project_id と @@dataset_id は、一緒に設定して使用できます。 |
@@last_job_id |
STRING |
読み取りのみ |
現在の複数ステートメント クエリで実行される最新のジョブのジョブ ID。現在のジョブは含まれません。複数ステートメント クエリに CALL ステートメントが含まれている場合、このジョブは別のプロシージャで作成された可能性があります。 |
@@project_id |
STRING |
読み取りのみ |
現在のクエリを実行するために使用されるプロジェクトの ID。プロシージャのコンテキストでは、@@project_id はプロシージャを所有するプロジェクトではなく、複数ステートメント クエリを実行するプロジェクトを指します。 |
@@query_label |
STRING |
読み取りと書き込み |
現在のマルチステートメント クエリまたはセッションのクエリジョブに関連付けるクエリラベル。クエリ内で設定した場合、スクリプトまたはセッションの後続のすべてのクエリジョブには、このラベルが付けられます。
クエリで設定されていない場合、このシステム変数の値は NULL です。このシステム変数を設定する方法の例については、セッションのジョブをラベルに関連付けるをご覧ください。
|
@@row_count |
INT64 |
読み取りのみ |
複数ステートメントのクエリで使用され、前のステートメントが DML の場合は、その DML ステートメントの結果として変更、挿入、または削除された行数を指定します。前のステートメントが MERGE ステートメントの場合、@@row_count は挿入、削除された合計行数を表します。複数ステートメント クエリ内に存在しない場合、この値は NULL です。 |
@@script.bytes_billed |
INT64 |
読み取りのみ |
現在実行中のマルチステートメント クエリジョブでこれまでに課金された合計バイト数。ジョブ内にない場合、この値は NULL です。
|
@@script.bytes_processed |
INT64 |
読み取りのみ |
現在実行中のマルチステートメント クエリジョブでこれまでに処理された合計バイト数。ジョブ内にない場合、この値は NULL です。
|
@@script.creation_time |
TIMESTAMP |
読み取りのみ |
現在実行中のマルチステートメント クエリジョブの作成時刻。
ジョブ内にない場合、この値は NULL です。
|
@@script.job_id |
STRING |
読み取りのみ |
現在実行中のマルチステートメント クエリジョブのジョブ ID。ジョブ内にない場合、この値は NULL です。
|
@@script.num_child_jobs |
INT64 |
読み取りのみ |
現在完了している子ジョブの数。ジョブ内にない場合、この値は NULL です。
|
@@script.slot_ms |
INT64 |
読み取りのみ |
スクリプトがそれまでに使用したスロットのミリ秒数。ジョブ内にない場合、この値は NULL です。
|
@@session_id |
INT64 |
読み取りのみ | 現在のクエリが関連付けられているセッションの ID。 |
@@time_zone |
STRING |
読み取りと書き込み |
タイムゾーンが引数として指定されていない場合に、タイムゾーンに依存する SQL 関数で使用するデフォルトのタイムゾーン。@@time_zone は、SET ステートメントを使用して任意の有効なタイムゾーン名に変更できます。各スクリプトの先頭で、@@time_zone は「UTC」で始まります。 |
下位互換性のため、OPTIONS
句または FOR SYSTEM TIME AS OF
句で使用される式はデフォルトで America/Los_Angeles
タイムゾーンになり、他のすべての日時式はデフォルトで UTC
タイムゾーンになります。複数ステートメント クエリで @@time_zone
がすでに設定されている場合、選択されたタイムゾーンが OPTIONS
句と FOR SYSTEM TIME AS OF
句を含めてすべての日時式に適用されます。
マルチステートメント クエリの実行中は、上記のシステム変数に加えて、EXCEPTION
システム変数を使用できます。EXCEPTION
システム変数の詳細については、手続き型言語ステートメント BEGIN...EXCEPTION をご覧ください。
マルチステートメント クエリでシステム変数を使用する方法の例については、変数を設定するをご覧ください。
セッションでシステム変数を使用する方法の例については、セッションの例をご覧ください。