【Salesforce MarketingCloud】データエクステンションを自動更新する方法

Salesforce社のマーケティングクラウド(SFMC)ではデータ連携をすると自動でSalesforceのデータを定期的にMarktingCloudに同期をしてくれます。メール配信のためのリストである「データエクステンション(DE)」を作ったはいいが自動更新させるところで詰まったので、その解消方法です。

目次

起きていたこと

データエクステンションは既存のデータからフィルタ機能を使って絞り込んで表示することはできるが、作った時点でセグメントされたデータが作成されたあとは手動で更新しない限りデータが更新されません。

そのため、メール配信の直前に都度更新をしていたが面倒なのでデータエクステンションの更新を自動化しました。

実施したこと

以下の手順をMarketingCloud内だけで完結するように実装。

STEP
自動更新用のデータエクステンションを作る

必要なデータを自動更新させてデータエクステンションに保存するためのテーブルを作成。

STEP
AutomationStudioでフィルタと同じ処理をするSQLを記載

SQLでデータを前処理で必要な形に加工をして、上記で作成したデータエクステンションに保存する

STEP
スケジュールをして定期実行させる

上記で作成したSQLを定期実行数する設定をする。

具体的な手順

データエクステンション作成

自動更新したデータが入るためのDEを作成。

全部の項目を使うことはないため、必要な項目のみ追加をして作成。注意点としては下記。

  • text型のデフォルトが「50」だがよくテキスト量が多くてエラーになるので「255」を指定
  • 「プライマリキー」は定めなくても動くので基本は設定しない
  • また「null可能」も指定しないとデータがないとエラーになるので基本チェックする
  • メール配信には「メールアドレス」以外に接続するkeyが必要なので、メール配信に使用するため「ContactKey」の項目も追加。これをリレーションシップで「Subscriber Key」とつなぐ。

ここで作成した項目がこの後のSQLで指定した項目とデータ型や項目名が違っているとエラーになるので、その場合はDEに戻って修正をする。

AutomationStudio作成

ナビゲーションから「AutomationStudio」を選択して新規作成する。

ステップがいくつかでてくるので、左のサイドバーにある「SQL」を選択する。

MarketingCloudで使えるSQLはこちらを参照。

SQLを書いてできたら保存する。実装時に気をつけることはこちら。

  • サイドバーにでてくるDB/テーブルは一部で、実際はSQLとしてかけば出力可能な項目が多い。標準機能で使っていれば使うであろう「Contact」は「Contact_Salesforce」、「Lead」なら「Lead_Salesforce」とオブジェクトを同期してあれば呼び出せる
    • カスタムオブジェクトは「hogehoge__c_Salesforce」という名称
  • SQLはmysqlではなく「SQL Server 2016」に準拠するため、一部記載方法が違うことに注意。具体的には下記でハマったのでメモ。
    • 「order by」句で並び順を変えるときはoffsetまで書く必要がある
order by
	Contact_Salesforce.CreateDate desc
	offset 0 rows
  • データエクステンションにも書いたが、メール配信には「_ContactKey」が必要なので、メールアドレスと一緒に出力する。
    • 例) Contact_Salesforce._ContactKey
  • データエクステンションに吐き出す際には項目名が一致していないければいけないので、select句でasで名称を揃えたほうが管理しやすい

上記をベースに「Contact(取引先責任者)」から配信リストを作ろうとすると以下のようになります。

select
  Contact_Salesforce.Email as Email
  Contact_Salesforce._ContactKey as ContactKey
from
  Contact_Salesforce

SQLで実際に引っ張れるデータは配信ログや配信停止などいろいろあるので、下記のリファレンスにあるものも使えました。

スケジュール設定で定期実行

SQLを作成したら保存して「一度実行」で試してみます。その際、複数SQLを作成している場合は該当のSQLだけ選択して実行させることが可能です。

実行時のキューの状況やSQLの長さにもよりますが、実行が問題なくされればログに成功/失敗が書き出されます。その際、SQLが通っていてもDEの設定やデータ型で弾かれるとエラーがでるのですが、何が要因かは吐き出してくれないのでデバックはPDCA回さないといけないです。

よくあるエラー要因としては下記があるので参考まで。(個人的にぶつかったエラー)

データエクステンションのデータ型や項目名が違う →DEかSQLを修正
特殊文字が入っている(&など) →キャメルケースかスネークケースで名称は統一する

SQLが通ったらスケジュールを設定して保存したらあとは定期実行されます。こちらも恒久的に実行させるのであれば「終了日 = なし」に設定する必要があるので忘れずに。

まとめ

これで自動でデータエクステンションが更新されるような仕組みになりました。メルマガ配信の頻度が高くないので1日1回更新にしていますが、このあたりはサービスに合わせて変更がよろしいと思います。

またこのやり方は「SQLでDE更新→それを基準にさらにSQLでDE更新(fromで指定)」ということもステップ分けて作れば簡単に実装できるので、カテゴリごとのリストなどを事前に作るのに重宝しています。

同じようにSalesforce MarketingCloud(SFMC)で躓いた人の参考になれば幸いです。

参考文献

Salesforce Markting Cloudについてはあまり文献がないのですが、こちらの書籍は参考になりました。英語ですが単語はなんとなくわかりますし、図解あるので構造や仕組みは理解できます。Kindle版なら翻訳も簡単です。

もし「Salesforceから理解したい」というのであれば、こちらが入門書としておすすめです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次