在列工具提示中显示排名前3位的值

时间:2018-05-03 13:42:02

标签: tooltip powerbi dax rank

我想制作一个工具提示,当图表中的某个项目悬停在上面时,会显示一列中排名前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
        )
    )

此代码显示前三个字符串值,但不允许我对它们进行排名。

我一直在尝试和失败,因为这听起来像理论上简单的事情。

1 个答案:

答案 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]列。