我正在尝试对 split 函数的结果进行计数。下面的查询显示了一个示例:
select a.name,
count(if(split(b.name,",")='test',null,1)) > 0 hasTest,
from (select * from (select 'test,this' as name) a left join (select '2' as name) b on
a.name=b.name)
此查询会产生错误:SELECT clause has mix of aggregations 'hasTest' and fields 'a.name' without GROUP BY clause
如果我将hasTest
列更改为整数而不是布尔值,那么:
count(if(split(b.name,",")='test',null,1))
查询成功。
出于某种原因, BigQuery 知道如何评估count函数(处理在适当位置创建的嵌套元素,因此不需要group by子句),但是当它不能使用相同的功能时count包含在一个布尔运算符中。
答案 0 :(得分:1)
我认为这只是一个不明确的错误消息。 这里的问题似乎是数据类型为null。 bq需要您定义空数据类型。默认的null数据类型是boolean。如果您没有定义它,则同一领域中会混合使用各种数据类型。