有什么方法可以从上次处理的文件中获取上次修改日期的最大值并将其存储在配置表中
最佳答案
来自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。
此模板要求源数据库的架构包含时间戳列或递增键来识别新行或更新行。
该模板包含四个事件:
- 查找检索存储在外部控制表中的旧高水位线值。
- 另一个查找事件从源数据库中检索当前的高水位线值。
- 复制仅将更改从源数据库复制到目标存储。标识源数据库中更改的查询类似于“SELECT * FROM Data_Source_Table WHERE TIMESTAMP_Column > “last high-watermark” and TIMESTAMP_Column <= “current high-watermark””。
- 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
关于azure - 如何在 Azure 数据工厂中以 Salesforce 作为源创建增量负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68301713/