如何在24小时内获得每位唯一身份用户的重复数据删除转化

时间:2019-03-28 23:34:04

标签: google-bigquery

我需要为每个唯一用户获得重复数据删除转换。此处的规则是,我需要一列,该列仅获取一天之内进行的首次转化的次数。因此,我可以在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

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