Azure Data Factory V2将Compression type枚举设为参数实现压缩开关咨询
可行实现方案
方案1:动态构造Compression节点(最常用)
你可以直接在数据集JSON的compression属性位置传入条件表达式,根据参数值动态返回空对象(对应关闭压缩)或带压缩配置的对象,不需要拆分Type和Level单独传参:
- 首先在pipeline或数据集层面定义两个参数:
compressionType:字符串类型,默认值设置为NonecompressionLevel:字符串类型,默认值可设为Optimal/Fastest等常用级别
- 把数据集JSON中compression字段替换为如下表达式:
"compression": "@if( equals(pipeline().parameters.compressionType, 'None'), json('{}'), json(concat( '{\"type\": \"', pipeline().parameters.compressionType, '\", \"level\": \"', pipeline().parameters.compressionLevel, '\"}' )) )"
这里用json('{}')直接返回空对象,对应压缩关闭的状态,完全匹配平台要求的None配置。
方案2:条件分支匹配数据集(适合压缩配置固定的场景)
如果你的压缩可选类型很少,可以提前准备两套Sink数据集:
- 无压缩的通用Sink数据集
- 支持压缩参数的Sink数据集
在pipeline中新增If条件活动,判断compressionType是否为None: - 条件为真时,走无压缩数据集的复制活动
- 条件为假时,走带压缩参数的复制活动
验证注意事项
- 配置完成后可以先跑Debug测试,分别传入
None、Gzip、Snappy等不同参数值,检查输出文件的压缩状态是否符合预期 - 主流数据集成平台(如ADF等)不需要额外修改复制活动的其他配置,动态构造的compression节点会被平台正常识别
内容的提问来源于stack exchange,提问作者kerray
相关产品推荐
相关产品推荐

