如何在bigquery中拆分列和分组?

时间:2018-11-12 07:46:43

标签: sql google-bigquery standard-sql legacy-sql

我在旧版SQL中有一个SQL代码可以工作,

但是在标准SQL中是错误的,

得到答复:

 Grouping by expressions of type ARRAY is not allowed

有什么办法可以解决?

这是我的SQL代码:

  select tag
  from 
  (
    select SPLIT(content_tag, ',') as tag
    from `test.log`
  )
  group by tag

3 个答案:

答案 0 :(得分:1)

您提供的旧版SQL查询将隐式地展平从SPLIT函数返回的数组,这就是它起作用的原因。但是,使用标准SQL,您需要更加明确:

select tag
from `test.log`,
  UNNEST(SPLIT(content_tag, ',')) as tag
group by tag

答案 1 :(得分:0)

我认为您在查询中缺少[SAFE_OFFSET(1)],这应该可以工作

SELECT SPLIT(content_tag, ',') [SAFE_OFFSET(1)] AS tag
FROM `test.log`
GROUP BY tag

针对格式代码进行了编辑。

答案 2 :(得分:0)

我猜你想要这样的东西:

select tag, count(*)
from (select 'a b c' as tags union all
      select 'd c'
     ) `test.log` cross join
     unnest(split(tags, ' ')) tag
group by tag
order by count(*) desc;

这将计算以空格分隔的标签列表中的标签数量。