Поделиться через


RANK

Применимо к:Вычисляемый столбецВычисляемая таблицаИзмерятьВизуальное вычисление

Возвращает рейтинг текущего контекста в указанной секции, отсортированный по указанному порядку. Если совпадение не удается найти, то ранг пустой.

Синтаксис

RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Параметры

Срок Определение
ties (Необязательно) Определяет способ обработки ранжирования при привязке двух или более строк.
Если задано, поддерживаемое значение имеет значение DENSE или SKIP.
Если опущено:
— значение по умолчанию для SKIP
relation (Необязательно) Табличное выражение, из которого возвращается выходная строка. При использовании в визуальных вычислениях этот параметр принимает ось в визуальной форме.
Если указано, все столбцы в orderBy и partitionBy должны поступать из него.
Если опущено:
- orderBy необходимо явно указать.
— все столбцы orderBy и partitionBy должны быть полностью квалифицированы и получены из одной таблицы.
— по умолчанию ALLSELECTED() всех столбцов в orderBy и partitionBy.
orderBy (Необязательно) Предложение ORDERBY(), содержащее столбцы, определяющие порядок сортировки каждой секции.
Если опущено:
- relation необходимо явно указать.
— по умолчанию упорядочивается по каждому столбцу в relation, который еще не указан в partitionBy.
blanks (Необязательно) Перечисление, определяющее, как обрабатывать пустые значения при сортировке relation или axis.
Поддерживаемые значения:
  • DEFAULT (значение по умолчанию), где поведение числовых значений является пустыми значениями, упорядочены от нуля до отрицательных значений. Поведение строк является пустым значением, упорядоченным перед всеми строками, включая пустые строки.
  • FIRST, пустые поля всегда упорядочены в начале независимо от возрастания или убывающего порядка сортировки.
  • LAST, пустые всегда упорядочены в конце независимо от возрастания или убывания сортировки.

Обратите внимание, что при blanks указании параметра и пустых blanks значений в функции () дляORDERBY отдельных выражений orderBy выражение имеет приоритет для соответствующего выражения orderBy, а выражения orderBy не blanks будут учитывать blanks параметр родительской функции.
partitionBy (Необязательно) Предложение (PARTITIONBY) с столбцами, определяющими relation способ секционирования. Если опущено, relation рассматривается как одна секция.
matchBy (Необязательно) Предложение (MATCHBY) с столбцами, определяющими сопоставление данных и определение текущей строки.
reset (Необязательно) Доступно только в визуальных вычислениях. Указывает, сбрасывается ли вычисление и на каком уровне иерархии столбцов визуальной фигуры. Допустимые значения: ссылка на поле столбца в текущей визуальной форме, NONE (по умолчанию), LOWESTPARENT, HIGHESTPARENTили целое число. Поведение зависит от целочисленного знака:
— если нулевая или опущенная, вычисление не сбрасывается. Эквивалентно NONE.
— если положительный, целое число определяет столбец, начиная с самого высокого, независимо от зерна. HIGHESTPARENT эквивалентно 1.
— если отрицательно, целое число определяет столбец, начиная с самого низкого, относительно текущего зерна. LOWESTPARENT эквивалентно -1.

Возвращаемое значение

Номер ранга для текущего контекста.

Замечания

  • Каждый столбец orderBy, partitionByи matchBy должен иметь соответствующее внешнее значение, чтобы помочь определить текущую строку, с помощью следующего поведения:

    • Если есть ровно один соответствующий внешний столбец, используется его значение.
    • Если соответствующий внешний столбец отсутствует, то:
      • RANK сначала определит все orderBy, partitionByи matchBy столбцы, не имеющие соответствующего внешнего столбца.
      • Для каждого сочетания существующих значений для этих столбцов в родительском контексте RANK вычисляется RANK и возвращается строка.
      • RANKконечные выходные данные — это номер ранга.
  • Если matchBy присутствует, RANK попытается использовать столбцы в matchBy и partitionBy для idenfity текущей строки.

  • Если столбцы, указанные в orderBy и partitionBy, не могут однозначно идентифицировать каждую строку в relation, то два или более строк могут иметь одинаковый рейтинг, а ранжирование определяется параметром связей.

  • RANK возвращает пустое значение для общих строк. Рекомендуется тщательно протестировать выражение.

  • RANK не сравнивается с RANKX, так как SUM сравнивается с SUMX.

  • reset можно использовать только в визуальных вычислениях и не может использоваться в сочетании с orderBy или partitionBy. Если reset присутствует, axis можно указать, но relation невозможно.

  • Если значение reset является абсолютным (т. е. положительным целым числом HIGHESTPARENT или ссылкой на поле), а вычисление вычисляется на целевом уровне иерархии или выше, вычисление сбрасывается для каждого отдельного элемента. То есть функция оценивается в секции, содержащей только этот конкретный элемент.

Пример 1— вычисляемый столбец

Следующий запрос DAX:

EVALUATE
ADDCOLUMNS(
    'DimGeography',
    "Rank",
    RANK(
    	DENSE,
    	'DimGeography',
    	ORDERBY(
    		'DimGeography'[StateProvinceName], desc,
    		'DimGeography'[City], asc),
        LAST,
    	PARTITIONBY(
    		'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc

Возвращает таблицу, которая ранжирует каждую географию с одинаковым значением EnglishCountryRegionName, по stateProvinceName и City. Пустые значения столбцов orderBy отсортированы в конце.

Пример 2. Визуальное вычисление

Следующие визуальные вычисления DAX запросах:

SalesRankWithinYear = RANK(DENSE, ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))

SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))

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

Снимок экрана ниже: визуальная матрица и первое выражение визуального вычисления:

DAX визуальное вычисление

INDEX ORDERBY PARTITIONBY WINDOW ROWNUMBER