本ブログは、SAP Datasphereの複製フローシリーズのPart.1の続編になります。
全4回のシリーズでご紹介していく予定です。
このブログは、Part 2 デルタキャプチャと変換フローについてご紹介します
Part 2 : デルタキャプチャと変換フロー(本ブログ)
※本ブログはこちらのブログを日本語訳したものです
2023年9月20日にリリースされたDatasphereの新機能をご紹介します。このブログでは、ローカルテーブルのデプロイ後にローカルテーブルに後で加えられる変更を追跡できる、つまりソーステーブルで差分更新があった際に役に立つ「ローカルテーブルのデルタ変更のキャプチャ」についてと、その差分変更を1つのソーステーブルからターゲットテーブルにロードすることを可能にした「変換フロー」についてご紹介します。
詳細はこちらをご覧ください。
使い方
新しいローカルテーブルを作成する際に、「デルタキャプチャ」をオンにします。
デルタキャプチャをオンにすることでデルタ キャプチャ テーブル <table_name>_Delta が自動的に作成され、2 つの列がテーブル定義に追加されます。
注意点
デルタ キャプチャが無効になっているローカル テーブル (左) とデルタ キャプチャが有効になっているローカル テーブル (右) の違いは次の図でご確認ください
SAP Datasphere アプリに応じてデータを表示する 2 つのオブジェクト (アクティブ レコード テーブルとデルタ キャプチャ テーブル) が作成されます
アクティブレコードのみを含むテーブル |
デルタ キャプチャ列を含むテーブル |
詳細 |
|
テーブルエディタ – データプレビュー |
使用できない |
ソースオブジェクトとして使用される |
デプロイメントが完了するとデータ プレビューが利用可能になり、デルタキャプチャ列を含むテーブルのみが表示されます。データビルダーオブジェクトのデータの表示またはプレビュー |
テーブルエディタ – データメンテナンス |
使用できない |
ソースおよびターゲット オブジェクトとして使用される |
デプロイメントが完了したら、テーブルのメンテナンスを実行できます。ローカルテーブルデータの保守 |
テーブルエディタ – ファイルのアップロード |
使用できない |
ソースおよびターゲット オブジェクトとして使用される |
デプロイメントの完了後、新しい CSV ファイルをアップロードすることで、デルタ キャプチャを使用してテーブルを更新できます。ローカルテーブルデータのロードまたは削除 |
変換フロー |
ソースオブジェクトとして使用される |
ソースおよびターゲット オブジェクトとして使用される |
|
レプリケーションフロー |
使用できない |
ターゲットオブジェクトとして使用 |
|
ビュービルダー |
ソースオブジェクトとして使用される |
使用できない |
以下の中で、アクティブなレコードテーブルのみが表示されます
|
ERモデル |
ソースオブジェクトとして使用される |
使用できない |
リポジトリツリーにはアクティブレコードテーブルのみが表示されますが、デルタキャプチャを使用してローカル テーブルを作成できます。「E/R モデルでのテーブルの作成」を参照してください。 |
データフロー |
ソースオブジェクトとして使用される |
使用できない |
リポジトリツリーにはアクティブレコードテーブルのみが表示されます。「ソースの追加」を参照してください。 |
ビジネスビルダー |
ソースオブジェクトとして使用される |
使用できない |
デルタキャプチャ列を含むテーブルは、エンティティの検索時に非表示になります。「アクティブレコード」テーブルのみ選択可能です。 |
以下でデルタキャプチャの有無でローカルテーブルの作成とロードにどのような違いがあるかをご紹介します。
手順①ファイルをインポートしテーブルを作成する
注意:Date, Sales Rep, Location, Productはキー項目
CSVファイルからテーブルが作成されました。
手順②変更したCSVファイルデータのロード
このCSVファイルの一部データを変更し、同じレコード(同じキーを持つレコード)を再度アップロードする必要があるとします。今回の例では、一番上の行の Plan の値が7100から7000に変更されました。
ファイルをアップロードしようとした場合、一意性違反のエラーが表示されます。これはキーが重複しているレコードがファイルに含まれているためです。
このエラーはSAP Datasphereがローカルテーブルにレコードを追加する場合Insertを利用しているために起こります。「アップロード前に既存のデータを削除」フラグを有効にすることで、既存のエントリをすべて削除してからデータをアップロードするためこのエラーを回避することが可能です。その場合は新しいデータをアップロードする前にローカルテーブルデータがすべて削除されるため、すべてのデータを再度準備する必要があります。(ただし、アップロードするファイルにキーが異なる新しいデータのみが含まれている場合はエラーが発生しません)
・「アップロード前に既存のデータを削除」オプションを利用する場合
テーブルエディターを使用する
ファイル コンテンツの更新は、データ エディターを使用して行うこともできます。データエディターは、データの細かい修正に適しています。
手順①デルタキャプチャをオンにしてテーブルを作成する
次に、先ほどと同じテンプレートとして使用して、デルタ キャプチャの項目をオンにした新しいテーブルを作成します。注意: 現在、テーブルのデプロイ後にこの項目を変更することはできません。
このブログでは手順を省略し「名前を付けて保存」オプションを使用して既存のテーブルのコピーを作成していますが、もちろん、新しいテーブルを最初から作成することもできます。
これで、デルタキャプチャをオンにできるようになりました。
デプロイ後にこの機能をオフに変更はできないことに注意してください。
次の画像にあるように、変更タイプと変更日の2 つの列が追加されました。
この二つの列にはテーブルレコードの差分更新についてのデータが追加されます。
手順②初期データのアップロード
このテーブルに、先ほどと同じファイルを利用して初期データをアップロードします。
初期ロード後のデータはこのようになります。
手順③同じファイルにデータを追加してアップロードする
次に、ファイルの最初のレコードのPlan列の値を変更し、再度アップロードします。
ファイルをアップロードすると、新しい値と変更日(Change Date)が追加されます。
注意: フラットファイルの変更タイプは常に「I」です。
あるレコードを削除する必要がある場合はデータ エディターを使用するか、必要なレコードのみを含むファイルをアップロードします。下記をご参照ください。
既存データの削除
最初のレコードがフラットファイルから削除されたとします。
今回は「アップロード前に既存のデータを削除」にチェックをつけて再度ファイルをアップロードします。
すると、最初のレコードは削除されます。
「アップロード前に既存のデータを削除」にチェックを入れたため、テーブルからレコードを削除しますが、デルタキャプチャで削除を記録する目的で、レコード自体は Change Type “D”でデルタテーブルに保持されます。
注意:下記「テーブルからデータを削除」ボタンを使ってテーブルのデータを削除する場合
デルタテーブルとレコードテーブルは両方ともすべてのデータが削除され、空になります
次の例を行いました。
上の画像にあるように、Change TypeとChange Dateは連動しています。
次に、デルタキャプチャが新しい「変換フロー」とどのように連携するかをご紹介します。
計算列の式は
CASE WHEN Actual >= Plan THEN ‘YES’ ELSE ‘NO’ END
です.
注意:デルタキャプチャがONのローカルテーブルをソースとして使用しているため、新しいテーブル(Target_1)のデルタキャプチャもデフォルトでONになっています
変更後のデータ(Change Typeに”D”が表示されています)
詳細情報を確認することもできます。“Reading data from the ”View Transform” operation and writing it to the target table” の「詳細表示」をクリックすると、ターゲットテーブルにデータを書き込む操作の詳細SQLを表示します。
“Change_Date”は以前のデータから変更があった際にのみ更新されることがわかります。
デルタ変更のキャプチャと変換フローはユーザーにとって沢山のメリットをもたらす機能だと思います。ぜひ多くの方にご活用いただければ幸いです。
SAP Datasphere の今後の改善点についてはロードマップをご確認ください。
https://roadmaps.sap.com/board?PRODUCT=73555000100800002141&range=CURRENT-LAST#Q4%202023
SAP Datasphereに対する改善のご要望は、こちらで受け付けております。