SAP CDC の高度なトピック

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

企業向けのオールインワン分析ソリューションである Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。

メタデータ駆動型データ統合、デバッグなど、SAP CDC コネクタの高度なトピックについて説明します。

SAP CDC マッピング データ フローのパラメーター化

Azure Data Factory と Azure Synapse Analytics のパイプラインとマッピング データ フローの主な強みの 1 つは、メタデータ駆動型データ統合のサポートです。 この機能を使用すると、数百から数千にもなるソースの統合を処理するために使用できる単一 (または少数) のパラメーター化されたパイプラインを設計できます。 SAP CDC コネクタは、この原則を念頭に置いて設計されています。ソース オブジェクト、実行モード、キー列など、関連するすべてのプロパティをパラメーターを介して提供することで、柔軟性を最大限に高め、SAP CDC マッピング データ フローの可能性を再利用できます。

マッピング データ フローのパラメーター化に関する基本的な概念については、「マッピング データ フローをパラメーター化する」を参照してください。

Azure Data Factory および Azure Synapse Analytics のテンプレート ギャラリーには、SAP CDC データ インジェストをパラメーター化する方法を示すテンプレート パイプラインとデータ フローがあります。

ソースと実行モードのパラメーター化

マッピング データ フローでは、必ずしもデータセット成果物が必要であるとは限りません。ソース変換とシンク変換の両方で、ソースの種類 (または、シンクの種類) インラインが提供されます。 この場合、ADF データセットで定義されていないすべてのソース プロパティは、ソース変換の [ソース] オプション (またはシンク変換の [設定] タブ) で構成できます。 インライン データセットを使用すると、ソース (またはシンク) の完全な構成が 1 か所で維持されるため、より優れた概要が得られ、マッピング データ フローのパラメーター化が簡素化されます。

SAP CDC の場合、パラメーターを介して最も一般的に設定されるプロパティは、[ソース オプション][最適化] のタブにあります。 [ソースの種類][インライン] の場合、[ソース] オプションで次のプロパティをパラメーター化できます。

  • ODP コンテキスト: 有効なパラメーター値は以下のとおりです。
    • ABAP Core Data Services ビューの ABAP_CDS
    • BW for SAP BW または SAP BW/4HANA InfoProviders
    • HANA for SAP HANA Information Views
    • SAPI for SAP DataSources/Extractors
    • SAP ランドスケープ変換レプリケーション サーバー (SLT) がソースとして使用されている場合、ODP コンテキスト名は SLT~<Queue Alias> です。 キュー エイリアスの値は、SLT コックピット (SAP トランザクション LTRC) の SLT 構成内の管理データにあります。
    • ODP_SELFRANDOM は、技術的な検証とテストに使用される ODP コンテキストであり、通常は関連性がありません。
  • ODP 名: データを抽出する ODP 名を指定します。
  • 実行モード: 有効なパラメーター値は次のとおりです。
    • 初回起動時はフル、その後は増分fullAndIncrementalLoad では、変更データ キャプチャ プロセスを開始し、現在の完全なデータ スナップショットを抽出します。
    • 毎回の実行でフルfullLoad では、変更データ キャプチャ プロセスを開始することなく現在の完全なデータ スナップショットを抽出します。
    • 増分変更のみincrementalLoad では、現在の完全なスナップショットを抽出することなく変更データ キャプチャ プロセスを開始します。
  • キー列: キー列は、(二重引用符で囲まれた) 文字列の配列として指定されます。 たとえば、SAP テーブル VBAP (販売注文項目) を操作する場合、キー定義は ["VBELN"、"POSNR"] (またはクライアント フィールドも考慮される場合は ["MANDT","VBELN","POSNR"]) である必要があります。

ソース パーティション分割のフィルター条件のパラメーター化

[最適化] タブでは、ソース パーティション分割スキーム (「全体読み込みまたは初期読み込みのパフォーマンスの最適化」参照) は、パラメーターを介して定義できます。 通常、以下の 2 つの手順が必要です。

  1. パイプライン レベルでソース パーティション分割スキームのパラメーターを定義します。
  2. パーティション分割パラメーターをマッピング データ フローに取り込みます。

パーティション分割構成の JSON 形式

手順 1 の形式は、それぞれの形式は個々のフィルター条件の配列であるパーティション定義の配列で構成される JSON 標準に従います。 これらの条件自体は、SAP のいわゆる選択オプションと一致する構造を持つ JSON オブジェクトです。 実際、SAP ODP フレームワークに必要な形式は、基本的に以下の SAP BW の動的 DTP フィルターと同じです。

{ "fieldName": <>, "sign": <>, "option": <>, "low": <>, "high": <> }

次に例を示します。

{ "fieldName": "VBELN", "sign": "I", "option": "EQ", "low": "0000001000" }

SQL WHERE clause ... WHERE "VBELN" = '0000001000' に対応する場合、または

{ "fieldName": "VBELN", "sign": "I", "option": "BT", "low": "0000000000", "high": "0000001000" }

