動的テーブルの一時停止または再開

このトピックでは、動的テーブルが自動的に一時停止する理由と、動的テーブルを手動で一時停止または再開する方法について説明します。

自動動的テーブル一時停止

動的テーブルは、5回連続してスケジュール・リフレッシュ・エラーが発生すると自動的に中断されます。手動リフレッシュを含め、リフレッシュに成功するとエラーカウントはゼロにリセットされます。例えば、あるテーブルが2回連続してスケジュール・リフレッシュに失敗し、次のリフレッシュに成功した場合、エラー・カウントはゼロにリセットされます。

手動でトリガーされたリフレッシュによるエラーは、この制限にはカウントされません。

一時停止されたテーブルに依存している動的テーブルも一時停止されます。

動的テーブルの現在の状態 (ACTIVE または SUSPENDED) は、以下のいずれかのオプションを使用して表示できます。

DYNAMIC_TABLE_GRAPH_HISTORY テーブル関数を実行します。

SELECT name, scheduling_state
  FROM TABLE (INFORMATION_SCHEMA.DYNAMIC_TABLE_GRAPH_HISTORY());
Copy

出力では、 SCHEDULING_STATE 列が動的テーブルの状態 (ACTIVE または SUSPENDED)を示します。

+-------------------+---------------------------------------------------------------------------------+
  | NAME              | SCHEDULING_STATE                                                                |
  |-------------------+---------------------------------------------------------------------------------|
  | DTSIMPLE          | {                                                                               |
  |                   |   "reason_code": "SUSPENDED_DUE_TO_ERRORS",                                     |
  |                   |   "reason_message": "The DT was suspended due to 5 consecutive refresh errors", |
  |                   |   "state": "SUSPENDED",                                                         |
  |                   |   "suspended_on": "2023-06-06 19:27:29.142 -0700"                               |
  |                   | }                                                                               |
  | DT_TEST           | {                                                                               |
  |                   |   "state": "ACTIVE"                                                             |
  |                   | }                                                                               |
  +-------------------+---------------------------------------------------------------------------------+

動的テーブルを手動で一時停止

動的テーブルが不要で、リフレッシュ・コストを回避したい場合、そのテーブルを削除せずに手動で一時停止し、将来の使用のために可用性を維持します。例えば、スキップが発生し、トラブルシューティングのために時間が必要な場合などです。

動的テーブルでは正確な更新タイミングが保証されないため、特定の時間や発生時に確実に更新したい場合は、定期的に実行されるタスクやスクリプトを使用して手動更新を実行します。これにより、テーブルが更新されるタイミングを正確に制御することができます。

ALTER DYNAMIC TABLE ... SUSPEND コマンドまたはSnowsightを使用して、動的テーブルを手動で一時停止できます:

  • 動的テーブルを一時停止すると、そのテーブルから ダウンストリーム にある動的テーブルも一時停止されます。

  • ベース・テーブルのTime Travel保持期間を超えてインクリメンタル・リフレッシュで動的テーブルを一時停止すると、動的テーブル再開後の次のリフレッシュで失敗します。

ALTER DYNAMIC TABLE my_dynamic_table SUSPEND;
Copy

動的テーブルの再開

動的テーブルを再開するには、 ALTER DYNAMIC TABLE ... RESUME コマンドか、 Snowsight ... コマンドを使用します。

ALTER DYNAMIC TABLE my_dynamic_table RESUME;
Copy