首页 > 解决方案 > 连接类型不兼容的表

问题描述

我正在尝试使用此命令连接两个表:

SELECT * FROM bigquery-public-data.github_repos.files INNER JOIN bigquery-public-data.github_repos.commits USING (repo_name)

但是连接的两边都有不兼容的类型:STRINGARRAY< STRING>没有办法解决这个问题?

谢谢 !

标签: sqlgoogle-cloud-platformgoogle-bigquery

解决方案


您想将 20 亿行的表与 2 亿行的表连接起来。除非您对要从中获得什么定义限制,否则这不会很好。

至于此查询的技术问题:错误表示您正在尝试JOIN使用一组值来处理单个值。你需要UNNEST()那个数组。

这将在语法上起作用:

SELECT *
FROM `bigquery-public-data.github_repos.files` a
INNER JOIN (
  SELECT * EXCEPT(repo_name) 
  FROM `bigquery-public-data.github_repos.commits`
  , UNNEST(repo_name) repo
) b
ON a.repo_name=b.repo

但是,据我所知,如果您这样做,它将毫无用处地使用您所有的免费每月配额(扫描的 1TB 数据)。


推荐阅读