コピーされた DPE 定義をカスタマイズする
学習の目的
この単元を完了すると、次のことができるようになります。
- DPE 定義の各ノードの項目の追加と編集を行う。
- Aggregate by Member (メンバー別集計) DPE 定義をカスタムロジックで更新する。
まとめと今後の展開
これまで、Rishi は、AMER の取引先マネージャーから求められた要件に基づいて、リベートプログラムとその報奨金を設定してきました。また、商品カテゴリと割引後の取引合計金額のデータを考慮に入れるために、Rishi は Cindy と協力して、取引記録、リベートメンバー商品集計、プログラムリベート種別給付の各オブジェクトにカスタム項目を作成しました。Cindy は Aggregate by Member (メンバー別集計) 定義をコピーし、Rishi と既存のノードについて話し合いました。
次は、Aggregate by Member_AMER Rebate Program Aggregation (メンバー別集計_AMER リベートプログラム集計) 定義をカスタマイズしていきます。
単元 1 の追加要件を覚えていますか? Rayler Parts は、集計オブジェクトであるリベートメンバー商品集計でレコードを商品カテゴリ別にグループ化して、[Total Discounted Transaction Amount (割引後トランザクション合計金額)] の集計データを表示したいと考えています。
では、Cindy と Rishi がコピー済みの定義をカスタマイズして追加の項目要件を満たしていく様子を見ていきましょう。
データ取得元の定義
まず、Cindy は取引記録とリベートメンバー商品集計の新しい項目を対応するデータ取得元に追加します。
- [Nodes (ノード)] タブで、[取引記録] をクリックします。
- [選択済みの項目] をクリックします。
- [Discounted_Transaction _Amount_c] を選択します。
-
[完了]、[完了] の順にクリックします。
- [Nodes (ノード)] タブで、[リベートメンバー商品集計] をクリックします。
- [選択済みの項目] をクリックします。
- [ProductCategory_c] を選択します。
-
[Total_Discounted_Transaction_Amount_c] を選択します。
- [完了]、[完了] の順にクリックします。
集計で割引後の取引合計金額を表示する
Rishi と Cindy は項目を追加したので、次は最初の要件に焦点を当てていきます。リベートメンバー商品集計オブジェクトには、取引合計金額の集計値のみが表示されています。Rayler Parts は同様の集計項目を追加して、取引先マネージャーが割引を適用した後の取引の合計金額を表示したいと考えています。
Rishi は、各ノードに、現在のノードを参照し、かつ使用している次のノードに関する情報があることに気付きます。Cindy はこのノードをたどって、意図した順序で変更を行います。
新しい集計値項目を追加する手順は、次のとおりです。
- [取引記録] データ取得元ノードをクリックし、[Discounted_Transaction _Amount_c] が選択済みの項目になっていることを確認します。参照ノードへのリンクをクリックします。
- [Filter Journals to Usage Type (取引記録を利用状況の種別に絞り込む)] ノードでは変更の必要はありません。参照ノードへのリンクをクリックします。
- [Add Rebate Type and Payout Period to Transaction Journals (取引記録にリベート種別と支払期間を追加する)] 結合ノードで、[最初のノード] ([Filter Journals by Usage Type (取引記録を利用状況の種別で絞り込む)]) の [選択済みの項目] をクリックして、[Discounted_Transaction_Amount_c] 項目を追加します。
- [完了]、[完了] の順にクリックします。
- 以下のノードでは変更の必要はありません。
- Compute Transaction Journals With Activity Dates (活動日で取引記録を計算する)
- Filter Transaction Journals With Valid Activity Dates (有効な活動日のある取引記録を絞り込む)
- [Valid Activity Dated Journals with Program Rebate Type Product (プログラムリベート種別商品のある有効な活動日の取引記録)] ノードで、[最初のノード] ([Filter Transaction Journals With Valid Activity Dates (有効な活動日のある取引記録を絞り込む)]) の [選択済みの項目] をクリックして、[Discounted_Transaction_Amount_c] 項目を追加します。参照ノードへのリンクをクリックします。
- 以下のノードでは変更の必要はありません。
- Filter Journals For Valid Products (有効な商品の取引記録を絞り込む)。
- Compute Valid Transaction Journals Per Rebate Type (リベート種別ごとに有効な取引記録を計算する)
- Filter Valid Transaction Journals For Rebate Types (リベート種別の有効な取引記録を絞り込む)
- [Total Transaction Amount and Total Quantity (トランザクションの合計金額と合計数量)] グループと集計ノードで、[集計を追加] をクリックします。
- 次の詳細を指定します。
- 関数を選択: Sum
- 集計項目を選択: Discounted_Transaction_Amount_c。
- [Done (完了)] をクリックします。
- [Look Up Existing Aggregate Data (既存の集計データを参照する)] 結合ノードで、[最初のノード] ([Total Transaction Amount and Total Quantity (トランザクションの合計金額と合計数量)]) の [選択済みの項目] をクリックして、[TotalDiscountedTransactionAmount] 項目を追加します。
- [2 番目のノード] ([リベートメンバー商品集計]) の [選択済みの項目] をクリックして、[TotalDiscountedTransactionAmount] 項目を追加します。
- [完了] をクリックします。
- [Compute New Or Updated Aggregate Records (新規または更新された集計レコードを計算する)] の [数式] ノードで、数式を次のように変更します。
“IF(({TotalAggQuanity} == {TotalQuantity}) && ({TotalAggAmount} == {TotalTransactionAmount}) && ({TotalDiscountedTransactionAmount} == {TotalDiscountedTransactionAmount}), 0,1)”。
構文を検証して、[完了] をクリックします。
- [Filter New or Updated Aggregate Records (新規または更新された集計レコードを絞り込む)] ノードでは変更の必要はありません。
- [Upsert Total Transaction Amount and Total Quantity (トランザクションの合計金額と合計数量を更新/挿入する)] 書き戻しノードで、[行を追加] をクリックします。
- [取得元ノード] に TotalDiscountedTransactionAmount、[取得先項目] に Total_Discounted_Transaction_Amount_c を選択します。
-
[完了] をクリックします。
- ビルダーのヘッダーにある [保存] をクリックします。
Cindy はリベートメンバー商品集計オブジェクトに新しい集計項目を作成し、事前定義された Aggregate by Member (メンバー別集計) 定義の既存のルールに関連付けました。この項目には、すべての有効な取引記録レコードの [Discounted Transaction Amount (割引後トランザクション金額)] の値が合計され、メンバー行ごとに単一の集計値が表示されます。
商品カテゴリ別にデータをグループ化する
Rishi は 2 番目の要件に取り掛かります。現在、リベートメンバー商品集計オブジェクトの各集計行には、プログラムメンバーごとのデータが示されています。特定のリベート種別と特定の支払期間には、プログラムメンバーごとに単一行が作成されます。しかし、取引先マネージャーは、1 プログラムメンバーに対して商品カテゴリ別に 1 行ずつ表示したいと思っています。たとえば、Haven Enterprises にハンマーとコンパクターの両方の取引があったとしても、集計レコードにはそのことが表示されません。
- Haven Enterprises, Jan’21, Volume Rebate, 300 qty, $30,000 (Haven Enterprises、2021 年 1 月、数量リベート、300 個、$30,000)
また、両方の商品にまたがる取引を表示するには、集計レコードを商品カテゴリ別にグループ化する必要もあります。
- Haven Enterprises, Hammers, Jan’21, Volume Rebate, 200 qty, $10,000 (Haven Enterprises、ハンマー、2021 年 1 月、数量リベート、200 個、$10,000)
- Haven Enterprises, Compactors, Jan’21, Volume Rebate, 100 qty, $20,000 (Haven Enterprises、コンパクター、2021 年 1 月、数量リベート、100 個、$20,000)
では、Cindy と Rishi が DPE 定義を微調整して目的の結果を取得する様子を見ていきましょう。
2 つの並行する手順がありますが、これは、Cindy が変更を行う必要がある以下のデータ取得元ノードから行います。
- [リベートメンバー商品集計] 取得元ノードでは、Cindy はすでに商品カテゴリを項目として追加しています。
- [取引記録] 取得元ノードでは、商品カテゴリ ID は標準で用意されている項目ですが、Cindy はその項目を選択する必要があります。
まず、Cindy は取引記録の参照先ノードをたどって更新を行います。
-
[取引記録] データ取得元ノードをクリックして、[ProductCategory] が選択済みの項目になっていることを確認します。参照ノードへのリンクをクリックします。
- [Filter Journals by Usage Type (取引記録を利用状況の種別で絞り込む)] ノードでは変更の必要はありません。
- [Add Rebate Type and Payout Period to Transaction Journals (取引記録にリベート種別と支払期間を追加する)] 結合ノードで、[最初のノード] ([Filter Journals by Usage Type (取引記録を利用状況の種別で絞り込む)]) の [選択済みの項目] をクリックして、[ProductCategoryId] を選択します。
-
[完了]、[完了] の順にクリックします。
- 次の 2 つの参照ノードでは変更の必要はありません。
- Compute Transaction Journals With Activity Dates (活動日で取引記録を計算する)。
- Filter Transaction Journals With Valid Activity Dates (有効な活動日のある取引記録を絞り込む)
- [Valid Activity Dated Journals with Program Rebate Type Product (プログラムリベート種別商品のある有効な活動日の取引記録)] ノードで、[最初のノード] ([Filter Transaction Journals With Valid Activity Dates (有効な活動日のある取引記録を絞り込む)]) の [選択済みの項目] をクリックして、[ProductCategory] 項目を追加します。参照ノードへのリンクをクリックします。
- 以下のノードでは変更の必要はありません。
- Filter Journals For Valid Products (有効な商品の取引記録を絞り込む)
- Compute Valid Transaction Journals Per Rebate Type (リベート種別ごとに有効な取引記録を計算する)
- Filter Valid Transaction Journals For Rebate Types (リベート種別の有効な取引記録を絞り込む)
- [Total Transaction Amount and Total Quantity (トランザクションの合計金額と合計数量)] グループと集計ノードで、[グループ項目を選択] をクリックします。
- [ProductCategoryId] を選択します。
-
[完了]、[完了] の順にクリックします。
- [Look Up Existing Aggregate Data (既存の集計データを参照する)] 結合ノードで、[最初のノード] ([Total Transaction Amount and Total Quantity (トランザクションの合計金額と合計数量)]) の [選択済みの項目] をクリックして、[ProductCategoryId] を選択します。
ProductCategoryId
というエイリアスを追加します。 -
[完了] をクリックします。
- [Look Up Existing Aggregate Data (既存の集計データを参照する)] 結合ノードで、[最初のノード] ([Total Transaction Amount and Total Quantity (トランザクションの合計金額と合計数量)]) の [選択済みの項目] をクリックして、[ProductCategoryId] を選択します。
- [完了] をクリックします。
-
[対応付けを追加] をクリックして、次の設定を選択します。
- 最初のノード項目: ProductCategoryId
- 2 番目のノード項目: Product_Category
- [Done (完了)] をクリックします。
- 次の 2 つの参照ノードでは変更の必要はありません。
- Compute New Or Updated Aggregate Records (新規または更新された集計レコードを計算する)
- Filter New or Updated Aggregate Records (新規または更新された集計レコードを絞り込む)
- [保存] をクリックします。
次に、Cindy はリベートメンバー商品集計の参照先ノードをたどって更新を行います。
- [リベートメンバー商品集計] データ取得元ノードをクリックして、参照先ノードへのリンクをクリックします。
- [Look Up Existing Aggregate Data (既存の集計データを参照する)] 結合ノードで、[2 番目のノード] ([リベートメンバー商品集計]) の [選択済みの項目] をクリックして、[商品カテゴリ] を選択します。
- [完了]、[完了] の順にクリックします。
- 次の 2 つの参照ノードでは変更の必要はありません。
- Compute New Or Updated Aggregate Records (新規または更新された集計レコードを計算する)
- Filter New or Updated Aggregate Records (新規または更新された集計レコードを絞り込む)
- [保存] をクリックします。
両方の道をたどって、Cindy はようやく最後の書き戻しノードに着手します。それでは、仕上げに入りましょう。
- [Upsert Total Transaction Amount and Total Quantity (トランザクションの合計金額と合計数量を更新/挿入する)] 書き戻しノードで、[行を追加] をクリックします。
- 次の設定を選択します。
- 取得元ノード項目: ProductCategoryId (取引記録から派生)
- 取得先項目: Product_Category__c (リベートメンバー商品集計から派生)
- [完了] をクリックします。
-
[保存] をクリックします。
Cindy と Rishi は Aggregate by Member (メンバー別集計) DPE 定義をカスタマイズして、リベートプログラム用の新しい方法でデータをグループ化して集計しました。取引先マネージャーは、割引前と割引後の両方の取引金額を追跡できます。また、各パートナーの特定の商品カテゴリについて、対象となる支払データの詳細を表示できます。次の単元では、DPE 定義のテスト実行と出力の確認を行います。