Azure Data Factory Switch块中如何匹配通配符间字符选择分支
Azure Data Factory Switch块表达式实现方案
核心逻辑表达式
Switch块的判断表达式需根据sourcetablename内容返回对应分支标识,直接用contains结合嵌套if即可实现需求:
@if(contains(activity('GetTablesToLoad').output.first().SourceTableName, '{FromDate}'), 'PipeA', if(contains(activity('GetTablesToLoad').output.first().SourceTableName, '{passinid}'), 'PipeB', 'PipeC'))
表达式说明
- 优先判断字符串是否包含
{FromDate},满足则返回PipeA,对应跳转至管道A - 不满足则进入第二层判断,检查是否包含
{passinid},满足则返回PipeB,对应跳转至管道B - 上述条件都不满足时返回
PipeC,对应跳转至管道C
Switch分支配置
- 添加分支1:值填写
PipeA,关联管道A - 添加分支2:值填写
PipeB,关联管道B - 使用默认分支处理剩余情况,关联管道C
补充:提取占位符的ADF表达式(对应SQL逻辑)
如果需要像SQL示例那样提取{}包裹的内容,ADF中用indexOf替代CHARINDEX,实现如下:
@substring( activity('GetTablesToLoad').output.first().SourceTableName, indexOf(activity('GetTablesToLoad').output.first().SourceTableName, '{'), add( sub( indexOf(activity('GetTablesToLoad').output.first().SourceTableName, '}'), indexOf(activity('GetTablesToLoad').output.first().SourceTableName, '{') ), 1 ) )
该表达式会从sourcetablename中提取第一个{}包裹的内容(比如示例中的{passinid})。
内容的提问来源于stack exchange,提问作者user3735855
相关产品推荐
相关产品推荐

