zoukankan      html  css  js  c++  java
  • 数据可视化之DAX篇(六) 利用ISINSCOPE函数,轻松按层级计算占比

    https://zhuanlan.zhihu.com/p/70590683

    关于占比,之前有篇文章(利用ALL和ALLSELECTED灵活计算占比)详细介绍了各种情况下占比的度量值。

    经星友咨询,还有一种情况没有介绍,实际工作中会经常用到的情形是:父级字段显示该层级值占总体的比例,而打开该层级,显示子级各明细项占该层级值的占比。

    仍然用占比文章中的示例,直接来看一下效果。

    当处于产品类别层级,显示类别占在总体的比例,

     

     

     

    而打开类别,产品明细显示占该类别的比例,

     

     

    其实单独计算产品明细占类别的比例,以及类别占总体的比例,在占比那篇文章都介绍过,现在只是需要把这两种情况合并在一起就行了。

    合并在一起,主要是需要判断当前上下文是类别还是产品名称,这就要用到一个新函数:ISINSCOPE。

    这个函数直译过来的意思就是:否在范围内,官方释义为:当指定的列是级别层次结构中的级别时,返回true。

    直接给出实现上述效果的DAX写法:

    占比 层级 = 
    SWITCH (TRUE (),  
        ISINSCOPE ('产品'[产品名称]), DIVIDE([销售额],CALCULATE([销售额],ALLSELECTED('产品'[产品名称]))),
        ISINSCOPE ('产品'[产品类别]), DIVIDE([销售额],CALCULATE([销售额],ALLSELECTED('产品'[产品类别]))),
        DIVIDE([销售额],CALCULATE([销售额],ALLSELECTED('产品'[产品名称])))
    )

    通过ISINSCOPE来判断当前上下文是产品名称还是产品类别,分别计算不同的占比,并利用SWITCH函数区分不同的情况返回对应的数据。

    因为利用了ALLSELECTED函数,这个度量值也是可以根据外部的筛选情况灵活返回对应的占比数据,

    本质上依然是占比文章中利用ALL和ALLSELECTED函数和参数的变化来计算占比,只是多了一个层级的判断而已。

    这两篇文章结合起来,细细把这几个度量值琢磨透彻,基本没有什么占比可以难倒你了。

  • 相关阅读:
    redis中的发布订阅(Pub/Sub)
    emmc基础技术8:操作模式3-interrupt mode
    Linux命令-tar
    git获取内核源码的方法
    Linux内核基础设施
    Linux内核简介
    emmc基础技术8:操作模式2-device identification mode
    内核子系统文档撰写方法
    eMMC基础技术6:eMMC data读写
    eMMC基础技术10:寄存器介绍
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12807770.html
Copyright © 2011-2022 走看看