メインコンテンツまでスキップ

バックフィルジョブ

スケジュールに従って実行されるジョブを作成した後、システムにデータをバックフィルする必要がある場合があります。例えば:

  • システムのエラーにより、一定期間にわたってデータが失われました。その日付範囲のデータをバックフィルする必要があります。
  • 履歴分析のために、システムが実行される前のデータを取り込む必要があります。

データのバックフィルでは、データを最新の状態に保つために使用するのと同じジョブ自動化を使用する必要があります。ジョブ バックフィルを使用すると、既存の自動化を使用してさまざまな日付範囲でジョブを実行できます。

バックフィルはどのように機能しますか?

異なるスケジュールでジョブを複数回バックフィル実行し、以前の日付範囲からジョブ実行を再作成します。 バックフィルを作成するには、バックフィルする日付範囲と、その範囲をジョブ実行に分割するために使用される時間間隔を選択します。バックフィルを実行すると、選択した日付範囲と時間間隔に基づいて実行の数が生成されます。

各実行に渡される既存の不安をオーバーライドするようにバックフィルを設定することも、存在する場合にジョブが使用する新しい不安を追加することもできます。

注記

ジョブは、バックフィルの日付範囲の正しいデータを処理するために指定された問題を処理する必要があります。 これには、ジョブの変更が必要になる場合があります。 日付範囲を正しく処理するクエリを作成する方法の例については、「 LakeFlowジョブを使用してバックフィル サポート付きの定期クエリを設定する」チュートリアルを参照してください。

日付範囲によってジョブ実行はどのように生成されますか?

バックフィルは通常、バックフィルに必要な時間にわたって通常のジョブが実行されるのと同じ時間間隔に設定された複数のジョブ実行で構成されます。通常のジョブと同じ時間間隔を使用することで、ジョブで設定したパフォーマンスと最適化が維持されます。バックフィルを複数の実行に分割すると、それらを並行してトリガーすることも可能になり、バックフィルがより速く完了します。

たとえば、8 月 9 日と 10 日の 1 時間ごとの処理でエラーが発生した場合、その日に失われたデータをカバーするためにバックフィルを生成する必要があります。それらの 2 日間のバックフィルを作成し、時間間隔を 1 時間に設定します。これにより、日付範囲内の 1 時間分のデータごとに 1 回ずつ、最大 48 回の実行がトリガーされます。各実行には、処理する必要がある時間が経過します。

バックフィルはどのように並行して実行されるのでしょうか?

日付範囲に複数の時間間隔があるバックフィルでは、複数の「実行」がトリガーされます。多くの場合、複数の「実行」は並行して実行できます。 並列実行を設定するにはどうすればよいでしょうか?

ジョブには同時実行の最大制限があります。デフォルトでは 1 に設定されていますが、もっと高い値に設定することもできます。これはジョブ設定にあり、 詳細設定 からアクセスできます。

  1. ワークスペースで、サイドバーの ワークフロー アイコン。 ジョブ & パイプライン をクリックします。

  2. 設定を編集するジョブの名前をクリックします。これにより、ジョブモニタリングの詳細ページが開きます。

  3. 設定は右側のパネルに表示されます。 詳細設定 を選択します。

  4. [詳細設定] で、クリックして最大ライナー実行を編集できます。鉛筆アイコン。

    これを 1 より大きい数値に設定すると、その数のジョブを並列実行できるようになります。たとえば、これを2に設定すると、2 つのジョブを同時に実行できます。

注記

パイプライン タスクを含むジョブは並列実行できず、警告が表示されます。制限事項を参照してください。

前提条件

ジョブは、バックフィル プロセスで正しいデータを取得するために使用される日付または時刻のパラメーターをサポートする必要があります。定期的に実行されるジョブの多くには、オーバーライドできる時間を使用するパラメーターが既にありますが、バックフィルに固有のパラメーターを設定することもできます。

バックフィルの作成方法

バックフィルはジョブのユーザー インターフェースを通じて作成します。

  1. ワークスペースで、サイドバーの ワークフロー アイコン。 ジョブ & パイプライン をクリックします。

  2. バックフィルを作成するジョブの名前をクリックします。これにより、ジョブモニタリングの詳細ページが開きます。

  3. ページ上部の 「今すぐ実行」 の横にある下矢印 ([下向き矢印アイコン]) をクリックします。

  4. 表示されるドロップダウンから 「バックフィルの実行」 を選択します。これにより 、バックフィルの実行 ダイアログが開きます。

    1 日の 1 時間ごとのジョブを表示する [バックフィルの実行] ダイアログ

  5. バックフィルする範囲の 日付と時刻の範囲 を選択します。

  6. Databricks は、トリガーまたはスケジュールに基づいて、バックフィルのデフォルトの時間間隔を選択します。時間間隔を変更する場合は、 「Every」 の右側にあるドロップダウンで、希望する時間間隔を選択します。たとえば、1 時間の時間間隔を使用するには、時間間隔に 「1」「時間」を 選択します。ダイアログの下部のインターフェースには、選択内容によって生成される新しい実行の数のメモが含まれます。

    バックフィルで日付範囲を 100 回以上の実行に分割すると、設定時に警告が表示され、バックフィルを開始できなくなります。この場合、 日付と時刻の範囲を、 それぞれ 100 回未満の実行で複数のステップに変更する必要があります。これは、複数のバックフィルを行うか、バックフィルの時間間隔を増やすことで実行できます。

  7. [ジョブの問題] の下に、既存の問題がキーと値とともに表示されます。 ジョブの日付範囲に問題がある場合は、 [値] フィールドを編集してそれらを上書きできます。 それ以外の場合は、新しい KeyValue を追加して新しい問題を作成できます。

    たとえば、ジョブがジョブ トリガー時刻を iso datetime として取得する場合、その時刻を{{backfill.iso_datetime}}でオーバーライドできます。 可能な値参照のリストを表示するには、上書きする値の横にある { } ボタンをクリックし、参照を選択して フィールドに挿入します。

    通常の問題リストにない他の問題を追加して、自動化によって選択することもできます。 たとえば、バックフィル ジョブに別の処理を適用したい場合は、 backfill問題セットをtrueに追加できます。

  8. 必要に応じて、バックフィルするデータと一致するようにジョブを制御するために使用される他の問題をオーバーライドします。

  9. 「実行」 をクリックしてバックフィル実行を開始します。

バックフィル実行は、他のジョブ実行と区別するために、名前にテキストBackfillが付いて実行リストに表示されます。

制限事項

  • バックフィルは常に完全に実行されます。バックフィルでタスクまたはテーブルのサブセットを実行することはできません。

  • LakeFlow宣言型パイプライン固有の制限:

    • パイプライン タスクはパラメーター化されていません。パイプラインはそのまま実行されます。
    • パイプラインタスクは同時に実行できないため、パイプラインタスクを含むジョブは並列ではなく順次に実行されます。 これが発生した場合、およびジョブにパイプライン タスクがあるときに最大実行実行数を 1 より大きく設定した場合は、 [設定]実行バックフィル ダイアログに警告が表示されます。

    Databricks 、パイプラインの 1 回追加機能を使用して、 LakeFlow宣言型パイプラインをバックフィルすることをお勧めします。 詳細については、 LakeFlow宣言型パイプラインを使用したヒストリカルデータのバックフィル」を参照してください。

次のステップ

クエリの作成方法とバックフィル ジョブで使用できる問題を示すチュートリアルを確認するには、 LakeFlowジョブを使用したバックフィル サポートによる定期的なクエリのセットアップ」を参照してください。