azure ADF:具有多个(true)条件的派生列返回字符串数组

ne5o7dgx  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(84)

我在数据工厂数据流中遇到以下问题:我有两个提取数据的管道:平日每日一次,每月第一个工作日一次。在数据流中,我想插入一个派生列“Frequency”,它基于“DataRef”列中的日期值,分配一个预定义的字符串数组(以“|')根据此逻辑的值:

  • 如果它在每日执行流水线中执行并且DataRef是工作日,则“每日”;
  • 如果今天是星期五,那就每天|每周';
  • 如果是这个月的最后一个星期五|周报|monthly”。
  • 如果在每月执行管道中运行,则所有数据都将具有“每月”频率和值

现在我尝试了这个表达式(第三个条件没有实现),但显然只有第一个条件得到了验证
x1c 0d1x的数据
这是返回的结果



但我希望,例如,其中DateRef是2023-07-14(星期五),频率“每日|每周”,或其中DateRef为2023-06-30(2023年6月的最后一个星期五),“频率”每天|周报|monthly”。
有什么建议吗?

kh212irz

kh212irz1#

使用下面的表达式来实现结果。

toString(
    concat(
        iif(instr($pipelineName,'Monthly')!=0,'monthly',iif(dayOfWeek(DateRef) >=2 || dayOfWeek(DateRef) <=6, "daily",''))
        ,iif(instr($pipelineName,'Daily')!=0 && (dayOfWeek(DateRef) == 6),' | weekly',''),iif(instr($pipelineName,'Daily')!=0 && dayOfWeek(DateRef) ==6 && (minus(dayOfMonth(lastDayOfMonth(DateRef)),dayOfMonth(DateRef))<=6),' | monthly','')
    )
)

字符串


的数据

管道名称为"Daily"时的结果


管道名称为Monthly时的结果:


相关问题