Как использовать RankX в POWER BI с 2 значениями с критериями

#powerbi #dax #powerquery

#powerbi #dax #powerquery

Вопрос:

У меня есть таблица ниже в Power Bi, и я хотел бы добавить вычисляемый столбец на основе двух столбцов, но ранжирование без привязки в порядке приведенной ниже комбинации. например:

ПОРЯДОК = ЕСЛИ [МАКСИМАЛЬНАЯ ЦЕЛЬ)> 0% И [TAG]= ‘FALSE’, ТОГДА [ОТДЕЛЬНОЕ КОЛИЧЕСТВО]
, ЕСЛИ [МАКСИМАЛЬНАЯ ЦЕЛЬ)> 0% И [TAG] = ‘TRUE’, ТОГДА [ОТДЕЛЬНОЕ КОЛИЧЕСТВО]
, ЕСЛИ [[TAG] =’FALSE’, ТОГДА [ОТДЕЛЬНОЕ КОЛИЧЕСТВО]
, ЕСЛИ [TAG]= ‘TRUE’, ЗАТЕМ [РАЗЛИЧНОЕ КОЛИЧЕСТВО]

Вот пример моей таблицы с желаемым результатом:

 Order Company#  Company_Name    Goal_Name   Max_GOAL    TAG
    1   1001    COMPANY NAME 1  GOAL 1      25%         FALSE
    2   1001    COMPANY NAME 1  GOAL 2      81%         FALSE
    3   1001    COMPANY NAME 1  GOAL 3      40%         FALSE
    4   1001    COMPANY NAME 1  GOAL 4      26%         TRUE
    5   1001    COMPANY NAME 1  GOAL 5      0%          FALSE
    6   1001    COMPANY NAME 1  GOAL 6      0%          TRUE
    1   1002    COMPANY NAME 2  GOAL 1      26%         FALSE
    2   1002    COMPANY NAME 2  GOAL 2      66%         FALSE
    3   1002    COMPANY NAME 2  GOAL 3      40%         FALSE
    4   1002    COMPANY NAME 2  GOAL 4      68%         TRUE
    5   1002    COMPANY NAME 2  GOAL 5      0%          FALSE
    6   1002    COMPANY NAME 2  GOAL 6      0%          FALSE
  

Вот также пример кода, который я пробовал и работал на случай, если он понадобится кому-то еще:

     RANKX(FILTER (
        GroupGoalMapping,
        GroupGoalMapping[GroupNumber] = EARLIER ( GroupGoalMapping[GroupNumber] ) 
    ),
    RANKX ( ALL ( GroupGoalMapping ), GroupGoalMapping[AnnualMaximum] * IF(GroupGoalMapping[AlternateGoal]="FALSE",2),, DESC )
          DIVIDE (
            RANKX ( ALL ( GroupGoalMapping ), GroupGoalMapping[AnnualMaximum] * IF(GroupGoalMapping[AlternateGoal]="TRUE",1)  ,, DESC ),
            COUNTROWS ( ALL ( GroupGoalMapping ) )   1
        )
          DIVIDE (
            DIVIDE (
                RANKX ( ALL ( GroupGoalMapping ), GroupGoalMapping[GoalName_Order] ,, ASC,Dense ),
                ( COUNTROWS ( ALL ( GroupGoalMapping ) )   1 )
            ),
            COUNTROWS ( ALL ( GroupGoalMapping ) )   1
        ),
    ,
    ASC,
    DENSE
)
  

Комментарии:

1. Можете ли вы предоставить текстовый вывод и желаемый вывод в виде таблицы? Кроме того, вы можете определить [DISTINCT COUNT] ?

2. @AngeloCanepa Спасибо! Я добавил текст во фрагменте, и мне нужно ранжирование или подсчет без привязки.

Ответ №1:

Я понял это:

 RANKX(FILTER (
            GroupGoalMapping,
            GroupGoalMapping[GroupNumber] = EARLIER ( GroupGoalMapping[GroupNumber] ) 
        ),
        RANKX ( ALL ( GroupGoalMapping ), GroupGoalMapping[AnnualMaximum] * IF(GroupGoalMapping[AlternateGoal]="FALSE",2),, DESC )
              DIVIDE (
                RANKX ( ALL ( GroupGoalMapping ), GroupGoalMapping[AnnualMaximum] * IF(GroupGoalMapping[AlternateGoal]="TRUE",1)  ,, DESC ),
                COUNTROWS ( ALL ( GroupGoalMapping ) )   1
            )
              DIVIDE (
                DIVIDE (
                    RANKX ( ALL ( GroupGoalMapping ), GroupGoalMapping[GoalName_Order] ,, ASC,Dense ),
                    ( COUNTROWS ( ALL ( GroupGoalMapping ) )   1 )
                ),
                COUNTROWS ( ALL ( GroupGoalMapping ) )   1
            ),
        ,
        ASC,
        DENSE
    )