使用 Pivot 和 UnPivot 转换






4.83/5 (13投票s)
本文将以简单的方式介绍如何使用 Pivot 和 Unpivot 转换组件。
使用 Pivot 和 UnPivot 转换
目录
什么是透视(Pivoting)?
透视是一种将行转换为列的机制。在 SSIS 中,Pivot Transformation 组件可以执行相同的任务。在这篇简短的文章中,我们将通过分步方法来探讨这个转换。
透视示例
给定一个结构如下的平面文件作为数据源
Month DayOfWeek Expenses January Sunday 200 January Monday 100 January Tuesday 123 January Wednesday 154 ....................................... ....................................... April Saturday 344
该记录集应该有如下输出
完成工作的步骤
步骤 1: 打开 Bids。从可用的项目类型中选择 Integration Services Project。将一个 Dataflow Task 拖放到控制流设计器中。
步骤 2: 将一个平面文件源拖放到数据流中。在连接管理器中,指定数据源并选中 **第一数据行包含列名** 复选框。
确保“列”选项卡中的“列分隔符”设置为 Tab {t}。单击“确定”。
步骤 3: 将 Pivot transformation 拖放到数据流区域。
步骤 4: 将数据流从 Flat file Source 指定到 Pivot 组件,然后双击 Pivot 组件。Pivot 的高级编辑器将打开。
步骤 5: 单击“输入列”选项卡并选择所有列。
步骤 6: 接下来,我们需要转到“输入和输出属性”选项卡,并展开“Pivot Default Input”树。
将 Month 列的 Pivot Usage 设置为 1,DayOfWeek 设置为 2,Expenses 设置为 3。
接下来,在“Pivot Default Output”树中,我们需要创建 8 个名为 Month、Sunday、Monday、Tuesday、Wednesday、Thrusday、Friday、Sarurday 的列。
对于 Month 列,将 Source column 设置为 Input 列的 Month Column 的 Lineage ID。
接下来,对于其他 Output 列,Source column 应与 Expenses 的 Lineage ID 匹配。此后,Output 列将如下所示:
在 Sunday Output 列上,将 **PivotKeyValue** 设置为 Sunday。
同样,Monday 为 Monday,Tuesday 为 Tuesday,依此类推。完成所有这些设置后,我们需要单击“确定”按钮。
步骤 7: 添加一个 Row Sampling 并启用数据查看器。最终的包设计如下:
运行应用程序,我们将获得所需的输出。希望这个小实验能帮助我们理解如何使用 Pivot Transformation。我们可以继续使用这个强大的组件进行更复杂的转换。在下一节中,我们将研究硬币的另一面,即 UnPivot。
什么是逆透视(UnPivoting)?
如果透视意味着行到列的转换,那么逆透视就是它的反面。 在 SSIS 中,UnPivot Transformation 组件可以执行相同的任务。在这篇简短的文章中,我们将通过分步方法来探讨这个转换。
逆透视示例
给定一个结构如下的平面文件作为数据源
Month Sunday Monday Tuesday Wednesday Thrusday Friday Saturday January 200 100 123 154 50 110 600 February 400 200 523 754 450 1810 6800 March 2900 1900 1923 1954 590 1910 6900 April 800 10 12 15 5 11 60
期望的输出应该是
完成工作的步骤
遵循透视转换示例中的步骤 1 和 2。
步骤 3: 将 Pivot transformation 拖放到数据流区域。
将数据流从 Flat file Source 指定到 UnPivot 组件,然后双击 UnPivot 组件。UnPivot Transformation Editor 将打开。
步骤 4: 在 **输入列部分** 添加所有星期几的名称(即 Sunday、Monday 等)(在下图中编号为 1)。在 **目标列部分**,键入 **Expense**(在下图中编号为 2)。
注意:Pivot Key Value 列将具有与 Input 列相同的值。
在 **Pivot key value column name** 中,将 Pivot key value 指定为 Weekdays(在下图中编号为 3)。
完成设置后,我们必须单击“确定”按钮。
步骤 5: 向数据流路径添加一个 Row Sampling 并添加数据查看器。最终的包设计如下:
运行应用程序,我们将获得所需的输出。希望这个小实验能帮助我们理解如何使用 UnPivot Transformation。我们可以继续使用这个强大的组件进行更复杂的转换。
结论
Pivot 和 UnPivot 是非常有用的且不可或缺的转换。希望本文能帮助理解它们。我们还学习了如何配置这些组件,以及 Pivot 转换中 Lineage ID 的重要性等。感谢阅读本文。