0

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

源表和目标表的架构如下所示: 模式源和目标

现在,我面临在组件 DerivedColumn 中编写表达式的挑战。我设法用表达式找出了 7 天前的日期:在此处输入图像描述

总之,这个想法是在目标表中加载 last_7_days 列,如果日期 >= 当前日期 - 间隔 7 天和日期 <= 当前日期,如 SQL 中的值“1”。如果有人可以帮助我,我将不胜感激任何提示和建议。如果您需要更多信息,请告诉我。

仅供参考:源/目标表列日期是静态的,从 2020 年到 2030 年的 10 年日期为 yyyy-mm-dd 格式。ETL 应该每天运行,并且仅将值 1 放入最后 7 天:从当前日期回顾的 last_7_days 列。其他条目必须接收值 0。

4

1 回答 1

1

您当前使用下面的表达式:

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

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

关于您在评论中的问题,恐怕没有,没有另一种优雅的方式。为了实现我们的要求,Data Flow 表达式可以很复杂。它可以由许多功能组成。case()函数是最适合您的函数。 在此处输入图像描述

它非常清晰易懂。

于 2020-10-23T01:25:36.980 回答