カテゴリ:

Information Schemaテーブル関数

QUERY_HISTORY , QUERY_HISTORY_BY_*

テーブル関数の QUERY_HISTORY ファミリーを使用して、Snowflakeのクエリ履歴をさまざまなディメンションでクエリできます。

  • QUERY_HISTORY は、指定された時間範囲内のクエリを返します。

  • QUERY_HISTORY_BY_SESSION は、指定されたセッションと時間範囲内のクエリを返します。

  • QUERY_HISTORY_BY_USER は、指定された時間範囲内で指定されたユーザーによって送信されたクエリを返します。

  • QUERY_HISTORY_BY_WAREHOUSE は、指定された時間範囲内で指定されたウェアハウスによって実行されたクエリを返します。

各関数は、指定されたディメンションに沿ったクエリ用に最適化されています。SQL 述語を使用して、結果をさらにフィルタリングできます。

こちらもご参照ください。

構文

QUERY_HISTORY(
      [ END_TIME_RANGE_START => <constant_expr> ]
      [, END_TIME_RANGE_END => <constant_expr> ]
      [, RESULT_LIMIT => <num> ]
      [, INCLUDE_CLIENT_GENERATED_STATEMENT => <boolean_expr> ] )

QUERY_HISTORY_BY_SESSION(
      [ SESSION_ID => <constant_expr> ]
      [, END_TIME_RANGE_START => <constant_expr> ]
      [, END_TIME_RANGE_END => <constant_expr> ]
      [, RESULT_LIMIT => <num> ]
      [, INCLUDE_CLIENT_GENERATED_STATEMENT => <boolean_expr> ] )

QUERY_HISTORY_BY_USER(
      [ USER_NAME => '<string>' ]
      [, END_TIME_RANGE_START => <constant_expr> ]
      [, END_TIME_RANGE_END => <constant_expr> ]
      [, RESULT_LIMIT => <num> ]
      [, INCLUDE_CLIENT_GENERATED_STATEMENT => <boolean_expr> ] )

QUERY_HISTORY_BY_WAREHOUSE(
      [ WAREHOUSE_NAME => '<string>' ]
      [, END_TIME_RANGE_START => <constant_expr> ]
      [, END_TIME_RANGE_END => <constant_expr> ]
      [, RESULT_LIMIT => <num> ]
      [, INCLUDE_CLIENT_GENERATED_STATEMENT => <boolean_expr> ] )
Copy

引数

すべての引数はオプションです。

END_TIME_RANGE_START => constant_expr. END_TIME_RANGE_END => constant_expr

クエリの実行が完了した過去7日以内の時間範囲(TIMESTAMP_LTZ 形式):

  • END_TIME_RANGE_END が指定されていない場合、関数はまだ実行中のクエリを含むすべてのクエリを返します。

  • END_TIME_RANGE_ENDCURRENT_TIMESTAMP の場合、関数は完了したクエリのみを返します。

時間範囲が過去7日以内に収まらない場合、エラーが返されます。

注釈

開始時刻または終了時刻が指定されていない場合、指定された制限までの最新のクエリが返されます。

SESSION_ID => constant_expr

QUERY_HISTORY_BY_SESSION にのみ適用

セッションの数値識別子または CURRENT_SESSION です。指定されたセッションからのクエリのみが返されます。

デフォルト: CURRENT_SESSION

USER_NAME => 'string'

QUERY_HISTORY_BY_USER にのみ適用

ユーザーログイン名または CURRENT_USER を指定する文字列です。指定したユーザーが実行したクエリのみが返されます。ログイン名は一重引用符で囲む必要があります。また、ログイン名にスペース、大文字と小文字の混在、または特殊文字がある場合、名前は二重引用符を一重引用符内で囲む必要があります(例: '"User 1"''user1')。ユーザーではなくバックグラウンドサービスである SYSTEMUSER_NAME =>'SYSTEM')を指定することはできません。しかし、 QUERY_HISTORY テーブル関数に対してクエリを実行する際に、 user_name='SYSTEM' でフィルターをかけることができます。

デフォルト: CURRENT_USER

WAREHOUSE_NAME => 'string'

QUERY_HISTORY_BY_WAREHOUSE にのみ適用

ウェアハウス名または CURRENT_WAREHOUSE を指定する文字列です。そのウェアハウスによって実行されたクエリのみが返されます。ウェアハウス名は一重引用符で囲む必要があります。また、ウェアハウス名にスペース、大文字と小文字の混在、または特殊文字がある場合、名前は二重引用符を一重引用符内で囲む必要があります(例: '"My Warehouse"''mywarehouse')。

