マルチタッチ アトリビューションを確認するために解析したいデータ セットがあります。データ セットは、マーケティング キャンペーンに反応したリードとそのマーケティング ソースによって構成されます。
各見込み客は複数のキャンペーンに対応でき、最初のマーケティング ソースと最後のマーケティング ソースを同じテーブルに取得したいと考えています。
2 つのテーブルを作成し、両方から select ステートメントを使用できると考えていました。最初のテーブルは、すべての人からの最新のマーケティング ソースを含むテーブルを作成しようとします (電子メールを一意の ID として使用)。
create table temp.multitouch1 as (
select distinct on (email) email, date, market_source as last_source
from sf.campaignmember
where date >= '1/1/2016' ORDER BY DATE DESC);
次に、重複排除されたメールを含むテーブルを作成しますが、今回は最初のソース用です。
create table temp.multitouch2 as (
select distinct on (email) email, date, market_source as first_source
from sf.campaignmember
where date >= '1/1/2016' ORDER BY DATE ASC);
最後に、単純にメールを選択し、最初と最後のマーケット ソースをそれぞれ独自の列に結合したいと考えました。
select a.email, a.last_source, b.first_source, a.date
from temp.multitouch1 a
left join temp.multitouch b on b.email = a.email
個別の on は redshift の postgresql バージョンでは機能しないため、誰かがこの問題を別の方法で解決するアイデアを持っていることを望んでいました。
編集 2/22: より多くの文脈のために、私は人々と彼らが反応したキャンペーンを扱っています. 各レコードは「キャンペーン レスポンス」であり、すべての人が複数のソースを持つ複数のキャンペーン レスポンスを持つことができます。人ごとに重複を排除し、最初に応答したキャンペーン/マーケティング ソースと、最後に応答したキャンペーン/マーケティング ソースの列をそれぞれ持つ select ステートメントを作成しようとしています。
EDIT 2/24: 理想的な出力は、email、last_source、first_source、date の 4 つの列を持つテーブルです。
最初と最後のソース列は、キャンペーン メンバー レコードが 1 つだけの場合は同じですが、キャンペーン メンバー レコードが 2 つ以上ある場合はすべて異なります。