You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ADF仅在ActualTime等于Timestamp时复制Azure表存储数据?

实现Azure Data Factory按字段匹配复制Azure表存储数据

核心思路

要实现仅当Table1的ActualTime与Table2的TimeStamp值相等时复制数据,可通过两种落地方式:一是用查找活动+筛选活动精准定位匹配行后复制;二是直接在复制活动的源端配置筛选查询,一步完成条件匹配与复制。以下是具体实现步骤:


方案一:Lookup+Filter+Copy组合实现精准匹配

1. 配置Azure表存储链接服务

先在ADF中创建两个链接服务,分别关联Table1和Table2所在的Azure存储账户,确保ADF拥有访问这两个表的权限。

2. 用Lookup活动获取Table2的匹配基准数据

添加Lookup活动,数据源选择Table2,设置查询语句提取用于匹配的核心字段:

PartitionKey, RowKey, TimeStamp FROM Table2

该活动会返回Table2中所有行的主键与时间戳数据,作为后续匹配的基准。

3. 用Filter活动筛选Table1的符合条件行

再添加一个Lookup活动获取Table1的全量数据(或先通过PartitionKey缩小范围),接着添加Filter活动,设置筛选条件为:
@equals(item().ActualTime, activity('Lookup_Table2').output.value[0].TimeStamp)
如果Table2有多行需要匹配,可嵌套ForEach活动遍历处理每一条基准数据。

4. 执行复制活动

将Filter活动输出的符合条件数据集作为复制活动的源,目标设置为Table2,按需配置写入行为(追加/覆盖等),运行管道即可完成复制。


方案二:直接在复制活动源端配置筛选查询

如果仅需复制Table1中与Table2时间戳匹配的行,可直接在复制活动的源端通过查询语句实现筛选:

1. 配置复制活动源端查询

在复制活动的源设置中选择Table1,在查询字段输入OData格式的筛选语句,示例:

$filter=ActualTime eq (select top 1 TimeStamp from Table2 where PartitionKey eq '1234' and RowKey eq '1111')

若需批量匹配所有符合条件的行,可结合ADF表达式动态拼接查询条件,或通过PartitionKey先分区缩小查询范围。

2. 配置复制活动目标

目标选择Table2,设置合适的写入规则后,运行管道即可完成带条件的复制。


关键注意事项

  • 确保两个表的时间字段格式完全一致(如统一为ISO 8601格式),避免因格式差异导致匹配失败。
  • 数据量较大时,优先通过PartitionKey分区筛选,减少查询范围以提升性能。
  • 若需定时执行,可为管道添加触发器设置执行频率。

内容的提问来源于stack exchange,提问作者Jen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 09:07:20