見出し画像

【第71回】 データフィルターにおけるデータリレーションシップ使用時の注意点

今回は SQL を使用できないマーケターの強い味方である Email Studio のデータフィルターについての記事です。Salesforce Marketing Cloud の画面上からドラッグアンドドロップで条件を設定していくだけで、簡単に配信リストが作成できます。

データフィルターのオプションとして「データリレーションシップ」機能を使用されている方も多いかと思います。データリレーションシップを使用していない方のために説明しますと、データリレーションシップ機能を使用していない場合は、単純にフィルター時にはソースとなるデータエクステンションが持っているフィールドのみを条件にすることになります。

例えば、会員情報が含まれるソースデータエクステンションであれば「性別」や「住んでいる県」のフィールドがあると思いますが

「性別」=女性
and
「住んでいる県」=東京都

とフィルター条件を設定することで

「東京都に住んでいる女性」

という配信リストができるわけですね。

ここでデータリレーションシップ機能を使用すると、主たるソースデータエクステンションと、それとは異なる従たるデータエクステンションを結合させて、従たるデータエクステンション側のフィールドを条件にしてフィルターを作成することができます。(※直列に 3つ連続では結合できません。)

例えば、購買データが格納されている従たるデータエクステンションがあり「この購買データを活用したい!」と思っています。会員情報が含まれる主たるソースデータエクステンションと、購買データが格納されている従たるデータエクステンションには、それぞれ「会員 ID」というキーフィールドがあります。このキーフィールドを、それぞれを「結合キー」として結合します。

この時、主たるソースデータエクエステンションのすべてのプライマリーキーを結合キーとする必要があります。仮に主たるデータエクエステンションにプライマリーキーが複数ある場合、従たるデータエクエステンション側にも、それに対応するフィールドが存在しないと正しく結合できません。

この複数のプライマリーキーがあった場合が、少しイメージしづらいと思いますので、補足しますと、例えば、主たるソースデータエクエステンションのプライマリーキーが Id(ContactId)と AccountId であったとします。この時、従たるデータエクエステンション側にも ContactId と AccountId の項目が必要です。無理やりでも作成してください。そうしないと下記の画像のようにチェックボックスにチェックが入りません。このチェックが入らないうちは使用できませんので注意して下さい。

AccountId の紐づけがないので、チェックされていない・・・
AccountId の紐づけを追加したので、チェックされた!

さて、以上のような対応をすることで「購買データ」が格納されている従たるデータエクステンション側の「商品名」というフィールドや「購入日」というフィールドが、主たるソースデータエクステンションのフィルター作成時に使用できるようになるわけですね。

これらのフィールドを使用して、先ほどのフィルター条件を作成しますと

「性別」= 女性
and
「住んでいる県」= 東京都
and
「商品名」= A
and
「購入日」= 2023年1月1日以降

とすれば

「東京都に住んでいる女性で、2023年1月1日以降に商品 A を購入したことがある人」

という配信リストが作成できるわけです。便利ですよね。このような複雑な配信リストであっても、SQL を使用せずに、画面上から簡単に作成ができるようになります。

ここまでが、データリレーションシップの基本的な使い方の説明でしたが、今回のタイトルに記載した通り、データリレーションシップ使用時の注意点も記載したいと思います。

まずは、従たるデータエクエステンション側のフィールドを使用してフィルターを作成した場合、その結合されたデータエクエステンション間が強制的に SQL で言うところの INNER JOIN(内部結合) のような状態になってしうので注意してください。結合しただけでは INNER JOIN のような状態にはなりません。1 つでもフィールドをフィルター条件に使用した場合だけとなります。

INNER JOIN(内部結合)とは何?という方のために、上で挙げた例で説明しますと、従たるデータリレーションシップのあるフィールド(「商品名」や「購入日」など)を 1 つでもフィルターの条件で使用した時点で「購買データ」がある人であることが前提となります。つまり、従たるデータエクエステンション側に存在していない人、つまり、一度も購入していない人は抽出の対象外となります。

別の例でも説明しておきます。100 万人の顧客リストが主たるデータエクステンションとしてあったとして、購買データとしては 20 万人分だけがあったとします。つまり 80 万人は「顧客リストとしては存在するけど、まだ購入していない」という状況です。

この状態で配信リストを作ると、強制的に内部結合が起こり、主たるデータエクステンションの抽出対象が「購買データのある 20 万人分だけに限定されてしまう」というわけです

もちろん、ここから「商品名」や「購入日」などを使用してセグメントを切るんだから、何も問題ないじゃない?と思うかもしれませんが、以下のようなセグメントが切れない、という点が注意が必要です。

「東京都に住んでいる女性で、購入履歴がない人」

この抽出結果は「0」となります。理由は、先ほども書きました通り、すでに「購買データがある人」に限定されているからですね。


いかがでしたでしょうか。

データリレーションシップのあるデータエクステンションのフィールドを使ったフィルター作成において、何度実行しても、抽出結果が「0」になってしまうということであれば、今作ろうとしている配信リストが条件的にフィルターでは実行できないのではないか?ということを疑って下さい。

また、このような場合はフィルターでは作成できないだけで、SQL で作成すれば、解決することが多いので SQL で作成することを検討してください。

最後に、データリレーションシップの注意点をまとめたいと思います。

■ データエクステンションは直列に 3 つ連続では結合できません。

■ 結合の設定時、主たるデータエクエステンションのすべてのプライマリーキーの項目を結合キーとする必要があります。つまり、主たるデータエクエステンションにプライマリーキーが複数ある場合、従たるデータエクエステンション側にもそれに対応するフィールドが存在しないと、その後に使用できません。

■ 従たるデータエクエステンション側のフィールドを使用してフィルタリングした場合、その結合されたデータエクエステンション間が、強制的に SQL で言うところの INNER JOIN(内部結合) のような状態となります

今回は以上です。


次の記事はこちら

前回の記事はこちら

私の note のトップページはこちら

いいなと思ったら応援しよう!