我有一个如下所示的数据表:
Report Date | ID | Percent
11/06/2021 | 12345 | 0.9
18/06/2021 | 12345 | 1
25/06/2021 | 12345 | 0.85
02/07/2021 | 12345 | 0.5
11/06/2021 | 54321 | 0.77
18/06/2021 | 54321 | 1
25/06/2021 | 54321 | 1
02/07/2021 | 54321 | 0.25
每个日期的每个 ID 都会显示一个百分比值。
有时表格中有四个星期,有时五个取决于支付期限(一个月可能有四到五个星期)。
我有一个查询,按 ID 对数据进行分组,并返回四个星期内的平均百分比数字。
现在,希望无需详细说明,我想将这些日期更改为第 1 周、第 2 周、第 3 周、第 4 周,偶尔也可以更改为第 5 周(我的老板希望在平均值旁边查看各个周)。
如果我旋转表格以便每周成为一列,那么我需要知道列的名称,然后才能展开它:
let
Source = Table.NestedJoin(#"My Query", {"ID"}, #"Pivotted Table", {"ID"}, "Pivotted Table", JoinKind.LeftOuter),
#"Reordered Columns" = Table.ReorderColumns(Source,{"ID", "Pivotted Table", "Percent"}),
#"Expanded Pivotted Table" = Table.ExpandTableColumn(#"Reordered Columns", "Pivotted Table", {"11/06/2021", "18/06/2021", "25/06/2021", "02/07/2021"}, {"11/06/2021", "18/06/2021", "25/06/2021", "02/07/2021"})
in
#"Expanded Pivotted Table"
我找到了一个函数,它允许我根据列在表中的位置重命名列,这样我就可以将列名标准化为第 1 周、第 2 周、第 3 周等。这仍然会引发错误,因为偶尔会出现第 5 周。
//Function Name - Rename Columns
let
RenameColumns = (InputTable as table, ColumnNumbers as list, NewColumnNames as list) =>
let
OldColumnNames = Table.ColumnNames(InputTable),
Indexed = List.Zip({OldColumnNames, {0..-1+List.Count(OldColumnNames)}}),
Filtered = List.Select(Indexed, each List.Contains(ColumnNumbers,_{1})),
IndexRemoved = List.Transform(Filtered, each _{0}),
RenameList = List.Zip({IndexRemoved,NewColumnNames}),
RenamedColumns = Table.RenameColumns(InputTable, RenameList)
in
RenamedColumns
in
RenameColumns
因此,如果没有第六列(第一列是第 0 列),则会引发错误。
//Query Name - Pivotted Table
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Report Date", type date}, {"ID", type text}, {"Percent", type number}}),
#"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Changed Type", {{"Report Date", type text}}, "en-GB"), List.Distinct(Table.TransformColumnTypes(#"Changed Type", {{"Report Date", type text}}, "en-GB")[#"Report Date"]), "Report Date", "Percent"),
RenameColumns = #"Rename Columns"(#"Pivoted Column",{1,2,3,4,5}, {"Week 1", "Week 2", "Week 3", "Week 4", "Week 5"})
in
RenameColumns
问题:
如何重命名或扩展可变数量的列?
从您的原始日期(不是透视表)开始,以下内容应允许可变数量的列。