(翻訳)Data Cloud を使った CRM Analytics の動的フィルターオプション
Data Cloud でデータをハーモナイズ、変換、統合し、CRM Analytics でダッシュボードを作成して驚くようなインサイトを提供する準備がようやく整いました。CRM Analytics で Data Cloud からデータを問い合わせする方法についての前回のブログをすでに読んだことと思いますが、ログインしたユーザが自分のロールに関連したデータのみを表示できるようにする方法についてまだ疑問があるかもしれません。
訳)AI and Analytics Specialist, Salesforce, 小見 一平
CRM Analytics で Data Cloud に接続したダッシュボードを構築すると、Salesforce Direct 機能と同様に Data Cloud から直接データを照会できます。Salesforce Direct 機能では Salesforce オブジェクトに対して直接クエリを実行できますが、Data Cloud から直接クエリを実行すると、以下に挙げたほぼすべての外部ソースからのデータを視覚化できます: CRM、Marketing Cloud、Ingestion API、Amazon S3、または Data Sources ページにリストされているデータソース
論理的には、このデータの多様性により、ログイン ユーザーの行レベルのセキュリティを決定する複雑なレイヤーが追加される場合があります。また、CRM Analytics は Data Cloud に直接クエリを実行するため、行レベルセキュリティを実現するためのセキュリティ述語を作成するという選択肢も取れません。Data Cloud が進化し続けるにつれて、この行レベルのセキュリティの課題を解決するための機能がいずれ追加されるでしょう(このブログが公開された時点での機能については Data Spaces を参照してください)。しかし、暫定的にこの課題を解決するにはどうすればよいでしょうか?
幸いなことに、CRM Analytics には、Data Cloud からクエリを作成するときに、ログインしているユーザーによってダッシュボードに表示されたデータをフィルタリングする機能があります。フィルタとインタラクション(以前はバインディングと呼んでいました)を使用してこのソリューションを作成し、ログインしたユーザーが Data Cloud から正しいデータを CRM Analytics ダッシュボードに表示できるようにする方法を説明します。始めましょう!
Data Cloud データモデルの考慮点
以下の演習では、特定のデータモデリング要件を想定しています。これらはかなり一般的なものですが、フォローしたい方のためにここで概要を説明します。
CRM コネクタ経由で Account、Opportunity、User オブジェクトを転送(インジェスト)しています。
User オブジェクト:最低でも Username にマッピングされていること、および “User オブジェクト” : “Account オブジェクト”間 と “User オブジェクト” : “Opportunity オブジェクト”間にリレーションシップがマッピングされていることを確認します。
Account オブジェクト: Owner ID → Owner がマッピングされていることを確認する。
Opportunity オブジェクト: 最低限、Opportunity ID → 顧客アカウント、Amount → Total Accountがマッピングされていることを確認する。
Address(オプション): 最低限、Account ID → 住所ID、住所フィールドがマッピングされていることを確認する。
ユーザーオブジェクトへのダイレクト・クエリーの作成
まず最初に、ログインしているユーザの ID を返す Salesforce ユーザーオブジェクトへのダイレクトクエリを作成します。クエリを作成 をクリックし、Salesforce オブジェクト > ユーザー を選択して、ユーザー SObject のクエリを開きます。必要なのは ユーザーID の値だけですが、データを検証したい場合は、First Name や Last Name などのフィールドを取得できます。
次に、条件タブをクリックして、ユーザーIDでフィルターをかけます。どの値が選択されていてもかまいません。正しいフィルター構文を取得する方法として、これを使用するつもりです。
そこからクエリモードに移動し、クエリ構文を手動で更新してさらにカスタマイズすることができます。ここで、フィルタのユーザーIDの値を’!{User.Id}’に置き換え、LIMITを100から1に変更します。
SELECT Id, LastName, FirstName, Country FROM User WHERE Id = '005123123123123123' LIMIT 100
このクエリを以下のように編集してください:
SELECT Id, LastName, FirstName, Country FROM User WHERE Id = '!{User.Id}' LIMIT 1
このクエリをLogged In Userとして保存します。このクエリは後で使用します。
Data Cloud クエリを作成します
非常に単純な例から始めましょう。あなたは、各営業担当者のアカウントと商談の詳細を表示するダッシュボードを作成するよう依頼されました。チャートの1つは、アカウント別のオープンパイプラインを表示します。この単純な棒グラフを作成するには、以下のステップを完了します:
- ダッシュボード・デザイナーでクエリを作成 をクリックします。
- SALESFORCE DATA CLOUD をクリックし、データモデル タブをクリックして、Opportunity (ssot__Opportunity__dlm) Data Model Object (DMO) を見つけます。
- 管理をクリックし、Account(取引先)とUser(ユーザー)の関連オブジェクトの行の横にあるチェックボックスを選択します。Apply(適用) をクリックします。
- グラフを積み上げ横棒
- 棒の長さをAmount合計に変更
- Sum of Total Amount(Amount合計)横にある下向き矢印をクリックし、降順に並び替えを選択
- 横棒をAccount Nameに変更
- 棒区分をOpportunity > Opportunity Stageに設定
- Give your Query a name like Pipeline by Account and Stage
- クエリ名をPipeline by Account and Stageにする
- Done(完了)をクリック
この新規作成したクエリをダッシュボードにドラッグ&ドロップ
条件をData Cloudクエリに適用する
“Logged In User” クエリにフィルタを作成したように、”Pipeline by Account and Stage” クエリにもフィルタを作成します。これにより、フィルタリングのための正しいクエリ構文が追加されます。
“条件”タブで、”+”ボタンをクリックして、”User ID “の新しいフィルタを追加する。表示されるID値のいずれかを選択できます。これは、ログインユーザの値を追加するプレースホルダとして使用することを忘れないでください。完了をクリックして、このクエリを閉じます。
インタラクションでData Cloudのクエリを改訂
これで、クエリにインタラクション(別名バインディング)を追加して、ログインしている ユーザーのアカウントのみを表示する準備が整いました。 ”高度なエディター” を使用して、ログインユーザー ID を既存のフィルタに挿入するインタラクションを作成します。インタラクション関数について少し知っていれば、これは「選択」ではなく「結果」であることがわかるでしょう。つまり、このインタラクションはユーザーが手動で操作することなく、ログインユーザーIDが自動的にダッシュボードのフィルターに動的に挿入されます。
複雑そうに聞こえるかもしれないが、心配はいりません!以下のステップバイステップの指示に従ってください。
- ダッシュボード デザイナーでグラフを選択し、画面下部の “”高度なエディター” ボタンをクリックします。
- 左サイドバーの “ソースクエリ”で、最初に作成した”Logged In User Query“を選択します。このクエリーはログインユーザのユーザIDが返されることを思い出してください。
- ソース・データで”データを選択…”をクリックし、以下のオプションを選択します:
- データ選択 : セル
- 行インデックス : 0
- 列 : Id
- 作成されたインタラクションは、以下のように画面に表示されます。
cell(Logged_In_User.result, 0, \"Id\").asString()
- コピーボタンをクリックして、このテキストをコピーする
- 画面上部の”クエリ”タブを選択し、作成したフィルタが見つかるまで下にスクロールします。
- コピーしたテキストを引用符の間に貼り付け、”保存”をクリックします。
ログインユーザー属性によるフィルタリング (オプションステップ)
ログインユーザが所有するレコードを単純にフィルタリングするだけでなく、上記と同じロジックを使用して、ログインユーザに関する属性に従ってフィルタリングすることも可能です。たとえば、ユーザーと同じ国または地域に関連するオポチュニティを持つアカウントのみを表示したい場合があります。Data Cloud のデータ モデルにその属性が保存されていれば、簡単に実行できます。
この例では、前提条件として、Account の Billing Country フィールドを Address DMO の Country フィールドにマッピングしていることを確認します。また、Account DMO と Address DMO の間にリレーションシップが存在することを確認します。このリレーションシップが存在しない場合は、単に手動で作成します。
これでクエリーを作る準備ができました。
- ダッシュボードデザイナーから”クエリーの作成”をクリックします
- SALESFORCE DATA CLOUDをクリックし、Data Modelタブから、Opportunity (ssot_Opportunity_dlm) Data Model Object (DMO)を選びます
- ”管理”をクリックし、AccountとUser DMOを結合するためにAccountとUserの関連オブジェクトの行の横にあるチェックボックスを選択します。適用 をクリックします。
- 再び”管理“をクリックし、Address オブジェクトの隣にあるチェックボックスを選択します。適用をクリックします。
- グラフの種別を積み上げ横棒に変更
- 棒の長さをAmount合計にする
- 棒をAddress -> Country Nameに変更
- 棒の下にある+ボタンをクリックして、Account > Account Nameを追加します。
- 棒区分をOpportunity > Opportunity Stageに設定する。
- Select the Filter tab and add a filter for Address > Country Name, then select any value.
- “条件“タブを選択し、Address > Country Nameのフィルタを追加し、任意の値を選択する。
- クエリに”Pipeline by Account and Stage (Country Filter)”のような名前を付けます。
- 完了をクリック
- グラフをダッシュボード デザイナーにドラッグ & ドロップします。
- ダッシュボード デザイナーでグラフを選択し、画面下部の ”高度なエディター” ボタンをクリックします。
- 左サイドバーの”ソースクエリ“で、最初に作成した”Logged In User Query“を選択します。ログインユーザのユーザIDが表示されます。
- Under Source Data, click Choose Data and then select the following options:
- “ソース・データ“で”データの選択“をクリックし、以下のオプションを選択する:
- データ選択:セル
- 行インデックス:0
- 列:Country
- 作成されたインタラクションは、以下のように画面に表示されます。
cell(Logged_In_User.result, 0, \"Country\").asString()
- ”コピー”ボタンをクリック
- 画面上部の”クエリ“タブを選択し、作成したフィルタが見つかるまで下にスクロールします。
- コピーしたテキストを引用符の間に貼り付け、”保存“をクリックします。
最後に
CRM AnalyticsとData Cloudには、ログインユーザーによるフィルタリングを制御するさまざまなオプションがあることがわかります。
CRM Analytics ダッシュボードにこのソリューションを複製する前に、ログイン ユーザー フィルタのアプローチが組織のセキュリティ ガイドラインに適合していることを確認することが重要です。大半の使用ケースでは、ダッシュボードを編集したり、他の手段で Data Cloud データに直接アクセスしたりすることによってフィルタをバイパスする権限が表示ユーザーに与えられていない限り、ログイン ユーザーによるフィルタリングはセキュリティのニーズを満たします。
事前にフィルタリングされた CRM Analytics ダッシュボードでログイン ユーザーに表示される情報を制御するだけでよい場合は、Data Cloud で追加機能が利用可能になるまで、この方法で行レベルの要件を満たすことができます。
追加情報
以前はバインディングと呼ばれていたインタラクションの詳細については、以下のリソースをご覧ください:
- All you need to know about bindings (Salesforceblogger)
- How to filter dashboard by logged-in user (Salesforceblogger)
- Query data from Data Cloud in CRM Analytics (Salesforceblogger)
- Analytics Dashboard JSON Developer Guide
- Trailhead Module: Use Bindings to Compare Data