У меня есть фрейм данных с идентификаторами пользователей и тегами, как показано ниже в разделе «Текущие данные».
Цель:
Я хочу иметь возможность дублировать записи для каждого значения в столбце теги. Как вы можете видеть в целевом выводе, идентификатор пользователя 21 повторяется 3 раза для каждого из трех тегов, которые находятся в исходном «TAGS» — все дублируется, кроме столбца «Тег» — 1 запись для каждого элемента в списке, разделенном запятыми.
Проблема:
Я рассмотрел возможность использования функции SPLIT_TO_TABLE в Snowflake, но она не работает в моем случае использования, поскольку не все теги последовательно расположены в каком-то порядке, а в некоторых случаях ячейка также пуста.
Текущие данные:
USER_ID CITY STATUS PPL TAGS
21 LA checked 6 bad ui/ux,dashboards/reporting,pricing
32 SD checked 9 buggy,laggy
21 ATL checked 9
234 MIA checked 5 glitchy, bad ui/ux, horrible
Цель:
USER_ID CITY STATUS PPL TAGS
21 LA checked 6 bad ui/ux
21 LA checked 6 dashboards/reporting
21 LA checked 6 Pricing
32 SD checked 9 buggy
32 SD checked 9 laggy
21 ATL checked 9
234 MIA checked 5 glitchy
234 MIA checked 5 bad ui/ux
234 MIA checked 5 horrible
SQL:
select table1.value
from table(split_to_table('a.b', '.')) as table1
SPLIT_TO_TABLE работает. Ниже приведен запрос с использованием вашего примера данных:
select USER_ID, CITY, STATUS, PPL, VALUE
from (values
(21,'LA','checked',6,'bad ui/ux,dashboards/reporting,pricing')
,(32,'SD','checked',9,'buggy,laggy')
,(21,'ATL','checked',9,'')
,(234,'MIA','checked',5,'glitchy, bad ui/ux, horrible')
) as tbl (USER_ID,CITY,STATUS,PPL,TAGS)
, lateral split_to_table(tbl.tags,',');
Результат:
USER_ID CITY STATUS PPL VALUE
21 LA checked 6 bad ui/ux
21 LA checked 6 dashboards/reporting
21 LA checked 6 pricing
32 SD checked 9 buggy
32 SD checked 9 laggy
21 ATL checked 9
234 MIA checked 5 glitchy
234 MIA checked 5 bad ui/ux
234 MIA checked 5 horrible