【问题标题】:Azure Data Factory - Date Expression in component 'derived column' for last 7 DaysAzure 数据工厂 - 组件“派生列”中过去 7 天的日期表达式
【发布时间】:2020-10-22 18:20:59
【问题描述】:

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

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

现在,我面临在组件 DerivedColumn 中编写表达式的挑战。我已经设法用表达式找到了 7 天前的日期:

总而言之,这个想法是在目标表中加载 last_7_days 列,如果日期 >= 当前日期 - 间隔 7 天和日期

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

【问题讨论】:

  • 我用过案例( date == currentDate(),1, date >= subDays(currentDate(),7),1, date currentDate(),0) 作为表达式值。但是我认为应该有另一种优雅的方式。
  • 不,没有。为了实现我们的要求,Data Flow 表达式可以很复杂。它可能包含许多函数。 case() 功能是最适合您的。

标签: date expression azure-data-factory-2 azure-data-factory-pipeline


【解决方案1】:

您目前使用下面的表达方式:

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

如果我们是你,我们也会选择 case() 函数来构建表达式。

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

非常清晰易懂。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2022-11-18
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多