SQL 使用 github_repos 数据集的 GCP BigQuery 查询验证失败
SQL Query validation failure on GCP BigQuery with github_repos dataset
我想使用以下命令获取 GutHub 上所有唯一存储库的列表:
SELECT DISTINCT repo_name FROM `bigquery-public-data.github_repos.commits`
但是我收到以下错误:
Column repo_name of type ARRAY cannot be used in SELECT DISTINCT at [1:17]
在架构中它说 repo_name 是 STRING 类型,我做错了什么?
repo_name 在 table 架构中被定义为模式 "repeated" 的 "string",这大致意味着 BigQuery 中的字符串数组。
https://cloud.google.com/bigquery/docs/nested-repeated
您可以使用以下查询
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
table 的架构中,您可以看到 repo_name
字段定义为 STRING REPEATED,这意味着每个条目of repo_name
是由字符串类型的元素构成的数组。您可以通过以下查询看到这一点:
#standardSQL
SELECT repo_name
FROM `bigquery-public-data.github_repos.commits`
LIMIT 100;
为了找到不同的 repo 名称,您可以使用 UNNEST
运算符来展开每个 repo_name
元素。以下查询执行 CROSS JOIN,将新字段 repo_name_single
添加到由各个存储库名称构成的 table 中。这样就可以使用DISTINCT
函数了
#standardSQL
SELECT DISTINCT(repo_name_unnest)
FROM `bigquery-public-data.github_repos.commits`
CROSS JOIN UNNEST(repo_name) AS repo_name_unnest;
我想使用以下命令获取 GutHub 上所有唯一存储库的列表:
SELECT DISTINCT repo_name FROM `bigquery-public-data.github_repos.commits`
但是我收到以下错误:
Column repo_name of type ARRAY cannot be used in SELECT DISTINCT at [1:17]
在架构中它说 repo_name 是 STRING 类型,我做错了什么?
repo_name 在 table 架构中被定义为模式 "repeated" 的 "string",这大致意味着 BigQuery 中的字符串数组。
https://cloud.google.com/bigquery/docs/nested-repeated
您可以使用以下查询
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
table 的架构中,您可以看到 repo_name
字段定义为 STRING REPEATED,这意味着每个条目of repo_name
是由字符串类型的元素构成的数组。您可以通过以下查询看到这一点:
#standardSQL
SELECT repo_name
FROM `bigquery-public-data.github_repos.commits`
LIMIT 100;
为了找到不同的 repo 名称,您可以使用 UNNEST
运算符来展开每个 repo_name
元素。以下查询执行 CROSS JOIN,将新字段 repo_name_single
添加到由各个存储库名称构成的 table 中。这样就可以使用DISTINCT
函数了
#standardSQL
SELECT DISTINCT(repo_name_unnest)
FROM `bigquery-public-data.github_repos.commits`
CROSS JOIN UNNEST(repo_name) AS repo_name_unnest;