如何从Azure Data Factory数据流传递参数至SAP HANA CDS视图?
在Azure Data Factory数据流中向SAP HANA参数化视图传递参数的解决方案
一、确认SAP HANA视图参数有效性
你的ZBSIKTSTv视图定义符合参数化视图规范,参数p_gjahr绑定gjahr类型,过滤条件gjahr = :p_gjahr正确,无需调整。
二、配置SAP CDC数据集的参数化查询
SAP CDC数据集默认选择视图的方式无法直接传递参数,需通过自定义SQL实现:
- 打开目标SAP CDC数据集,切换到连接选项卡
- 取消直接选择视图的操作,在查询输入框中填写自定义调用语句:
SELECT * FROM ZBSIKTSTv(:p_gjahr)
- 点击页面上方的添加参数,创建数据集级参数:
- 参数名:
GJAHR - 类型:匹配SAP中
gjahr的类型(通常为字符串或整数)
- 参数名:
- 将SQL中的
:p_gjahr替换为数据集参数引用,最终SQL改为:
SELECT * FROM ZBSIKTSTv(@dataset().GJAHR)
三、在数据流活动中传递参数
- 进入DataFlow活动的数据源配置面板,选择上述配置好的SAP CDC数据集
- 在参数区域,为数据集的
GJAHR参数赋值:- 固定值:直接输入目标年份(如
'2023',注意字符串类型需加单引号) - 动态值:使用ADF表达式获取管道参数、变量或系统变量,例如
@pipeline().parameters.TargetYear或@formatDateTime(utcNow(), 'yyyy')
- 固定值:直接输入目标年份(如
四、验证与排障
- 保存所有配置后,触发测试管道,检查数据流输出是否仅包含目标年份的数据
- 若出现权限报错,确认SAP连接账号拥有该参数化视图的查询权限,以及执行自定义SQL的权限
- 若参数传递失效,检查数据集参数与数据流赋值的类型是否匹配(如字符串/整数类型不兼容)
内容的提问来源于stack exchange,提问作者Robert B
相关产品推荐
相关产品推荐

