美文网首页
Power Pivot中3大汇总函数对比解释及使用介绍

Power Pivot中3大汇总函数对比解释及使用介绍

作者: Data_Skill | 来源:发表于2019-05-31 14:40 被阅读0次

    1. Summarize

    A. 语法

    SUMMARIZE ( <Table>, <GroupBy_ColumnName> [, [<Name>] [, [<Expression>] [, <GroupBy_ColumnName> [, [<Name>] [, [<Expression>] [, … ] ] ] ] ] ]  )
    
    位置 参数 描述
    第1参数 Table 需要操作的表
    第2参数 GroupBy_ColumnName 分组的依据(可以有多个)
    可选第3参数 Name 分组后的新列名,可以有多个汇总(文本格式)
    可选第4参数 Expression 新增列的表达式,可以有多个

    B. 返回

    表——包含汇总依据及新列名的表

    C. 注意事项

    • 汇总的依据必须是表或者相关表的列。
    • 不能用于虚拟添加列这种。
    • 尽量用其他方式来替换第3和第4参数。(可以用SummarizeColumns或者AddColumns方式来得到同样结果)

    D. 作用

    创建按指定列分组后的计算表达式汇总

    E. 案例

    表3


    Summarize案例数据Summarize案例数据
    • 要求按学科算平均成绩。
    • 要求按不同学校的学科平均成绩。
      按学科算平均成绩,我们需要汇总学科,并计算平均成绩即可。
    Summarize('表3',
            '表3'[学科],
            "平均成绩",Average('表3'[成绩])
              ) 
    

    返回结果:


    Summarize结果1Summarize结果1

    按不同学校学科的学科平均成绩,则需要添加2个汇总依据,一个是学校,一个是学科。

    Summarize('表3',
                   '表3'[学校],'表3'[学科],
                   "平均成绩",Average('表3'[成绩])
              ) 
    

    返回结果:


    Summarize结果2Summarize结果2

    如果是使用AddColumns方式来进行的话

    var 
    a=Summarize('表3','表3'[学科])
    return
    AddColumns(a ,
               "平均成绩",
               Calculate(Average('表3'[成绩]))
               )
    

    解释:因为涉及到上下文的原因,所以在Average求平均的时候嵌套了Calculate进行上下文转换。

    2. SummarizeColumns

    A. 语法

    SUMMARIZECOLUMNS ( <GroupBy_ColumnName>, [<FilterTable>] , [<Name>] [, [<Expression>] [, <GroupBy_ColumnName> [, [<FilterTable>] [, [<Name>] [, [<Expression>] [, … ] ] ] ] ] ] ] ] ] )
    
    位置 参数 描述
    可重复第1参数 GroupBy_ColumnName 分组依据,可重复。可用于小计和总计函数
    可选重复第2参数 FilterTable 可对原表进行筛选
    可选第重复3参数 Name 新增加的列名
    可选重复第4参数 Expression 新增加的列的内容表达式

    B. 返回

    表——基于指定分组列计算值的表。

    C. 注意事项

    • 不支持上下文
    • 不返回无值的汇总

    D. 作用

    返回的计算值为非空值的分组。

    E. 案例

    表3


    SummarizeColumns案例数据SummarizeColumns案例数据
    SummarizeColumns('表3'[姓名])
    
    SummarizeColumns结果1SummarizeColumns结果1

    解释:
    相当于分类汇总标题,也就是姓名去重。

    SummarizeColumns('表3'[姓名],
                     Filter('表3','表3'[学校]="1中")
                    )
    
    SummarizeColumns结果2SummarizeColumns结果2

    解释:
    先筛选出学校为1中的数据,然后再同归汇总来得到不重复的姓名。

    SummarizeColumns('表3'[姓名],
                     Filter('表3','表3'[学校]="1中"),
                     "成绩",Sum('表3'[成绩])
                    )
    

    解释:
    在得到汇总姓名后再去求成绩。但是因为无值这个成绩为空,所以在汇总的时候就不显示,直接去除。

    SummarizeColumns('表3'[姓名], '表3'[学校], 
                     Filter('表3','表3'[学校]="1中"),
                     "成绩",Sum('表3'[成绩])
                     )
    
    SummarizeColumns结果3SummarizeColumns结果3

    解释:增加学校作为筛选汇总的依据。

    SummarizeColumns('表3'[姓名], '表3'[学校], 
                       Filter('表3','表3'[学校]="2中"),
                          "总成绩",Sum('表3'[成绩]),
                          "平均成绩", Average('表3'[成绩])
                     )
    
    SummarizeColumns结果4SummarizeColumns结果4

    解释:
    先根据筛选学校是2中的,然后根据姓名和学校来进行分组,最后增加2个字段,一个是总成绩,一个是平均成绩。

    3. GroupBy

    A. 语法

    GROUPBY ( <Table> , <GroupBy_ColumnName> [, [<Name>] [, [<Expression>] [, <GroupBy_ColumnName> [, [<Name>] [, [<Expression>] [, … ] ] ] ] ] ] ] )
    
    位置 参数 描述
    第1参数 Table 分组的表
    第2可选重复参数 GroupBy_ColumnName 分组依据的列
    第3可选重复参数 Name 增加列的名称,文本格式
    第4可选重复参数 Expression 增加列的计算表达式

    B. 返回

    表——由分组列及添加表达式的列组成。

    C. 注意事项

    • 参数2不能为表达式,只能是现有的列名。
    • 参数4的表达式必须返回标量值。
    • 表达式中不能使用Calculate涉及上下文计算。
    • 通常表达式中用CurrentGroup函数作为表参数,但不能用于多层嵌套。
    • CurrentGroup函数不带参数,通常和带X结尾的聚合函数一起使用。

    D. 作用

    返回按指定列分组后计算的表达式结果

    E. 案例

    SummarizeColumns案例数据SummarizeColumns案例数据
    GroupBy ( '表3', 
              '表3'[姓名], 
              "总成绩", SumX ( CurrentGroup(), '表3'[成绩] )
             )
    
    GroupBy结果GroupBy结果

    解释:通过姓名进行分组汇总,并计算当前汇总数据表的成绩合计。功能在某些地方和SummarizeColumns以及Summarize类似,在汇总时如果值为空的话,也会忽略汇总,所以姓名为无值的这里也依旧不显示。

    相关文章

      网友评论

          本文标题:Power Pivot中3大汇总函数对比解释及使用介绍

          本文链接:https://www.haomeiwen.com/subject/ienwtctx.html