BigQuery COALESCE/IFNULL 类型与文字不匹配



在SQL中,我通常使用COALESCEIFNULL来确保当我的查询包含COUNTSUM等聚合函数时,我得到数字而不是NULL,例如:

SELECT IFNULL(COUNT(foo), 0) AS foo_count FROM …

但是,在 BigQuery 中,我遇到了一个错误:

函数 IFNULL 中的参数类型不匹配:"f0_"是 uint64 类型,"0"是 int32 类型。

有没有办法让 BigQuery 理解在这种情况下,文字 0 应该被解释为unit64

我尝试过使用 CAST ,但没有可以投射到unit64类型,所以我尝试INTEGER

SELECT IFNULL(COUNT(foo), CAST(0 AS INTEGER)) AS foo_count FROM …

这给了我基本上相同的错误,但至少我成功地得到了 64 位零而不是 32 位:

函数 IFNULL 中的参数类型不匹配:"f0_"是 uint64 类型,"0"是 int64 类型。

如果我使用 INTEGER(0) .

如果我将两个参数都投射到INTEGER,我可以让它工作:

SELECT IFNULL(INTEGER(COUNT(foo)), INTEGER(0)) AS foo_count FROM …

但现在它开始变得冗长。这真的是你应该在 BigQuery 中做到的吗?

这是 BigQuery 中的一个错误,已经存在了很长时间。目前你需要强制转换COUNT,但你不应该需要为你的"0"这样做。

以下方法应该有效:

SELECT IFNULL(INTEGER(COUNT(foo)), 0) AS foo_count FROM

感谢@Kinaan汗谢尔瓦尼提供官方错误报告的链接。

最新更新