[已解决] 请问DAX中如何获取可视化表中的最大/小值

  [复制链接]
查看242371 | 回复178 | 2020-11-5 21:25:52 | 显示全部楼层 |阅读模式
可视化表中的值是经过了变化的,原始数据是本文,可视化表中是文本的非重复计数。
其他的数字值我鼓捣出来了,如下图中的:售价最大值 = MAXX(ALL('Sheet2'),'Sheet2'[售价])
但是文本类型的值却始终没有想通,还望大佬们指点一二。
需求的值:列“品级 的非重复计数”中的最大/小值(即3/1)
我需要这个值来进行一些其他计算

原始数据:
10548102110541.png
生成后的表:
10548102110542.png



10548102110544.rar (29.46 KB, 下载次数: 0)
回复

使用道具 举报

gege | 2020-11-5 21:31:52 | 显示全部楼层
是名称的最大还是品级的最大,最终效果是怎样的?
回复

使用道具 举报

李寻欢 | 2020-11-5 21:36:53 | 显示全部楼层
是名称的最大还是品级的最大,最终效果是怎样的?


感谢关心,刚刚已经解决了:
1、先建一个临时表:表 = SUMMARIZECOLUMNS('主表'[产品名称],"a1",DISTINCTCOUNT('主表'[品级]))
2、然后统计临时表中的最大值:品级最大值 = MAXX(ALL('表'),'表'[a1])
效果如下: 10548102110543.png
回复

使用道具 举报

youzi4 | 2020-11-5 21:41:53 | 显示全部楼层
感谢关心,刚刚已经解决了:
1、先建一个临时表:表 = SUMMARIZECOLUMNS('主表'[产品名称],"a1",DISTINC ...


按你的统计口径,一个度量值就可以了:
Measure = MAXX(ALL('主表'[产品名称]), CALCULATE(DISTINCTCOUNT('主表'[品级])))
回复

使用道具 举报

lovedvd | 2020-11-5 21:46:53 | 显示全部楼层
按你的统计口径,一个度量值就可以了:
Measure = MAXX(ALL('主表'[产品名称]), CALCULATE(DISTINCTCOUN ...


完美!!!
非常感谢,正在考虑怎么用CALCULATE提效,因为不熟悉,调试了好久。
我最终是目的是:用最大值减最小值得到一个区间,然后判断当前值在区间中的位置(当前值减最小值),从而判断当前值的优劣状态。
最终整合为一个式子:
发明人数得分 = FORMAT((DISTINCTCOUNT('主表'[第一发明人])- MINX(ALL('主表'[第一申请人]), CALCULATE(DISTINCTCOUNT('主表'[第一发明人]))))/( MAXX(ALL('主表'[第一申请人]), CALCULATE(DISTINCTCOUNT('主表'[第一发明人])))- MINX(ALL('主表'[第一申请人]), CALCULATE(DISTINCTCOUNT('主表'[第一发明人])))),"Fixed")好像设个变量会让式子更简洁一些?                   
回复

使用道具 举报

清水TOTO | 2020-11-5 21:53:53 | 显示全部楼层
按你的统计口径,一个度量值就可以了:
Measure = MAXX(ALL('主表'[产品名称]), CALCULATE(DISTINCTCOUN ...


另外打扰一下:
  1. 发明人数得分 =

  2. VAR fmr = DISTINCTCOUNT('主表'[第一发明人])

  3. VAR fmr2 =CALCULATE(DISTINCTCOUNT('主表'[第一发明人]))

  4. VAR sqr = ALL('主表'[第一申请人])

  5. RETURN

  6. FORMAT((fmr- MINX(sqr,CALCULATE(DISTINCTCOUNT('主表'[第一发明人]))))/( MAXX(sqr, CALCULATE(DISTINCTCOUNT('主表'[第一发明人])))- MINX(sqr, CALCULATE(DISTINCTCOUNT('主表'[第一发明人])))),"Fixed")
复制代码


其中的CALCULATE(DISTINCTCOUNT('主表'[第一发明人]))用fmr2替换后会出错(计算结果为0),我用fmr替换其中的一部分也不行,请问大概是什么问题呢?
回复

使用道具 举报

sari | 2020-11-5 21:56:53 | 显示全部楼层
另外打扰一下:

其中的CALCULATE(DISTINCTCOUNT('主表'[第一发明人]))用fmr2替换后会出错(计算结果为 ...


问题在于变量的使用,DAX中对于变量处理不同于很多编程语言,它并不是真正的“变”量——因为一旦某变量在计算过程中被使用后,则该变量其整个作用范围中,将保持不变!

比如,将CALCULATE(DISTINCTCOUNT('主表'[第一发明人]))用fmr2替代后,在MINX(ALL('主表'[第一申请人]), fmr2)的计算中,ALL('主表'[第一申请人])迭代产生的每一条行上下文并不再影响到fmr2的值。
回复

使用道具 举报

lingerie | 2020-11-5 22:03:54 | 显示全部楼层
问题在于变量的使用,DAX中对于变量处理不同于很多编程语言,它并不是真正的“变”量——因为一旦某变量 ...


哦,意思是一个变量不适宜被多次使用哦?谢谢提点,今天又学到了
回复

使用道具 举报

benny1982 | 2020-11-5 22:05:54 | 显示全部楼层
哦,意思是一个变量不适宜被多次使用哦?谢谢提点,今天又学到了


不是不适宜使用,恰恰相反,var的使用能大幅提高DAX公式的可读性、可维护性,但用起来比较有技术含量(比如像这种情况,在迭代行上下文估值环境中使用就无法得到预期的结果)。

其实var的定义位置不限于最外层,在DAX公式的任何位置都可以定义var,相应的作用域也就不一样了。var的使用不是一两句话说的完的,建议去找找相关文章仔细研读。
回复

使用道具 举报

bbxing | 2021-5-22 20:12:51 | 显示全部楼层
路过的帮顶
回复

使用道具 举报

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

本版积分规则