计算列,其中包含一行中多列的值之和

时间:2017-03-10 15:56:30

标签: powerbi dax

我需要对每行中的所有值求和并在计算列中显示它们。当我在很多表中处理大量列时,添加类似

的内容
CalculatedColumn = 'public table_name'[column1] + 'public table_name'[column2] + ... + 'public table_name'[column528]

效率很低。 这样做有更短的方法吗?

1 个答案:

答案 0 :(得分:3)

是的,有。您应该“取消隐藏其他列”,然后使用查询编辑器“分组依据”

  1. 假设此数据集:

    item;col1;col2;col3;col4;col5
    apple;1;2;3;4;5
    orange;1;2;3;5;8
    banana;1;2;4;6;8
    
  2. 加载它,然后打开查询编辑器。

  3. 选择“取消隐藏其他列”:

    Unpivot Other Columns

    你现在应该看到这个:

    unpivoted view

  4. 在功能区的“转换”选项卡上,选择最左侧的“分组依据”选项。并按如下方式填写对话框:

    group by

  5. 您现在应该拥有想要的最终结果:

    summarized view

  6. 您也可以跳过“分组依据”步骤,让您的可视化处理它。

    PS。如果您还需要一些非求和列,我建议您创建一个具有相同源的重复数据集,并链接到具有关系的原始表,或者合并它所以你得到一张包含所有想要的专栏的决赛桌。

    脚注,这是为您生成的Power Query:

    let
        Source = Csv.Document(File.Contents("D:\Experiments\PowerBi\denormalized.csv"),[Delimiter=";", Columns=6, Encoding=1252, QuoteStyle=QuoteStyle.None]),
        #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
        #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"item", type text}, {"col1", Int64.Type}, {"col2", Int64.Type}, {"col3", Int64.Type}, {"col4", Int64.Type}, {"col5", Int64.Type}}),
        #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"item"}, "Attribute", "Value"),
        #"Grouped Rows" = Table.Group(#"Unpivoted Other Columns", {"item"}, {{"SumCol", each List.Sum([Value]), type number}})
    in
        #"Grouped Rows"