カテゴリ:

Information Schemaテーブル関数

TASK_HISTORY

このテーブル関数を使用して、指定した日付範囲内の タスク の使用履歴をクエリできます。この関数は、Snowflakeアカウント全体、指定されたタスク、またはタスクグラフの使用履歴を返します。

構文

TASK_HISTORY(
      [ SCHEDULED_TIME_RANGE_START => <constant_expr> ]
      [, SCHEDULED_TIME_RANGE_END => <constant_expr> ]
      [, RESULT_LIMIT => <integer> ]
      [, TASK_NAME => '<string>' ]
      [, ERROR_ONLY => { TRUE | FALSE } ]
      [, ROOT_TASK_ID => '<string>'] )
Copy

引数

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

SCHEDULED_TIME_RANGE_START => constant_expr. SCHEDULED_TIME_RANGE_END => constant_expr

タスクの実行がスケジュールされた過去7日以内の時間範囲( TIMESTAMP_LTZ 形式)。時間範囲が過去7日以内に収まらない場合、エラーが返されます。

  • SCHEDULED_TIME_RANGE_END が指定されていない場合、関数は既に完了したタスク、現在実行中のタスク、または将来スケジュールされるタスクを返します。

  • SCHEDULED_TIME_RANGE_ENDCURRENT_TIMESTAMP の場合、関数は既に完了したタスクまたは現在実行中のタスクを返します。現在時刻の直前に実行されるタスクは、スケジュール済みとして識別される可能性があることに注意してください。

  • 既に完了したタスクまたは現在実行中のタスクのみをクエリするには、フィルターに WHERE query_id IS NOT NULL を含めます。TASK_HISTORY 出力の QUERY_ID 列は、タスクの実行が開始されたときにのみ入力されます。

注釈

開始時刻または終了時刻が指定されていない場合、指定された RESULT_LIMIT 値までの最新のタスクが返されます。

RESULT_LIMIT => integer

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

一致する行の数がこの制限よりも大きい場合、指定された制限まで、最新のタイムスタンプを持つタスク実行が返されます。

範囲: 110000

デフォルト: 100

TASK_NAME => string

タスクを指定する、大文字と小文字を区別しない文字列。非修飾タスク名のみがサポートされています。指定されたタスクの実行のみが返されます。複数のタスクが同じ名前を持っている場合、関数はこれらの各タスクの履歴を返します。

ERROR_ONLY => TRUE | FALSE

TRUE に設定すると、この関数は失敗したかキャンセルされたタスク実行のみを返します。

ROOT_TASK_ID =>string

タスクグラフ内にあるルートタスクの一意の識別子。この ID は、同じタスクの SHOW TASKS 出力にある ID 列の値と一致します。ルートタスクとタスクグラフの一部である子タスクの履歴を表示するには、 ROOT_TASK_ID を指定します。

使用上の注意

  • この関数は、 ACCOUNTADMIN ロール、タスク所有者、または MONITOR EXECUTION グローバル権限を持つロールの結果のみを返します。ロールが、 MONITOR EXECUTION 権限に加えて、タスクを保存するデータベースとスキーマに対する USAGE 権限を持つ場合以外は、出力の DATABASE_NAME および SCHEMA_NAME 値は NULL であることに注意してください。

  • この関数は、 RESULT_LIMIT 引数値に設定されている行数を返します。最大値は10,000行です。デフォルト値は 100 です。この制限を回避するには、 TASK_HISTORY ビュー (Account Usage)を使用します。

  • TASK_HISTORY 関数がクエリされると、そのタスク名、時間範囲、および結果制限引数が 最初 に適用され、指定されている場合はそれぞれ WHERE 句と LIMIT 句が続くことに注意してください。さらに、 TASK_HISTORY 関数は SCHEDULED_TIME の降順で記録を返します。SUCCEEDED、 FAILED、または CANCELLED の状態のタスクは通常、早めにスケジュールされているため、検索結果では一般的に後に返されます。

  • 実際には、アカウントで多数のタスクを実行している場合、関数によって返される結果には、想定より少ない数の完了したタスクまたはスケジュールされたタスクのみが含まれる可能性があります。すでに実行されているタスクの履歴をクエリするには、 SCHEDULED_TIME_RANGE_START => constant_exprSCHEDULED_TIME_RANGE_END => constant_expr 引数の組み合わせを使用します。

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

  • この関数は、過去7日以内に実行されたすべての実行または次の8日以内にスケジュールされた実行を返すことができます。

  • クラウドサービスの障害時のタスク実行は、この関数の結果に重複して表示されることがあります。クラウドサービスの障害時に、Snowflakeがタスクを再実行して、そのタスクに異なるタスク SCHEDULED_TIME がある2つの UUIDs が付与される可能性があります。 TASK_HISTORY ビュー は、再実行されたタスクの最後の UUID のみを表示します。

  • タスクグラフ内のすべてのタスク実行は、同じタスク履歴出力を表示します。

