sql - 连接类型不兼容的表
问题描述
我正在尝试使用此命令连接两个表:
SELECT * FROM bigquery-public-data.github_repos.files INNER JOIN bigquery-public-data.github_repos.commits USING (repo_name)
但是连接的两边都有不兼容的类型:STRING
有ARRAY< STRING>
没有办法解决这个问题?
谢谢 !
解决方案
您想将 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 数据)。
推荐阅读
- java - 在 Gradle 任务中拉取和运行依赖项
- python - 使用 zip 值作为索引切片多索引数据帧
- perl - Perl:异步执行 10 个系统进程
- excel - 使用 AVERAGEIF 计算一段时间内的时间表有效性,意外结果
- powershell - 如何修复 ADD ADGroupMember 错误“无法验证参数 'Identity' 的参数,属性为空”
- vb.net - 这个允许的字符检查是如何工作的?
- ios - 滚动出视图时,覆盖的 setSelected 和 setHighlighted 不保留选定的背景
- python - 根据 bin 组合字典键
- entity-framework-core - System.NotImplementedException:方法或操作未实现。实体框架问题
- html - HTML 滚动文本比容器更宽