You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ADF数据流中基于多条件生成字符串数组的派生列问题

Azure Data Factory 数据流派生列解决方案

步骤1:给数据流添加管道类型参数

先在数据流里新增一个字符串类型的参数,比如pipelineType。然后在调用数据流的两个管道里,分别给这个参数传值:

  • 每日执行的管道:传'daily'
  • 每月第一个工作日执行的管道:传'monthly'

步骤2:编写派生列表达式

在派生列Frequency里用以下嵌套条件表达式,注意条件顺序要从最严格的开始判断(先判断是否是当月最后一个周五,再判断是否是周五,最后判断普通工作日):

iif($pipelineType == 'monthly',
    'monthly',
    iif(
        // 判断是否是当月最后一个周五
        dayOfWeek(lastDayOfMonth(DataRef)) <= 5 ? 
            lastDayOfMonth(DataRef) - (dayOfWeek(lastDayOfMonth(DataRef)) - 5) : 
            lastDayOfMonth(DataRef) - (dayOfWeek(lastDayOfMonth(DataRef)) + 2)
        == DataRef,
        'daily | weekly | monthly',
        iif(
            // 判断是否是周五(ADF中dayOfWeek周日=0,周五=5)
            dayOfWeek(DataRef) == 5,
            'daily | weekly',
            // 普通工作日
            'daily'
        )
    )
)

表达式逻辑拆解

  • 当月最后一个周五的计算:先取当月最后一天,再根据最后一天的星期数调整:
    • 如果最后一天是周五及之前(周数≤5),直接减去(最后一天周数-5)天,得到当月最后一个周五
    • 如果最后一天是周六(6)或周日(0),则减去(周数+2)天,比如最后一天是周日(0),减2天就是周五
  • 条件顺序必须从特殊到普通,否则会出现前面的条件覆盖后面的情况(比如先判断普通工作日,周五的条件就不会触发)

验证示例

  • DataRef为2023-07-14(周五):匹配周五条件,返回daily | weekly
  • DataRef为2023-06-30(6月最后一个周五):匹配最后一个周五条件,返回daily | weekly | monthly
  • 每日管道中的普通工作日(周一到周四):返回daily
  • 每月管道中的所有数据:返回monthly

内容的提问来源于stack exchange,提问作者fabio.sitzia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:33:12