我需要为每个唯一用户获得重复数据删除转换。此处的规则是,我需要一列,该列仅获取一天之内进行的首次转化的次数。因此,我可以在2019年3月28日触发10次转化,但“ Deduped”列将仅提取1的计数。
这是我在BigQuery中的原始数据:
Date User_ID
3/3/19 1234
3/3/19 1234
3/3/19 1234
3/3/19 12
3/3/19 12
3/4/19 1234
3/4/19 1234
3/5/19 1
我希望最终输出看起来像这样:
Date User_ID Total_Conversions Deduped
3/3/19 1234 3 1
3/3/19 12 2 1
3/5/19 1 1 1
3/4/19 1234 2 1
答案 0 :(得分:1)
以下是用于BigQuery标准SQL
#standardSQL
SELECT day, user_id,
COUNT(1) total_conversions,
COUNT(DISTINCT user_id) deduped
FROM `project.dataset.table`
GROUP BY day, user_id
如果将以上内容应用于您的问题的示例数据-结果为
Row day user_id total_conversions deduped
1 3/4/19 1234 2 1
2 3/5/19 1 1 1
3 3/3/19 1234 3 1
4 3/3/19 12 2 1
注意:检查我在您的问题下方留下的评论!
如果最终输出中没有date列,那么如果代码中构造了重复数据删除规则,那么在最终输出中不包含“ day”列的情况下,基于uder_id进行分组的方式又如何呢?
下面的例子做到了
#standardSQL
WITH `project.dataset.table` AS (
SELECT '3/3/19' day, 1234 user_id UNION ALL
SELECT '3/3/19', 1234 UNION ALL
SELECT '3/3/19', 1234 UNION ALL
SELECT '3/3/19', 12 UNION ALL
SELECT '3/3/19', 12 UNION ALL
SELECT '3/4/19', 1234 UNION ALL
SELECT '3/4/19', 1234 UNION ALL
SELECT '3/5/19', 1
)
SELECT user_id,
COUNT(1) total_conversions,
COUNT(DISTINCT day) deduped
FROM `project.dataset.table`
GROUP BY user_id
有结果
Row user_id total_conversions deduped
1 12 2 1
2 1 1 1
3 1234 5 2