デフォルト: CURRENT_WAREHOUSE

RESULT_LIMIT => num

関数によって返される行の最大数を指定する数値です。

一致する行の数がこの制限よりも大きい場合、指定された制限まで、最新の終了時刻(またはまだ実行中のもの)のクエリが返されます。

範囲: 110000

デフォルト: 100

INCLUDE_CLIENT_GENERATED_STATEMENT => 'boolean_expr'

クライアントが生成したステートメントをテーブル関数クエリに含めるかどうかを指定します(is_client_generated_statement 列の値が指定されます)。

デフォルト: FALSE

ACCOUNT_USAGE QUERY_HISTORY ビュー にも is_client_generated_statement 列がありますが、このビューのクエリは、クライアントが生成したステートメントかどうかに関わらず、すべてのステートメントを返します。必要に応じて、クエリ結果をフィルターすることができます。

使用上の注意

  • 現在のユーザーが実行したクエリを返します。また、実行ロールまたは階層内の上位ロールが以下の権限のいずれかを持つ場合、どのユーザーが実行したクエリも返します。

    • クエリが実行されたユーザー管理ウェアハウスに対する MONITOR または OPERATE 権限。

    • タスクに対する MONITOR または OPERATE 権限。例外: タスクが所有者権限のストアドプロシージャまたは UDF を実行する場合、ロールはストアドプロシージャクエリおよび UDF クエリを表示するために、タスクが実行されたウェアハウス上で少なくとも MONITOR 権限を必要とします。

    • タスクが存在するアカウントに対する MONITOR EXECUTION 権限。

    • 例外: ストアドプロシージャ または ユーザー定義関数(UDFs) のどちらも、このクエリを実行することはできません。

    詳細については、 仮想ウェアハウス権限 をご参照ください。

  • Information Schemaテーブル関数を呼び出す場合、セッションは INFORMATION_SCHEMA を使用する、 または 関数名は完全修飾する必要があります。詳細については、 Snowflake Information Schema をご参照ください。

  • external_function_total_invocationsexternal_function_total_sent_rowsexternal_function_total_received_rowsexternal_function_total_sent_bytes、および external_function_total_received_bytes の値は、多くの要因の影響を受けます。要因には次のようなものがあります。

    • SQL ステートメント内の外部関数の数。

    • 各リモートサービスに送信されたバッチあたりの行数。

    • 一時的なエラーによる再試行の数(例:予期した時間内に応答が受信されなかった)。

  • キャンセルされたクエリは、 execution_status の値ではなく、 error_message のテキスト(SQL execution canceled) で識別されます。

クエリ再試行列

クエリが正常に完了するためには、1回または複数回の再試行が必要な場合があります。クエリが再試行される原因には複数が考えられます。これらの原因の中には、 アクション可能 なものがあります。つまり、ユーザーは、特定のクエリについてクエリを変更して再試行を減らす、または排除することができます。たとえば、メモリ不足のエラーによってクエリが再試行された場合、ウェアハウスの設定を変更すると問題が解決する可能性があります。

クエリの再試行には、アクション不可能なフォールトが原因のものもあります。つまり、クエリの再試行を防ぐためにユーザーができる変更はありません。たとえば、ネットワークが停止した場合には、クエリが再試行される可能性があります。この場合、クエリやそれを実行するウェアハウスに変更はなく、クエリの再試行を防ぐことができます。

QUERY_RETRY_TIME、 QUERY_RETRY_CAUSE、 FAULT_HANDLING_TIME 列は、再試行されるクエリを最適化し、クエリパフォーマンスの変動をより良く理解するのに役立ちます。

出力

この関数は、次の列を返します。

列名

データ型

説明

query_id

VARCHAR

ステートメントの一意のID。

query_text

VARCHAR

SQL ステートメントのテキスト。

database_name

VARCHAR

コンパイル時にクエリのコンテキストで指定されたデータベース。

schema_name

VARCHAR

コンパイル時にクエリのコンテキストで指定されたスキーマ。

query_type

VARCHAR

DML、クエリなど。クエリが現在実行中の場合、またはクエリが失敗した場合、クエリタイプは UNKNOWNになります。

session_id

NUMBER

ステートメントを実行したセッション。

user_name

VARCHAR

クエリを発行したユーザー。

user_type

VARCHAR

