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

负载均衡_数据库数据同步_最新活动

小七 141 0

负载均衡_数据库数据同步_最新活动

sapdataservices的historyperving转换可以很好地降低将数据加载到数据仓库时保存历史的复杂性。但是,它有一个限制,ValidFrom和ValidTo列只能是日期,而不是时间戳。因此,为了保留日内更改的历史记录,企业建站平台,我们需要一个解决方法。在这篇博文中,我展示了如何通过多次使用Map_操作转换来实现这一点:

上面显示的数据流将表CUSTOMER加载到表CUSTOMERHIST。CUSTOMER有3列(PK INTEGER、FirstName VARCHAR(100)、LastName VARCHAR(100)),PK是主键。CUSTOMERHIST还有两个ValidFrom,ValidTo列,都是TIMESTAMP类型;它的主键是(PK,ValidFrom)。我们还需要在作业开始时设置变量$CurDateTime,以便在更新和插入时使用完全相同的时间戳:

$CurDateTime=concat_date_time(sysdate(),systime());

TableComparison转换在CustomerList中查找在字段PK中具有相同值且ValidTo为空的传入记录(仅与当前记录比较)。在本例中,我们还启用了"从比较表中检测删除的行"。

TableComparison输出INSERT、UPDATE和DELETE类型的行。我们将这个输出相乘,并将其发送到映射操作转换:一个用于插入(I2I),两个用于更新(U2U,U2I),淘客放单,一个用于删除(D2U)。在每个Map\u操作转换的"Map Operation"选项卡中,我们配置了记录的输出类型;我们丢弃了由其他Map\u操作转换处理的记录:

现在我们为每种情况设置列映射:

I2I:

如果tablecomparison发送INSERT,那么就没有太多要做的事情了。我们保持值不变,只需将ValidFrom列设置为$CurDateTime

U2U:

如果TableComparison发送更新,云服务器哪里好,第一个操作是将ValidTo设置为$CurDateTime,因为此记录不再是当前记录。我们希望保持FirstName,LastName在CUSTOMERHIST中的状态,并且不使用CUSTOMER的新值覆盖它,因此我们需要将FirstName,LastName映射到prefore\u image(FirstName),prefore\u image(LastName),resp.

U2I:

如果tablecomparison发送更新,第二个操作是用CUSTOMER的当前值插入一个新记录。正如上面的I2I一样,我们只需要将ValidFromto设置为$CurDateTime。请注意,我们需要更改更新部分(中间),而不是插入/正常部分(左侧)。

D2U:

如果TableComparison发送删除,我们需要通过将ValidTo设置为$CurDateTime来更新当前记录。

在这种配置中,四个Map\U操作转换一起替换一个HistoryPreserving转换。该示例不包括ISCURRENT列,但应该直接进行此增强。如果CUSTOMERHIST中有一个生成的键列,大数据如何分析,则可以在合并U2I和I2I后使用KeyGeneration转换填充该列。下图显示了插入后两个表的状态,快云服务器,更新删除表CUSTOMER中的记录:

插入记录4711后的历史保存:

FirstName更新为'John'后的历史保存:

FirstName更新为'John D'后的历史保存:

删除记录4711后的历史保存: