如何将总计行添加到 excel 电源查询?
How to add totals row to excel power query?
我在 excel 幂查询
中使用 'group' 函数生成了如下所示的 table
score 1 score 2 score 3
A 6 25 50
B 8 30 20
C 15 15 30
D 20 0 10
我想添加一个总计行(相当于 "show totals for column" 在正常数据透视 table 中),所以结果会像这样
score 1 score 2 score 3
A 6 25 50
B 8 30 20
C 15 15 30
D 20 0 10
Total 49 70 110
谁知道有没有简单的方法可以做到这一点?谢谢你,RY
我不知道你为什么要在 PowerQuery 而不是数据透视表中执行此操作table,但我能想到的唯一方法是复制 table,取消数据透视表然后重新转换数据透视表它使用总和作为聚合。然后您可以将 table 附加到您的原始查询。
您的代码类似于要在其中创建总计的 table。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Columns" = Table.UnpivotOtherColumns(Source, {}, "Attribute", "Value"),
#"Pivoted Column" = Table.Pivot(#"Unpivoted Columns", List.Distinct(#"Unpivoted Columns"[Attribute]), "Attribute", "Value", List.Sum)
in
#"Pivoted Column"
请注意,您可能必须选择按计数聚合,但您可以将代码更改为求和(在 #"Pivot Column" 行中,将 List.Count
更改为 List.Sum
。
您将收到 A、B、C、D 列的错误 - 如果您愿意,可以使用“替换错误”功能将其替换为总计。
另一种方式:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
group = Table.Group(Source, {}, {{"letter", each "Total"},
{"score 1", each List.Sum([score 1])},
{"score 2", each List.Sum([score 2])},
{"score 3", each List.Sum([score 3])}}),
append = Table.Combine({Source, group})
in
append
或者:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
cols = Table.ColumnNames(Source),
group = Table.Group(Source, {}, List.Zip({cols, {each "Total"}&
List.Transform(List.Skip(cols),
(x)=>each List.Sum(Table.Column(_,x)))})),
append = Table.Combine({Source, group})
in
append
或者:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
group = Table.Group(Source, {}, List.TransformMany(Table.ColumnNames(Source),
(x)=>{each if x = "letter" then "Total"
else List.Sum(Table.Column(_,x))}, (x,y)=>{x,y})),
append = Table.Combine({Source, group})
in
append
我在 excel 幂查询
中使用 'group' 函数生成了如下所示的 tablescore 1 score 2 score 3
A 6 25 50
B 8 30 20
C 15 15 30
D 20 0 10
我想添加一个总计行(相当于 "show totals for column" 在正常数据透视 table 中),所以结果会像这样
score 1 score 2 score 3
A 6 25 50
B 8 30 20
C 15 15 30
D 20 0 10
Total 49 70 110
谁知道有没有简单的方法可以做到这一点?谢谢你,RY
我不知道你为什么要在 PowerQuery 而不是数据透视表中执行此操作table,但我能想到的唯一方法是复制 table,取消数据透视表然后重新转换数据透视表它使用总和作为聚合。然后您可以将 table 附加到您的原始查询。
您的代码类似于要在其中创建总计的 table。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Columns" = Table.UnpivotOtherColumns(Source, {}, "Attribute", "Value"),
#"Pivoted Column" = Table.Pivot(#"Unpivoted Columns", List.Distinct(#"Unpivoted Columns"[Attribute]), "Attribute", "Value", List.Sum)
in
#"Pivoted Column"
请注意,您可能必须选择按计数聚合,但您可以将代码更改为求和(在 #"Pivot Column" 行中,将 List.Count
更改为 List.Sum
。
您将收到 A、B、C、D 列的错误 - 如果您愿意,可以使用“替换错误”功能将其替换为总计。
另一种方式:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
group = Table.Group(Source, {}, {{"letter", each "Total"},
{"score 1", each List.Sum([score 1])},
{"score 2", each List.Sum([score 2])},
{"score 3", each List.Sum([score 3])}}),
append = Table.Combine({Source, group})
in
append
或者:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
cols = Table.ColumnNames(Source),
group = Table.Group(Source, {}, List.Zip({cols, {each "Total"}&
List.Transform(List.Skip(cols),
(x)=>each List.Sum(Table.Column(_,x)))})),
append = Table.Combine({Source, group})
in
append
或者:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
group = Table.Group(Source, {}, List.TransformMany(Table.ColumnNames(Source),
(x)=>{each if x = "letter" then "Total"
else List.Sum(Table.Column(_,x))}, (x,y)=>{x,y})),
append = Table.Combine({Source, group})
in
append