我想使用BigQuery在全局数据库上运行事件、语言和音调(GDELT)查询。我专门搜索关键术语(例如贿赂或腐败),并按年份(2010、2011、2012等)对结果进行分组。我可以使用.full_events GDELT (参见示例2)按年份分组并统计出现的次数,但使用.gkg_partitioned GDELT (示例1)则不行。示例1的SQL代码是有效的,并且可以运行,但是,根据我所知道的/期望的,它似乎没有产生预期的结果。我想这与我指定日期的方式有关,但我真的不知道。有人能帮我解释一下原因和/或纠正错误吗?提前谢谢。
下面的代码将占用大量GB空间,因此可以根据需要更改术语。)
(示例1:代码没有为.gkg分区产生预期的结果)
SELECT DATE, count(*)
FROM `gdelt-bq.gdeltv2.gkg_partitioned`
WHERE (V2Themes LIKE '%corruption%'
OR V2Themes LIKE '%bribery%'
AND DATE>=20100101000000 and _PARTITIONTIME >= TIMESTAMP("2010-01-01") AND DATE<=20151231999999
and _PARTITIONTIME <= TIMESTAMP("2015-12-31")
GROUP BY DATE(示例2:.full_events代码确实产生了预期的结果)
(SELECT YEAR, ActionGeo_CountryCode, COUNT(*) c
FROM `gdelt-bq.full.events`
WHERE ActionGeo_CountryCode IS NOT NULL
and YEAR >2010
and YEAR <= 2020
and QuadClass=4
GROUP BY 1, 2)发布于 2020-08-28 20:37:58
我不能100%确定您的问题是什么,但是WHERE子句看起来不正确。我期望:
WHERE (V2Themes LIKE '%corruption%' OR V2Themes LIKE '%bribery%') AND
DATE >= 20100101000000 AND
DATE <= 20151231999999 AND
_PARTITIONTIME >= TIMESTAMP('2010-01-01') AND
_PARTITIONTIME <= TIMESTAMP('2015-12-31')请注意OR条件周围的圆括号。
https://stackoverflow.com/questions/63628286
复制相似问题