Power Query 能否以不同级别的小计详细信息对数据进行表格化?

Posted

技术标签:

【中文标题】Power Query 能否以不同级别的小计详细信息对数据进行表格化?【英文标题】:Can Power Query tabularize data with different levels of sub-total detail? 【发布时间】:2021-12-31 04:20:36 【问题描述】:

我是一名熟练的 Excel 用户,但对 Power Queries 不熟悉 - 它们看起来很强大,但我对 Quickbooks 报告的表格化感到厌烦。

简而言之,数据包括几列层次结构,全部展开到最低节点,并包括子标题和小计。我需要对这些数据进行表格化,但是当一个部分的详细信息有 3 列深而下一部分只有 2 列深时,“填充”(在第 3 列中)会错误地填充不同部分中的子标题。

如果这没有意义,我整理了一个屏幕截图,希望能更好地说明这个问题:

提前谢谢你, 狄龙

【问题讨论】:

【参考方案1】:

这是一个数据透视表吧? 转到“设计”-> 下拉“报表布局”-> 以表格形式显示

【讨论】:

不,这不是数据透视表【参考方案2】:

如果您显示的不是数据透视表,而是 Quicken 的输出,那么您可以:

仅填写第 1 列 按第 1 列分组 使用自定义聚合填充每个子表中的第 2 列 然后展开子表 删除包含 null 的金额行 重置数据类型
let

//cahnge table name in next line to the real table name in your workbook
    Source = Excel.CurrentWorkbook()[Name="Table3"][Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,
        "Column1", type text, "Column2", type text, "Item", type text, "Amount", Currency.Type),

//Fill down the main group
    #"Filled Down" = Table.FillDown(#"Changed Type","Column1"),

//group by Column 1; then fill down subgroup in column 2
    group = Table.Group(#"Filled Down","Column1",
        "subGroup", each Table.FillDown(_,"Column2")
        ),
    #"Expanded subGroup" = Table.ExpandTableColumn(group, "subGroup", "Column2", "Item", "Amount", "Column2", "Item", "Amount"),
    #"Filtered Rows" = Table.SelectRows(#"Expanded subGroup", each ([Amount] <> null)),
    #"Changed Type1" = Table.TransformColumnTypes(#"Filtered Rows","Column2", type text, "Item", type text, "Amount", Currency.Type)
in
    #"Changed Type1"

【讨论】:

这很有帮助,但实际上,我的数据集有 1-7 列。如何扩展它以处理更多列? @DevinMiller 如果除了最后两列之外的每一列都指向一个子组,我可能会设置一个递归函数。但是,如果您只有五列要处理,那么在代码中连续执行它们可能会更简单。

以上是关于Power Query 能否以不同级别的小计详细信息对数据进行表格化?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 power bi 中向现有数据添加小计行

如何从 Power Query 的不同表中的 2 列中获取数据以汇总为 1 列?

计算百分比,包括小计作为 Power BI 中的度量

Flink学习小计-编程模型

Power Query 倾斜数据

power query插件应用案例(二)