【问题标题】:Expression for last non Null Value or Null Value in Database Table Column with Azure Data Factory使用 Azure 数据工厂的数据库表列中最后一个非空值或空值的表达式
【发布时间】:2020-12-11 10:12:41
【问题描述】:

我有一个如下所示的数据库表:

Date             Type
2020-01-01       non_empty_date
2020-01-02       non_empty_date
1900-01-01       with_1900
2020-01-03       nom_empty_date
NULL             
NULL             

预期的输出是这样的:

Date             Type
2020-01-01       non_empty_date
2020-01-02       non_empty_date
1900-01-01       with_1900
2020-01-03       non_empty_date
NULL             Null_comes_After_non_empty_date
NULL             Null_comes_After_empty_date

逻辑是这样的:

  1. 如果日期列不为空,请输入 non_empty_date
  2. 例外:如果日期列是 1900-01-01,请给出 with_1900
  3. 如果日期列是 Null 并且在非空日期之后给出 'Null_Comes_After_non_empty_date'
  4. 如果日期列是 Null 并且在空日期之后给出“Null_Comes_After_empty_date”

到目前为止,我尝试在表达式构建器中定义类型:

case (
Date == toDate(toString('1900-01-01')),'with_1900',
!isNull(Date), 'non_empty_date'
)

我很困惑,应该写什么表达式来为 3) 和 4) 赋值。

感谢任何帮助或任何建议。非常感谢!

【问题讨论】:

  • 我们可以在这些行中添加循环行号并根据行号生成新列吗?或者这些行是不规则的,所以我们不能这样做。
  • 首先约瑟夫,非常感谢你的回答。行不规则。它可以是任何东西。但我很欣赏任何解决方案:) 请让我知道你的想法。

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


【解决方案1】:

您的逻辑基于上一行的值。为此,请使用 Window 转换,该转换设置为使用 Range by 1 row behind 来回顾前一行的值。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2020-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多