Power BI将列转换为行

时间:2019-08-22 13:10:59

标签: powerbi

所以我有一个Excel文件,其中第一列是捐赠者,然后有成对的列,分别代表10年的金额和日期,如下所示:

Donor Name    2019 Amt  2019 Date 2018 Amt  2018 Date 2017 Amt  2017 Date
------------- -------- ---------- -------- ---------- -------- ----------
Someone Here        50 08/21/2019
Someone Else       150 06/15/2019       75 05/04/2018
Another One                                                125 03/03/2017

我正在寻找的是:

Donor Name   Amount       Date
------------ ------ ----------
Someone Here     50 08/21/2019
Someone Else    150 06/15/2019
Someone Else     75 05/04/2018
Another One     125 03/03/2017

当我只取消透视Donor名称以外的列时,我会为每个条目获得成对的记录。它更接近我要寻找的内容,但不确定如何将其转换为上面的内容。也许轮换不是答案?

1 个答案:

答案 0 :(得分:1)

您需要取消透视这些列,然后将其向后旋转。

1)取消Donor Name

= Table.UnpivotOtherColumns(#"Changed Type", {"Donor Name   "}, "Attribute", "Value")

enter image description here

2)用空格分隔符或前4个字符分隔Attribute列(稍后需要年份值)。确保标头名称中没有开头或结尾空格。

= Table.SplitColumn(#"Unpivoted Other Columns", "Attribute",
                    Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv),
                    {"Attribute.1", "Attribute.2", "Attribute.3"})

enter image description here

3)删除Attribute.3列,但保留Attribute.1列,以防同一捐赠者的数据跨越数年(在本示例中为Someone Else

= Table.RemoveColumns(#"Split Column by Delimiter",{"Attribute.3"})

enter image description here

4)向后旋转。根据{{​​1}}

旋转Attribute.2
Value

enter image description here

5)(可选)= Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Attribute.2]), "Attribute.2", "Value") 列,该列包含年份信息,现在可以根据需要删除

Attribute.1

enter image description here