Compartir a través de

映射数据流中的透视转换

适用于:Azure 数据工厂 Azure Synapse Analytics

数据流在 Azure 数据工厂和 Azure Synapse 管道中均可用。 本文适用于映射数据流。 如果不熟悉转换,请参阅介绍性文章使用映射数据流转换数据

借助透视转换,可根据单个列的唯一行值创建多个列。 透视是一种聚合转换,需选择分组依据列并使用聚合函数生成透视键。

配置

透视转换需要三种不同的输入:分组依据列、透视键以及如何生成已透视列

Group by

Group by 选项

选择要在其基础上聚合已透视列的列。 输出数据会将所有具有相同分组依据值的行分组为一行。 在已透视列中完成的聚合将在每个组上进行。

本部分为可选。 如果未选择分组依据列,则将聚合整个数据流,并且仅输出一行。

透视键

透视键

透视键是将其行值透视到新列的列。 默认情况下,透视转换将为每个唯一的行值创建一个新列。

在标有“值”的部分中,可以输入要透视的特定行值。 将仅透视在此部分中输入的行值。 启用“Null 值”将为列中的 Null 值创建一个已透视列。

已透视列

已透视列

对于变成列的每个唯一透视键值,将为每个组生成一个聚合的行值。 你可以为每个透视键创建多个列。 每个透视列必须至少包含一个聚合函数

列名称模式: 选择如何格式化每个透视列的列名称。 输出的列名称将为透视键值、列前缀和可选前缀、后缀、中间字符的组合。

列排列方式: 如果为每个透视键生成多个透视列,请选择所需的列排序方式。

列前缀: 如果为每个透视键生成多个透视列,请为每一列输入一个列前缀。 如果只有一个已透视列,则此设置是可选的。

帮助图形

以下帮助图形显示了不同透视组件之间的交互方式

透视帮助图形

透视元数据

如果未在透视键配置中指定任何值,则将在运行时动态生成已透视列。 已透视列的数量将等于唯一透视列值的数量乘以透视列的数量。 由于该数字可能会不断变化,因此 UX 不会在“检查”选项卡中显示列元数据,并且不会进行列传播。 若要转换这些列,请使用映射数据流的列模式功能。

如果设置了特定的透视列值,则已透视列将出现在元数据中。 “检查”和“接收器映射”中将提供列名称。

根据偏移列生成元数据

透视基于行值动态生成新的列名称。 可以将这些新列添加到元数据中,以便稍后在数据流中引用。 为此,请使用数据预览中的映射偏移列快速操作。

透视列

接收已透视列

尽管已透视列是动态的,但仍可以将它们写入目标数据存储中。 在接收器设置中启用“允许架构偏差”。 这将允许你写入未包含在元数据中的列。 列元数据中不会显示新的动态名称,但是架构偏差选项允许你移入数据。

重新联接原始字段

透视转换仅投影分组依据列和已透视列。 如果希望输出数据包含其他输入列,请使用自联接模式。

数据流脚本

语法

<incomingStreamName>
    pivot(groupBy(Tm),
        pivotBy(<pivotKeyColumn, [<specifiedColumnName1>,...,<specifiedColumnNameN>]),
        <pivotColumnPrefix> = <pivotedColumnValue>,
        columnNaming: '< prefix >< $N | $V ><middle >< $N | $V >< suffix >',
        lateral: { 'true' | 'false'}
    ) ~> <pivotTransformationName

示例

配置部分中显示的屏幕具有以下数据流脚本:

BasketballPlayerStats pivot(groupBy(Tm),
    pivotBy(Pos),
    {} = count(),
    columnNaming: '$V$N count',
    lateral: true) ~> PivotExample

尝试使用逆透视转换将列值转换为行值。