Google BigQuery中Group By计数结果恒为1的SQL问题排查
SQL逻辑错误原因
- 聚合函数使用不符合需求:你当前的聚合逻辑是对每个
sourcecommonname分组内的sourcecommonname字段去重计数,由于分组后单组内该字段值唯一,所以返回结果全为1,完全偏离了你要统计每个媒体下符合条件的文章数量的需求。 - 正确的聚合逻辑应该是统计每个分组内的文章条数:如果表中每行对应一篇独立文章,直接用
COUNT(*)即可;如果存在同一篇文章重复入库的情况,替换为COUNT(DISTINCT 你的文章唯一ID字段)即可。
修正后的SQL参考:
SELECT sourcecommonname, COUNT(*) AS counter FROM `israel_media` WHERE persons LIKE '%donald trump%' GROUP BY sourcecommonname
小提示:如果你的
persons字段是BigQuery的数组类型,上述LIKE匹配可能存在遗漏,可调整为EXISTS (SELECT 1 FROM UNNEST(persons) person WHERE LOWER(person) LIKE '%donald trump%')来提升匹配准确性。
内容的提问来源于stack exchange,提问作者Ariel Pesso
相关产品推荐
相关产品推荐

