BigQuery - 同时运行计数和拆分功能

Posted

技术标签:

【中文标题】BigQuery - 同时运行计数和拆分功能【英文标题】:BigQuery - running count and split functions together 【发布时间】:2014-10-28 15:24:21 【问题描述】:

我正在尝试对 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 知道如何评估计数函数(处理就地创建的嵌套元素,因此不需要 group by 子句),但无法在以下情况下使用相同的功能计数包含在布尔运算符中。

【问题讨论】:

【参考方案1】:

我认为这只是一个不清楚的错误信息。 这里的问题似乎与 null 的数据类型有关。 bq 需要你定义 nulls 数据类型。默认的空数据类型是布尔值。如果不定义,则同一字段中存在多种数据类型。

【讨论】:

以上是关于BigQuery - 同时运行计数和拆分功能的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery拆分列并获取每个子字符串的计数[重复]

Big Query 表分区计数限制

Bigquery 导出拆分为多个文件,其中包含一些空文件

7 天用户计数:Big-Query 自加入以获取日期范围和计数?

如何重命名 Big Query 中的列? [关闭]

Big Query 或 SQL 重塑数据