クエリを実行するユーザーのタイプ。 USERS ビューtype 列と同じです。Snowpark Container Servicesサービスがクエリを実行する場合、ユーザータイプは SNOWFLAKE_SERVICE になります(サービスクエリ履歴へのアクセス をご参照ください)。

user_database_name

VARCHAR

user_type 列の値が SNOWFLAKE_SERVICE の場合は、サービスのデータベース名を指定します。それ以外の場合は NULL です。

user_schema_name

VARCHAR

user_type 列の値が SNOWFLAKE_SERVICE の場合は、サービスのスキーマ名を指定します。それ以外の場合は NULL です。

role_name

VARCHAR

クエリの時点でセッションでアクティブだったロール。

warehouse_name

VARCHAR

クエリが実行されたウェアハウス(ある場合)。

warehouse_size

VARCHAR

このステートメントが実行されたときのウェアハウスのサイズ。

warehouse_type

VARCHAR

このステートメントが実行されたときのウェアハウスのタイプ。

cluster_number

NUMBER

このステートメントが実行されたクラスター(マルチクラスターウェアハウス内)。

query_tag

VARCHAR

QUERY_TAG セッションパラメーターを介してこのステートメントに設定されたクエリタグ。

execution_status

VARCHAR

クエリの実行ステータス:resuming_warehouse、running、queued、blocked、success、failed_with_error、またはfailed_with_incident。

error_code

NUMBER

クエリがエラーを返した場合のエラーコード

error_message

VARCHAR

クエリがエラーを返した場合のエラーメッセージ

start_time

TIMESTAMP_LTZ

ステートメントの開始時間

end_time

TIMESTAMP_LTZ

ステートメントの終了時間です。クエリがまだ実行中の場合、 end_time はローカルタイムゾーンに合わせて調整された UNIX エポックタイムスタンプ(「1970-01-01 00:00:00」)です。例えば、太平洋標準時の場合、これは「1969-12-31 16:00:00.000-0800」になります。

total_elapsed_time

NUMBER

経過時間(ミリ秒)

bytes_scanned

NUMBER

このステートメントによってスキャンされたバイト数。

rows_produced

NUMBER

このステートメントによって生成された行の数。

compilation_time

NUMBER

コンパイル時間(ミリ秒)

execution_time

NUMBER

実行時間(ミリ秒)

queued_provisioning_time

NUMBER

ウェアハウスの作成、再開、またはサイズ変更のために、ウェアハウスコンピューティングリソースでのプロビジョニングを待機する、ウェアハウスキューで費やされた時間(ミリ秒単位)。

queued_repair_time

NUMBER

ウェアハウス内のコンピューティングリソースの修復を待機する、ウェアハウスキュー内で費やされた時間(ミリ秒単位)。

queued_overload_time

NUMBER

ウェアハウスが現在のクエリワークロードによって過負荷になっているため、ウェアハウスキューで費やされた時間(ミリ秒)。

transaction_blocked_time

NUMBER

同時 DMLによってブロックされた時間(ミリ秒)。

outbound_data_transfer_cloud

VARCHAR

データを別の地域やクラウドにアンロードするステートメントのターゲットクラウドプロバイダー。

outbound_data_transfer_region

VARCHAR

データを別の地域やクラウドにアンロードするステートメントのターゲット地域。

outbound_data_transfer_bytes

NUMBER

別の地域やクラウドにデータをアンロードするステートメントで転送されたバイト数。

inbound_data_transfer_cloud

VARCHAR

別の地域やクラウドからデータをロードするステートメントのソースクラウドプロバイダー。

inbound_data_transfer_region

VARCHAR

別の地域やクラウドからデータをロードするステートメントのソース地域。

inbound_data_transfer_bytes

NUMBER

他のアカウントからの複製操作で転送されたバイト数。ソースアカウントは、現在のアカウントと同じリージョンにある場合もあれば、異なるリージョンにある場合もあります。

list_external_file_time

NUMBER

外部ファイルのリストに費やされた時間(ミリ秒)。

credits_used_cloud_services

NUMBER

クラウドサービスのために使用されたクレジットの数。

release_version

VARCHAR

major_release.minor_release.patch_release の形式のリリースバージョン。

external_function_total_invocations

NUMBER

このクエリがリモートサービスを呼び出した回数の合計。重要な詳細については、使用上の注意をご参照ください。

external_function_total_sent_rows

NUMBER

このクエリが、すべてのリモートサービスに対してすべての呼び出しで送信した行の総数。

external_function_total_received_rows

NUMBER

