Power Query - 减去不连续的行并创建一个新行
Power Query - Subtract non-consecutive rows and create a new row
我正在寻求有关以下问题的帮助:
我的数据集包含按地区和按国家/地区划分的多个变量(收益、运营支出、数量)的值。每个变量都有一个地区总数,但并不是每个国家都包含在数据集中,因此国家的总和不等于地区总数。我想为每个变量创建一个新的计算行“所有其他国家/地区”,它等于所有未包含国家/地区的值之和。计算是例如
所有其他收入 = 欧洲收入 - 德国收入 - 英国收入 - 法国收入。
到目前为止,我找到的解决方案通常是为减法创建新的列,并且通常基于一些基于时间的顺序,这些顺序使用索引 link 前一行/期间和新的行/期间。这对我的问题不起作用,因为我想将缺少的国家/地区行附加到我的 table 而我的国家/地区未排序。
低于样本table,因为现在的数据是
enter image description here
enter image description here
在我想添加/创建的新行下方
enter image description here
enter image description here
这似乎适用于 PowerQuery。下次请粘贴机器可读数字
逆轴
我假设当 Region=BU 时,这就是总数。所以使用自定义列来测试
过滤得到非总计和分组。这给了我要减去的总和
筛选总数。将非总计合并为一列并减去值。那是剩下的。将 BU 列更改为 Other 并重命名一些列。附加到原始数据
重新调整
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Region", "BU", "Analysis", "IS GRP", "Unit"}, "Attribute", "Value"),
#"Added Custom" = Table.AddColumn(#"Unpivoted Other Columns", "TopLevel", each if [Region]=[BU] then 1 else 0),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([TopLevel] = 0)),
#"Grouped Rows" = Table.Group(#"Filtered Rows", {"Region", "Analysis", "IS GRP", "Unit", "Attribute"}, {{"Value", each List.Sum([Value]), type number}}),
#"Filtered Rows2" = Table.SelectRows(#"Added Custom", each ([TopLevel] = 1)),
#"Merged Queries" = Table.NestedJoin(#"Filtered Rows2",{"Region", "Analysis", "IS GRP", "Unit", "Attribute"},#"Grouped Rows",{"Region", "Analysis", "IS GRP", "Unit", "Attribute"},"Filtered Rows2",JoinKind.LeftOuter),
#"Expanded Filtered Rows2" = Table.ExpandTableColumn(#"Merged Queries", "Filtered Rows2", {"Value"}, {"Value.1"}),
#"Added Custom1" = Table.AddColumn(#"Expanded Filtered Rows2", "Other.Value", each [Value]-[Value.1]),
#"ChangeNametoOther" = Table.TransformColumns(#"Added Custom1",{{"BU", each "Other", type text}}),
#"Removed Columns" = Table.RemoveColumns(#"ChangeNametoOther",{"Value", "TopLevel", "Value.1"}),
#"Renamed Columns" = #"Unpivoted Other Columns" & Table.RenameColumns(#"Removed Columns",{{"Other.Value", "Value"}}),
#"Pivoted Column" = Table.Pivot(#"Renamed Columns", List.Distinct(#"Renamed Columns"[Attribute]), "Attribute", "Value", List.Sum)
in #"Pivoted Column"
我正在寻求有关以下问题的帮助: 我的数据集包含按地区和按国家/地区划分的多个变量(收益、运营支出、数量)的值。每个变量都有一个地区总数,但并不是每个国家都包含在数据集中,因此国家的总和不等于地区总数。我想为每个变量创建一个新的计算行“所有其他国家/地区”,它等于所有未包含国家/地区的值之和。计算是例如 所有其他收入 = 欧洲收入 - 德国收入 - 英国收入 - 法国收入。
到目前为止,我找到的解决方案通常是为减法创建新的列,并且通常基于一些基于时间的顺序,这些顺序使用索引 link 前一行/期间和新的行/期间。这对我的问题不起作用,因为我想将缺少的国家/地区行附加到我的 table 而我的国家/地区未排序。
低于样本table,因为现在的数据是
enter image description here enter image description here
在我想添加/创建的新行下方
enter image description here enter image description here
这似乎适用于 PowerQuery。下次请粘贴机器可读数字
逆轴
我假设当 Region=BU 时,这就是总数。所以使用自定义列来测试
过滤得到非总计和分组。这给了我要减去的总和
筛选总数。将非总计合并为一列并减去值。那是剩下的。将 BU 列更改为 Other 并重命名一些列。附加到原始数据
重新调整
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Region", "BU", "Analysis", "IS GRP", "Unit"}, "Attribute", "Value"),
#"Added Custom" = Table.AddColumn(#"Unpivoted Other Columns", "TopLevel", each if [Region]=[BU] then 1 else 0),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([TopLevel] = 0)),
#"Grouped Rows" = Table.Group(#"Filtered Rows", {"Region", "Analysis", "IS GRP", "Unit", "Attribute"}, {{"Value", each List.Sum([Value]), type number}}),
#"Filtered Rows2" = Table.SelectRows(#"Added Custom", each ([TopLevel] = 1)),
#"Merged Queries" = Table.NestedJoin(#"Filtered Rows2",{"Region", "Analysis", "IS GRP", "Unit", "Attribute"},#"Grouped Rows",{"Region", "Analysis", "IS GRP", "Unit", "Attribute"},"Filtered Rows2",JoinKind.LeftOuter),
#"Expanded Filtered Rows2" = Table.ExpandTableColumn(#"Merged Queries", "Filtered Rows2", {"Value"}, {"Value.1"}),
#"Added Custom1" = Table.AddColumn(#"Expanded Filtered Rows2", "Other.Value", each [Value]-[Value.1]),
#"ChangeNametoOther" = Table.TransformColumns(#"Added Custom1",{{"BU", each "Other", type text}}),
#"Removed Columns" = Table.RemoveColumns(#"ChangeNametoOther",{"Value", "TopLevel", "Value.1"}),
#"Renamed Columns" = #"Unpivoted Other Columns" & Table.RenameColumns(#"Removed Columns",{{"Other.Value", "Value"}}),
#"Pivoted Column" = Table.Pivot(#"Renamed Columns", List.Distinct(#"Renamed Columns"[Attribute]), "Attribute", "Value", List.Sum)
in #"Pivoted Column"