Data CloudにSalesforceオブジェクトの非構造化ファイルを取り込むには?
※この記事は個人の所感に基づいてまとめた内容です。
SalesforceのData Cloud Oneを触ってみて、感じたメリット・デメリットを整理しておく。自分用のメモも兼ねつつ、これから導入検討する人に少しでも参考になれば。
1. Salesforceのファイル構造とData Cloudでの取り込み手順
Salesforceでは、ファイル(非構造データ)は主に ContentDocument(ファイル本体の表札)、ContentVersion(実体メタ情報)、ContentDocumentLink(どのレコードに添付されたか)という3つのオブジェクトに分かれて管理されています。Data Cloudでファイルを取り扱うには、これら3つをそれぞれデータストリームとして取り込み、さらに添付先となるオブジェクト(例:Case)との関係をDMO(データモデルオブジェクト)で再構築する必要があります。
具体的には、Case DMOとContentDocumentLink DMOをLinkedEntityIdでつなぎ、その先にContentDocument DMO、さらにContentVersion DMOと順にリレーションを構成します。最終的には、Case → ContentDocumentLink → ContentDocument → ContentVersion の4階層をたどる構造になります。ここまで整えば、検索インデックス機能を用いたベクトル検索において「添付ファイルを含める」ことができるはず…でした。
2. はまったポイント①:ContentVersionデータストリームの作成エラー
最初にぶつかったのが、ContentVersion のデータストリーム作成時に発生したエラーです。ContentDocumentやContentDocumentLinkは問題なく作成できたのに、なぜかContentVersionだけが作成時にクラッシュ。原因を調査したところ、実はすべてのファイルのクエリ(QueryAllFiles)」というシステム権限が有効になっていなかったことがわかりました。
この権限はUI上では一部ライセンスや設定では表示されず、手動で有効化する必要があります。また、有効にするためには「Data Lineage系」「売上予測系」など一見関係なさそうな参照権限を多数有効にする必要があるというトリッキーな仕様が存在します。最終的にはこれらをすべて有効にすることで、ContentVersionデータストリームの作成に成功しました。
3. はまったポイント②:データストリーム作成前のファイルは取り込まれない
もう1点、非常に重要かつ見落としやすいポイントとして、「データストリーム作成前に添付されたファイルはData Cloudに取り込まれない」という仕様があります。Data CloudのSalesforce連携は基本的にCDC(Change Data Capture)ベースで動いているため、「データストリーム作成後に発生したイベント」しか拾ってくれません。
つまり、データストリーム作成後に改めてファイルを添付するか、既存ファイルを削除して再度添付し直さないと、Data Cloudには取り込まれないのです。公式ヘルプにも小さく記載はありますが、見落とされがちなため注意が必要です。私もこれに気づかず、なぜContentVersionのDLOにデータが取り込まれないのかをしばらく彷徨ってしまいました。
4. まとめ:まだ添付ファイル検索は使えていません
現在、Case→ファイル→ContentVersionの4段リレーションは完成し、ContentVersionにもPDFとTXTが正しく取り込まれています。しかし、Data Cloudの検索インデックス作成画面では、肝心の「添付ファイルを含める」チェックボックスがいまだにグレーアウトのまま。公式ヘルプにある不要なリレーション無効化や、UIリセット、mp4ファイル削除などあらゆる手段を試しても活性化されません。
設定としては整っているはずなので、念のため明日ContentDocument系列DMOのデータ整合性をクエリで確認し、問題がなければSalesforceサポートにケース起票する予定です。Data Cloudの非構造データ処理は非常に魅力的ですが、まだ実務運用には慎重な検証が欠かせないと感じました。
Discussion