使用FLATTEN后如何为记录分配id

问题描述 投票:0回答:1

在我的数据中,有一个字段包含多个以逗号分隔的电子邮件。我使用 FLATTEN 将电子邮件分成自己的记录,保持所有其他字段相同。我需要能够创建一个新字段,为每封由 FLATTEN 函数分隔的电子邮件分配一个 id。

FLATTEN 部分正在工作,我正在将电子邮件分开,但我不知道如何创建新的 id 字段。我在雪花工作。

示例

来源记录:

身份证 EMAIL_TO
1 电子邮件1,电子邮件2,电子邮件3

我需要什么:

身份证 EMAIL_TO NEW_DERIVED_ID
1 电子邮件1 1
1 电子邮件2 2
1 电子邮件3 3
CREATE OR REPLACE VIEW MYVIEW (
ID,
EMAIL_TO,
NEW_DERIVED_ID_FOR_EACH_SPLIT_EMAIL_TO_FIELD
) as (
        SELECT
        ID,
        collate(cast(replace(value, '"')as varchar),'en-ci-trim') as EMAIL_TO,
        NEW_DERIVED_ID_FOR_EACH_SPLIT_EMAIL_TO_FIELD
        FROM MYSOURCE as CM,
        LATERAL FLATTEN(input=>split(CM.EMAIL_TO, ',')) as EMAIL_TO
        where EMAIL_TO is not null
);
sql snowflake-cloud-data-platform
1个回答
0
投票

您的主要查询类似于:

SELECT ID, 
       VALUE AS EMAIL, INDEX+1 AS NEW_DERIVED_ID
FROM MYSOURCE as CM,
LATERAL FLATTEN(input=>split(CM.EMAIL_TO, ',')) as f
WHERE EMAIL_TO is not null;
© www.soinside.com 2019 - 2024. All rights reserved.