DAX分享12:用RANKX表示top2销量下的机会信息描述

浏览: 977

好久没有更新了。好几篇写了一半的,然后有事耽误了,然后就忘记要写什么了,然后就一直耽误到今天。本来想放个大招,怕大招写一半又忘记了,还是先写个小的吧。其实主要还是懒。努力不一定成功,但是不努力真的很舒服。

用电影爆裂鼓手的图片共勉。还是要努力的!

公众号收到一个提问。需求写的很清晰,作者授权了,所以直接上截图。

拿到需求之后分析如下:

  1. 要根据opp#得到的Fee来做排序,其他的不管;

  2. 可以接收参数

  3. SL和Region里面如果有多行的时候,合并显示

其他的没说,所以我也懒得考虑太多了。至于描述性的维度表,我也懒得建立了,所有的就在这个表里面处理了。

随便你用Excel做数据源或者Enter Data,都可以得到Table表。

1. 需求不多但是还是先做简单,首先把相关的Slice拉出来。如下图所示:

2. SL和Region多行的合并显示。

我想针对已经做出的筛选来得到不同的合并。考虑到我不会对这个新做出来SL New或者Region New做Slicer,顶多就是一个显示。所以创建两个新的
Measures,定义如下:

    Region New = CONCATENATEX(VALUES('Table'[Region]),'Table'[Region],",")
      SL New = CONCATENATEX(VALUES('Table'[SL]),'Table'[SL],",")

      来校验下结果吧。

      Detail表中是原始的Region和SL。Combine里面是用的新的Region和SL。

      所以新建的SL New和Region New都是挺好用的。

      接下来就是最麻烦的地方了。

      要求是显示Top2的数据,还要显示Rank的排序。

      Rank我们有很多方法,还可以用TopN函数啥的。方法太多也会选择困难。一般来说从简单的开始,就用RANKX函数。

      语法如下图所示:

      RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]]) 

      先找到第一个参数Table。

      分析:如下图所示,把原始的Fee拉进表里,它是根据所有的Slicer的字段还有行列的上下文得到的结果。也是我们想显示并且用来排序的结果。

      所以首先定义要用于排序和显示的Fee total. 因为只是要根据具体得到的table的结果进行显示,并根据显示的结果进行排序。所以就简单建立一个measures。定义如下:

        Fee total = SUM('Table'[Fee])

        得到结果如下:

        然后加入Rank排序:

        Rank = RANKX(ALLSELECTED('Table'),[Fee total])

          这里其实是有一个刚刚好。因为我的所有的表字段都被应用到了,所以我直接偷懒用了ALLSELECTED('Table'),如果你的字段不是全部被用到的,那就要把用到的筛选出来。

          Rank = RANKX(ALLSELECTED('Table'[Client],'Table'[Manager],'Table'[Opportunity],'Table'[Opportunity#],'Table'[Partner],'Table'[Outcome]),[Fee total])


          得到结果如下:

          现在已经得到了rank,然后就是只显示Top2.这个可以写DAX来控制,也有很简单的方法。最简单的,就是点中这个Conbine表的Visual,然后设置如下的filter。

          得到结果如下图所示:

          正确!

          目前来看,结果测试下来是正确的。

          关于ALLSELECTED,实在值得总结和归纳一些。官方定义如下

          谢谢关注!共同成长!努力也许不会成功,也许很辛苦,不过有挑战的人生还是比较好玩的。加油!


          推荐 0
          本文由 懒胖子 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
          转载、引用前需联系作者,并署名作者且注明文章出处。
          本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

          0 个评论

          要回复文章请先登录注册