Показать топ 3 ранжированных значений в подсказке столбца - PullRequest
0 голосов
/ 03 мая 2018

Я хочу создать всплывающую подсказку, в которой при наведении на элемент в диаграмме отображаются три верхних имени в столбце, который ранжируется по количеству их появления.

Я нашел два фрагмента кода, каждый из которых выполняет половину трюка, но попытался и не смог объединить их.

Код для поиска наиболее часто встречающегося значения:

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, оно не показывает правильное значение

Код для отображения первых трех появившихся строковых значений:

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
        )
    )

Этот код показывает мне первые 3 строковых значения, но не позволяет ранжировать их.

Я слишком долго пытался и терпел неудачу с этим, учитывая, что это звучит как теоретически простая вещь.

1 Ответ

0 голосов
/ 03 мая 2018

Я думаю, вы делаете это немного сложнее, чем нужно. Первый код дает вам большую часть пути туда. Вам просто нужно обернуть его в объединенную функцию и убедиться, что вы правильно установили порядок.

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] в качестве порядка по выражению.

...