出力

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

列名

データ型

説明

QUERY_ID

TEXT

タスクによって実行された SQL ステートメントのID です。ステートメントまたはストアドプロシージャの実行に関する追加の詳細は、 QUERY_HISTORY ビューと結合できます。

NAME

TEXT

タスクの名前。

DATABASE_NAME

TEXT

タスクを含むデータベースの名前です。

SCHEMA_NAME

TEXT

タスクを含むスキーマの名前。

QUERY_TEXT

TEXT

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

CONDITION_TEXT

TEXT

実行するかどうかを決定するときにタスクが評価する WHEN 条件のテキスト。

STATE

TEXT

タスクのステータス:

  • SCHEDULED: 実行予定。

  • EXECUTING: 現在実行中。

  • SUCCEEDED: 実行成功。

  • FAILED: 実行失敗。

  • FAILED_AND_AUTO_SUSPENDED: タスクは失敗し、自動的に中断された。

  • CANCELLED: 実行中止。

  • SKIPPED は、タスクの実行が開始されたが、タスク定義のオプションの WHEN パラメーターが FALSE 値を返したことを示します。したがって、実行はウェアハウスを再開せず(タスクが顧客管理のコンピューティングリソースを使用する場合)、タスク定義の SQL コードを実行しませんでした。

ERROR_CODE

NUMBER

ステートメントがエラーを返した場合のエラーコードです。

ERROR_MESSAGE

TEXT

ステートメントがエラーを返した場合のエラーメッセージです。

SCHEDULED_TIME

TIMESTAMP_LTZ

タスクが実行を開始する/スケジュールされた時刻です。絶対精度を確保するために最善を尽くしますが、保証は、スケジュールされた時間の にタスクが実行されないようにすることのみに限定されます。

QUERY_START_TIME

TIMESTAMP_LTZ

タスク定義内のクエリの実行が開始された時刻、または SCHEDULED_TIME が未来の場合、または現在スケジュールされている実行がまだ開始されていない場合は NULL。このタイムスタンプは、 QUERY_HISTORY によって返されるクエリの開始時間と一致します。

NEXT_SCHEDULED_TIME

TIMESTAMP_LTZ

SCHEDULED_TIME 時刻に開始されたスタンドアロンタスクまたはタスクグラフの現在の実行が時間内に完了すると仮定して、スタンドアロンタスクまたはルートタスク(タスクの タスクグラフ 内)が次に実行を開始するようにスケジュールされる時刻。

COMPLETED_TIME

TIMESTAMP_LTZ

タスクが完了した時刻、または SCHEDULED_TIME が将来の場合、またはタスクがまだ実行中の場合は NULL になります。

ROOT_TASK_ID

TEXT

タスクグラフ内にあるルートタスクの一意の識別子。この ID は、同じタスクの SHOW TASKS 出力にある ID 列の値と一致します。

GRAPH_VERSION

NUMBER

実行済み、または実行予定のタスクグラフのバージョンを識別する整数。値の増分の増加は、タスクグラフ内のタスクに対する1つ以上の変更を表します。ルートタスクが( CREATE OR REPLACE TASK を使用して)再作成された場合、バージョン番号は1から再開します。

RUN_ID

NUMBER

