ノードを追加してデータ処理エンジン定義を完成させる
学習の目的
この単元を完了すると、次のことができるようになります。
- 定義で [グループと集計] ノードを使用する。
- 債務を計算する数式を作成する。
債務を計算するための追加ノード
Cloud Kicks のロイヤルティマネージャーの Mary Levy はプログラムパートナーに対して獲得した債務の詳細を必要としています。債務はメンバーが購入または償還を行うたびに獲得されます。取引 (獲得または償還) の種類に応じて、プログラムとパートナーは債務をやり取りします。債務を理解することは、Mary がパートナーシップの財務面での実行可能性を評価するのに役立ちます。
Linda が債務を計算するには、取引に関連付けられた対象外ポイントの詳細が必要です。これはロイヤルティプログラムに関連した活動でメンバーが獲得するポイントであり、メンバーはリワードの受け取りに利用できます。このポイントの詳細はロイヤルティ元帳オブジェクトにあるため、Linda はこのためのデータソースを作成します。このオブジェクト内で [イベント種別] 項目、[Points (ポイント)] 項目、[取引記録] 項目を選択します。
次に、記録情報を元帳の詳細に追加します。両方のソースノードからの一致項目のみを出力に含めるため、内部結合を使用します。
-
[新規ノード] をクリックし、次の詳細を指定します。
- ノード種別を選択: 結合
- 名前:
Add Journal Info to Ledger
(元帳への記録情報の追加)
- [保存] をクリックします。
- [結合種別] で [内部] を選択します。
- [最初のノード] で次の詳細を指定します。
- 取得元ノード: Loyalty Ledger (ロイヤルティ元帳)
- 項目を選択: Points、TransactionJournalId
- [完了] をクリックします。
- [2 番目のノード] で次の詳細を指定します。
- 取得元ノード: Filter Based on Date and Program (日付とプログラムに基づく検索条件)
- 項目を選択: 使用可能な項目をすべて選択
- [完了] をクリックします。
- [項目を対応付け] で次の詳細を指定します。
- 最初のノード項目: TransactionJournalId
- 2 番目のノード項目: Id
- [完了] をクリックします。
この結合を作成すると、すべての元帳での取引記録とロイヤルティプログラムに関するデータが得られます。また、すべての対象外ポイントに関する詳細も得られるため、Linda は記録種別をグループ化して、それぞれについてポイントを集計できます。
-
[新規ノード] をクリックし、次の詳細を指定します。
- ノード種別を選択: グループと集計
- 名前:
Aggregate Points Based on Journal Type and Partner
(取引記録とパートナーに基づくポイントの集計)
- [保存] をクリックします。
- [取得元ノード] で次の詳細を指定します。
- 取得元ノードを選択: Add Journal Info to Ledger (元帳への記録情報の追加)
- 項目を選択: JournalTypeName、PartnerId
- [完了] をクリックします。
- [集計] で次の詳細を指定します。
- 別名:
TotalPoints
- 関数を選択: Sum
- 集計項目を選択: Points
- 別名:
- [完了] をクリックします。
次に、記録種別に基づいてデータを分割する必要があります。そのために、獲得取引と償還取引でデータを絞り込みます。
-
[新規ノード] をクリックし、次の詳細を指定します。
- ノード種別を選択: 検索条件
- 名前:
Filter Accrual Transactions
(獲得取引の絞り込み)
- [保存] をクリックします。
- [取得元ノード] で [Aggregate Points Based on Journal Type and Partner (取引記録とパートナーに基づくポイントの集計)] を選択します。
- 検索条件に次の詳細を指定します。
- 項目: JournalTypeName
- 演算子: 次の文字列と一致する
- 種別: 項目
- 値:
Accrual
- [完了] をクリックします。
- ステップ 1 ~ 5 を繰り返して、「Filter Redemption Transactions」(償還取引の絞り込み) 検索条件を作成し、次の詳細を指定します。
取得元ノード | 項目 | 演算子 | 種別 | 値 |
---|---|---|---|---|
Aggregate Points Based on Journal Type and Partner (取引記録とパートナーに基づくポイントの集計) | JournalTypeName | 次の文字列と一致する | 項目 |
Redemption (償還) |
ここまで Linda が使用していたのは合計ポイントの詳細のみです。単位あたりの獲得コストと償還コストに関するデータがまだありません。債務を計算するにはその詳細が必要です。単位あたりのコストはプログラムパートナーオブジェクトから取得します。
Linda は手順に従ってロイヤルティプログラムパートナーのデータソースを作成します。ここから、[単位あたりの獲得コスト]、[ロイヤルティパートナー ID]、[Program (プログラム)]、[Program Partner (プログラムパートナー)]、[単位あたりの償還コスト] が必要です。
これで、集計された獲得と償還に関する情報をプログラムパートナーに結合できるようになりました。最初のソースノードからのすべての項目と 2 番目のソースコードからの一致項目を出力に含めるため、Linda は左外部結合を使用します。
-
[新規ノード] をクリックし、次の詳細を指定します。
- ノード種別を選択: 結合
- 名前:
Add Accrual Points to Partner
(パートナーへの獲得ポイントの追加)
- [保存] をクリックします。
- [結合種別] で [左外部] を選択します。
- [最初のノード] で次の詳細を指定します。
- 取得元ノード: Program Partner (プログラムパートナー)
- 項目を選択: 使用可能な項目をすべて選択
- [完了] をクリックします。
- [2 番目のノード] で次の詳細を指定します。
- 取得元ノード: Filter Accrual Transactions (獲得取引の絞り込み)
- 項目を選択: TotalPoints
- 別名を編集:
AccrualPoints
- [完了] をクリックします。
- [項目を対応付け] で次の詳細を指定します。
- 最初のノード項目: Id
- 2 番目のノード項目: PartnerId
- [完了] をクリックします。
上記のノードの結果は、Ursa Major Solar に関するすべての獲得取引になります。これに対して Linda は左外部結合を使用して償還取引を追加します。
-
[新規ノード] をクリックし、次の詳細を指定します。
- ノード種別を選択: 結合
- 名前:
Add Redemption Points to Partner
(パートナーへの償還ポイントの追加)
- [保存] をクリックします。
- [結合種別] で [左外部] を選択します。
- [最初のノード] で次の詳細を指定します。
- 取得元ノード: Add Accrual Points to Partner (パートナーへの獲得ポイントの追加)
- 項目を選択: 使用可能な項目をすべて選択
- [完了] をクリックします。
- [2 番目のノード] で次の詳細を指定します。
- 取得元ノード: Filter Redemption Transactions (償還取引の絞り込み)
- 項目を選択: TotalPoints
- 別名を編集:
RedemptionPoints
- [完了] をクリックします。
- [項目を対応付け] で次の詳細を指定します。
- 最初のノード項目: Id
- 2 番目のノード項目: PartnerId
- [完了] をクリックします。
これで、Linda は数式を作成できるようになりました。債務を計算するには、獲得と償還の差が必要です。獲得と償還の合計値はポイントに単位あたりのコストを掛けることで計算されます。
-
[新規ノード] をクリックし、次の詳細を指定します。
- ノード種別を選択: 数式
- 名前:
Calculate Liability
(債務の計算)
- [保存] をクリックします。
- [取得元ノード] で [Add Redemption Points to Partner (パートナーへの償還ポイントの追加)] を選択します。
- [数式] で次の詳細を指定します。
- 別名:
Liability
- 項目の型: 数値
- 長さ:
16
- 小数点の位置:
2
- [項目を検索] オプションと [演算子を選択] オプションを使用して、次の数式を入力します: IF(ISNULL({AccrualPoints}) , 0-({RedemptionPoints} * {RedemptionCostperUnit}), ({AccrualPoints} * {AccrualCostperUnit}) - ({RedemptionPoints} * {RedemptionCostperUnit}))
- 別名:
- [構文の検証] をクリックします。
- [完了] をクリックします。
最後に、債務がパートナーオブジェクトの [債務] 項目に更新されます。
-
[新規ノード] をクリックし、次の詳細を指定します。
- ノード種別を選択: 書き戻しオブジェクト
- 名前:
Update Liability
(債務の更新)
-
[保存] をクリックし、次の詳細を指定します。
- 取得元ノード: Calculate Liability (債務の計算)
- アクション種別: 更新
- 対象オブジェクト: ロイヤルティプログラムパートナー
- 書き戻し権限を持つユーザー: 管理ユーザー
- [変更されたレコードのみを更新] を選択
- 書き戻し順序:
1
- [項目の対応付け] で次の詳細を指定します。
- 取得元ノード項目: Id
- 取得先項目: Id
- [行を追加] をクリック
- 取得元ノード項目: Liability
- 取得先項目: Liability_c
- [完了] をクリックします。
すべてのノードが作成されたら、Linda は [保存] と [有効化] をクリックします。
Linda が [有効化] をクリックするとバックグラウンドで検証ルールが実行されて、定義が正しくて実行可能であるかどうかが確認されます。定義にエラーが存在する場合は、エラーが強調表示されます。警告が表示された場合は、問題を修正または無視できます。エラーが修正された場合のみ定義が有効化されます。
これで DPE 定義の準備ができました。後は、データ変換を始められるように DPE 定義を実行するだけです。DPE ではフロー/Apex でデータ変換実行のオーケストレーションが行われます。次の単元ではその方法を見ていきます。