取消透视具有多个带标题的相关行的列。 PowerQuery M语言|同时进行多个逆透视

问题描述 投票:0回答:1

我有一个表,其中的行中有多个标题,当我取消透视表时我想保留这些标题,但我找不到根据需要取消透视表的方法。 请在下面找到原始表格的示例

实际情况 实际情况 计划 计划
20 财年 20 财年 21财年 21财年
国家 业主 2020年1月1日 2020年1月1日 2020年1月1日 2020年1月1日
法国 理查德 100 150 80 160
法国 马丁 120 140 130 140
法国 皮埃尔 50 100 50 80

下面是我想要实现的目标(取消旋转 4 列,但将行中的标题保留为新列)

国家 业主 版本 年份 日期 价值
法国 理查德 实际情况 20 财年 2020年1月1日 100
法国 理查德 实际情况 21财年 2020年1月1日 150
法国 理查德 计划 20 财年 2020年1月1日 80
法国 理查德 计划 21财年 2020年1月1日 160
法国 马丁 实际情况 20 财年 2020年1月1日 120
法国 马丁 实际情况 21财年 2020年1月1日 140
法国 马丁 计划 20 财年 2020年1月1日 130
法国 马丁 计划 21财年 2020年1月1日 140
法国 皮埃尔 实际情况 20 财年 2020年1月1日 50
法国 皮埃尔 实际情况 21财年 2020年1月1日 100
法国 皮埃尔 计划 20 财年 2020年1月1日 50
法国 皮埃尔 计划 21财年 2020年1月1日 80

我相信这只能通过自定义代码来实现,但除了标准功能之外我对它并不熟悉。

提前感谢您,如果有任何其他相关信息,请告诉我。

干杯

excel powerbi powerquery data-modeling m
1个回答
0
投票

你可以试试

let Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
NewNames= {Source{2}[Column1] }&{ Source{2}[Column2] }& List.RemoveFirstN(List.Transform(List.Zip({Record.FieldValues(Source{0}),Record.FieldValues(Source{1})}), each Text.Combine(_,":")),2),
Rename=Table.RenameColumns(Table.Skip(Source,2),List.Zip({Table.ColumnNames(Source),NewNames})),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Rename, {"Country", "Owner"}, "Attribute", "Value"),
#"Split" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByEachDelimiter({":"}, QuoteStyle.Csv, false), {"Version", "Year"}),
Touchup=Table.TransformColumns(#"Split",{{"Version", each Text.Combine(List.RemoveItems(Text.ToList(_),{"0".."9"}))}})
in Touchup
© www.soinside.com 2019 - 2024. All rights reserved.