连接具有不兼容类型的表

时间:2019-02-26 22:44:44

标签: google-cloud-platform google-bigquery

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

SELECT * FROM bigquery-public-data.github_repos.files内联接bigquery-public-data.github_repos.commits使用(repo_name)

但是联接的两边都有不兼容的类型:STRING和ARRAY 有没有办法解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:2)

您想将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数据)。