如何通过Azure Data Factory从ADLS的CSV取单行数据并执行SQL删除操作?
Azure Data Factory 实现方案
1. 从ADLS的CSV文件获取单行数据
可以实现,常用两种方式:
- Lookup活动:配置ADLS Gen2链接服务和CSV数据集(开启“第一行作为表头”),在Lookup活动设置中把“Top count”设为1,即可获取CSV第一行数据;若需按条件筛选单行,可在“查询”栏输入类似
SELECT * FROM your_csv WHERE [column_name] = 'target_value'的语句(需确保数据集启用SQL查询功能)。 - 数据流活动:在数据流中添加“源”组件指向ADLS的CSV,添加“筛选”组件设置匹配条件(如
rowNumber() == 1取第一行,或特定业务条件),最后用“接收器”输出单行数据,或通过“聚合”组件提取目标行。
2. 提取时间戳并执行Azure SQL DB删除查询
按以下步骤实现:
步骤1:提取CSV中的'created on'时间戳
用Lookup活动读取目标CSV,配置同上述方式,通过Top count或筛选查询获取目标行数据。将Lookup活动的输出结果(如@{activity('LookupCSV').output.firstRow['created on']})存入字符串变量(如TimestampVar),若时间格式不匹配SQL要求,可使用formatDateTime()函数转换,示例:
@{formatDateTime(activity('LookupCSV').output.firstRow['created on'], 'yyyy-MM-dd HH:mm:ss')}
步骤2:执行删除SQL查询
添加Execute SQL活动,配置Azure SQL DB链接服务,在“SQL查询”栏输入动态SQL语句(列名含空格需用方括号包裹):
DELETE FROM your_table WHERE [created on] = '@{variables('TimestampVar')}'
若SQL中created on为datetime类型,需确保变量时间格式与数据库存储格式一致,避免转换错误。
注意事项
- 确保ADLS链接服务有CSV文件读取权限,SQL链接服务有目标表的删除权限。
- 若CSV存在多行匹配时间戳,可调整Lookup查询逻辑,或在数据流中聚合所有目标时间戳,再通过批量删除语句执行。
内容的提问来源于stack exchange,提问作者PAVAN
相关产品推荐
相关产品推荐

