Ранговые значения одного столбца путем фильтрации по второму столбцу в DAX

Я пытаюсь использовать формулу RANKX, чтобы ранжировать значения одного столбца, но отфильтровать значение второго столбца. В этом примере col2 — это простой счетчик, работающий по возрастанию. Я пытаюсь найти значение ранга item_id относительно col1.

col1    col2
1001    8001
1001    8002
1002    8003
1002    8004
1002    8005

Я хотел бы выяснить col3, который будет читать:

col1    col2    col3
1001    8001    1
1001    8002    2
1002    8003    1
1002    8004    2
1002    8005    3

Потому что это будет ранг col2 относительно col1.


person Kevin    schedule 24.04.2015    source источник


Ответы (1)


Вам вообще не нужно использовать RANKX. См. раздел РАНЬШЕ на великолепном http://www.daxpatterns.com/. Добавьте в таблицу новый вычисляемый столбец:

=
COUNTROWS (
    FILTER (
        MyTable,
        [col2] <= EARLIER ( [col2] )
            && [col1] = EARLIER ( [col1] )
    )
)

Если вы хотите использовать RANKX, вы можете адаптировать формулу следующим образом:

=
RANKX (
    FILTER ( MyTable, [col1] >= EARLIER ( [col1] ) ),
    [Col2],
    ,
    1
)
person Rory    schedule 27.04.2015
comment
Спасибо, Рори! Оба решения работали прекрасно, но первое выглядело немного более эффективным с точки зрения ресурсов, поэтому я согласился с ним. Отличная рекомендация по ссылке. - person Kevin; 28.04.2015