透视转换
更新日期: 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,以指示将数量值放入透视列。
将转换输出设置为包含六个列。这些列可以使用**“高级编辑器”**对话框进行添加,分别命名为 Cust、Ham、Soda、Milk、Beer 和 Chips。将 Ham 列的 PivotKeyValue 属性设置为 Ham,以指示转换应在输入列中查找该值。同样,将 Soda 列的 PivotKeyValue 属性设置为 Soda,依此类推。
然后将转换输入中的列映射到输出中的列。
将 Cust 列的 SourceColumn 属性配置为使用 Cust 输入列的沿袭标识符。将 Ham、Soda、Milk、Beer 和 Chips 各列的 SourceColumn 属性配置为使用 Qty 输入列的沿袭标识符。进行此配置的另一种方法是将 Ham、Soda、Milk、Beer 和 Chips 各列的 SourceColumn 属性设置为 -1,这将插入 True 值而非数据值。例如,这样 Beer 列就不会包含值 12 和 24 而是包含值 True,以便仅指示该客户购买了产品,但不显示购买数量。
转换输出中的行包含来自 Cust 和 Qty 输入列的值。
透视选项
请设置输入列的 PivotUsage 属性,以指定每列在透视过程中承担的角色。PivotUsage 的有效值是 0、1、2 和 3。
下表对 PivotUsage 选项进行了说明:
选项 | 说明 |
---|---|
0 |
此列未经透视,将列值传递到转换输出。 |
1 |
此列为设置键的一部分,该设置键将一行或多行标识为一个集的组成部分。将所有具有同一设置键的输入行组合到一个输出行。 |
2 |
列为透视列。从每个列值至少创建一列。 |
3 |
将来自此列的值放入作为透视的结果而创建的列中。 |
配置透视转换
可以通过 SSIS 设计器或以编程方式来设置属性。
有关可以在**“高级编辑器”**对话框中或以编程方式设置的属性的详细信息,请单击下列主题之一:
有关如何设置属性的详细信息,请单击下列主题之一:
请参阅
概念
逆透视转换
创建包数据流
Integration Services 转换
帮助和信息
更改历史记录
版本 | 历史记录 |
---|---|
2006 年 4 月 14 日 |
|
2005 年 12 月 5 日 |
|