云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云解析_转发服务器_试用

小七 141 0

云解析_转发服务器_试用

你好SAPians,

终于在很长一段时间后,我回来了我的观察资料:p.

所以这一次是SCD1。对于新手,请看一下什么是SCD1.

如果(现有目标记录已在源位置更改)

加载更改的记录

如果(新记录已到达源位置但未在目标位置出现)

加载新记录

否则

无操作(尝试成为编码员)

通常SCD1可以通过以下两种方式之一实现:表比较或将自动更正加载设置为Yes,但如果可以使用delete脚本执行相同的操作呢?

在我有两个数据流的情况下,淘客返利系统,请考虑以下要求。

Stage_df包含从源加载到暂存表的数据。

script_del包含SQL delete语句。

final_df包含从暂存表填充的最终目标表。

源名称:备用.txt.

暂存表名称:备用\u rbd8.

最终表名,目标:Alternate\u final\u rbd8.

作业执行数据出现前,

备用.txt:

备用

rbd8:

目标:与备用

rbd8相同。

映射,淘客群,阶段

df:

执行作业时,暂存表中的数据是:

,泛在电力物联网,最终目标表中的数据是:

删除脚本在第一次加载时没有做任何操作。

现在假设如果第二天插入两条新记录,那么仅使用暂存表将不足以满足要求,新云,因为:

所以暂存中的所有数据都将转储到最终表中,最终表将存储更改的数据和新插入的数据。

映射,最终数据:

想象一下,如果我选择暂存表中存在的所有记录,然后将这些记录与最终目标表进行比较,会变得多么容易。如果恰好有一些匹配项,则删除final表中的数据并将其加载到staging表中。让我说清楚点!

源数据将被加载到stage\u df中的Alternate\u rbd8表中,从那里记录将被移动到final表Alternate\u final\u rbd8中。

脚本\u del是这里的魔法!

此脚本将删除备用\u final \u rbd8表中的所有现有值,并从源加载新记录。

脚本代码:

现在我们考虑添加了一些新记录(行id=18,19,20) 现有的一条记录(代码值从1000变为9000,旧的代码从H变为R,行id=3)被修改为目标中不存在的源记录

修改后的源数据,Alternate\u rbd8.txt:

在最终和暂存表中的执行数据被删除之前,

Alternate_rbd8:

Alternate_final_rbd8:

在暂存和目标表中的作业执行数据为后,云计算与大数据,

Alternate_rbd8:

Alternate_final_rbd8:

现在我从源(Row_id=1,2)

Alternate_rbd8.txt::

在执行后,

Alternate_rbd8:

Alternate_final_rbd8:

因此在源代码级别修改的目标中的现有记录已更改,这是SCD1。

因此它工作了!

是的,它比表比较和自动更正加载要快。

现在让我来说明一下这个sql查询是如何处理记录的。

所有的公共行id,即Alternate\u rbd8(final Table)和Alternate\u final\u rbd8(staging Table)的公共行id,都是从Alternate\u rbd8(final Table)中选择的。选择后这些记录从备用表(最终表)中删除。最后,新记录/更改的记录被插入到备用表(最终表)中。