我想制作一个工具提示,当图表中的某个项目悬停在上面时,会显示一列中排名前3位的名称。
我发现了两段代码,每一段代码都执行了一半,但尝试过但未能将它们组合起来。
找到最常见值的代码:
TopIssue =
FIRSTNONBLANK (
TOPN (
1,
VALUES ( FlagReport[Cat 3] ),
RANKX( ALL( FlagReport[Cat 3] ), [IssueCount],,ASC)
),
1)
IssueCount = COUNT(FlagReport[Ref No])
这很好用,但是当我改变1 - > 2 - > 3它与排名没有正确关联,因为当我将其更改为2时,它没有显示正确的值
显示前3个字符串值的代码:
List of Cat 3 values =
VAR __DISTINCT_VALUES_COUNT = DISTINCTCOUNT('FlagReport'[Cat 3])
VAR __MAX_VALUES_TO_SHOW = 3
RETURN
IF(
__DISTINCT_VALUES_COUNT > __MAX_VALUES_TO_SHOW,
CONCATENATE(
CONCATENATEX(
TOPN(
__MAX_VALUES_TO_SHOW,
VALUES('FlagReport'[Cat 3]),
'FlagReport'[Cat 3],
ASC
),
'FlagReport'[Cat 3],
", ",
'FlagReport'[Cat 3],
ASC
),
", etc."
),
CONCATENATEX(
VALUES('FlagReport'[Cat 3]),
'FlagReport'[Cat 3],
", ",
'FlagReport'[Cat 3],
ASC
)
)
此代码显示前三个字符串值,但不允许我对它们进行排名。
我一直在尝试和失败,因为这听起来像理论上简单的事情。
答案 0 :(得分:0)
我认为你让它变得比它需要的要复杂得多。第一个代码可以帮助您完成大部分工作。您只需将其包装在一个连接函数中,并确保正确设置了顺序。
Top3 = CONCATENATEX(
TOPN(3,
VALUES(FlagReport[Cat 3]),
RANKX(ALL(FlagReport[Cat 3]), [IssueCount], ,ASC)),
FlagReport[Cat 3], ", ", [IssueCount], DESC)
TOPN
函数找到排名前3位的项目。然后我们使用Cat 3
作为表达式的顺序连接[IssueCount]
列。