執筆者:Salesforce データエンジニア
背景と適用シナリオ
Salesforce データエンジニアとして、私たちの主な責務は、組織内外に散在する膨大なデータを収集、統合、変換し、ビジネス上の意思決定に活用できる信頼性の高いデータ基盤を構築することです。近年、顧客体験のパーソナライゼーションが競争優位性の源泉となる中、分断されたデータを統合し、顧客の全体像(カスタマー360)をリアルタイムで把握する必要性がこれまで以上に高まっています。
このような課題に応えるため、Salesforce は強力なソリューションを提供しています。それが、リアルタイムなハイパースケールデータプラットフォームである Salesforce Data Cloud(データクラウド)と、AI を活用した高度な分析プラットフォームである Tableau CRM (旧 Einstein Analytics) です。この2つのプラットフォームを連携させることで、データエンジニアは真のシングルソースオブトゥルース(信頼できる唯一の情報源)を構築し、ビジネスユーザーがセルフサービスで深い洞察を得られる環境を提供できます。
適用シナリオ:
例えば、ある大手小売企業を想像してみてください。この企業は、Sales Cloud での営業活動データ、Marketing Cloud でのメール開封やクリック履歴、Service Cloud での問い合わせ履歴、そして外部の E コマースプラットフォームでの購買データを持っています。これらのデータは各システムにサイロ化されており、以下のような問いに迅速に答えることができませんでした。
- 「特定のマーケティングキャンペーンに反応した顧客は、その後どの商品を、いくら購入し、サポートへの問い合わせ頻度はどう変化したか?」
- 「過去の購買データとサポート履歴から、解約リスクの高い顧客セグメントを予測し、プロアクティブな対策を打ちたい。」
このような複雑な問いに答えるためには、すべてのデータを顧客という軸で統合し、分析する必要があります。ここで Data Cloud がデータを統合・整理し、Tableau CRM がそのデータを可視化・分析する役割を担います。データエンジニアは、このデータパイプライン全体の設計、構築、最適化を担当するのです。
原理説明
Data Cloud と Tableau CRM の連携アーキテクチャは、データの流れを理解することが重要です。データエンジニアの視点から、その核となる技術要素を解説します。
1. Salesforce Data Cloud: データの統合と調和
Data Cloud は、あらゆるソースからのデータを取り込み、顧客プロファイルをリアルタイムで統合・強化するためのエンジンです。その中核をなすのは以下のコンポーネントです。
- Data Streams (データストリーム): Salesforce の標準コネクタ(Sales Cloud, Service Cloudなど)、MuleSoft、Web/Mobile SDK、そして Ingestion API を通じて、様々なソースからデータをリアルタイムまたはバッチで取り込みます。
- Data Lake Object (DLO): 取り込まれた生のデータは、まず DLO (データレイクオブジェクト) に格納されます。これはスキーマオンリードの考え方に基づき、柔軟なデータ保持を可能にします。
- Data Model Object (DMO): DLO のデータは、Cloud Information Model (CIM - クラウド情報モデル) と呼ばれる標準化されたデータモデルにマッピングされ、DMO (データモデルオブジェクト) として構造化されます。これにより、異なるソースからのデータ(例:「取引先」と「顧客」)を標準的なオブジェクト(例:Individual)に統一できます。 - Identity Resolution (ID 解決): 異なるデータソースに存在する同一の顧客を表すレコードを、ルールベースのマッチングと調整によって特定し、統合されたプロファイル(Unified Individual)を生成します。 - Calculated Insights (計算済みインサイト): DMO のデータに対して、SQLライクな構文を用いて高度な集計や計算(例:顧客生涯価値 - LTV、エンゲージメントスコア)を事前に行い、分析クエリのパフォーマンスを向上させます。
このプロセスを経て、Data Cloud は組織全体の顧客データを統合し、リッチな統合プロファイルを構築します。データエンジニアの役割は、このデータモデリングと変換ロジックを正確に設計することにあります。
2. Tableau CRM: 統合データの可視化と分析
Tableau CRM は、Salesforce プラットフォームにネイティブに統合された分析ツールであり、Data Cloud とのシームレスな連携が最大の特徴です。従来の分析ツールのように、データを別途 DWH/Data Mart に抽出し、変換・ロード(ETL)するプロセスを大幅に簡素化できます。
Tableau CRM は、Data Cloud の DMO や Calculated Insights を直接のデータソースとして認識できます。これにより、以下のメリットが生まれます。
- Zero-ETL/Zero-Copy: Data Cloud で統合されたデータを Tableau CRM にコピーする必要がありません。Tableau CRM は Data Cloud に対して直接クエリを発行するため、データの鮮度が高く、ストレージの二重管理も不要です。
- パフォーマンス: Data Cloud は、大規模なデータセットに対する高速なクエリ実行のために最適化されています。Tableau CRM はそのパフォーマンスを最大限に活用し、インタラクティブなダッシュボードとレンズ(探索的分析)を提供します。
- 統一されたガバナンス: Salesforce の権限モデルが Data Cloud と Tableau CRM の両方に適用されるため、データアクセス制御を一元管理できます。
データエンジニアは、Tableau CRM のデータセット(レシピ)設計において、どの DMO を利用するか、どのようにデータを事前集計・加工するかを定義し、分析ユーザーが最高のパフォーマンスで洞察を得られるようにデータパイプラインを最適化します。
サンプルコード
データエンジニアの業務には、API を利用したデータの投入や、統合されたデータのクエリが含まれます。ここでは、Data Cloud に関連する2つのコード例を示します。
1. Data Cloud Ingestion API を用いた外部データの投入
外部システム(例:Eコマースプラットフォームの注文データ)を Data Cloud に取り込むシナリオです。Ingestion API を使用して、データをプログラムで投入します。以下の例は、cURL を使用してデータ投入ジョブを作成し、CSV データをアップロードするプロセスを示しています。
ステップ 1: Ingestion API ジョブの作成
まず、どのオブジェクトにデータを取り込むかを定義するジョブを作成します。
curl --location --request POST 'https://{YOUR_INSTANCE}.my.salesforce.com/api/v1/ingest/jobs' \ --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}' \ --header 'Content-Type: application/json' \ --data-raw '{ "object": "EcommerceOrders__dll", "sourceName": "Ecom_Order_Ingestion_20231027", "operation": "upsert" }'
詳細な注釈:
{YOUR_INSTANCE}.my.salesforce.com
: あなたの Salesforce 組織のインスタンス URL に置き換えます。Authorization: Bearer {YOUR_ACCESS_TOKEN}
: Salesforce の OAuth 2.0 アクセストークンを指定します。object
: データの投入先となる Data Lake Object (DLO) の API 名を指定します。通常、末尾に `__dll` が付きます。sourceName
: この投入ジョブの識別子です。任意に設定できます。operation
: `insert`、`upsert`、`delete` などの操作を指定します。`upsert` は、主キーに基づいてレコードを更新または挿入します。
このリクエストのレスポンスとして、ジョブ ID (例: `jobId`) と、データをアップロードするための URL が返されます。
ステップ 2: CSV データのアップロード
次に、ステップ1で取得した URL に対して、CSV データを PUT リクエストでアップロードします。
curl --location --request PUT '{UPLOAD_URL_FROM_PREVIOUS_STEP}' \ --header 'Content-Type: text/csv' \ --data-binary '@/path/to/your/data.csv'
詳細な注釈:
{UPLOAD_URL_FROM_PREVIOUS_STEP}
: ステップ1のレスポンスに含まれる、一意のアップロード用 URL です。Content-Type: text/csv
: アップロードするデータが CSV 形式であることを示します。--data-binary '@/path/to/your/data.csv'
: アップロードする CSV ファイルのローカルパスを指定します。
アップロード後、Data Cloud 側でファイルの処理が開始されます。ジョブのステータスは、API を通じて監視することが可能です。
2. SOQL を用いた Data Model Object (DMO) のクエリ
Data Cloud で統合・調和されたデータは、標準の Salesforce API (REST/SOAP) を通じて SOQL でクエリできます。これにより、カスタムアプリケーションや他のシステムから統合プロファイルデータを直接参照できます。
以下の例は、`UnifiedIndividual__dlm` という統合個人 DMO から、特定のメールアドレスを持つ顧客の情報を取得する SOQL クエリです。
// Apexでの実行例 // DMOのAPI名は、通常、オブジェクト名の末尾に __dlm が付きます。 List<UnifiedIndividual__dlm> unifiedProfiles = [ SELECT Id, FirstName__c, LastName__c, UnifiedContactPointEmail__dlm.EmailAddress__c FROM UnifiedIndividual__dlm WHERE UnifiedContactPointEmail__dlm.EmailAddress__c = 'example@mycompany.com' LIMIT 10 ]; for (UnifiedIndividual__dlm profile : unifiedProfiles) { System.debug('Unified Profile Found: ' + profile.FirstName__c + ' ' + profile.LastName__c); System.debug('Email: ' + profile.UnifiedContactPointEmail__dlm.EmailAddress__c); }
詳細な注釈:
UnifiedIndividual__dlm
: クエリ対象の DMO の API 名です。DMO は、Salesforce の標準オブジェクトやカスタムオブジェクトと同様に、SOQL でアクセスできます。UnifiedContactPointEmail__dlm.EmailAddress__c
: DMO 間のリレーションシップ(この場合は統合個人と統合連絡先メール)を `__dlm` を介して辿っています。これは、SOQL における標準的なリレーションシップクエリの構文に似ています。- 権限: このクエリを実行するユーザーは、対象の DMO への参照アクセス権が必要です。
⚠️ これらの API やオブジェクト名は Salesforce のバージョンアップによって変更される可能性があるため、常に最新の公式ドキュメントを参照してください。
注意事項
Data Cloud と Tableau CRM を活用したデータ基盤を構築・運用する上で、データエンジニアが留意すべき点がいくつかあります。
- 権限 (Permissions): Data Cloud の設定、データストリームの作成、DMO のマッピングには「Data Cloud 管理者」権限セットが必要です。また、Tableau CRM で Data Cloud のデータを表示・分析するには「CRM Analytics Plus」関連の権限セットに加え、Data Cloud の DMO に対する参照権限がユーザーに付与されている必要があります。権限設定は非常に細分化されているため、慎重な設計が求められます。 - API 制限 (API Limits): Ingestion API には、1日のバッチ数やペイロードサイズに制限があります。大規模なデータを頻繁に取り込む場合は、API の消費量を監視し、バルクパターンを適切に利用して制限内に収める設計が必要です。同様に、DMO に対する SOQL クエリも、標準のガバナ制限に従います。
- データ遅延 (Data Latency): Data Cloud は「ニアリアルタイム」のプラットフォームですが、瞬時ではありません。データストリームによる取り込み、DMO へのマッピング、ID 解決、Calculated Insights の計算にはそれぞれ処理時間がかかります。ダッシュボードに表示されるデータの鮮度に関するビジネス要件を正確に把握し、データパイプラインのスケジュールを適切に設計することが重要です。 - コスト (Cost): Data Cloud は、取り込まれたデータ量、処理されたイベント数、実行されたクエリなどに基づいてクレジットを消費する従量課金モデルです。不要なデータの取り込みや非効率な変換処理は、コストの増大に直結します。データエンジニアは、費用対効果を常に意識し、データモデルと処理ロジックを最適化する責任を負います。
- エラー処理 (Error Handling): データ投入ジョブは、データ形式の不一致やネットワークの問題で失敗することがあります。Data Cloud の UI や API を通じてジョブのステータスを監視し、失敗した場合には原因を特定して再実行する仕組みや、アラートを通知するプロセスを構築することが不可欠です。
まとめとベストプラクティス
Salesforce Data Cloud と Tableau CRM の統合は、サイロ化されたデータを真のビジネス資産に変えるための強力なアーキテクチャです。データエンジニアにとって、この技術スタックをマスターすることは、データドリブンな意思決定を推進し、企業の競争力を高める上で中心的な役割を果たすことを意味します。
最後に、成功のためのベストプラクティスをいくつか挙げます。
- 明確なユースケースから始める: 「すべてのデータを取り込む」のではなく、「どのようなビジネス課題を解決したいか」を起点に、必要なデータソースと DMO を特定します。スモールスタートで成功体験を積み重ねることが重要です。
- Cloud Information Model (CIM) を理解し活用する: CIM は業界標準に基づいたデータモデルです。可能な限り CIM に準拠して DMO を設計することで、将来的な拡張性や他の Salesforce アプリケーションとの連携が容易になります。
- データ投入を最適化する: リアルタイム性が不要なデータについては、夜間バッチなどのスケジュール実行を活用し、API 制限とコストを効率的に管理します。差分取り込みの仕組みを実装することも有効です。
- ガバナンスを確立する: 誰がどのデータにアクセスできるのか、DMO やインサイトの命名規則はどうするのか、といったデータガバナンスのルールを初期段階で確立します。これにより、プラットフォームのスケーラビリティと信頼性が維持されます。
このアーキテクチャは、Salesforce エコシステムにおける顧客データプラットフォームと分析の未来を象徴しています。データエンジニアとして、私たちはこれらのツールを駆使し、データの真の価値を解き放つことで、ビジネスに貢献し続けることができるのです。
コメント
コメントを投稿