如何连接 BigQuery 已分配不同类型的整数字段?

Posted

技术标签:

【中文标题】如何连接 BigQuery 已分配不同类型的整数字段?【英文标题】:How do you join integer fields that BigQuery has assigned different types to? 【发布时间】:2012-07-31 13:04:09 【问题描述】:

在尝试在一个数字字段上连接两个表(“A”和“B”)时,并且每个表的值范围完全相同,我收到以下错误:

错误:字段 X 和 Y 的类型 TYPE_INT64 和 TYPE_INT32 不相等,因此它们不能是连接属性。

无法在 INTEGER(A.X) = B.Y 上加入,因为只接受字段名称,而不接受任意表达式。在子查询中强制转换 A.X 是可行的,但性能很差,因为它是更大的表;强制转换 B.Y 不起作用,这似乎与错误消息(暗示 Y 是 32 位)和 INTEGER 函数的文档(转换为 64 位)不一致。这可能是一个错误吗?

【问题讨论】:

什么是生成 int32?我们应该自动应用演员表。 @JordanTigani 如果你有一个整数文字 (SELECT 0 as xxx),它似乎是一个 int32。 【参考方案1】:

您最好的选择是子查询中的演员表。连接性能的真正问题不是强制转换,而是连接算法的低效率。目前正在解决这个问题,但需要更长时间,因为它是更大的查询执行引擎更改的一部分。

【讨论】:

以上是关于如何连接 BigQuery 已分配不同类型的整数字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 AVRO 文件中的整数值加载到 bigquery 中的日期列?

如何在 BigQuery 的新 SQL 查询中连接/使用已保存的查询

如何在 BigQuery 中使用连接修剪分区?

如何使用节点 js 客户端在 BigQuery 中存储数字类型以进行流式插入?

Bigquery (Standard Sql) - 年月日期格式

javascript中如何将获得的整型数值转换为字节数组