Как я могу разделить столбец и группу в BigQuery? - PullRequest
0 голосов
/ 12 ноября 2018

У меня SQL-код в Legacy 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 голосов
/ 12 ноября 2018

Полагаю, вы хотите что-то вроде этого:

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;

Будет подсчитано количество тегов в списке тегов, разделенных пробелом.

0 голосов
/ 12 ноября 2018

Устаревший SQL-запрос, который вы предоставили, неявно сгладит массив, возвращаемый функцией SPLIT, поэтому он работает.Используя стандартный SQL, вы должны быть более явными:

select tag
from `test.log`,
  UNNEST(SPLIT(content_tag, ',')) as tag
group by tag
0 голосов
/ 12 ноября 2018

Я думаю, что вам не хватает [SAFE_OFFSET (1)] в вашем запросе, это должно работать

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

Отредактировано для формата кода.

...