【发布时间】:2020-03-26 10:58:30
【问题描述】:
使用 BigQuery,我想通过一个查询根据标题对页面进行分组,并计算组的不同指标。由于标题的规则不是相互排斥的,所以我是这样做的:
SELECT SUM(views) views, title_group
FROM `fh-bigquery.wikipedia_v3.pageviews_2019`
CROSS JOIN
UNNEST([
CASE WHEN (title LIKE '%game%')
THEN 'games_group' END,
CASE WHEN (title LIKE '%sport%')
THEN 'sports_group' END
]) AS title_group
WHERE DATE(datehour) BETWEEN '2019-01-01' AND '2019-01-10'AND wiki='en'
GROUP BY title_group
结果如下:
views ... title_group
3414469869 ...
4355264 ... games_group
1361074 ... sports_group
但是,不属于任何组的页面的浏览量数字 3414469869 是错误的。实际上,当标题不包含“游戏”(或“运动”)时,我们会得到UNNEST([null, "sports_group"])(或UNNEST(["games_group", null])),因此我们仍然计算空组的观看次数。当标题既不包含“游戏”也不包含“运动”时,观看次数甚至会被计算两次。
有没有办法从数组中删除重复项?
【问题讨论】:
标签: sql google-bigquery