【问题标题】:SSIS Convert column to rows from an excel sheetSSIS将Excel工作表中的列转换为行
【发布时间】:2017-01-24 14:31:18
【问题描述】:

我有一个结构如下的 excel 工作表:

+------------+-----+----------+----------+------------------+------------------+------------------+------------------+------------------+------------------+----------------+----------------+------------------+------------------+------------------+------------------+------------------+------------------+----------------+----------------+
|    date    | Day | StoreDdg | StoreR/H | DbgCategory1Dpt1 | R/HCategory1Dpt1 | DbgCategory2Dpt1 | R/HCategory2Dpt1 | DbgCategory3Dpt1 | R/HCategory2Dpt1 | DbgDepartment1 | R/HDepartment1 | DbgCategory1Dpt2 | R/HCategory1Dpt2 | DbgCategory2Dpt2 | R/HCategory2Dpt2 | DbgCategory3Dpt2 | R/HCategory2Dpt2 | DbgDepartment2 | R/HDepartment2 |
+------------+-----+----------+----------+------------------+------------------+------------------+------------------+------------------+------------------+----------------+----------------+------------------+------------------+------------------+------------------+------------------+------------------+----------------+----------------+
| 1-Jan-2017 | Sun |  138,894 | 133%     |              500 | 44%              |           12,420 | 146%             |                  |                  |                |         11,920 | 104%             | #DIV/0!          |           13,580 | 113%             |            9,250 | 92%              |          6,530 | 147%           |
| 2-Jan-2017 | Mon |  138,894 | 270%     |              500 | 136%             |           12,420 | 277%             |           11,920 |                  |                |                | 193%             | #DIV/0!          |           13,580 | 299%             |            9,250 | 225%             |          6,530 | 181%           |
+------------+-----+----------+----------+------------------+------------------+------------------+------------------+------------------+------------------+----------------+----------------+------------------+------------------+------------------+------------------+------------------+------------------+----------------+----------------+

我想把它转换成

+------------+-----+--------+-------------+---------------+---------+------+
|    date    | Day | Store  | Department  |   Category    |   Dpt   | R/H  |
+------------+-----+--------+-------------+---------------+---------+------+
| 1-Jan-2017 | Sun | Store1 | Department1 | Category1Dpt1 | 138,894 | 133% |
| 1-Jan-2017 | Sun | Store1 | Department1 | Category2Dpt1 |     500 | 44%  |
| 1-Jan-2017 | Sun | Store1 | Department1 | Category3Dpt1 |  12,420 | 146% |
| 1-Jan-2017 | Sun | Store1 | Department2 | Category1Dpt2 |  11,920 | 104% |
| 1-Jan-2017 | Sun | Store1 | Department2 | Category2Dpt2 |  13,580 | 44%  |
| 1-Jan-2017 | Sun | Store1 | Department2 | Category3Dpt2 |   9,250 | 92%  |
| 2-Jan-2017 | Mon | Store1 | Department1 | Category1Dpt1 | 138,894 | 270% |
| 2-Jan-2017 | Mon | Store1 | Department1 | Category2Dpt1 |     500 | 136% |
| 2-Jan-2017 | Mon | Store1 | Department1 | Category3Dpt1 |  12,420 | 277% |
| 2-Jan-2017 | Mon | Store1 | Department2 | Category1Dpt2 |  13,580 | 299% |
| 2-Jan-2017 | Mon | Store1 | Department2 | Category2Dpt2 |   9,250 | 225% |
| 2-Jan-2017 | Mon | Store1 | Department2 | Category3Dpt2 |   6,530 | 181% |
+------------+-----+--------+-------------+---------------+---------+------+

关于如何做到这一点的任何建议?

【问题讨论】:

标签: excel ssis


【解决方案1】:

您可以通过将 excel 文件作为源来执行此操作。您可能需要保存为 2005 或 2007 格式的 excel,具体取决于您使用的 Visual Studio 版本,如果它已经是 2007 格式,那么它很好。

现在提取 DbgDepartment1 和 DbgDepartment2 的数据,您可以在 DFT 中创建 2 个不同的源。在一个中,您可以选择与 DbgDepartment1 相关的列,在第二个中,您可以选择 DbgDepartment2。您可能必须使用派生列,具体取决于您将进一步使用的逻辑。那你就可以用Union Transformation了,因为源文件是一样的,可以把数据加载到目的地。试试吧,你会得到一个解决方案。

【讨论】:

    【解决方案2】:

    我使用 R 统计语言通过数据整理包(“tidyr”、“devtools”)解决了这个问题

    更多信息请查看链接:http://garrettgman.github.io/tidying/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 2020-06-03
    • 2019-09-16
    • 2017-05-12
    • 2017-08-21
    • 1970-01-01
    • 2020-08-30
    相关资源
    最近更新 更多