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

虚拟主机_内存数据库redis_评分榜

小七 141 0

在sapdataservicesdesigner指南的第34节中,您可以找到sapdataservices中各种增量加载功能的非常好的描述。这不值得一读吗?

增量加载通常用于减少整个ETL处理时间。当新的和修改过的源记录的数量与完整数据大小相比相对较少时,总体性能将显著提高。不仅提取所花的时间会少得多,而且转换和加载步骤也会运行得更快,云的服务器,因为这些操作只适用于(较小的)数据子集,您可以考虑以下选项来实现增量提取:

使用源表中的上次修改时间戳。创建一个控制表,用于跟踪上一次增量提取中使用的时间戳。让您的作业调用初始化脚本,将时间戳分配给全局变量。在提取数据流中使用查询转换的where子句中的变量。如果没有可用的时间戳,但记录是按顺序编号的,则可以使用序列号应用类似的方法。使用日志表。许多系统在实际修改的表中不包含时间戳。它们使用所谓的日志表来跟踪更改。连接源表和日志表并按上述步骤进行。使用源数据库的内置CDC机制。使用特定的CDC启用软件,物联网流量卡,如SLT。有了SAP作为源,您可以利用支持增量的业务内容提取器。

不幸的是,当这些选项都不可用时,您可能需要对源数据进行完整的提取,这在处理大数据时不是一个好主意。注意,在这种情况下,您仍然可以通过自己计算增量来减少转换和加载时间。通过保留在上一次作业运行中提取的数据的副本,并通过表比较转换来计算增量,可以实现这一点。然后您可以将变换仅应用于增量。这个博客描述了一个解决方案,围绕着这个方法中的两个潜在瓶颈:

完整的提取时间与源数据的大小有关,记录的数量乘以记录的大小。后者越大(多列和宽列),提取数据所需的时间就越长。在表\u比较转换中花费的时间(确保始终对输入数据进行排序,并将转换中的比较方法设置为已排序的输入!)可能会抵消转换和加载简化数据集所获得的利润。列越多,比较过程运行的时间就越长。

这两个问题都可以通过使用哈希函数来解决。下面的示例适用于SAP HANA,大数据质量,但可以应用于任何具有内置哈希函数或能够调用外部哈希函数的数据库

在HANA中创建两个表,首先:

CHECKSUM_MINUS1,以包含上一次作业运行的校验和。该表有两列,一列用于主键,另一列用于记录的哈希值。校验和,包含当前作业运行的相同数据。

创建第一个数据流,将上一次运行的校验和复制到校验和\u MINUS1:

由于两个表位于同一数据库中,云机服务器,完整逻辑被推送到HANA,执行几乎立即终止。

创建第二个数据流,计算校验和。使用SQL转换作为源:

打开SQL–转换编辑器。输入SQL文本:

Column PKCOL是MY\u SOURCE\u表的主键列,该表有几个附加的numeric、date和varchar列。

然后选择Update schema按钮。关闭编辑器窗口。

SQL转换阻止完全SQL下推到HANA,因此所有数据都通过SAP data Services内存。由于数据大小相对较小(仅2列),与完整的源表大小相比,关于大数据,性能提高可能会很高。

创建第三个数据流以计算增量:

表比较将输入数据与校验和\u减1(当前到上一个数据集)进行比较。

映射操作将所有输入行类型映射为正常。并在附加列中注册操作类型。

因为只有一个比较列,所以操作也会运行得更快。

当您按顺序运行3个数据流时,增量表将包含所有新记录、更新记录和删除记录的主键列,根据操作类型。

您现在可以加入DELTA和MY\ u SOURCE\表来限制输入数据集的大小。对该子集应用必要的变换。并使用Map\u CDC\u操作最终将结果应用于目标