如何从Azure SQL存储过程获取日期字符串并赋值给ADF管道变量
Azure Data Factory 调用Azure SQL存储过程获取输出参数完整实现方案
前置:存储过程修正
你现有存储过程存在变量名笔误,修正后确保可正常返回包含startDate、endDate字段的单行结果集即可,参考代码:
CREATE PROCEDURE dbo.SP_DEDUCE_START_DATE_END_DATE @inputDateTimeString NVARCHAR(MAX) NULL, @startDate NVARCHAR(MAX) NULL OUT, @endDate NVARCHAR(MAX) NULL OUT AS BEGIN -- 此处为你的业务逻辑,用于计算@startDate和@endDate的取值 -- 示例逻辑仅作演示,可替换为你的实际计算逻辑 SET @startDate = DATEADD(DAY,-7,CAST(@inputDateTimeString AS DATETIME)) SET @endDate = CAST(@inputDateTimeString AS DATETIME) -- 返回单行结果集供ADF Lookup活动读取 SELECT @inputDateTimeString AS inputDateTime, @startDate AS startDate, @endDate AS endDate RETURN; END GO
步骤1:定义ADF管道变量
进入目标ADF管道的「变量」配置页,新增两个字符串类型变量:
START_DATE:默认值留空END_DATE:默认值留空
步骤2:配置Lookup活动读取存储过程返回值
Lookup活动是ADF中获取存储过程返回结果的标准方案,配置方式如下:
- 关联你对应的Azure SQL数据库链接服务
- 查询类型选择「存储过程」,选中
dbo.SP_DEDUCE_START_DATE_END_DATE - 在参数区域填入输入参数
@inputDateTimeString的取值,可根据业务需求填写静态值,或通过动态表达式引用管道参数、其他变量取值 - 勾选Lookup活动配置页的「仅返回第一行」选项
步骤3:给管道变量赋值
在Lookup活动的成功依赖节点后,新增两个「设置变量」活动:
- 第一个设置变量活动选择变量
START_DATE,值的动态表达式为:@activity('<替换为你的Lookup活动名称>').output.firstRow.startDate - 第二个设置变量活动选择变量
END_DATE,值的动态表达式为:@activity('<替换为你的Lookup活动名称>').output.firstRow.endDate
步骤4:将变量传入下游数据流
- 打开目标数据流,在数据流的参数配置页新增两个字符串类型参数,例如命名为
INPUT_START_DATE、INPUT_END_DATE - 回到管道的数据流活动配置页,找到参数配置区域,将两个数据流参数分别绑定为管道变量:
INPUT_START_DATE:@variables('START_DATE')INPUT_END_DATE:@variables('END_DATE')
注意事项
- 存储过程中不要输出多余的SELECT结果集,确保仅返回包含
startDate、endDate字段的单行结果,避免Lookup取值错误 - 如果有特殊日期格式要求,建议在存储过程中完成格式化后再返回,减少ADF侧的格式转换处理
内容的提问来源于stack exchange,提问作者ray
相关产品推荐
相关产品推荐

