【问题标题】:Snowflake handling duplicates in merge operation合并操作中的雪花处理重复项
【发布时间】:2021-01-11 13:55:49
【问题描述】:

我在处理源表中的重复项时遇到问题。这似乎是源问题,我想在加载到目标时处理它们,因为我没有签入源系统的选项。

示例源表数据 - TAB_SOURCE

ID  CD          CT      NOI         QTY VER PID DESC
1   19700101    200050  10          1   1.0 123 
1   19700101    200050     10                   Got Error
2   20210101    190050  09          2   1.0 345 
2   20210101    190050     09                   Success
5   20211001    150151  02          1   1.0 987 Success

必需的目标表条目 - TAB_TARGET

ID  CD          CT      NOI         QTY VER PID DESC
1   19700101    200050  10          1   1.0 123 Got Error
2   20210101    190050  09          2   1.0 345 Success
5   20211001    150151  02          1   1.0 987 Success

我正在使用下面的合并语句将数据从源加载到目标。考虑源数据已加载到目标表所在的同一数据库中的登陆架构中。

Merge into target.TAB_TARGET as tgt using
( select * from landing.TAB_SOURCE) src
on tgt.ID = src.ID and tgt.CD = src.CD and tgt.CT = src.CT and tgt.NOI = trim(src.NOI)
when matched then update set
tgt.ID = trim(src.ID),
tgt.CD = trim(src.CD),
tgt.CT = trim(src.CT),
tgt.NOI = trim(src.NOI),
tgt.QTY = trim(src.QTY),
tgt.VER = trim(src.VER),
tgt.PID = trim(src.PID),
tgt.DESC = trim(src.DESC)
when not matched then insert
(ID,CD,CT,NOI,QTY,VER,PID,DESC)
values
(trim(ID),trim(CD),trim(CT),trim(NOI),trim(QTY),trim(VER),trim(PID),trim(DESC));

这里的问题是 DESC 列值作为单独的条目出现,其中 NOI(Merge 上的键之一)列具有前面的空格和少数记录的值,我希望通过填充 DESC 将它们视为单个记录与目标表条目中显示的其他列。

有人可以帮助我按照目标中显示的示例将源数据加载到目标中。

【问题讨论】:

  • 嗨 - 你只需要重写你的 SELECT 语句,让它返回你想要的数据
  • 嗨@NickW 你能分享几个相同的样本吗?我不知道如何获得所需的结果......

标签: sql snowflake-cloud-data-platform


【解决方案1】:

这样的事情应该可以工作 - 而且您只需要在一个地方使用 TRIM,而不是在匹配和不匹配的语句中使用:

SELECT TRIM(ID) AS ID, TRIM(CD) AS CD, TRIM(CT) AS CT, TRIM(NOI) AS NOI, 
MAX(TRIM(QTY)) AS QTY, MAX(TRIM(VER)) AS VER, MAX(TRIM(PID)) AS PID, MAX(TRIM(DESC)) AS DESC
FROM landing.TAB_SOURCE
GROUP BY TRIM(ID), TRIM(CD), TRIM(CT), TRIM(NOI)

【讨论】:

    猜你喜欢
    • 2022-07-22
    • 2023-03-26
    • 2022-06-19
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2020-04-08
    相关资源
    最近更新 更多