SQL WHERE clause ... WHERE "VBELN" BETWEEN '0000000000' AND '0000001000' に対応する場合

2 つのパーティションを含むパーティション分割構成の JSON 定義は、次のようになります。

[
    [
        { "fieldName": "GJAHR", "sign": "I", "option": "BT", "low": "2011", "high": "2015" }
    ],
    [
        { "fieldName": "GJAHR", "sign": "I", "option": "BT", "low": "2016", "high": "2020" }
    ]
]

最初のパーティションには会計年度 (GJAHR) 2011 年度から 2015 年度が含まれており、2 番目のパーティションには 2016 年度から 2020 年度が含まれます。

注意

Azure Data Factory では、これらの条件に関するチェックは実行されません。 たとえば、パーティション条件が重複しないようにするのはユーザーの責任です。

パーティション条件は、複数の基本フィルター条件自体で構成され、より複雑になる可能性があります。 1 つのパーティション内で複数の基本条件を組み合わせる方法を明示的に定義する論理積はありません。 SAP の暗黙的な定義は次のとおりです (including を選択する場合のみ、つまり、"sign": "I" - for excluding の場合)

  1. 同じフィールド名に対する including 条件 ("sign": "I") は OR と結合されます (精神的に、結果の条件の周りに括弧を付けます)
  2. 同じフィールド名に対する including 条件 ("sign": "E") は OR と結合されます (この場合も、精神的に結果の条件の周りに括弧を付けます)
  3. 手順 1 と 2 の resulting 条件:
    • including 条件の AND と結合され、
    • excluding 条件の AND NOT と結合されます。

たとえば、パーティション条件は

    [
        { "fieldName": "BUKRS", "sign": "I", "option": "EQ", "low": "1000" },
        { "fieldName": "GJAHR", "sign": "I", "option": "BT", "low": "2020", "high": "2025" },
        { "fieldName": "GJAHR", "sign": "E", "option": "EQ", "low": "2023" }
    ]

は SQL WHERE 句 ... WHERE ("BUKRS" = '1000') AND ("GJAHR" BETWEEN '2020' AND '2025') AND NOT ("GJAHR" = '2023') に対応します。

注意

低い値と高い値に SAP 内部形式を使用し、先頭にゼロを含め、カレンダーの日付を "YYYYMMDD" 形式の 8 文字の文字列として表してください。

マッピング データ フローへのパーティション分割パラメーターの取り込み

パーティション分割スキームをマッピング データ フローに取り込むには、データ フロー パラメーター ("sapPartitions" など) を作成します。 このパラメーターに JSON 形式を渡すには、 @string() 関数を使用して文字列に変換する必要があります。

パーティション分割スキーマをマッピング データ フローに取り込む方法を示すスクリーンショット。

最後に、マッピング データ フローのソース変換の [最適化] タブで、[パーティションの種類] "ソース" を選択し、[パーティション条件] プロパティにデータ フロー パラメーターを入力します。

ソース返還の [最適化] タブでパーティション分割パラメーターの使用方法を示すスクリーンショット。

チェックポイント キーのパラメーター化

パラメーター化されたデータ フローを使用して複数の SAP CDC ソースからデータを抽出する場合は、パイプラインのデータ フロー アクティビティで チェックポイント キー をパラメーター化することが重要です。 チェックポイント キーは、変更データ キャプチャ プロセスの状態を管理するために、Azure Data Factory で使用されます。 ある CDC プロセスの状態によって別の CDC プロセスの状態が上書きされないようにするには、データフローで使用されるパラメーター セットごとにチェックポイント キー値が一意であることを確認してください。

注意

チェックポイント キーの一意性を確保するためのベスト プラクティスは、チェックポイント キーの値をデータフローの一連のパラメーターセットに追加することです。

チェックポイント キーの詳細については、「SAP CDC コネクタを使用してデータを変換する」を参照してください。

デバッグ

Azure Data Factory パイプラインは、トリガーされた実行またはデバッグ実行を介して実行できます。 これら 2 つのオプションの根本的な違いは、デバッグ実行では、ユーザー インターフェイスでモデル化された現在のバージョンに基づいてデータフローとパイプラインを実行し、トリガーされた実行では最後に発行されたバージョンのデータフローとパイプラインを実行することです。

SAP CDC の場合、もう 1 つの側面を理解する必要があります。既存の変更データ キャプチャ プロセスに対するデバッグ実行の影響を回避するために、デバッグ実行では、トリガーされた実行とは異なる "サブスクライバー プロセス" 値を使用します (「SAP CDC データ フローを監視する」を参照)。 したがって、SAP システム内に個別のサブスクリプション (つまり、変更データ キャプチャ プロセス) を作成します。 さらに、デバッグ実行の "サブスクライバー プロセス" 値には、ブラウザー UI セッションに制限された有効期間があります。

注意

SAP CDC を使用した変更データ キャプチャ プロセスの安定性を長期間 (複数日など) にわたってテストするには、データ フローとパイプラインを発行し、トリガーされた 実行を実行する必要があります。