本ブログは、SAP Datasphereの複製フローシリーズのPart.1の続編になります。
全5回のシリーズでご紹介していく予定です。
全5回のシリーズでご紹介していく予定です。
このブログは、Part5 複製フローのサイジング についてご紹介します。
Part 1 : 複製フロー概要
Part 2 : デルタキャプチャと変換フロー (本ブログ)
Part3:Google BigQueryをターゲットととした複製フロー
Part4: Amazon S3をターゲットとした複製フロー
Part 5 : 複製フローのサイジング
このブログでは、複製フローでデータを抽出した後にデータを変更・変換するための2つの機能「デルタキャプチャ」と「変換フロー」についてご紹介します。
「デルタキャプチャ」ではローカルテーブルのデプロイ後にローカルテーブルに後で加えられる変更を追跡することができ、ソーステーブルで差分更新があった際に役に立ちます。そして「変換フロー」はその差分変更を1つのソーステーブルからターゲットテーブルにロードすることが可能です。
※本ブログはこちらのブログを日本語訳したものです
詳細はこちらをご覧ください。
ローカルテーブルのデルタキャプチャ
使い方
新しいローカルテーブルを作成する際に、「デルタキャプチャ」をオンにします。
デルタキャプチャをオンにすることでデルタ キャプチャ テーブル <table_name>_Delta が自動的に作成され、2 つの列がテーブル定義に追加されます。
注意点
- 追加された2列のビジネス名と技術名は変更できますが、データ型 (読み取り専用) は変更できません
- 追加された2列をキー列として設定することはできません
- デルタキャプチャがオンになっている場合は追加された2列は削除できません
- テーブルがデプロイされると、デルタキャプチャをオフにすることはできません
デルタ キャプチャが無効になっているローカル テーブル (左) とデルタ キャプチャが有効になっているローカル テーブル (右) の違いは次の図でご確認ください
SAP Datasphere アプリに応じてデータを表示する 2 つのオブジェクト (アクティブ レコード テーブルとデルタ キャプチャ テーブル) が作成されます
アクティブレコードのみを含むテーブル |
デルタ キャプチャ列を含むテーブル |
詳細 |
テーブルエディタ – データプレビュー |
使用できない |
ソースオブジェクトとして使用される |
デプロイメントが完了するとデータ プレビューが利用可能になり、デルタキャプチャ列を含むテーブルのみが表示されます。データビルダーオブジェクトのデータの表示またはプレビュー |
テーブルエディタ – データメンテナンス |
使用できない |
ソースおよびターゲット オブジェクトとして使用される |
デプロイメントが完了したら、テーブルのメンテナンスを実行できます。ローカルテーブルデータの保守 |
テーブルエディタ – ファイルのアップロード |
使用できない |
ソースおよびターゲット オブジェクトとして使用される |
デプロイメントの完了後、新しい CSV ファイルをアップロードすることで、デルタ キャプチャを使用してテーブルを更新できます。ローカルテーブルデータのロードまたは削除 |
変換フロー |
ソースオブジェクトとして使用される |
ソースおよびターゲット オブジェクトとして使用される |
- ソース: 「デルタ キャプチャ」または「すべてのアクティブなレコード」のソースを選択できます。「ソーステーブルの追加」を参照してください。
|
レプリケーションフロー |
使用できない |
ターゲットオブジェクトとして使用 |
レプリケーション フローの作成 |
ビュービルダー |
ソースオブジェクトとして使用される |
使用できない |
以下の中で、アクティブなレコードテーブルのみが表示されます
- ビュー ビルダー、変換フロー、データ フロー、レプリケーション フロー、ER モデラーに表示されるリポジトリ ツリー
- グラフィカルビュー – 計算列 – 通貨換算テーブルのリスト
グラフィカルビューの作成 |
ERモデル |
ソースオブジェクトとして使用される |
使用できない |
リポジトリツリーにはアクティブレコードテーブルのみが表示されますが、デルタキャプチャを使用してローカル テーブルを作成できます。「E/R モデルでのテーブルの作成」を参照してください。 |
データフロー |
ソースオブジェクトとして使用される |
使用できない |
リポジトリツリーにはアクティブレコードテーブルのみが表示されます。「ソースの追加」を参照してください。 |
ビジネスビルダー |
ソースオブジェクトとして使用される |
使用できない |
デルタキャプチャ列を含むテーブルは、エンティティの検索時に非表示になります。「アクティブレコード」テーブルのみ選択可能です。 |
参考:
https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/154bdffb35814d5481d1f6de14...以下でデルタキャプチャの有無でローカルテーブルの作成とロードにどのような違いがあるかをご紹介します。
デルタキャプチャなしの場合のローカルテーブル
手順①ファイルをインポートしテーブルを作成する注意: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は連動しています。
変換フロー
次に、デルタキャプチャが新しい「変換フロー」とどのように連携するかをご紹介します。
- まず、データビルダで新しい変換フローを作成します。
- 次に、ビューの左側にある編集アイコンをクリックします
- 変換ビューエディタ:結合、計算、集計、フィルタの追加が行えます。まず、s-巣として使用するテーブルをドラッグアンドドロップします
- 次に、必要であれば変換を追加します。今回は実績値が計画値を上回った場合にYESと表示するような、「Target Achived (目標達成)」列を追加します。
計算列の式は
CASE WHEN Actual >= Plan THEN 'YES' ELSE 'NO' END
です.
- 戻るボタン(<)を押して前の画面に戻り、新しいターゲットを追加します。今回はデフォルトのTarget_1を使用します。
注意:デルタキャプチャがONのローカルテーブルをソースとして使用しているため、新しいテーブル(Target_1)のデルタキャプチャもデフォルトでONになっています
- データプレビューを使用すると、変換フローの作成中でもデータを確認できます。「Target Achieved (目標達成)」の計算列の値は以下のようになります。
- 変換フローのプロパティの中で、ロードタイプ(「初期」または「初期およびデルタ」)を選択できます
- 実行ボタンを押して変換フローを実行したり、カレンダーアイコンをクリックしてスケジュールを作成することもできます
- 変換フローを実行した後、プロパティもしくは変換フローモニターでステータスを確認できます
- CSVファイルを再ロードし、データの変更や削除を行います。その後、変更フローの実行ボタンを押して変換フローを実行します
変更後のデータ(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に対する改善のご要望は、こちらで受け付けております。
https://influence.sap.com/sap/ino/#/campaign/3433