カテゴリ:

情報スキーマテーブル関数

QUERY_HISTORY , QUERY_HISTORY_BY_*

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

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

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

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

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

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

注釈

これらの関数は、過去7日以内のクエリアクティビティを返します。

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

QUERY_HISTORY ビュー (アカウントの使用)

構文

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

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

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

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

引数

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

END_TIME_RANGE_START => 定数式. END_TIME_RANGE_END => 定数式

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

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

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

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

注釈

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

SESSION_ID => 定数式

QUERY_HISTORY_BY_SESSION にのみ適用

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

デフォルト: CURRENT_SESSION

USER_NAME => '文字列'

QUERY_HISTORY_BY_USER にのみ適用

ユーザーログイン名または CURRENT_USER を指定する文字列です。指定したユーザーが実行したクエリのみが返されます。ログイン名は一重引用符で囲む必要があります。また、ログイン名にスペース、大文字と小文字の混在、または特殊文字がある場合、名前は二重引用符を一重引用符内で囲む必要があります(例: '"User 1"''user1')。

デフォルト: CURRENT_USER

WAREHOUSE_NAME => '文字列'

QUERY_HISTORY_BY_WAREHOUSE にのみ適用

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

デフォルト: CURRENT_WAREHOUSE

RESULT_LIMIT => 数値

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

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

範囲: 110000

デフォルト: 100

使用上の注意

  • 現在のユーザーが実行したクエリを返します。また、現在のユーザーが MONITOR 権限を持つウェアハウスのユーザーにより実行されたクエリも返します。

    すべてのウェアハウスを所有するシステム管理者(SYSADMINロールを持つユーザー)は、すべてのクエリを表示できます。

  • 情報スキーマテーブル関数を呼び出す場合、セッションには使用中の 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 ステートメント内の外部関数の数。

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

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

出力

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

列名

データ型

説明

QUERY_ID

TEXT

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

QUERY_TEXT

TEXT

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

DATABASE_NAME

TEXT

クエリ時に使用されていたデータベース。

SCHEMA_NAME

TEXT

クエリ時に使用されていたスキーマ。

QUERY_TYPE

TEXT

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

SESSION_ID

NUMBER

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

USER_NAME

TEXT

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

ROLE_NAME

TEXT

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

WAREHOUSE_NAME

TEXT

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

WAREHOUSE_SIZE

TEXT

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

WAREHOUSE_TYPE

TEXT

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

CLUSTER_NUMBER

NUMBER

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

QUERY_TAG

TEXT

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

EXECUTION_STATUS

TEXT

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

ERROR_CODE

NUMBER

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

ERROR_MESSAGE

TEXT

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

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

TEXT

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

OUTBOUND_DATA_TRANSFER_REGION

TEXT

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

OUTBOUND_DATA_TRANSFER_BYTES

NUMBER

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

INBOUND_DATA_TRANSFER_CLOUD

TEXT

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

INBOUND_DATA_TRANSFER_REGION

TEXT

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

INBOUND_DATA_TRANSFER_BYTES

NUMBER

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

LIST_EXTERNAL_FILES_TIME

NUMBER

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

CREDITS_USED_CLOUD_SERVICES

NUMBER

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

RELEASE_VERSION

NUMBER

メジャーリリース.マイナーリリース.パッチリリース の形式のリリースバージョン。

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

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

現在のセッションで実行された最後の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;

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

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')));