透视转换

更新日期: 2006 年 4 月 14 日

通过透视列值的输入数据,透视转换将规范化的数据集转变成规范化程度稍低、但更为简洁的版本。例如,在列有客户名称、产品和购买数量的规范的 Orders 数据集中,任何购买多种产品的客户都有多行,每一行显示一种产品的详细订购信息。此时,如果对产品列透视数据集,透视转换可以输出每个客户只有一行的数据集。这一行列出该客户购买的所有产品,产品名称显示为列名,而数量则显示为产品列的值。并非每个客户都购买所有产品,所以很多列可能包含空值。

透视数据集时,输入列在透视过程中扮演不同的角色。列可以按以下方式参与:

  • 将列原封不动地传递到输出。因为有许多输入行只能产生一个输出行,所以转换只复制列的第一个输入值。
  • 列作为一组记录的标识键或标识键的一部分。
  • 列定义透视。此列中的值与已透视数据集中的列相关联。
  • 列包含置于透视所创建的列中的值。

下面的关系图显示对 Product 列透视数据之前的数据集。

透视后的数据集

下面的关系图显示对 Product 列透视数据之后的数据集。

透视前的数据集

若要高效地透视数据,即在输出数据集中创建尽可能少的记录,就必须对透视列的输入数据进行排序。如果数据未经排序,那么透视转换就可能为设置键(即定义集成员关系的列)中的每个值生成多个记录。例如,如果对 Name 列透视数据集,但是没有对名称排序,则每个客户在输出数据集中可能有多行,因为 Name 中的值每次更改都会发生透视。

输入数据可能包含重复行,这会导致透视转换失败。“重复行”表示在设置键列和透视列中具有相同值的行。例如,如果在 Product 列中透视数据之前使用该数据集(如关系图中所示),并添加 Cust 列为 Kate、Product 列为 Soda 的一行,则无论 Qty 列中的数量为何值,这些重复行都将导致透视转换失败。为了避免失败,可以将转换配置为将错误行重定向到错误输出或预先聚合值,以确保不存在重复行。例如,在示例数据集中,可以按客户和产品对 Qty 列中的值求和。

透视转换使用其输入列和输出列的属性来定义透视操作。

透视转换包括 PivotKeyValue 自定义属性。加载包时,可以通过属性表达式更新此属性。有关详细信息,请参阅 Integration Services 表达式参考在包中使用属性表达式Transformation Custom Properties

此转换有一个输入、一个常规输出和一个错误输出。

配置示例数据集

关系图中显示的示例数据集的具体配置如下:将 Cust 列的 PivotUsage 属性设置为 1,以指示这是设置键列;将 Product 输入列的 PivotUsage 属性设置为 2,以指示必须为每个产品创建一列;将 Qty 输入列的 PivotUsage 属性设置为 3,以指示将数量值放入透视列。

将转换输出设置为包含六个列。这些列可以使用**“高级编辑器”**对话框进行添加,分别命名为 CustHamSodaMilkBeerChips。将 Ham 列的 PivotKeyValue 属性设置为 Ham,以指示转换应在输入列中查找该值。同样,将 Soda 列的 PivotKeyValue 属性设置为 Soda,依此类推。

然后将转换输入中的列映射到输出中的列。

Cust 列的 SourceColumn 属性配置为使用 Cust 输入列的沿袭标识符。将 HamSodaMilkBeerChips 各列的 SourceColumn 属性配置为使用 Qty 输入列的沿袭标识符。进行此配置的另一种方法是将 HamSodaMilkBeerChips 各列的 SourceColumn 属性设置为 -1,这将插入 True 值而非数据值。例如,这样 Beer 列就不会包含值 12 和 24 而是包含值 True,以便仅指示该客户购买了产品,但不显示购买数量。

转换输出中的行包含来自 CustQty 输入列的值。

透视选项

请设置输入列的 PivotUsage 属性,以指定每列在透视过程中承担的角色。PivotUsage 的有效值是 0、1、2 和 3。

下表对 PivotUsage 选项进行了说明:

选项 说明

0

此列未经透视,将列值传递到转换输出。

1

此列为设置键的一部分,该设置键将一行或多行标识为一个集的组成部分。将所有具有同一设置键的输入行组合到一个输出行。

2

列为透视列。从每个列值至少创建一列。

3

将来自此列的值放入作为透视的结果而创建的列中。

配置透视转换

可以通过 SSIS 设计器或以编程方式来设置属性。

有关可以在**“高级编辑器”**对话框中或以编程方式设置的属性的详细信息,请单击下列主题之一:

有关如何设置属性的详细信息,请单击下列主题之一:

请参阅

概念

逆透视转换
创建包数据流
Integration Services 转换

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2006 年 4 月 14 日

新增内容:
  • 添加了有关如何标识和处理转换输入中的重复行的信息。

2005 年 12 月 5 日

新增内容:
  • 添加了有关在 PivotKeyValue 自定义属性中使用属性表达式的信息。