如何解决如何使用 Salesforce 作为 Azure 数据工厂中的源创建增量负载?
有什么办法可以从上次处理的文件中获取上次修改日期的最大值并将其存储在配置表中
解决方法
从 Supported data stores and formats 您可以看到支持 Salesforce、Salesforce 服务云和营销云。
您必须执行以下步骤:
- 准备数据存储以存储水印值。
- 创建数据工厂。
- 创建链接服务。
- 创建源、接收器和水印数据集。
- 创建管道。
- 运行管道。
按照 this 在 Azure 数据工厂中使用 Salesforce 设置链接服务
从 Salesforce 复制数据时,您可以使用 SOQL 查询或 SQL 查询。请注意,这两者具有不同的语法和功能支持,请勿混用。建议您使用 Salesforce 原生支持的 SOQL 查询。
通过水印对数据进行增量加载或增量加载的过程:
在这种情况下,您在源数据库中定义水印。水印是具有上次更新时间戳或递增键的列。增量加载解决方案在旧水印和新水印之间加载更改的数据。此方法的工作流程如下图所示:
ADF 将扫描源存储中的所有文件,按其 LastModifiedDate 应用文件过滤器,并且仅将自上次以来的新文件和更新文件复制到目标存储。
有关功能、先决条件和 Salesforce 请求限制,请参阅 Copy data from and to Salesforce by using Azure Data Factory
请参阅文档:Delta copy from a database with a control table 本文介绍了一个模板,该模板可用于通过使用存储高水印值的外部控制表将新行或更新行从数据库表增量加载到 Azure。
此模板要求源数据库的架构包含时间戳列或递增键以标识新行或更新行。
模板包含四个活动:
- Lookup 检索存储在外部控制表中的旧高水印值。
- 另一个查找活动从源数据库中检索当前的高水印值。
- Copy 仅将更改从源数据库复制到目标存储。标识源数据库中更改的查询类似于“SELECT * FROM Data_Source_Table WHERE TIMESTAMP_Column > “last high-watermark” and TIMESTAMP_Column
- StoredProcedure 将当前的高水印值写入外部控制表,以便下次进行增量复制。
转到来自数据库的增量副本模板。创建到要从中复制数据的源数据库的新连接。
创建与您创建的外部控制表和存储过程的连接,然后选择使用此模板。
选择可用的管道
对于存储过程名称,选择[dbo].[update_watermark]。选择导入参数,然后选择添加动态内容。
点击添加动态内容并输入以下查询。这将在您的水印列中获得一个最大日期,我们可以将其用于增量切片。
您可以使用此查询从上次处理的文件中获取上次修改日期的最大值
select MAX(LastModifytime) as NewWatermarkvalue from data_source_table"
或
仅对于文件,您可以使用 Incrementally copy new and changed files based on LastModifiedDate by using the Copy Data tool
参考:来源:ADF Incremental loading with configuration stored in a table
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。