Snowflake/SQL 基于逗号分隔列表中的值的重复记录

Snowflake/SQL Duplicate Records based on values within comma seperated list

我有一个用户 ID 和标签的数据框,如下所示 'Current Data'。

目标:

我希望能够根据 tags 列下的每个值复制记录。正如您在目标输出中看到的那样,用户 ID 21 对于源 'TAGS' 中的三个标签中的每一个都重复了 3 次 - 除了标签列之外的所有内容都是重复的 - 逗号分隔列表中的每个项目 1 条记录。

问题:

我查看了在 snowflake 中使用 SPLIT_TO_TABLE 功能,但它在我的用例中不起作用,因为并非所有标签都始终按某种顺序排列,在某些情况下,单元格也是空白的.

当前数据:

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