The*_*heo 5 sql google-bigquery
在SQL我通常使用COALESCE,并IFNULL确保我得到的数字,而不是NULL当我查询包含像聚合函数COUNT和SUM,例如:
SELECT IFNULL(COUNT(foo), 0) AS foo_count FROM …
Run Code Online (Sandbox Code Playgroud)
但是,在BigQuery中我遇到了一个错误:
函数中的参数类型不匹配IFNULL:'f0_'是uint64类型,'0'是int32类型.
有没有办法让BigQuery理解unit64在这个上下文中应该将文字0解释为a ?
我尝试过使用CAST,但是unit64我没有可以使用的类型,所以我尝试INTEGER:
SELECT IFNULL(COUNT(foo), CAST(0 AS INTEGER)) AS foo_count FROM …
Run Code Online (Sandbox Code Playgroud)
这给了我基本相同的错误,但至少我已成功获得64位零而不是32位:
函数中的参数类型不匹配IFNULL:'f0_'是uint64类型,'0'是int64类型.
如果我使用同样的事情INTEGER(0).
如果我将两个参数都转换为INTEGER:
SELECT IFNULL(INTEGER(COUNT(foo)), INTEGER(0)) AS foo_count FROM …
Run Code Online (Sandbox Code Playgroud)
但现在它开始变得冗长.这真的是你应该如何在BigQuery中做到这一点?
Tom*_*m H 10
这是BigQuery中的一个错误,它已存在很长一段时间了.暂时你需要强制转换COUNT,但你不需要为你的"0"做这件事.
以下应该有效:
SELECT IFNULL(INTEGER(COUNT(foo)), 0) AS foo_count FROM
Run Code Online (Sandbox Code Playgroud)
感谢@Kinaan Khan Sherwani提供官方错误报告的链接.
| 归档时间: |
|
| 查看次数: |
4082 次 |
| 最近记录: |