Snowflake cloud data platform 比较雪花中着陆区和暂存区的数据
这里是以下要求,有两个表Snowflake cloud data platform 比较雪花中着陆区和暂存区的数据,snowflake-cloud-data-platform,querying,delta,Snowflake Cloud Data Platform,Querying,Delta,这里是以下要求,有两个表T1\u D1和T2\u D2,其中T1\u D1有4条记录,T2\u D2有6条记录,其中插入、更新 现在,我需要比较两个表,并且应该更新表上的所有修改 样本数据:T1\u D1 身份证件 交易日 产品 价格 更新了吗 1. 01/02/2009 13:08 产品1 350 N 2. 01/02/2009 12:56 产品2 1300 N 3. 01/02/2009 14:58 产品2 1250 N 4. 01/02/2009 18:48 产品1 1450 N 建议的解
T1\u D1
和T2\u D2
,其中T1\u D1
有4条记录,T2\u D2
有6条记录,其中插入、更新
现在,我需要比较两个表,并且应该更新表上的所有修改
样本数据:T1\u D1
身份证件
交易日
产品
价格
更新了吗
1.
01/02/2009 13:08
产品1
350
N
2.
01/02/2009 12:56
产品2
1300
N
3.
01/02/2009 14:58
产品2
1250
N
4.
01/02/2009 18:48
产品1
1450
N
建议的解决方案:
因为您使用的是Snowflake,所以另一种方法是使用他们的“表流”方法来“捕获更改数据”
请参见查看
合并语句:
它可以通过一个步骤进行更新、插入和删除:
使用源\u表合并到目标\u表中
在目标_table.id=源_table.id上
当匹配时
更新设置目标\u table.description=源\u table.description
当不匹配时
插入(id,说明)值(source\u table.id,source\u table.description);
从你的问题来看,似乎:
target_table
是T1_D1
source\u表
是T2\u表
on target\u table.id=source\u table.id
是T1\u D1.交易日期=T2\u D2.交易日期和T1\u D1.产品=T2\u D2.产品
- 更新将更改价格,将
target\u table.description=source\u table.description
更改为T1\u D1.price=T2\u D2.price
- 插入件应更改为与T1_D1中的插入件相匹配
如果我使用合并方法,那么它会直接更新T1\u D1中的行的值,而我需要为更新的行创建一个新行。就像我在示例中演示的一样。