Google Bigquery 查询记录数据 - 专利
Posted
技术标签:
【中文标题】Google Bigquery 查询记录数据 - 专利【英文标题】:Google Bigquery query Record data - Patents 【发布时间】:2021-05-31 14:41:55 【问题描述】:我正在使用Google Patents Public Dataset提取有关使用CPC代码“A01N”保存人体或动物或其植物或其部分的农药的专利信息
但是当我运行以下查询时,我并没有像运行非嵌套查询那样获得所有结果。见下文
SELECT patents.country_code, count(DISTINCT publication_number) as quantity
FROM
`patents-public-data.patents.publications` AS patents,
UNNEST(title_localized) AS title,
UNNEST(abstract_localized) AS abstract,
UNNEST(cpc) AS cpc_code,
UNNEST(inventor_harmonized) AS inventor,
UNNEST(assignee_harmonized) AS assignee
WHERE
cpc_code.code LIKE '%A01N%'
GROUP BY patents.country_code
ORDER BY quantity DESC
Row | country_code | quantity |
---|---|---|
1 | US | 67280 |
2 | CN | 59067 |
3 | WO | 39560 |
4 | EP | 37886 |
5 | CA | 23115 |
SELECT patents.country_code, count(DISTINCT publication_number) as quantity
FROM
`patents-public-data.patents.publications` AS patents,
UNNEST(cpc) AS cpc_code
WHERE
cpc_code.code LIKE '%A01N%'
GROUP BY country_code
ORDER BY quantity DESC
Row | country_code | quantity |
---|---|---|
1 | US | 77056 |
2 | CN | 70654 |
3 | EP | 60291 |
4 | WO | 39624 |
5 | JP | 36135 |
我不明白为什么两个结果之间存在差异,因为没有应用更多过滤器? 当我 UNNEST 更多列时,如何维护所有行?
【问题讨论】:
【参考方案1】:您UNNEST
ing 的列中的某些行是空数组。当您执行隐式CROSS JOIN
时,您将加入NULL
,它不会给您任何结果,因此其中一些行会消失并且您的计数会减少。如果您开始评论其中一些CROSS JOIN
s,您会看到您的计数开始上升。由于您实际上并未使用这些列,因此您应该将它们从查询中删除。如果您稍后需要它们,请先获取计数,然后在 LEFT JOIN
上获取类似 1=1
的信息。
【讨论】:
以上是关于Google Bigquery 查询记录数据 - 专利的主要内容,如果未能解决你的问题,请参考以下文章
标准 sql 查询以获取与另一个表匹配的记录字段(Google BigQuery)
带有“Order Each by”子句的 Google BigQuery 大表(105M 记录)产生“资源超出查询执行”错误
Google BigQuery 选择记录中所有嵌套字段的总和
有效地将Pandas数据帧写入Google BigQuery