Azure Data Factory (ADF) と Azure Synapse Analytics には、SAP 変更データ キャプチャ (CDC) コネクタが付属しています (概要については、「SAP CDC 機能の概要とアーキテクチャ」または「General availability of SAP CDC capabilities for Azure Data Factory and Azure Synapse Analytics (Azure Data Factory と Azure Synapse Analytics での SAP CDC 機能の一般提供)」をご覧ください)。これにより、さまざまな SAP ソースをカバーする変更データ キャプチャ機能が組み込まれます。 多くのお客様は、このコネクタを使用して、SAP から ADLS Gen2 の Delta テーブルへの変更データ フィードを確立します。これは、レイクハウスのアーキテクチャの受信 (ブロンズとも呼ばれます) レイヤに最適なストレージ オプションです。
この記事では、SAP CDC コネクタを用いて、ADF または Synapse を使用して Microsoft Fabric OneLake に受信レイヤを直接作成する方法について説明します。
この 2 つのシナリオのセットアップは似ていますが、主な違いはシンクの構成です。 実際には、次の図に示すように、Azure Data Lake Storage (ADLS) Gen2 の Delta テーブルに書き込むデータフローをクローンし、このドキュメントに従ってシンクの構成を変更するだけで準備が完了します。
SAP データを ADLS Gen2 から Microsoft Fabric に移行する予定の場合は、シンクの構成を調整することで、ADLS Gen2 から OneLake に既存の CDC データフローをリダイレクトすることもできます。 シンクを変更した後は、元の CDC プロセスを再開すると、面倒な再初期化を行うことなく Fabric にシームレスに移行することができます。
作業の開始
独自の環境でこの記事の手順に従うには、次のリソースが必要です。
- Azure Data Factory または Synapse Analytics ワークスペース。
- レイクハウスを含む Microsoft Fabric ワークスペース。
- ここで指定されている ADF の SAP CDC コネクタの要件を満たす SAP システム。 このシナリオでは SAP S/4HANA オンプレミス 2023 FPS00 を使用しますが、SAP ECC、SAP BW、SAP BW/4HANA などの最新バージョンもすべてサポートされています。
- 現在のバージョンの SAP .NET Connector がインストールされているセルフホステッド統合ランタイム (SHIR)。
接続部分に集中するために、SAP CDC コネクタを使用して変更データを抽出し、追加で変換することなく Fabric Lakehouse テーブルとマージする最も簡単なシナリオに対応するパイプライン テンプレートを https://github.com/ukchrist/ADF-SAP-data-flows/blob/main/p_SAPtoFabric.zip に示します。 ADF マッピング データフローと SAP CDC に慣れている場合は、自分で最初からシナリオを設定し、Lakehouse のリンク サービスの次の構成に進むことができます。
テンプレートを使用するには、次の手順が必要です。
- SAP ソース、ステージング フォルダー、および Fabric Lakehouse に接続する 3 つのリンク サービスを作成します。
- テンプレートを ADF または Synapse ワークスペースにインポートします。
- テンプレートを構成して、SAP システムのソース オブジェクトとシンク テーブルを指定します。
SAP ソース システムへの接続の設定
SAP CDC コネクタを使用して SAP ソース システムを ADF または Synapse に接続するには、セルフホステッド統合ランタイムが必要です。 インストール手順については、「SAP CDC コネクタ用にセルフホステッド統合ランタイムを設定する」をご覧ください。 セルフホステッド統合ランタイムが SAP の RFC プロトコルを介して SAP ソース システムに接続するには、SAP .NET Connector をダウンロードしてインストールします (「SAP .NET コネクタをダウンロードしてインストールする」をご覧ください)。
次に、SAP CDC のリンク サービスを作成します。 詳しくは、「SAP CDC コネクタのリンク サービスとデータセットを設定する」をご覧ください。 これには、SAP システムに接続するための SAP システム接続パラメーター (アプリケーション/メッセージ サーバー、インスタンス番号、クライアント ID) とユーザー資格情報が必要です。 この SAP ユーザーに必要な構成の詳細については、「SAP ユーザーを設定する」をご覧ください。
リンク サービスの設定に関するドキュメントの説明に従って SAP CDC データセットを作成することは省略可能です。マッピング データ フローには、データ フロー自体でデータセット プロパティをインラインで定義するためのより細いオプションが用意されています。 ここで提供されるパイプライン テンプレートでは、このようなインライン データセット定義が使用されます。
ステージングのための ADLS Gen2 接続の設定
SAP ソース システムからの変更データは、シンクに書き込まれる前に、ADLS Gen2 のフォルダーにステージングされます。 そこから、マッピング データ フロー ランタイムはデータを取得し、データ フローで定義されている手順に従って処理します。 テンプレートの一部として提供されるデータ フローは、変更をシンク テーブル内の既存のデータとマージするため、ソースの最新のコピーが提供されます。
ADLS Gen2 のリンク サービスのセットアップについては、「UI を使用して Azure Data Lake Storage Gen2 のリンク サービスを作成する」をご覧ください。
Fabric ワークスペース ID とレイクハウス オブジェクト ID の取得
Microsoft Fabric で必要な Fabric ワークスペース ID とレイクハウス オブジェクト ID を収集するには、次の手順を実行します。
Microsoft Fabric でレイクハウスに移動します。
ブラウザーでレイクハウス エクスペリエンスが開いたら、ブラウザーの URL をコピーします。 形式は次のとおりです。
https://xxxxxx.powerbi.com/groups/
<ワークスペース ID>/lakehouses/
<レイクハウス ID>URL から <ワークスペース ID> と <レイクハウス ID> をコピーします。
サービス プリンシパルの構成
サービス プリンシパルを構成するには、2 つの手順が必要です。 最初に、Microsoft Entra ID にサービス プリンシパルを作成します。 次に、サービス プリンシパルをメンバーとして Fabric ワークスペースに追加します。
Microsoft Entra ID から始めましょう。
Azure portal に移動し、左側のメニューから [Microsoft Entra ID] を選択します。 後で使用するために [テナント ID] をコピーします。
サービス プリンシパルを作成するには、[アプリの登録] と [+ 新規登録] を選択します。
アプリケーションの名前を入力します。 名前はサービス プリンシパル名と同じであるため、後で使用するためにコピーします。
[この組織のディレクトリ内のアカウントのみ] を選択します。
次に、 [登録] を選択します。
アプリケーション (クライアント) ID をコピーします。 この手順は、後で ADF のリンク サービスの定義で必要になります。 次に、[証明書またはシークレットの追加] を選びます。
+ 新しいクライアント シークレットを選択します。 説明と有効期限ポリシーを追加します。
クライアント シークレットの値をコピーします。 この手順で、Microsoft Entra ID のサービス プリンシパルの構成が完了します。
次に、Microsoft Fabric ワークスペースに共同作成者または管理者としてサービス プリンシパルを追加します。
ワークスペースに移動して、[アクセスの管理] を選びます。
サービス プリンシパルの名前を入力し、[共同作成者] または [管理者] ロールを選択して、[追加] を選択します。 サービス プリンシパルを使用して、ADF をワークスペースに接続できるようになりました。
ADF または Synapse での Lakehouse のリンク サービスの作成
これで、ADF または Synapse で Lakehouse のリンク サービスを構成する準備ができました。
ADF または Synapse ワークスペースを開き、[管理] ツールを選択し、[リンクされたサービス] を選択します。 次に、[+ 新規] を選択します。
「Lakehouse」を検索し、リンク サービスの種類として Microsoft Fabric Lakehouse を選択し、[続行] を選択します。
リンク サービスに名前を割り当て、[手動で入力] を選択し、先ほど Fabric URL からコピーした [Fabric workspace ID] (Fabric ワークスペース ID) と [Lakehouse object ID] (レイクハウス オブジェクト ID) の値を設定します。
- [テナント] プロパティには、Microsoft Entra ID でサービス プリンシパルの構成の手順 1 でコピーしたテナント ID を指定します。
- [サービス プリンシパル ID] には、サービス プリンシパルの構成の手順 6 でコピーしたアプリケーション (クライアント) ID (サービス プリンシパル名ではありません) を指定します。
- [サービス プリンシパル キー] には、サービス プリンシパルの構成の手順 8 でコピーしたクライアント シークレットの値を指定します。
正常に接続を確立できることを確認し、[作成] を選択します。
パイプライン テンプレートの構成
リンク サービスのセットアップが完了したら、テンプレートをインポートし、ソース オブジェクトに合わせて調整できます。
パイプライン メニューから、新しいリソースを追加するために + を選択し、[パイプライン] と [テンプレート ギャラリー] を選択します。
[テンプレート ギャラリー] ダイアログが表示されます。 [Copy change data from SAP to Fabric Lakehouse table] (変更データを SAP から Fabric Lakehouse テーブルにコピーする) テンプレートを探して選択し、[続行] を選択します。
表示される構成画面で、テンプレートのインスタンス化に使用するリンク サービスを指定します。 前のセクションで作成したリンク サービスを入力します。 最初のリンク サービスは、ADLS Gen2 のステージング フォルダーに必要なサービスです。2 つ目は SAP ソースへの接続用であり、3 つ目で Microsoft Fabric Lakehouse に接続します。
テンプレートを構成すると、ADF によって新しいパイプラインが作成され、特定のセットアップに必要な調整を行うことができます。 最初の手順として、SAP からの変更データを Fabric のデルタ テーブルにマージする前に、変更データを中間的に格納するためのステージング フォルダーを構成します。 パイプラインのデータ フロー アクティビティを選択し、[設定] タブを選択します。[ステージング] プロパティでは、最後の手順で構成したステージング リンク サービスを確認できます。 [ステージング ストレージ フォルダー] を入力します。
パイプラインのデータ フロー アクティビティをダブル選択し、マッピング データフローを開いてソースとシンクを構成します。 まず、SAP CDC ソース転送を選択し、[ソース オプション] タブを選択します。[ODP コンテキスト]、[ODP 名]、および [キー列] (JSON 配列) で、ソース オブジェクトの詳細プロパティを指定します。 次に、[実行モード] を選択します。 これらのプロパティの詳細については、SAP 変更データ キャプチャ機能に関する Azure Data Factory のドキュメントをご覧ください。
データ フローのシンク変換を選択してから、[設定] タブを選択し、Fabric ワークスペースの Lakehouse テーブルのテーブル名を入力します。 [キー列] プロパティの [カスタム式] ラジオ ボタンを選択し、ソースのキー列を JSON 配列として入力します。
変更を発行します。
データを取得する
パイプラインに戻り、パイプライン実行をトリガーします。
監視エクスペリエンスに切り替え、パイプライン実行が完了するまで待ちます。
Fabric ワークスペースでレイクハウスを開きます。 [テーブル] の下に、新しく作成されたレイクハウス テーブルが表示されます。 画面の右側には、SAP から読み込んだデータのプレビューが表示されます。