使用github_repos数据集的GCP BigQuery上的SQL查询验证失败

我想使用以下命令获取GutHub上所有唯一存储库的列表:

SELECT DISTINCT repo_name FROM `bigquery-public-data.github_repos.commits`

但是我遇到以下错误:

  

ARRAY类型的列repo_name不能在[1:17]的SELECT DISTINCT中使用

在架构中,它说repo_name是STRING类型,我在做什么错了?

wenweiflytop 回答:使用github_repos数据集的GCP BigQuery上的SQL查询验证失败

repo_name在表模式中被定义为模式为“重复”的“字符串”,这在BigQuery中大致表示STRING的数组。

https://cloud.google.com/bigquery/docs/nested-repeated

What does REPEATED field in Google Bigquery mean?

,

您可以使用以下查询

SELECT 
    commit,repo_name 
FROM 
   `bigquery-public-data.github_repos.commits`,UNNEST(repo_name) as repo_name 
WHERE 
    commit = 'c87298e36356ac19519a93dee3dfac8ebffe45e8' 

将给出如下结果

Row |  commit                                  | repo_name
===================================================================
1   | c87298e36356ac19519a93dee3dfac8ebffe45e8 | noondaysun/sakai
2   | c87298e36356ac19519a93dee3dfac8ebffe45e8 | OpenCollabZA/sakai

,

正如另一位用户所发布的,在bigquery-public-data.github_repos.commits表的架构中,您可以看到repo_name字段被定义为STRING REPEATED,这意味着repo_name的每个条目是由字符串型元素组成的数组。您可以通过以下查询看到它:

#standardSQL
SELECT repo_name 
FROM `bigquery-public-data.github_repos.commits` 
LIMIT 100;

为了找到不同的仓库名称,您可以使用UNNEST运算符来扩展repo_name元素中的每个元素。以下查询执行CROSS JOIN,将一个新字段repo_name_single添加到由各个存储库名称组成的表中。这样,可以使用DISTINCT函数。

#standardSQL
SELECT DISTINCT(repo_name_unnest) 
FROM `bigquery-public-data.github_repos.commits` 
CROSS JOIN UNNEST(repo_name) AS repo_name_unnest;

本文链接:https://www.f2er.com/3098724.html

大家都在问