美文网首页PowerBI专栏工具癖数据分析
在Power BI中使用度量值进行分组统计

在Power BI中使用度量值进行分组统计

作者: PowerBI星球 | 来源:发表于2019-02-13 18:24 被阅读22次

    上一篇文章中的分组,都是通过新建列的方式实现的,直观上比较容易理解。不过这样都修改了原始数据的结构,如果我们不在源表上进行修改,直接通过度量值的方式来进行分组,是否可以实现呢?

    答案当然是肯定的。

    采用度量值的方式首先定义好分组的类别和标准,然后把需要分组的数据分别统计到指定的分组中。

    依然按照上篇文章的数据,统计优秀、良好、及格和不及格的学生分别有多少?

    成绩表中的数据结构不做任何更改,我们先创建一个分组表,

    如果成绩落在最小值和最大值之间,就归属于该分组。

    编写度量值如下:

    成绩分组统计 =

    CALCULATE(

        DISTINCTCOUNT('成绩'[姓名]),

        FILTER('成绩',

           AND(

             '成绩'[数学成绩]<=SELECTEDVALUE('分组表'[最大值]),

             '成绩'[数学成绩]>=SELECTEDVALUE('分组表'[最小值])

           )

        ) 

    )

    使用度量值和新建列的不同之处就是,新建列的行上下文是确定的,可以直接使用行字段,而度量值的外部上下文是动态的,所以无法直接和某个具体指标匹配,这时就要用到SELECTEDVALUE函数,它根据外部上下文的环境来进行动态匹配运算。

    编写度量值的表达式时,不知道如何查找外部上下文时,一定不要忘了SELECTEDVALUE函数。

    利用矩阵来看看度量值的结果,

    这样每个类别的人数就统计出来了,不过有个问题是,总计行没有计算出来。原因是由于SELECTEDVALUE函数函数只查找了分组表中的类别,而该表并没有总计这个值,所以无法计算显示为空。

    为了使总计正常显示,可以再加个判断函数ISFILTERED,如果分组列中有该分类,就正常执行上面的度量值计算,否则返回成绩表中人数合计。

    更改后的度量值如下:

    成绩分组统计 =

    IF(ISFILTERED('分组表'[分组]),

      CALCULATE(

        DISTINCTCOUNT('成绩'[姓名]),

        FILTER('成绩',

          AND(

            '成绩'[数学成绩]<=SELECTEDVALUE('分组表'[最大值]),

            '成绩'[数学成绩]>=SELECTEDVALUE('分组表'[最小值])

          )

        )

      ),

      DISTINCTCOUNT('成绩'[姓名])

    )

    然后总计行会正常显示。并且源数据发生变化,度量值返回的结果也会同步更新。

    以上就是使用度量值进行分组的做法,DAX看起来很长,其实逻辑上比较简单,理解它对进一步掌握DAX有很大帮助。

    利用度量值,进行数据分析时可以更灵活的使用,下篇文章介绍度量值分组的应用场景。

    加入知识星球,随时问题答疑,更多资源分享。

    相关文章

      网友评论

        本文标题:在Power BI中使用度量值进行分组统计

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