首页 > 解决方案 > Google BigQuery SQL:使用数组?

问题描述

我是 SQL 和 Google BigQuery 的新手。我正在尝试运行以下查询以获取名称和计数列表,但是我看到我收到一个数组错误并且不知道如何修复它。任何帮助表示赞赏。

错误信息:

无法访问在 [5:27] 与类型为 ARRAY 的值协调的字段

#standardSQL
-- Applications_Per_Assignee
SELECT assignee_harmonized.name AS Assignee_Name, COUNT(*) AS Number_of_Patent_Apps
FROM (
SELECT ANY_VALUE(assignee.harmonized.name) AS Assignee_Name
FROM `patents-public-data.patents.publications` AS patentsdb
GROUP BY Number_of_Patent_Apps
)
GROUP BY assignee_harmonized.name
ORDER BY Number_of_Patent_Apps DESC;

标签: arrayscountgoogle-bigquery

解决方案


看起来您的查询有一些问题。

  • assignee是一个字符串,我想你想看看assignee_harmonized.name
  • 你会想要UNNEST() assignee_harmonized
  • ANY_VALUE()只选择一个随机值,听起来不像你想要的
  • 您的内部选择中有一个GROUP BY,它不会给您想要的结果
  • 对于这种类型的查询,您真的不需要子查询。
#standardSQL
SELECT ah.name AS Assignee_Name, COUNT(*) AS Number_of_Patent_Apps
FROM `patents-public-data.patents.publications` AS patentsdb
LEFT JOIN UNNEST(assignee_harmonized) ah
GROUP BY 1
ORDER BY 2 DESC

推荐阅读