- カテゴリ:
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 ビュー (Account Usage) クエリ履歴でクエリのアクティビティをモニターする (Snowsight ダッシュボード)
構文¶
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> ] )
引数¶
すべての引数はオプションです。
END_TIME_RANGE_START => constant_expr
、 .END_TIME_RANGE_END => constant_expr
クエリの実行が完了した過去7日以内の時間範囲(TIMESTAMP_LTZ 形式):
END_TIME_RANGE_END
が指定されていない場合、関数はまだ実行中のクエリを含むすべてのクエリを返します。END_TIME_RANGE_END
が CURRENT_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'
)。ユーザーではなくバックグラウンドサービスであるSYSTEM
(USER_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
関数によって返される行の最大数を指定する数値です。
一致する行の数がこの制限よりも大きい場合、指定された制限まで、最新の終了時刻(またはまだ実行中のもの)のクエリが返されます。
範囲:
1
~10000
デフォルト:
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_invocations
、external_function_total_sent_rows
、external_function_total_received_rows
、external_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 列は、再試行されるクエリを最適化し、クエリパフォーマンスの変動をより良く理解するのに役立ちます。
出力¶
この関数は、次の列を返します。
列名 |
データ型 |
説明 |
---|---|---|
|
VARCHAR |
ステートメントの一意のID。 |
|
VARCHAR |
SQL ステートメントのテキスト。 |
|
VARCHAR |
コンパイル時にクエリのコンテキストで指定されたデータベース。 |
|
VARCHAR |
コンパイル時にクエリのコンテキストで指定されたスキーマ。 |
|
VARCHAR |
DML、クエリなど。クエリが現在実行中の場合、またはクエリが失敗した場合、クエリタイプは UNKNOWNになります。 |
|
NUMBER |
ステートメントを実行したセッション。 |
|
VARCHAR |
クエリを発行したユーザー。 |
|
VARCHAR |
クエリを実行するユーザーのタイプ。 USERS ビュー の |
|
VARCHAR |
|
|
VARCHAR |
|
|
VARCHAR |
クエリの時点でセッションでアクティブだったロール。 |
|
VARCHAR |
クエリが実行されたウェアハウス(ある場合)。 |
|
VARCHAR |
このステートメントが実行されたときのウェアハウスのサイズ。 |
|
VARCHAR |
このステートメントが実行されたときのウェアハウスのタイプ。 |
|
NUMBER |
このステートメントが実行されたクラスター(マルチクラスターウェアハウス内)。 |
|
VARCHAR |
QUERY_TAG セッションパラメーターを介してこのステートメントに設定されたクエリタグ。 |
|
VARCHAR |
クエリの実行ステータス:resuming_warehouse、running、queued、blocked、success、failed_with_error、またはfailed_with_incident。 |
|
NUMBER |
クエリがエラーを返した場合のエラーコード |
|
VARCHAR |
クエリがエラーを返した場合のエラーメッセージ |
|
TIMESTAMP_LTZ |
ステートメントの開始時間 |
|
TIMESTAMP_LTZ |
ステートメントの終了時間です。クエリがまだ実行中の場合、 |
|
NUMBER |
経過時間(ミリ秒) |
|
NUMBER |
このステートメントによってスキャンされたバイト数。 |
|
NUMBER |
このステートメントによって生成された行の数。 |
|
NUMBER |
コンパイル時間(ミリ秒) |
|
NUMBER |
実行時間(ミリ秒) |
|
NUMBER |
ウェアハウスの作成、再開、またはサイズ変更のために、ウェアハウスコンピューティングリソースでのプロビジョニングを待機する、ウェアハウスキューで費やされた時間(ミリ秒単位)。 |
|
NUMBER |
ウェアハウス内のコンピューティングリソースの修復を待機する、ウェアハウスキュー内で費やされた時間(ミリ秒単位)。 |
|
NUMBER |
ウェアハウスが現在のクエリワークロードによって過負荷になっているため、ウェアハウスキューで費やされた時間(ミリ秒)。 |
|
NUMBER |
同時 DMLによってブロックされた時間(ミリ秒)。 |
|
VARCHAR |
データを別の地域やクラウドにアンロードするステートメントのターゲットクラウドプロバイダー。 |
|
VARCHAR |
データを別の地域やクラウドにアンロードするステートメントのターゲット地域。 |
|
NUMBER |
別の地域やクラウドにデータをアンロードするステートメントで転送されたバイト数。 |
|
VARCHAR |
別の地域やクラウドからデータをロードするステートメントのソースクラウドプロバイダー。 |
|
VARCHAR |
別の地域やクラウドからデータをロードするステートメントのソース地域。 |
|
NUMBER |
他のアカウントからの複製操作で転送されたバイト数。ソースアカウントは、現在のアカウントと同じリージョンにある場合もあれば、異なるリージョンにある場合もあります。 |
|
NUMBER |
外部ファイルのリストに費やされた時間(ミリ秒)。 |
|
NUMBER |
クラウドサービスのために使用されたクレジットの数。 |
|
VARCHAR |
|
|
NUMBER |
このクエリがリモートサービスを呼び出した回数の合計。重要な詳細については、使用上の注意をご参照ください。 |
|
NUMBER |
このクエリが、すべてのリモートサービスに対してすべての呼び出しで送信した行の総数。 |
|
NUMBER |
このクエリが、すべてのリモートサービスに対してすべての呼び出しから受信した行の総数。 |
|
NUMBER |
このクエリが、すべてのリモートサービスに対してすべての呼び出しで送信したバイトの総数。 |
|
NUMBER |
このクエリが、すべてのリモートサービスに対してすべての呼び出しから受信したバイトの総数。 |
|
BOOLEAN |
クエリがクライアントによって生成されたかどうかを示します。 |
|
VARCHAR |
正規化された SQL テキストに基づいて計算された ハッシュ値。 |
|
NUMBER |
|
|
VARCHAR |
パラメーター化されたクエリに基づいて計算された ハッシュ値。 |
|
NUMBER |
|
|
NUMBER |
ステートメントを含む トランザクションの ID。ステートメントがトランザクション内で実行されない場合は |
|
NUMBER |
Query Acceleration Service によってスキャンされたバイト数。 |
|
NUMBER |
Query Acceleration Serviceによってスキャンされたパーティションの数。 |
|
NUMBER |
クエリが受けたであろうメリットの上限 スケールファクター。 |
|
NUMBER |
結果オブジェクトに書き込まれるバイト数。たとえば、 |
|
NUMBER |
結果オブジェクトに書き込まれる行数。CREATE TABLE AS SELECT (CTAS)とすべての DML 操作については、この結果は |
|
NUMBER |
クエリによって挿入された行の数。 |
|
NUMBER |
アクション可能なエラーによるクエリ再試行の実行合計時間(ミリ秒)。詳細については、 クエリ再試行列 をご参照ください。 |
|
VARCHAR |
クエリを再試行する原因となったエラー。クエリの再試行がない場合、フィールドは NULL となります。詳細については、 クエリ再試行列 をご参照ください。 |
|
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;
現在のユーザー(または現在のユーザーが MONITOR 権限を持つウェアハウスの任意のユーザー)によって実行された最後の100クエリまで取得します。
SELECT *
FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY())
ORDER BY start_time;
過去1時間に現在のユーザー(または、現在のユーザーが MONITOR 権限を持つウェアハウスの任意のユーザー)によって実行された最後の100クエリまで取得します。
SELECT *
FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY(DATEADD('hours',-1,CURRENT_TIMESTAMP()),CURRENT_TIMESTAMP()))
ORDER BY start_time;
現在のユーザー(または現在のユーザーが 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')));
my_xsmall_wh
というウェアハウスに対して実行されたクライアント生成ステートメントの数を取得します。
SELECT COUNT(*)
FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY_BY_WAREHOUSE(
WAREHOUSE_NAME => 'my_xsmall_wh',
INCLUDE_CLIENT_GENERATED_STATEMENT => TRUE));