首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Power Query -减去不连续的行并创建新行

Power Query -减去不连续的行并创建新行
EN

Stack Overflow用户
提问于 2021-09-24 17:47:37
回答 1查看 46关注 0票数 0

我正在寻找以下问题的帮助:我的数据集包含按地区和国家划分的几个变量(收益、运营支出、成交量)的值。每个变量都有一个地区合计,但并不是每个国家都包括在数据集中,因此这些国家的总和并不等于地区合计。我想为每个变量创建一个新的计算行“所有其他国家”,它等于所有未包括的国家的值的总和。计算方法是,例如,所有其他收益=收益欧洲-收益德国-收益英国-收益法国。

到目前为止,我发现的解决方案通常是为减法创建新的列,并且通常基于一些基于时间的顺序,该顺序使用索引将以前的行/周期与新的行/周期链接起来。这不适用于我的问题,因为我想将缺少的国家/地区行追加到我的表中,而我的国家/地区没有排序。

下面是一个示例表,因为现在的数据

enter image description here enter image description here

在我想要添加/创建的新行下面

enter image description here enter image description here

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-24 19:12:16

这似乎在PowerQuery中起作用。下次请粘贴机器可读的数字

取消轴心

我假设如果是Region=BU,那就是总数。所以使用自定义列来测试

筛选器以获取非总计和分组。这给了我要减去的总和。

对总数进行筛选。将非合计合并为一列并减去这些值。那是剩菜。将BU列更改为Other,并重命名一些列。追加到原始数据

重新旋转枢轴

代码语言:javascript
复制
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"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69319250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档