[已解决] 多层级排名

  [复制链接]
查看277077 | 回复191 | 2021-2-18 20:47:44 | 显示全部楼层 |阅读模式
各位老师:

下午好!请老师和大神们提供一些帮助。(刚才的帖子不看不见,重发一帖)

期望实现按层级排名,一级分类和部门两个层级。下面的度量值该如何修改:

年初至今客单价增长排名 =
IF(
  HASONEVALUE('部门分类'[部门]),
  RANKX(
  ALL('部门分类'[部门]),
   [年初至今客单价增长],,DESC,Dense
  )
)

部门分类表:包含""一级分类"",""部门"",共两列。
日期表:包含""日期"",""年"",""月"",共三列

ThxAlot老师指出,用SINSCOPE先把层级区分开;然后在各自层级内再进行排名。

    RANK =SWICH( TRUE,ISINSCOPE('部门信息'[人员]), RANKX(),ISINSCOPE('部门信息'[小组]), RANKX(),ISINSCOPE('部门信息'[部门]), RANKX(),ISINSCOPE('部门信息'[分公司]), RANKX(),...)

[color=rgb(51, 102, 153) !important]复制代码

可以实现更多层级的分类排名。但是我钻了半天,还是没能成功。请大神老师协助。

109311115561610.zip (137.66 KB, 下载次数: 0)
回复

使用道具 举报

诗诺 | 2021-2-18 20:56:44 | 显示全部楼层
糟糕啦,20分钟过去了,怎么还没有一个老师下载我的附件
这也太难了。
回复

使用道具 举报

xuhui2004 | 2021-2-18 21:01:45 | 显示全部楼层
年初至今销售额增长排名 =
SWITCH(TRUE,
  ISINSCOPE('部门表'[ 一级分类]),
  RANKX(
    ALL('部门表'[ 一级分类]),
    [年初至今销售额增长],,DESC,Dense
  ),
  ISINSCOPE('部门表'[ 二级分类]),
  RANKX(
    ALL('部门表'[ 二级分类]),
    [年初至今销售额增长],,DESC,Dense
  ),
  ISINSCOPE('部门表'[部门]),
  RANKX(
    ALL('部门表'[部门]),
    [年初至今销售额增长],,DESC,Dense
  )
)

这样单级的向下钻取,能显示正确的排名,就是不能分两级或三级展工开显示,展开的第二、三级排名是错误的。
回复

使用道具 举报

