0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CRMAで選択した日付と一年前の日の金額を比較するテーブルの作成方法

Last updated at Posted at 2024-07-30

この方法がSalesforce official blog One date widget, two date filters, plus an offsetを参考しました。詳細をsalesforce official blog内容ををご参照ください。

目的

以下のビジネス分析で頻繁に使用される質問に答えるため:
一つの日付ウィジェットを使い、その結果を一つのメジャーに適用しつつ、一年前の日付を引いてもう一つのメジャーに適用する方法は?

成果物

image.png

手順

1.テーブル比較の作成

二つの金額の列を作成してください。必要なグループ化単位を設定してください。

一つの列に「完了予定日」の条件をつけて、適当な日付を設定します。

image.png

もう一つの列には適当な基準項目を利用して条件を設定してください。
image.png
image.png

分かりやすくするために、列名を編集します。
image.png

image.png

2.テーブル比較のクエリを編集

image.png

SAQL編集前
image.png

SAQL編集前後
・列「マイナス一年」の条件を日付項目「CloseDate」の秒のバージョンに変更しました。
・SAQLで列名を再度定義しました。
image.png

※CRMAの日付項目の形式を理解したい場合、以下の内容をご参照ください。
Demystifying Dates in Recipes

3.日付フィルターの配置

日付ウィジェットを利用して、CloseDateのフィルターを作成します。
image.png

テーブル比較を日付ウィジェットのファセット機能からクエリを除外します。そうしないと、この日付フィルターを使用する際に、テーブル比較の両方の列に影響が及びます。まず日付フィルターによる影響を排除し、次にインタラクションを使用して、選択したデータの列に日付フィルターの影響が及ぶようにします。

テーブル比較をクリックし、クエリのファセットからCloseDateフィルターを除外します。
設定後、プレビューで日付フィルターの内容を絞り込んでください。テーブルに影響がないことを確認します。
image.png

4.日付の計算

インタラクション式を作る前に、隠されたステップで計算を行う必要があります。同じデータセットを利用してクエリを作成し、SAQLに直接切り替えます。以下のコードをSAQLに貼り付けてください。
クエリに名前をつけてください。例:date offset calculation

        when toString(toDate(min(CloseDate_sec_epoch) - 365*24*3600), "dd")  == toString(toDate(min(CloseDate_sec_epoch)), "dd") then 365 
        else 366 
        end) 
    *24*3600 as 'min', max(CloseDate_sec_epoch) - (case 
        when toString(toDate(max(CloseDate_sec_epoch) - 365*24*3600), "dd")  == toString(toDate(max(CloseDate_sec_epoch)), "dd") then 365 
        else 366 
        end) 
    *24*3600 as 'max';

コードの説明:

-- 最小のClose Dateを取得し、case文の値を引く
min(CloseDate_sec_epoch) - 
   (case 
-- 365日を引いて現在の年と比較し、同じ値ならうるう年ではないので365を返す
      when toString(toDate(min(CloseDate_sec_epoch) - 365*24*3600), "dd") == toString(toDate(min(CloseDate_sec_epoch)), "dd") then 365 
-- うるう年なら366を返す
      else 366 
      end) 
-- 1年の秒数を計算する
    *24*3600 
as 'min',

image.png

5.インタラクション式

テーブル比較をクリックし、advanced editor(高度なエディター)を開きます。
image.png

クエリのところでq_Aのクエリにインタラクション式を入れ替えます。

image.png

q_A = filter q by {{row(CloseDate_1.selection, [0], [\"min\", \"max\"]).asDateRange(\"date('CloseDate_Year', 'CloseDate_Month', 'CloseDate_Day')\")}};

※CloseDate_1を自身で使用した日付フィルターのAPI名に変更してください。
[参考情報] API名の調べ方:インタラクションエディターを利用して、ソースクエリから日付フィルターを選択し、画面の下にある「作成されたインタラクション」からAPI名をコピーできます。
image.png

The second filter that will be showing the selected date range minus one year will be powered by the hidden query or step.

image.png

q_B = filter q by {{row(dateOffset_1.result, [0], [\"min\", \"max\"]).asRange(\"CloseDate_sec_epoch\")}};

※CloseDate_1を自身で作成した隠しクエリのAPI名に変更してください。。

完成図
image.png

プレビューで試してみてください!

image.png

参考資料
CRM Analytics Interactions

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?