【发布时间】:2016-06-01 09:50:03
【问题描述】:
我有一个要解析的数据集以查看多点触控归因。该数据集由响应营销活动的潜在客户及其营销来源组成。
每个潜在客户都可以响应多个广告系列,我希望将他们的第一个营销来源和最后一个营销来源放在同一个表中。
我在想我可以创建两个表并从两者中使用一个 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
由于 distinct on 不适用于 redshift 的 postgresql 版本,我希望有人有想法以另一种方式解决此问题。
编辑 2/22:有关更多背景信息,我正在与他们回应的人员和活动打交道。每条记录都是一个“活动响应”,每个人都可以有多个来源的多个活动响应。我正在尝试制作一个选择语句,该语句将按人进行重复数据删除,然后分别为他们响应的第一个广告系列/营销来源和他们响应的最后一个广告系列/营销来源提供列。
编辑 2/24:理想的输出是一个有 4 列的表:email、last_source、first_source、date。
第一个和最后一个源列对于只有 1 个活动成员记录的人来说是相同的,而对于拥有超过 1 个活动成员记录的每个人来说都是不同的。
【问题讨论】:
-
您确定您使用的是
postgresql-8.0吗? -
根据 AWS 文档中的这个页面,我是:docs.aws.amazon.com/redshift/latest/dg/…
标签: postgresql distinct amazon-redshift distinct-on postgresql-8.0