Повторяющиеся записи Snowflake/SQL на основе значений в списке, разделенном запятыми

У меня есть фрейм данных с идентификаторами пользователей и тегами, как показано ниже в разделе «Текущие данные».

Цель:

Я хочу иметь возможность дублировать записи для каждого значения в столбце теги. Как вы можете видеть в целевом выводе, идентификатор пользователя 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
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
18
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Другие вопросы по теме