このクエリが、すべてのリモートサービスに対してすべての呼び出しから受信した行の総数。

external_function_total_sent_bytes

NUMBER

このクエリが、すべてのリモートサービスに対してすべての呼び出しで送信したバイトの総数。

external_function_total_received_bytes

NUMBER

このクエリが、すべてのリモートサービスに対してすべての呼び出しから受信したバイトの総数。

is_client_generated_statement

BOOLEAN

クエリがクライアントによって生成されたかどうかを示します。

query_hash

VARCHAR

正規化された SQL テキストに基づいて計算された ハッシュ値

query_hash_version

NUMBER

QUERY_HASH を計算するために使用される ロジックのバージョン

query_parameterized_hash

VARCHAR

パラメーター化されたクエリに基づいて計算された ハッシュ値

query_parameterized_hash_version

NUMBER

QUERY_PARAMETERIZED_HASH を計算するために使用される ロジックのバージョン

transaction_id

NUMBER

ステートメントを含む トランザクションの ID。ステートメントがトランザクション内で実行されない場合は 0

query_acceleration_bytes_scanned

NUMBER

Query Acceleration Service によってスキャンされたバイト数。

query_acceleration_partitions_scanned

NUMBER

Query Acceleration Serviceによってスキャンされたパーティションの数。

query_acceleration_upper_limit_scale_factor

NUMBER

クエリが受けたであろうメリットの上限 スケールファクター

bytes_written_to_result

NUMBER

結果オブジェクトに書き込まれるバイト数。たとえば、 SELECT * FROM ... は、選択範囲の各フィールドを表す表形式の結果のセットを生成します。 . . 一般に、結果オブジェクトはクエリの結果として生成されたものを表し、 bytes_written_to_result は返された結果のサイズを表します。

rows_written_to_result

NUMBER

結果オブジェクトに書き込まれる行数。CREATE TABLE AS SELECT (CTAS)とすべての DML 操作については、この結果は 1 です。

rows_inserted

NUMBER

クエリによって挿入された行の数。

query_retry_time

NUMBER

アクション可能なエラーによるクエリ再試行の実行合計時間(ミリ秒)。詳細については、 クエリ再試行列 をご参照ください。

query_retry_cause

VARCHAR

クエリを再試行する原因となったエラー。クエリの再試行がない場合、フィールドは NULL となります。詳細については、 クエリ再試行列 をご参照ください。

fault_handling_time

NUMBER

アクション 不可能 なエラーによるクエリ再試行の実行合計時間(ミリ秒)。詳細については、 クエリ再試行列 をご参照ください。

query_type 列の潜在的な値は次のとおりです。

  • CREATE_USER

  • CREATE_ROLE

  • CREATE_NETWORK_POLICY

  • ALTER_ROLE

  • ALTER_NETWORK_POLICY

  • ALTER_ACCOUNT

  • DROP_SEQUENCE

  • DROP_USER

  • DROP_ROLE

  • DROP_NETWORK_POLICY

  • RENAME_NETWORK_POLICY

  • REVOKE

現在のセッションで実行された最後の100クエリまで取得します。

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY_BY_SESSION())
  ORDER BY start_time;
Copy

現在のユーザー(または現在のユーザーが MONITOR 権限を持つウェアハウスの任意のユーザー)によって実行された最後の100クエリまで取得します。

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY())
  ORDER BY start_time;
Copy

過去1時間に現在のユーザー(または、現在のユーザーが MONITOR 権限を持つウェアハウスの任意のユーザー)によって実行された最後の100クエリまで取得します。

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY(DATEADD('hours',-1,CURRENT_TIMESTAMP()),CURRENT_TIMESTAMP()))
  ORDER BY start_time;
Copy

現在のユーザー(または現在のユーザーが MONITOR 権限を持つウェアハウス上の任意のユーザー)が過去7日間に指定した30分ブロック内で実行したすべてのクエリを取得します。

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY(
    END_TIME_RANGE_START=>TO_TIMESTAMP_LTZ('2017-12-4 12:00:00.000 -0700'),
    END_TIME_RANGE_END=>TO_TIMESTAMP_LTZ('2017-12-4 12:30:00.000 -0700')));
Copy

my_xsmall_wh というウェアハウスに対して実行されたクライアント生成ステートメントの数を取得します。

SELECT COUNT(*)
  FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY_BY_WAREHOUSE(
    WAREHOUSE_NAME => 'my_xsmall_wh',
    INCLUDE_CLIENT_GENERATED_STATEMENT => TRUE));
Copy