Azure数据工厂-最近7天组件“派生列”中的日期表达式

问题描述

@H_404_0@我对Azure数据工厂非常陌生。我使用相同的源表和目标表创建了一个简单的管道。管道应该从源表中获取date列,将表达式应用于源表中的列date(数据类型为date,如下模式所示),并且如果日期在last 7 days或0,否则在last_7_days列中(如架构中所示)。

pipeline

@H_404_0@源表和目标表的架构如下所示:

schema source and target

@H_404_0@现在,我面临着在组件DerivedColumn中编写表达式的挑战。我设法找到了7天前的日期,其表达式为:

enter image description here

@H_404_0@总的来说,这个想法是如果日期> =当前日期-间隔7天和日期

@H_404_0@仅需了解更多信息:源/目标表的列日期是静态的,从2020年到2030年为10年,格式为yyyy-mm-dd。 ETL应该每天运行,并且只能将值1设置为最后7天:从当前日期开始回溯的last_7_days列。其他条目必须接收值0。

解决方法

您当前使用以下表达式:

case ( date == currentDate(),1,date >= subDays(currentDate(),7),date <subDays(currentDate(),7,date > currentDate(),0) 

如果我们是您,我们还将选择case()函数来构建表达式。

关于您在评论中提出的问题,恐怕不存在,这没有别的优雅方法。为了实现我们的要求,数据流表达式可能很复杂。它可能包含许多功能。 case()功能是最适合您的功能。 enter image description here

它非常清晰易懂。