Транспонировать строки в столбцы в стандартном BigQuery (реализация Pivot) - PullRequest
0 голосов
/ 09 ноября 2018

Моя ссылка Транспонировать строки в столбцы в BigQuery (реализация Pivot)

Я попытался реализовать рекомендацию в стандартном большом запросе, заменив group_concat_unquoted на string_agg, но мне не удалосьиспользуя правильный синтаксис и структуру.

WITH
input AS (
SELECT
    user_pseudo_id AS user_id,
    event_timestamp,
    p.key AS key,
    p.value.string_value AS value
  FROM
    `myproject.analytics_xxxx.events_*`,
    UNNEST(event_params) AS p
  WHERE
    AND event_name = 'event_type_to_pivot' )
SELECT
  'select user_id, ' + STRING_AGG(
  'MAX(IF(key = "'+key+'", value, NULL)) as ['+key+']'
  ) + 'FROM input group by user_id order by user_id'
FROM (
  SELECT
    key
  FROM
    input
  GROUP BY
    key
  ORDER BY
    key )

Я постоянно получаю сообщение об ошибке: Нет соответствующей сигнатуры для оператора + для типов аргументов: STRING, STRING.Поддерживаемые подписи: INT64 + INT64;FLOAT64 + FLOAT64;NUMERIC + NUMERIC в [19: 3] для строки:

STRING_AGG(
      'MAX(IF(key = "'+key+'", value, NULL)) as ['+key+']'
      )

После многих попыток я все еще не понимаю, как правильно использовать string_agg для транспонирования строк в столбцы.

Спасибо за ваше руководство,

1 Ответ

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

В #standardSQL используйте CONCAT() вместо + для создания строк:

'MAX(IF(key = "'+key+'", value, NULL)) as ['+key+']'

->

CONCAT('MAX(IF(key = "',key,'", value, NULL)) as [',key,']')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...