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

Workday レポートを増分で取り込む

備考

ベータ版

増分取り込みはベータ版です。

デフォルトでは、Lakeflow Connect は、パイプラインが更新されるたびにレポート内のすべての行を読み取るスナップショットモードを使用して Workday レポートを取り込みます。増分取り込みでは、前回のパイプライン更新以降に変更されたデータのみを読み取ります。これにより、Workdayインスタンスへの負荷が軽減され、各「パイプライン」の「実行」にかかるコストと時間が削減されます。

増分取り込みの仕組み

増分取り込みは、進行状況を追跡するためにカーソル列(sequence_by列とも呼ばれます)を使用します。Workdayレポートのカーソル列は日付列である必要があります。パイプラインが更新されるたびに、コネクタはカーソルを使用して新しいデータを判断し、その行のみを読み取ります。

レポートを日付でフィルタリングするには、Workday管理者がカーソル列にプロンプトを定義します。「プロンプト」は、クエリ時に日付範囲をレポートに渡すことができるWorkdayレポートURLの「パラメーター」です。プロンプト名はWorkdayの管理者によって選択され、「パイプライン」URLで指定する「パラメーター」名と一致する必要があります。たとえば、Workday管理者はDate列に対してDate_StartDate_Endという名前のプロンプトを定義する場合がありますが、実際の名前はWorkdayでのレポートの構成方法によって異なります。

最初のパイプライン更新

「パイプライン」を初めて「実行」すると、コネクタは「パイプライン」定義で指定したDate_Startの値から現在の日付までのすべてのデータを取り込みます。たとえば、レポートに2025-01-01からのデータが含まれているが、Date_Startを2025-02-06に設定した場合、最初の更新では2025-02-06以降のデータが取り込まれます。

初期更新が完了すると、コネクタは、取り込まれたデータで見つかった最大カーソル値を新しいsequence_by値として格納します。この値は、次のパイプライン更新が開始される場所を決定します。

以降のパイプラインの更新

後続の各更新で、コネクタは前回の更新以降のすべての新しい行を取り込み、格納された sequence_by の値を新しい取り込みウィンドウの開始点として使用します。コネクタは、格納された sequence_by の値を更新して、最新のカーソル値を反映します。例えば、最初の更新が2025年2月12日までデータを取り込んだ場合、次の更新は2025年2月12日以降のカーソル値を持つ行を読み取ります。

パイプラインを一定の日数遅れで維持する

パイプラインを現在の日付から固定間隔で遅延させたい場合は、Date_Endプロンプトをcurrent date - INTERVAL 2 DAYのような式に設定してください。パイプラインは、その後のすべての更新でその遅延を維持します。

制限事項

次の制限事項は、Workdayレポートの増分取り込みに適用されます。追加のコネクタ制限事項については、「Workday Reportsコネクタの制限事項」を参照してください。

  • 単調増加カーソルが必要です。 カーソル列は、新しい行または更新された行ごとに増加する必要があります。カーソル値が最後に取り込まれたカーソル値よりも大きい行が取り込まれます。これには、新しい行とカーソルを進める更新された行の両方が含まれます。ソースレポートから削除された行は、取り込まれません。初期取り込み後に削除された行がレポートに含まれている場合は、代わりにスナップショットモードを使用してください。
  • 日付カーソルのみ。 カーソル列は日付列である必要があります。他の列タイプはカーソルとしてサポートされていません。
  • 包括的なプロンプトのみ。 カーソル列に関するWorkdayレポートのプロンプトでは、包括的な演算子(以上 / 以下)を使用する必要があります。排他的なプロンプト(より大きい / より小さい)を含むレポートでは、データが欠落する可能性があります。レポートの作成者(オーナー)は、Workdayでレポートとそのプロンプトを作成する際に、プロンプトのタイプを選択します。

増分取り込みの構成

Workdayレポートの増分インジェストはAPI専用です。Databricks UI を使用して設定することはできません。宣言型自動化バンドルまたはDatabricks CLIを使用します。

前提条件

パイプラインを構成する前に:

  • ソースの設定を完了し、WorkdayへのUnity Catalog接続が存在することを確認します。
  • Workday レポートのカーソル列に包括的なプロンプトを定義するよう Workday 管理者に依頼してください。例えば、Date 列上の Date_Start および Date_End という名前のプロンプト。レポートオーナーは、Workdayでプロンプトを作成する際に、**以降** / **以前** オペレーターを選択します。

パイプライン定義

増分インジェストを有効にするには、以下のフィールドをパイプライン定義に追加します。

  • table_configuration で、レポートのカーソル列の名前に設定された sequence_by フィールドを追加します。
  • table_configurationで、WorkdayプロンプトのXMLエイリアスをフィルター式に設定するworkday_report_parameters.parametersマップを追加します。開始プロンプトにcoalesce(current_offset(), date(...))を使用すると、以降の実行では最後のカーソル値から再開し、最初の実行では固定開始日にフォールバックします。

次の例では、Payroll_Journal レポートを Journal_Date をカーソル列として、Date_Start および Date_End を Workday プロンプトの XML エイリアスとして使用して、増分的に取り込みます。パイプラインは最初の実行時に2025-01-01から開始され、現在の日付より1日遅れます。

YAML
variables:
dest_catalog:
default: main
dest_schema:
default: ingest_destination_schema

resources:
pipelines:
pipeline_workday:
name: workday_incremental_pipeline
catalog: ${var.dest_catalog}
schema: ${var.dest_schema}
ingestion_definition:
connection_name: <workday-connection>
objects:
- report:
source_url: https://wd2-impl-services1.workday.com/ccx/service/customreport2/Payroll_Journal?format=json
destination_catalog: ${var.dest_catalog}
destination_schema: ${var.dest_schema}
destination_table: Payroll_Journal
table_configuration:
primary_keys:
- Journal_ID
sequence_by:
- Journal_Date
workday_report_parameters:
parameters:
Date_Start: '{coalesce(current_offset(), date("2025-01-01"))}'
Date_End: '{current_date() - INTERVAL 1 DAY}'

ローリングウィンドウパターンを含むパイプラインのその他の例については、固定日付から増分インジェストを参照してください。