データ統合SAPFoundry SAP セットアップインクリメンタル更新

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

インクリメンタル更新

インクリメンタル同期は、同じテーブルから追加型のトランザクションを可能にする状態同期です。以下の種類のインクリメンタル同期が提供されています。

  • 単一フィールド: ターゲットテーブル/オブジェクト内の単一のフィールドが、すでにインポートされた最大値以上である場合に、行をインポートします。
  • 複数フィールド: 単一フィールドと似ていますが、複数のフィールドをOR演算子で組み合わせることができます。例えば、テーブル内に「作成日時」と「最終更新日時」の両方のタイムスタンプフィールドが存在する場合に使用できます。
  • フィールドの連結: 複数フィールドと似ていますが、フィールドをOR演算子で組み合わせるのではなく、フィールドを連結します。例えば、テーブル内に別々の「最終更新日」と「最終更新時刻」フィールドが存在する場合に使用できます。
  • 変更ドキュメントテーブルの使用: SAPの変更ドキュメントテーブルの更新に基づいて新しい行をインポートします。警告: これは実験的な機能であり、常に変更をキャプチャできるわけではありません。注意して使用してください。
  • ツインテーブルまたはツインジョインテーブルの使用: ツインテーブル内のフィールドが、すでにインポートされた最大値以上である場合に、ターゲットテーブルから新しい行をインポートします。ツインジョインテーブルでは、ターゲットテーブルを複数のテーブルの結合に設定できます。

以下の表は、どのインクリメンタルタイプがどのSAPオブジェクトタイプでサポートされているかを示しています。

オブジェクトタイプ単一フィールド複数フィールドフィールドの連結変更ドキュメントテーブルの使用ツインテーブルの使用SAP 組み込みレプリケーションリクエストベースコンボ
テーブルXXXXXX
リモートテーブルXXXXXX
InfoProviderXXX
リモート InfoProviderXXX
SLTX
エクストラクターX

同期定義の インクリメンタルフィールド プロパティは、インクリメンタル更新の管理に使用されます。最初の一括抽出後、変更された行のみがインクリメンタル更新ごとに抽出されます。複数フィールドタイプを使用する場合、フィールドのリストはカンマで区切られるべきです。

インクリメンタル更新機能を有効にするには、トランザクションタイプAPPEND に設定してください。

理想的には、提供されるインクリメンタルフィールドは単調増加する値であるべきですが、そのようなフィールドを見つけることは常に可能ではありません。最良の選択肢は、日付フィールド(時間成分なし)かもしれません。このため、システムは "より大きいか等しい" 比較( "より大きい" だけではなく)を使用して、前回の同期が特定の日付の途中で実行された場合でもデータが省略されないようにします。

"より大きいか等しい" 比較の結果、Foundry の結果データセットに重複した値が現れる可能性があります。これらの重複した値は、Foundry のデータ変換パイプラインの最初のステップで削除する必要があります(例えば、主キーで重複する行をチェックすることによって)。

インクリメンタル更新は、BEx クエリや関数ではサポートされていません。すべての同期は完全な抽出になります。

SLT のインクリメンタル更新の詳細については、SLT の設定に関するドキュメントを参照してください。

変更ドキュメントテーブルの使用

この実験的な機能は、SAP の変更ドキュメントテーブル CDHDR と CDPOS を参照することによって動作します。このアプローチは、取り込むテーブルに明確な更新タイムスタンプフィールドや、その他の単調増加する値(例えば、一意の行ID)が存在しない場合に役立ちます。

SAP の一部のオブジェクトでは、変更ドキュメントテーブルに行の変更が含まれていますが、挿入は含まれていない場合があります。そのため、注意して進め、特定の使用ケースに対して期待される結果を達成するために、この機能を十分にテストすることをお勧めします。

ツインテーブルの使用

この実験的な機能では、インクリメンタル更新のフィールド / 複数のフィールドを、Foundry にインポートするテーブルとは 異なる テーブルで指定できます。例えば、インポートする主要なテーブルが適切な更新タイムスタンプフィールドを持たないアイテムテーブルであるが、そのようなフィールドが存在し(そのフィールドがアイテムテーブルの変更が発生したときに更新される)ヘッダーテーブルがある場合に役立ちます。

ツインインクリメンタル

この例では、初回ロードが成功した後、次回以降のリクエストでは、VBAK(ヘッダーテーブル)の UPD_TMSTMP フィールドが、最後の成功した同期からの最高の UPD_TMSTMP 値以上である場合に、VBAP からデータの行を抽出します。

インクリメンタルツインテーブル 設定は、使用するツインテーブルを示すために使用されます。

インクリメンタルツインマッピング 設定は、主要なテーブルとツインテーブルの間の結合条件を定義するために使用されます。構文は以下の通りです。

{PRIMARY_TABLE_NAME}-{FIELD_NAME}={TWIN_TABLE_NAME}-{FIELD_NAME}  // {PRIMARY_TABLE_NAME}という名前の主テーブルの{FIELD_NAME}フィールドは、{TWIN_TABLE_NAME}という名前のツインテーブルの{FIELD_NAME}フィールドと等しい

セミコロンを使用して複数の結合条件を適用できます(AND 演算子を表します)。

InfoProviders のためのリクエストベースの増分

SAP BW では、DSO と InfoCubes はデータ転送プロセス(DTP)を使用して読み込まれます。各 DTP はローディングリクエストを作成し、Palantir Foundry コネクタ 2.0 for SAP アプリケーションでは、これらのリクエストを使用して変更されたデータをキャプチャします。

この機能は、非圧縮リクエストに対してのみサポートされています。データが Foundry に転送される場合、リクエストを圧縮できます。リクエストが Foundry へのロード前に圧縮された場合、データ同期は失敗し、初期ロードを再度行う必要があります。

リクエストベースの増分取り込みのサンプル設定(同期設定の基本ビューからアドバンスビューに切り替える必要があります):

Copied!
1 2 3 4 type: magritte-sap-source-adapter # タイプ: マグリット-SAPソースアダプター sapType: infoprovider # SAPタイプ: インフォプロバイダー obj: <technical-name-of-infoprovider> # オブジェクト: <インフォプロバイダーの技術名> incrementalType: REQUEST # インクリメンタルタイプ: リクエスト

インクリメンタル状態のリセット

初期ロードを強制することでインクリメンタル取込を再初期化するには、以下の手順を実行してください:

  1. 同期設定で「Advanced」タブに切り替えます。
  2. YAML設定に resetIncrementalState: true を追加します。
  3. トランザクションタイプを SNAPSHOT に切り替えます(すべての incremental* パラメーターが設定されたままであることを確認します)。
  4. 同期を実行します。これにより、SAPからのデータの完全なスナップショットが作成され、データセット内のすべてのファイルが置き換えられます。
  5. YAML設定から resetIncrementalState: true を削除します。
  6. トランザクションタイプを APPEND に戻します。

次の同期が実行されると、通常通りインクリメンタル追加が行われます。