ソーステーブルが更新されたときにジョブをトリガーする
テーブル更新トリガー を使用すると、ソース テーブルが更新されたときにジョブの実行をトリガーできます。この機能を使用すると、継続的に実行中のクラスターやテーブルを更新するプロセスの知識がなくても、新しいデータの準備ができたときにジョブを実行できます。
テーブル更新トリガーはどのように機能しますか?
テーブル更新トリガーはテーブルの更新をチェックし、テーブルが更新されるとジョブが実行されます。トリガーは、1 つのテーブルが更新されたとき、またはトリガーによって監視されているすべてのテーブルが更新されたときに実行できます。テーブル更新トリガーでは、テーブルの一覧表示とストレージの場所からの更新の読み取りに関連するクラウド プロバイダーのコスト以外の追加コストは発生しません。
テーブル更新トリガーは、更新、マージ、削除などのデータの変更について 1 つ以上のテーブルを監視するように構成できます。これらのテーブルはUnity Catalog DeltaとIcebergマネージドテーブル、 Delta LakeによってバックアップされたUnity Catalog外部テーブル、マテリアライズドビュー、ストリーミングテーブルがサポートされています。 Delta Sharingを介して共有されるビューおよびテーブルはサポートされていません。 複数のテーブルを選択する場合、テーブルのいずれかまたはすべてが更新されたときにジョブがトリガーされるかどうかを指定できます。
テーブル更新トリガーを追加する
既存のジョブにテーブル更新トリガーを追加するには:
-
ワークスペースの左側のナビゲーションで、 [ジョブとパイプライン] をクリックします。
-
ジョブのリストで、トリガーを追加するジョブの名前をクリックします。
-
右側のパネルの 「スケジュールとトリガー」 で、 「トリガーの追加」を クリックします。
-
トリガーの種類で、 テーブル更新 を選択します。
-
[テーブル] で、更新を監視するテーブルを追加します。
複数のテーブルを選択する場合は、[トリガーの タイミング] のオプションを構成して、 すべてのテーブルが更新された とき、または 任意のテーブルが更新された ときにジョブの実行をトリガーするかどうかを指定します。
-
(オプション) [詳細設定] をクリックして、 詳細 オプションを構成します。
- トリガー間の最小時間 (秒) : 前の実行が完了した後、実行をトリガーするまで待機する最小時間。この期間中に更新されたテーブルは、待機時間が終了した後にのみ実行をトリガーします。Databricks は、監視対象のテーブルが更新された場合でも、実行をトリガーする前にこの時間待機します。
- 最後の変更後の待機時間 (秒) : テーブルの更新後に実行をトリガーするまでの待機時間。この期間中にテーブルがさらに更新されると、タイマーがリセットされます。この設定は、テーブルの更新がバッチで行われ、すべてのテーブルが更新された後にバッチ全体を処理する必要がある場合に使用できます。
両方のオプションを使用すると、トリガーはトリガー間の最小時間を待機し、その後、最後の変更後に設定された時間を待機します。たとえば、最小時間が 120 秒で、最後の変更後の待機時間が 60 秒の場合、最初の 60 秒以内にテーブルの更新が発生しても、少なくとも 120 秒が経過するまで実行はトリガーされません。さらに、1 つの更新が 5 秒後に行われ、次に別の更新が 115 秒後に行われる場合、最後の変更後の待機により、実行は 175 秒経過するまでトリガーされません。
-
構成を検証するには、 [テスト トリガー] をクリックします。
-
保存 をクリックします。
Jobs APIからテーブル更新トリガーを構成することもできます。trigger
オブジェクトをjobs/create
、 jobs/update
、またはjobs/reset
操作に追加します。
管理されたファイルイベントによるテーブル更新トリガー
最高のパフォーマンスとスケーラビリティを得るには、テーブルが保存されている外部ロケーションでファイル イベントを有効にします。 この 1 回限りのセットアップ ステップにより、テーブル更新トリガーの効率が向上し、よりパフォーマンスの高いAuto Loaderやファイル到着トリガーなどの他の機能が利用できるようになります。
ファイル イベントが有効になっている場合、Databricks はクラウド プロバイダーの変更通知を使用して取り込みメタデータを自動的に追跡し、テーブルの更新がより高速かつ効率的になります。
テーブルがメタストアのルートレベルのストレージにある場合は、まずテーブルを外部の場所に変換してから、その場所でファイル イベントを有効にします。
テーブル更新トリガーに関連するジョブの問題
ジョブにテーブル更新トリガーを使用する場合、ジョブ内のパラメーター値として使用できる 3 つの新しい動的値参照が利用可能になります。
{{job.trigger.table.updated_tables}}
- 最後のジョブ実行以降に更新されたテーブルの JSON リスト。{{job.trigger.table.<catalog.schema.table>.commit_timestamp.iso_datetime}}
- ジョブの実行をトリガーした最新のコミット タイムスタンプ。{{job.trigger.table.<catalog.schema.table>.version}}
- ジョブの実行をトリガーした最新のコミット バージョン。
commit_timestamp
およびversion
の場合、動的な値参照のバージョンが複数あります。監視対象の各テーブルには、データを取得するテーブルの完全修飾名を持つ<catalog.schema.table>
が含まれます。トリガーで監視されているテーブルが 1 つだけの場合、 <catalog.schema.table>
のない値が表示されます。たとえば、 {{job.trigger.table.commit_timestamp.iso_datetime}}
を使用できます。
ジョブの問題の詳細については、 「ジョブのパラメータ化」を参照してください。
失敗したテーブル更新トリガーの通知を受信する
テーブル更新トリガーの評価が失敗した場合に通知を受け取るには、ジョブ失敗時の電子メールまたはシステム宛先通知を構成します。 「ジョブに通知を追加する」を参照してください。
制限事項
- ワークスペースごとに最大 1000 個のテーブル更新トリガーを設定できます。
- トリガーごとに最大 10 個の管理対象テーブルまたはDeltaテーブルを選択できます。