Конвертировать строки в столбцы таблицы в запросе biq - PullRequest
0 голосов
/ 14 апреля 2020

Я хотел бы преобразовать эту таблицу enter image description here

во что-то подобное

enter image description here

длинная строка может быть динамической c, поэтому для меня важно, чтобы она не была фиксированным решением для этих значений, в частности

Пожалуйста, помогите, я использую большой запрос

Ответы [ 2 ]

2 голосов
/ 14 апреля 2020

Вы можете начать с использования SPLIT SPLIT(value[, delimiter]) для преобразования вашей длинной строки в отдельные пары ключ-значение в массиве. Это будет чувствительно к тому, что у вас есть запятые как часть ваших ценностей.

SPLIT(session_experiments, ',')

Тогда вы можете либо FLATTEN этот массив, либо получить доступ к каждому элементу , а затем использовать некоторые REGEXs отделить ключ и значение.

Если вы расскажете больше о своих ограничениях и желаемых результатах, я мог бы попытаться составить для вас запрос, который будет делать именно то, что вы хотите.

0 голосов
/ 14 апреля 2020

Невозможно, что вы хотите, однако, есть лучшая практика для BigQuery. Вы можете использовать массивы структур для хранения этой информации в таблице.

Допустим, у вас есть такая таблица Sample input

Вы можете использовать этот пример запроса для понять, как его использовать.

with rawdata AS
(
  SELECT 1 as id, 'test1-val1,test2-val2,test3-val3' as experiments union all
  SELECT 1 as id, 'test1-val1,test3-val3,test5-val5' as experiments
)
select 
  id, 
  (select array_agg(struct(split(param, '-')[offset(0)] as experiment, split(param, '-')[offset(1)] as value)) from unnest(split(experiments)) as param ) as experiments
from rawdata

Вывод будет выглядеть так: Sample output

После такого вывода удобнее манипулировать данными

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...