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
建议的解决方案:

  • 首先找到T2\u D2-T1\u D1=>它给出了插入和更新的增量,并将这些增量附加到T1\u D1中。在此上下文中,附加在插入的意义上
  • 以上查询的实际结果集:

    身份证件 交易日 产品 价格 5. 01/02/2009 20:09 产品1 1200 6. 01/02/2009 15:56 产品5 1300 3. 01/02/2009 14:58 产品2 1350
    因为您使用的是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中的行的值,而我需要为更新的行创建一个新行。就像我在示例中演示的一样。