背景
Einstein AnalyticsでSalesforceオブジェクトからデータセットを作成するときは、Integration Userという内部ユーザでオブジェクトを参照します。新規に作成したカスタム項目など、Integration Userが読むことができない項目はデータセットに取り込むことができません。データフローが失敗したり、データマネージャの接続の画面で接続済データの項目が選択できなかったりします。
問題が発生した時点でIntegration Userに項目の参照権限を与えて頂ければ問題ありません。
ただ、現在Integration Userが参照できない項目を一覧する機能がありませんので、この機能を作成しました。
ちなみに参照できる項目については以下のSOQLで得ることができます。
SELECT Field FROM FieldPermissions WHERE ParentId IN
(SELECT Id FROM PermissionSet WHERE PermissionSet.Profile.Name = 'Analytics Cloud Integration User')
実行手順
デプロイ
コードはこちらで公開してます。
force-app/main/default/classes/AnalyticsUserPermCheck.cls が本体です。任意の方法でデプロイしてください。
設定 > Apexクラス > 新規 からコピペしていただいても構いません。
Testメソッドの実行
ここでは開発者コンソールを使用する方法を紹介します。
Debugログレベルの事前調整
全オブジェクトの全項目を調べるため、Debug Logがかなり大きくなり最大サイズに達してします可能性がありますので事前に必要なログだけ取得できるレベルに調整します。
Debug > Change Log Levels から Change Log Levels の画面を開きます。General Trace Settings for you の DebugLevel Action をクリックし、ApexCode のみ DEBUG としておきます。ほかは NONE で構いません。
Testメソッドの実行
Test > New Run から AnalyticsUserPermCheck クラスを選択し、checkPermIntegrationUser メソッドにチェックを入れ、Selected Test でこのメソッドを選択して右下のRunを押下するとテストが実行されます。
Debug Logの確認
実行が終わると、Logsのペインに実行時のタイムスタンプでログが作成されていることがわかりますので、これをクリックします。
上図のように Integration User がアクセスできない項目が一覧されます。(ログレベルを調整しなかった場合は、他のログに紛れて見にくいので DEBUG という文字列でフィルタしてください。)