【问题标题】:Turn 1 row into multiple rows in Azure Data Flows在 Azure 数据流中将 1 行转换为多行
【发布时间】:2021-03-27 05:18:56
【问题描述】:

我有一个数据集:

Account No P01_Ind P02_Ind P03_Ind
1 Y Y N
2 Y N Y
3 N Y N

有没有一种方法可以在 Azure 数据流中添加转换,以便根据这些指示符列将每一行变成 1 行或更多行?在此示例中,我的数据集将变为:

Account No Indicator
1 P01
1 P02
2 P01
2 P03
3 P02

我查看了 Unpivot,但看不出它如何处理这些数据。请注意,此转换后的数据集将进行进一步的转换,并且在此步骤之后不会下沉。感激地收到任何提示。谢谢。

【问题讨论】:

    标签: azure-data-factory azure-data-flow


    【解决方案1】:

    您可以使用ConditionalSplit 转换,然后通过“DerivedColumn”转换将Indicator 列添加到每个条件。最后,使用UnionSelect转换来满足你的需要。(你可以根据需要对Select转换的输出进行排序。)

    步骤:

    1. 创建一个数据集及其提供的数据。

    1. 使用ConditionalSplit 转换将数据拆分到不同的流。

    1. Indicator 列添加到每个流。

    1. 联合三流

    1. 使用“选择”转换删除 P01_Ind、P02_Ind、P03_Ind 列。

    2. Select 转换的输出进行排序。

    “排序”的数据预览:

    【讨论】:

    • 太棒了!感谢您提供如此全面且图文并茂的答案。非常感谢。
    【解决方案2】:

    这就像执行 unpivot 一样简单,它将为您获取具有 'Y'/'N' 的行作为另一列,然后过滤掉其余的 'N' 值。

    你会得到

     1 P01_Ind Y
     2 P02_Ind Y
     3 P03_Ind N
     .....
    

    下次你有 10 列而不是 3 列时,它是可扩展的。

    【讨论】:

    • 您好,请问您能提供更多详细信息吗?谢谢
    • 在数据流的 DSL 脚本编辑器中键入此内容。这是不言自明的。用输入流名称替换电影`电影 unpivot( output( Product_Name as string, Indicator as boolean ), ungroupBy(Account_No),lateral: true, ignoreNullPivots: true ) ~> unPivoted unPivoted filter( Indicator ) ~> filteredProducts `
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2014-01-10
    相关资源
    最近更新 更多