我一直在尝试创建一个数据流,以检查两个源(暂存表和目标表(之间的"更改数据"。我想从暂存表中清除所有可能的重复项,将其放入目标表中。我尝试过不同的方法,但都没有成功。我想知道是否有一种安全有效的方法来做我想做的事。
源表是一个包含77列的外部表目标表是一个有77列的物理表两列的数据类型是相同的
首次尝试:
我尝试了"存在/不存在"活动。第一次尝试时,我设置了一个"不存在"活动,表中的所有列(暂存(等于目标表中的全部列。因此,我打算撤销所有与上述设置不匹配的案例。示例:
STAGING@COLUMNA == TARGET@COLUMNA &&
STAGING @COLUMNB == TARGET @COLUMNB &&
STAGING@COLUMNC == TARGET@COLUMNC
结果:它不起作用,让所有重复项都进入目标表。与非varchar列的比较似乎没有那么好。我尝试使用聚结和修剪,但没有成功再次
第二次尝试
因此,我尝试创建一个行签名:
源(暂存和目标(的派生列
sha2(256,COLUMNA,COLUMNB,COLUMNC … )
不存在活动
STAGING@FINGERPRINT==TARGET@FINGERPRINT
结果:它再次失败。我的测试是有超过10k个重复的行,所有的行都重新进入了里面。
有人会有不同的方法吗?
解决方案如下:
- 不同的行:https://www.youtube.com/watch?v=ryYo8UFUgTI
- 重复数据消除:https://www.youtube.com/watch?v=QOi26ETtPTw
- 哈希:https://www.youtube.com/watch?v=Id82NZo9hxM