使用“upsert选项”时,我是否应该在拷贝活动结果摘要中将“0”视为“Rows Written”?我的情况是这样的:源表和接收表列不完全相同,但用于告诉它如何知道写入行为的Key列是正确的。我已经测试并确保它确实根据我给予它的数据进行插入或更新,但我不明白的是,如果我做了零次更改并继续运行管道,为什么它在Rows Written摘要中不显示“零”?
upsert
Rows Written
vdzxcuhz1#
即使源和目标具有相同的数据,rowsWritten也不显示为0的主要原因是:
0
Upsert
Merge
key_column
id,gname 1,Ana 2,Ceb 3,Topias 4,Jerax 6,Miracle
插入全新行时:
id,gname 8,Sumail 9,ATF
w6mmgewl2#
Upsert只更新源表和目标表中都存在的记录,如果目标表中不存在而源表中存在,则插入。不知道为什么在上面的回答中提到“* 它正在修改所有记录,而不管数据的变化。*”这不是真的。
2条答案
按热度按时间vdzxcuhz1#
即使源和目标具有相同的数据,rowsWritten也不显示为
0
的主要原因是:Upsert
在目标表中缺少键列值时插入数据,并在目标表中找到键列时更新其他行的值。Merge
一样,没有办法告诉复制活动,如果目标表中已经存在整行,则忽略这种情况。key_column
匹配,它也会更新其余列的值,因此被计为写入的行。以下是2种情况的示例source和sink行相同:
插入全新行时:
w6mmgewl2#
Upsert只更新源表和目标表中都存在的记录,如果目标表中不存在而源表中存在,则插入。
不知道为什么在上面的回答中提到“* 它正在修改所有记录,而不管数据的变化。*”这不是真的。