Arrays Google BigQuery SQL:使用数组?
我是SQL和Google BigQuery的新手。 我试图运行以下查询以获得名称和计数的列表,但是我发现我得到了一个数组错误,不知道如何修复它。谢谢你的帮助 错误消息: 无法访问[5:27]处数组类型为的值上的字段Arrays Google BigQuery SQL:使用数组?,arrays,count,google-bigquery,Arrays,Count,Google Bigquery,我是SQL和Google BigQuery的新手。 我试图运行以下查询以获得名称和计数的列表,但是我发现我得到了一个数组错误,不知道如何修复它。谢谢你的帮助 错误消息: 无法访问[5:27]处数组类型为的值上的字段 #standardSQL -- Applications_Per_Assignee SELECT assignee_harmonized.name AS Assignee_Name, COUNT(*) AS Number_of_Patent_Apps FROM ( SELECT AN
#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;
看起来您的查询有一些问题
是一个字符串,我想你应该看看assignment
assignment\u.name
- 您将需要
UNNEST()
只选择一个随机值,听起来不像您想要的值ANY_VALUE()
- 您的内部选择中有一个
,它不会提供您想要的结果分组依据
- 这种类型的查询实际上不需要子查询
下面是BigQuery标准SQL
#standardSQL
SELECT
ah.name AS Assignee_Name,
COUNT(*) AS Number_of_Patent_Apps
FROM `patents-public-data.patents.publications`,
UNNEST(assignee_harmonized) ah
GROUP BY Assignee_Name
HAVING Number_of_Patent_Apps < 1000
ORDER BY Number_of_Patent_Apps DESC
-- LIMIT 10
您好@Marko43,欢迎来到SO。您至少应该将整个错误消息与这些问题一起发布。你可以把你的问题添加进去。我刚把它添加到帖子里。谢谢你。我明白了。名字的问题。我不知道有什么价值。谢谢。UNNEST是技巧-加上纠正我所犯的其他错误。如果它解决了你的SuxMixkaIL,一个附加的问题,考虑接受答案。如果我想使用逻辑运算符来过滤计数,我会发现插入诸如WHERE count(*)<1000之类的内容是行不通的,并且会产生“聚合”错误。使用这样的数组执行此操作的诀窍是什么?
拥有大量的专利应用程序<1000
-请参阅答案中的更新
#standardSQL
SELECT
ah.name AS Assignee_Name,
COUNT(*) AS Number_of_Patent_Apps
FROM `patents-public-data.patents.publications`,
UNNEST(assignee_harmonized) ah
GROUP BY Assignee_Name
HAVING Number_of_Patent_Apps < 1000
ORDER BY Number_of_Patent_Apps DESC
-- LIMIT 10
Row Assignee_Name Number_of_Patent_Apps
1 SAMSUNG ELECTRONICS CO LTD 600678
2 CANON KK 579731
3 MATSUSHITA ELECTRIC IND CO LTD 560644
4 HITACHI LTD 531286
5 SIEMENS AG 486276
6 MITSUBISHI ELECTRIC CORP 461673
7 IBM 438822
8 SONY CORP 438039
9 FUJITSU LTD 384270
10 NEC CORP 357193