タスクグラフ 内のスタンドアロンタスクまたはルートタスクが本来実行を開始するようにスケジュールされている、またはされていた時間。形式はエポック時間(単位:ミリ秒)です。 . . 元の スケジュール時間とは、システムが同じタスクを再スケジュールして異なる時間に実行し、再試行またはロードのリバランスを行うまれなインスタンスを指します。その場合、RUN_IDは元のスケジュールされた実行時間を表示し、SCHEDULED_TIMEは再スケジュールされた実行時間を表示します。 . . RUN_ID は、再試行前に実行された現在のタスク/グラフの一意な識別子ではない可能性があります。RUN_ID の代わりとして、 GRAPH_RUN_GROUP_ID 列を使用することができます。

RETURN_VALUE

TEXT

タスクグラフ内の先行タスクに設定された値。戻り値は、先行タスクで SYSTEM$SET_RETURN_VALUE 関数を呼び出すことにより、明示的に設定されます。

SCHEDULED_FROM

TEXT

次のいずれか:

  • SCHEDULE: CREATE TASK の SCHEDULE 句または AFTER 句で説明されているように、タスクは正常に実行されるようにスケジュールされました。

  • EXECUTE TASK: タスクは EXECUTE TASK を使用して実行するようにスケジュールされました。

  • MANUAL RETRY: タスクは EXECUTE TASK ... RETRY LAST を使用して実行するようにスケジュールされました。

タスクグラフにある子タスクの実行の場合、列はルートタスクの実行と同じ値を返します。

ATTEMPT_NUMBER

NUMBER

このタスクの実行を試行した回数を表す整数。初期値は1。

CONFIG

TEXT

ルートタスクに設定されている場合はグラフレベルの構成を表示します。それ以外の場合は NULL を表示します。

QUERY_HASH

TEXT

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

QUERY_HASH_VERSION

NUMBER

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

QUERY_PARAMETERIZED_HASH

TEXT

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

QUERY_PARAMETERIZED_HASH_VERSION

NUMBER

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

GRAPH_RUN_GROUP_ID

NUMBER

グラフ実行の識別子。グラフ実行に複数のタスク実行がある場合、各タスク実行は同じ GRAPH_RUN_GROUP_ID を表示します。GRAPH_RUN_GROUP_ID、および ATTEMPT_NUMBER の組み合わせは、グラフの実行を一意に識別するために使用できます。

BACKFILL_INFO

OBJECT

今後の使用のために予約されています。すべての行に対して返される値は NULL です。

アカウントで、最新のタスク実行(完了、実行中、または将来のスケジュール)100個のを取得します。関数によって返される行の最大数は、デフォルトで100に制限されていることに注意してください。

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY())
  ORDER BY SCHEDULED_TIME;
Copy

アカウントにある、過去7日以内に指定された30分単位のタスクの実行履歴を取得します。

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(
    SCHEDULED_TIME_RANGE_START=>TO_TIMESTAMP_LTZ('2018-11-9 12:00:00.000 -0700'),
    SCHEDULED_TIME_RANGE_END=>TO_TIMESTAMP_LTZ('2018-11-9 12:30:00.000 -0700')));
Copy

過去1時間以内にスケジュールされた、指定されたタスクの最新の実行(完了、実行中、または将来のスケジュール)10個を取得します。

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(
    SCHEDULED_TIME_RANGE_START=>DATEADD('hour',-1,current_timestamp()),
    RESULT_LIMIT => 10,
    TASK_NAME=>'mytask'));
Copy

注釈

完了または実行中のタスクのみを取得するには、 WHERE query_id IS NOT NULL を使用してクエリをフィルターします。 RESULT_LIMIT が返される結果を既に減らした 後に このフィルターが適用されるため、1つのタスクがスケジュールされていてもまだ開始されていない場合、クエリは9つのタスクを返す可能性があります。

指定されたルートタスクのタスクグラフ内にあるすべてのタスクの実行履歴を取得します。

SELECT *
  FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(ROOT_TASK_ID=>'d4b89013-c942-465c-bcb8-e7037a932b04'));
Copy

最近クエリされたルートタスクのタスクグラフ内にあるすべてのタスクの実行履歴を取得します。

DESC TASK my_task
SET task_id=(SELECT "id" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())));
SELECT *
  FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(ROOT_TASK_ID=>$task_id));
Copy