Google BigQuery SQL:使用数组吗?

问题描述 投票:0回答:2

我是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;
arrays count google-bigquery
2个回答
0
投票

好像您的查询中有些问题。

  • 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

0
投票

下面是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
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  
© www.soinside.com 2019 - 2024. All rights reserved.