【问题标题】:How to get the data from previous row in Azure data factory如何从 Azure 数据工厂中的前一行获取数据
【发布时间】:2021-10-10 20:16:13
【问题描述】:

我正在 Azure 数据工厂中转换数据 我有一个包含如下数据的源文件:

ABC 代码-01
DEF
GHI
JKL 代码-02
移动运营商

我需要让接收器文件中的数据看起来像这样:

ABC 代码-01
DEF 代码-01
GHI 代码-01
JKL 代码-02
MNO 代码-02

【问题讨论】:

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


    【解决方案1】:

    您可以使用 Azure 数据工厂中提供的 Fill down 概念来实现此目的。代码 sn-p 可用here

    注意:代码 sn-p 假设您已经在数据流中添加了源转换。

    步骤:

    1. 添加 source 并将其与源文件链接(我已使用您的示例数据生成文件)。

    1. 编辑数据流脚本在右上角可用以添加代码。

    1. 如图所示,在源代码后添加代码 sn-p。

    source1 派生(dummy = 1) ~> DerivedColumn DerivedColumn keyGenerate(输出(sk as long), startAt: 1L) ~> SurrogateKey SurrogateKey 窗口(over(dummy), asc(sk, 真), Rating2 = coalesce(Rating, last(Rating, true()))) ~> Window1

    1. 在脚本中添加代码后,数据流产生3次变换

      一个。 派生列转换为新的虚拟列,常数为“1”

      b. SurrogateKey 转换为从值 1 开始的每一行生成 Key 值。

      c。 窗口转换以执行基于窗口的聚合。此处代码添加预定义子句last(),如果当前行值为NULL,则取上一行不是空值。

    有关窗口转换的更多信息,请参阅 - https://docs.microsoft.com/en-us/azure/data-factory/data-flow-window

    1. 由于我将值作为源中的单列获取,因此在 派生列 中添加了其他列,以将单个源列拆分并存储为 2 列。

    1. 如果列值为空白,则替换为 NULL 值。如果为空,last() 子句将不会识别为 NULL 来替换之前的值。

      case(length(dropLeft(Column_1,4)) >1, dropLeft(Column_1,4), toString(null()))

    派生列预览:Column_1是Source原始数据,dummy是代码sn-p加常数1生成的列,Column1Left & Column1Right是存储拆分后的值(Column_1 ) 原始数据。

    注意:Column1Right 空白值替换为 NULL。

    1. 在 windows 转换中

    一个。 Over – 这会根据提供的列对源数据进行分区。由于没有其他列可用作分区列,因此添加使用派生列生成的虚拟列。

    b. Sort – 根据排序列对源数据进行排序。添加代理键列以对传入的源数据进行排序。

    c。 Window Column – 在这里,仅当当前值为 Null 时,提供表达式以从先前的行中复制非 Null 值

    coalesce(Column1Right, last(Column1Right,true()))

    d。窗口变换的数据预览:这里将Column1Right数据的Null值根据Window Columns中添加的表达式替换为之前的非Null值。

    1. 第二个派生列作为单列添加到concat Column1Left 和 Column1Right。

    第二个派生列预览

    1. 添加了一个选择转换,以仅选择接收器所需的列并删除不需要的列(这是可选的)。

    1. sink填充过程后的数据输出。

    【讨论】:

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