qqwwqqww | 2021-2-18 21:05:45 | 显示全部楼层
年初至今销售额增长排名 =
SWITCH(TRUE,
  ISINSCOPE('部门表'[ 一级分类]),


我把度量值的写法都简化了一下(虽然性能上不一定会提升),另外你提到的这个分层级排名的度量值也修改了一下,供参考:
  1. 年初至今增长排名 =

  2. SWITCH (

  3.   TRUE (),

  4.   ISINSCOPE ( '部门表'[部门] ),

  5.   RANKX (

  6.     ALLSELECTED ( '部门表'[部门] ),

  7.     CALCULATE ( [年初至今增长], ALLEXCEPT ( '部门表', '部门表'[部门] ) )

  8.   ),

  9.   ISINSCOPE ( '部门表'[ 二级分类] ),

  10.   RANKX (

  11.     ALLSELECTED ( '部门表'[ 二级分类] ),

  12.     CALCULATE ( [年初至今增长], ALLEXCEPT ( '部门表', '部门表'[ 二级分类] ) )

  13.   ),

  14.   HASONEVALUE ( '部门表'[ 一级分类] ), RANKX ( ALLSELECTED ( '部门表'[ 一级分类] ), [年初至今增长] )

  15. )
复制代码

109311115561611.zip (74.38 KB, 下载次数: 0)
回复

使用道具 举报

ftq | 2021-2-18 21:11:45 | 显示全部楼层
我把度量值的写法都简化了一下(虽然性能上不一定会提升),另外你提到的这个分层级排名的度量值也修改了 ...


老师,辛苦您了。您的度量值写得非常棒。
之前我有一点没表述清楚。现在发图片给你参照。
我希望得到展开后的效果是在相应的层级内重新排名。
偿试了改了几次,没摸清门道,没修改成功。烦请老师再帮我改改。万分感谢!
10931111556161.png 10931111556162.png 10931111556163.png 10931111556164.png 10931111556165.png
回复

使用道具 举报

真少爷 | 2021-2-18 21:15:45 | 显示全部楼层
10931111556166.png

dax表达式如下
部门排名 = SWITCH (
  TRUE (),
  ISINSCOPE ( '部门表'[部门] ),
  RANKX (
    ALLSELECTED ( '部门表'[部门] ),
    [金额总计],
  ),
  ISINSCOPE ( '部门表'[ 二级分类] ),
  RANKX (
    ALLSELECTED ( '部门表'[ 二级分类] ),
     [金额总计],
  ),
  HASONEVALUE ( '部门表'[ 一级分类] ), RANKX ( ALLSELECTED ( '部门表'[ 一级分类] ), [金额总计] )
)我没有写那个什么年初至今销售,你把[金额总计]换成你那个度量值就可以了
回复

使用道具 举报

STRONGSUN | 2021-2-18 21:18:46 | 显示全部楼层
makarria 发表于 2020-11-10 15:35
dax表达式如下
部门排名 = SWITCH (
  TRUE (),


感谢makarria老师,您这个度量值用于计算销售总额完全没问题。和楼上老师是一样的架构。问题出在计算“累计年初至今增长额”这个被引用的度量值这里。这里好像是不能直接引用。
回复

使用道具 举报

photocard | 2021-2-18 21:24:46 | 显示全部楼层
感谢makarria老师,您这个度量值用于计算销售总额完全没问题。和楼上老师是一样的架构。问题出在计算“累 ...


你把你累计年初至今增长额这个dax给我贴出来看看呢我用的desktop的版本和你的不一样,打不开你那个pbi文件
回复

使用道具 举报

半支烟 | 2021-2-18 21:27:46 | 显示全部楼层
你把你累计年初至今增长额这个dax给我贴出来看看呢我用的desktop的版本和你的不一样,打不开你那个pbi文 ...


年初至今 = IF(HASONEVALUE('日期表'[月]), CALCULATE( [销售额], DATESYTD( '日期表'[日期] ) ) )

年初至今增长 =
VAR __prev_year_ytd = CALCULATE([年初至今], DATEADD('日期表'[日期], -1, YEAR))
RETURN
IF(NOT ISBLANK(__prev_year_ytd), [年初至今] - __prev_year_ytd)

年初至今增长排名 =
SWITCH (
  TRUE (),
  ISINSCOPE ( '部门表'[部门] ),
  RANKX (
    ALLSELECTED ( '部门表'[部门] ),
    CALCULATE ( [年初至今增长], ALLEXCEPT ( '部门表', '部门表'[部门] ) )
  ),
  ISINSCOPE ( '部门表'[ 二级分类] ),
  RANKX (
    ALLSELECTED ( '部门表'[ 二级分类] ),
    CALCULATE ( [年初至今增长], ALLEXCEPT ( '部门表', '部门表'[ 二级分类] ) )
  ),
  HASONEVALUE ( '部门表'[ 一级分类] ), RANKX ( ALLSELECTED ( '部门表'[ 一级分类] ), [年初至今增长] )
)
回复

使用道具 举报

snnhqm | 2021-2-18 21:33:46 | 显示全部楼层
重新上传附件。

这个问题没这么简单,研究了一下午没研究出来。ALLSELE函数相当难驾驭。请版主和各位大神老师协助。

在此再次感谢ThxAlot老师和makarria老师。

109311115561612.zip (76.47 KB, 下载次数: 0)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则