Power BI 运行 水平总计
Power BI Running total horizontally
我正在使用 Power BI table,但我无法按需要计算余额 "Running total"。
我在 Stack Overflow 和其他网页上搜索,我总是找到针对非常相似情况的相同解决方案,但不是这个。
首先,这是我的 table:
我在这个和other sites中找到了相同的解决方案:
Running Total COLUMN =
CALCULATE (
SUM ( 'My table'[Accounting Balance] ),
ALL ( 'My table' ),
'My table'[Date] <= EARLIER ( 'My table'[Date] ))
每当我需要对行进行垂直求和时,这都可以使用,但我不是这种情况。的确,我需要横向求和:
有什么建议吗?
编辑 1:
这是我需要的:
因此,如果您仔细查看此 table,它会对每个供应商的每一列进行计算,例如:
- 供应商 1 2017 年 1 月欠款 200 美元
- 供应商 1 在 2017 年 2 月欠款 0 美元,因为他支付了 200 美元
- 供应商 1 在 2017 年 3 月欠了 50 美元,因为 0 + 50 美元
- 供应商 1 在 2017 年 4 月欠款 50 美元,因为他没有付款。
- 供应商 1 总共欠 $50。
- 等等
我在这里做了一个很大的假设:"Totals" 列不需要 "Total" 行。
如果不是,那么 Column 是不是如图所示定义的:
Totals = Table1[Jan-17]+Table1[Feb-17]+Table1[Mar-17]
这是在 Power Query 中完成的,因为我没有 BI,但我认为 M 代码也能正常工作。如果您在 add/delete 列中刷新查询,它也会自动调整,因此无需单独引用每一列。
您添加了一个自定义列,它汇总了除 "Vendor/Month"
之外的所有列
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Vendor/Month", type text}, {"Jan-17", Int64.Type}, {"Feb-17", Int64.Type}, {"Mar-17", Int64.Type}, {"Apr-17", Int64.Type}}),
#"Sum" = Table.AddColumn(
#"Changed Type",
"Total",
each List.Sum(
Record.ToList(
Record.SelectFields(
_,
List.RemoveItems(Table.ColumnNames(#"Changed Type"), {"Vendor/Month"})))))
in
#"Sum"
这是自定义列对话框:
这是结果:
正如 Alexis Olson 之前所建议的那样,您应该将从 OLAP 多维数据集获得的 'table' 导入到 Power Query 编辑器中并将其取消透视。你会从这个开始:
使用这样的脚本:
let
Source = Excel.Workbook(File.Contents("C:\Users7085\Documents\Marco\SO\SO18-10-1.xlsx"), null, true),
Sheet3_Sheet = Source{[Item="myTable",Kind="Sheet"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(Sheet3_Sheet,{{"Column1", type text}, {"Column2", type any}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}}),
#"Promoted Headers" = Table.PromoteHeaders(#"Changed Type", [PromoteAllScalars=true]),
#"Removed Columns" = Table.RemoveColumns(#"Promoted Headers",{"Totals"}),
#"Removed Bottom Rows" = Table.RemoveLastN(#"Removed Columns",1),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Removed Bottom Rows", {"Vendor/Month"}, "Attribute", "Value"),
#"Added Custom" = Table.AddColumn(#"Unpivoted Other Columns", "Custom", each "1-"&[Attribute]),
#"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"Custom", type date}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"Custom", "Month"}}),
#"Removed Columns1" = Table.RemoveColumns(#"Renamed Columns",{"Attribute"}),
#"Changed Type2" = Table.TransformColumnTypes(#"Removed Columns1",{{"Value", Int64.Type}}),
#"Renamed Columns1" = Table.RenameColumns(#"Changed Type2",{{"Value", "Accounting Balance"}, {"Vendor/Month", "Vendor"}})
in
#"Renamed Columns1"
结果 table 将是这样的:
然后创建以下测量:
RunningTotal =
CALCULATE (
SUM ( myTable[Accounting Balance] ),
FILTER (
ALLEXCEPT ( 'myTable', myTable[Vendor] ),
'myTable'[Month] <= SELECTEDVALUE ( myTable[Month] )
)
)
在矩阵视觉中,将供应商放在行上,月份放在列上,[RunningTotal] 放在值上。
我正在使用 Power BI table,但我无法按需要计算余额 "Running total"。
我在 Stack Overflow 和其他网页上搜索,我总是找到针对非常相似情况的相同解决方案,但不是这个。
首先,这是我的 table:
我在这个和other sites中找到了相同的解决方案:
Running Total COLUMN =
CALCULATE (
SUM ( 'My table'[Accounting Balance] ),
ALL ( 'My table' ),
'My table'[Date] <= EARLIER ( 'My table'[Date] ))
每当我需要对行进行垂直求和时,这都可以使用,但我不是这种情况。的确,我需要横向求和:
有什么建议吗?
编辑 1:
这是我需要的:
因此,如果您仔细查看此 table,它会对每个供应商的每一列进行计算,例如:
- 供应商 1 2017 年 1 月欠款 200 美元
- 供应商 1 在 2017 年 2 月欠款 0 美元,因为他支付了 200 美元
- 供应商 1 在 2017 年 3 月欠了 50 美元,因为 0 + 50 美元
- 供应商 1 在 2017 年 4 月欠款 50 美元,因为他没有付款。
- 供应商 1 总共欠 $50。
- 等等
我在这里做了一个很大的假设:"Totals" 列不需要 "Total" 行。
如果不是,那么 Column 是不是如图所示定义的:
Totals = Table1[Jan-17]+Table1[Feb-17]+Table1[Mar-17]
这是在 Power Query 中完成的,因为我没有 BI,但我认为 M 代码也能正常工作。如果您在 add/delete 列中刷新查询,它也会自动调整,因此无需单独引用每一列。
您添加了一个自定义列,它汇总了除 "Vendor/Month"
之外的所有列let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Vendor/Month", type text}, {"Jan-17", Int64.Type}, {"Feb-17", Int64.Type}, {"Mar-17", Int64.Type}, {"Apr-17", Int64.Type}}),
#"Sum" = Table.AddColumn(
#"Changed Type",
"Total",
each List.Sum(
Record.ToList(
Record.SelectFields(
_,
List.RemoveItems(Table.ColumnNames(#"Changed Type"), {"Vendor/Month"})))))
in
#"Sum"
这是自定义列对话框:
这是结果:
正如 Alexis Olson 之前所建议的那样,您应该将从 OLAP 多维数据集获得的 'table' 导入到 Power Query 编辑器中并将其取消透视。你会从这个开始:
使用这样的脚本:
let
Source = Excel.Workbook(File.Contents("C:\Users7085\Documents\Marco\SO\SO18-10-1.xlsx"), null, true),
Sheet3_Sheet = Source{[Item="myTable",Kind="Sheet"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(Sheet3_Sheet,{{"Column1", type text}, {"Column2", type any}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}}),
#"Promoted Headers" = Table.PromoteHeaders(#"Changed Type", [PromoteAllScalars=true]),
#"Removed Columns" = Table.RemoveColumns(#"Promoted Headers",{"Totals"}),
#"Removed Bottom Rows" = Table.RemoveLastN(#"Removed Columns",1),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Removed Bottom Rows", {"Vendor/Month"}, "Attribute", "Value"),
#"Added Custom" = Table.AddColumn(#"Unpivoted Other Columns", "Custom", each "1-"&[Attribute]),
#"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"Custom", type date}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type1",{{"Custom", "Month"}}),
#"Removed Columns1" = Table.RemoveColumns(#"Renamed Columns",{"Attribute"}),
#"Changed Type2" = Table.TransformColumnTypes(#"Removed Columns1",{{"Value", Int64.Type}}),
#"Renamed Columns1" = Table.RenameColumns(#"Changed Type2",{{"Value", "Accounting Balance"}, {"Vendor/Month", "Vendor"}})
in
#"Renamed Columns1"
结果 table 将是这样的:
然后创建以下测量:
RunningTotal =
CALCULATE (
SUM ( myTable[Accounting Balance] ),
FILTER (
ALLEXCEPT ( 'myTable', myTable[Vendor] ),
'myTable'[Month] <= SELECTEDVALUE ( myTable[Month] )
)
)
在矩阵视觉中,将供应商放在行上,月份放在列上,[RunningTotal] 放在值上。