【问题标题】:Google BigQuery SQL: working with an array?Google BigQuery SQL:使用数组?
【发布时间】:2020-03-20 15:19:59
【问题描述】:

我是 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;

【问题讨论】:

  • 你好@Marko43,欢迎来到 SO。您至少应该将整个错误消息与这些问题一起发布。您可以edit您的问题添加它。

标签: arrays count google-bigquery


【解决方案1】:

以下是 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

有输出

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  

【讨论】:

  • 米哈伊尔,还有一个问题。如果我想使用逻辑运算符来过滤计数,我发现插入 WHERE COUNT(*)
  • HAVING Number_of_Patent_Apps &lt; 1000 - 请参阅答案中的更新
【解决方案2】:

您的查询似乎有一些问题。

  • 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 2023-03-31
    • 2017-10-23
    • 1970-01-01
    • 2012-07-28
    相关资源
    最近更新 更多