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

BigQuery查询Google专利数据量异常及数据缺失问题咨询

BigQuery Google Patents Public Data 查询问题解答

1. 多字段查询数据量暴增的原因

计费逻辑与列存储特性

BigQuery按扫描的数据量计费,而非返回结果的大小。你第一个仅查询publication_number的请求,利用了列存储的优势——只扫描目标列的数据;再加上patents-public-data.patents.publications表是按publication_number聚簇的,能快速定位匹配行,因此仅需扫描2.3GB。

参数化查询的dry_run预估偏差

你使用的参数化查询WHERE publication_number IN UNNEST(@pub_numbers)在dry_run阶段,BigQuery无法获取@pub_numbers的具体值,会默认按全表扫描所有涉及列来预估数据量,这就是为什么dry_run显示300GB。实际执行时,若@pub_numbers仅包含少量专利号,真实扫描量会远低于这个预估。

嵌套列的扫描成本

你查询的title_localized、abstract_localized、claims_localized都是嵌套数组类型,这些列本身包含大量文本数据。当你需要访问嵌套字段时,BigQuery必须扫描对应列的全部数据(或匹配聚簇块内的全部数据),这比仅扫描单一字符串列的成本高得多。

2. 无法找到US-20150258241-A1的原因

US-20150258241-A1是专利申请公开号(后缀A代表申请公开阶段),而US9370603B2是该申请授权后的专利公开号(后缀B代表授权公开阶段)。patents-public-data.patents.publications表主要收录授权专利的公开数据,申请公开的记录需要到patents-public-data.patents.applications表中查询。

补充:查询示例

仅查询单一字段的示例:

SELECT
  publication_number
FROM
  patents-public-data.patents.publications
WHERE
  publication_number = "US-9370603-B2"
LIMIT 1

触发大量预估扫描的多字段查询:

SELECT
  publication_number,
  ARRAY(
    SELECT text
    FROM UNNEST(title_localized)
    WHERE language = "en"
  ) AS title_en,
  ARRAY(
    SELECT text
    FROM UNNEST(abstract_localized)
    WHERE language = "en"
  ) AS abstract_en,
  filing_date,
  application_number,
  assignee,
  ARRAY(
    SELECT text
    FROM UNNEST(claims_localized)
  ) AS claims_text
FROM
  `patents-public-data.patents.publications`
WHERE
  publication_number IN UNNEST(@pub_numbers)

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 06:15:05