You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google BigQuery的GDELT数据库中按关键词查询历史文章?

解决GDELT BigQuery按关键词查询历史文章的方法

1. 切换到正确的GDELT数据集

BigQuery里的GDELT Events表(gdelt-bq.gdeltv2.events)只存储事件元数据(比如事件类型、参与方、时间等),确实没有文章内容或关键词字段。你需要用GDELT Global Knowledge Graph (GKG)表(gdelt-bq.gdeltv2.gkg),这个表关联了新闻文章的主题、关键词和文档信息,完全适配你的需求。

2. 两种关键词查询方案

方案一:用内置主题标签快速匹配

GKG表的V2Themes字段包含预标注的标准化主题标签,比如"climate change"对应的标签是CLIMATE_CHANGE,直接匹配即可:

SELECT
  GKGRECORDID,
  DocumentIdentifier, -- 文章原始链接,用于追踪来源
  V2Themes,
  DATE(PARSE_TIMESTAMP("yyyyMMddHHmmss", CAST(SQLDATE AS STRING) || "000000")) AS event_date
FROM
  `gdelt-bq.gdeltv2.gkg`
WHERE
  REGEXP_CONTAINS(V2Themes, r'CLIMATE_CHANGE')
  AND SQLDATE BETWEEN '20180101' AND '20231231' -- 自定义时间范围
LIMIT 100;

方案二:精确匹配标题中的关键词短语

如果需要精准匹配"climate change"这类特定短语(而非预定义主题),可以用V2Titles字段(文章标题)做模糊匹配:

SELECT
  GKGRECORDID,
  DocumentIdentifier,
  V2Titles,
  DATE(PARSE_TIMESTAMP("yyyyMMddHHmmss", CAST(SQLDATE AS STRING) || "000000")) AS event_date
FROM
  `gdelt-bq.gdeltv2.gkg`
WHERE
  REGEXP_CONTAINS(V2Titles, r'climate change')
  AND SQLDATE BETWEEN '20180101' AND '20231231'
LIMIT 100;

注:GKG表不存储完整文章全文,但标题和主题标签已能满足大部分来源追踪需求;若需全文,可通过DocumentIdentifier的链接抓取(需遵守目标网站的robots协议)。

3. 关联Events表补充事件上下文

如果需要同时获取事件的元数据(比如参与方、地理位置),可以通过GLOBALEVENTID关联Events表和GKG表:

SELECT
  e.GLOBALEVENTID,
  g.DocumentIdentifier,
  g.V2Themes,
  e.Actor1Name,
  e.Actor2Name,
  DATE(PARSE_TIMESTAMP("yyyyMMddHHmmss", CAST(e.SQLDATE AS STRING) || "000000")) AS event_date
FROM
  `gdelt-bq.gdeltv2.events` e
JOIN
  `gdelt-bq.gdeltv2.gkg` g
ON
  e.GLOBALEVENTID = g.GLOBALEVENTID
WHERE
  REGEXP_CONTAINS(g.V2Themes, r'CLIMATE_CHANGE')
  AND e.SQLDATE BETWEEN '20180101' AND '20231231'
LIMIT 100;

内容的提问来源于stack exchange,提问作者Patrick T.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 23:32:55