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


RANK

Область применения: вычисление вычисляемого столбца вычисляемой таблицы Меры визуального элемента

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

Синтаксис

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

Параметры

Термин Определение
вия (Необязательно) Определяет способ обработки ранжирования при привязке двух или более строк.
Если задано, поддерживаемое значение имеет значение DENSE или SKIP.
Если опущено:
- Значение по умолчанию для SKIP
relation (Необязательно) Табличное выражение, из которого возвращается выходная строка.
Если задано, все столбцы в <порядке и <partitionBy>> должны поступать из него.
Если опущено:
— <orderBy> должен быть явно указан.
— Все <столбцы orderBy> и <partitionBy> должны быть полностью квалифицированы и получены из одной таблицы.
— Значение по умолчанию — ALLSELECTED() всех столбцов в <порядке> и <partitionBy>.
Ось X (Необязательно) Ось в визуальной форме. Доступно только в визуальных вычислениях и заменяет <отношение>.
orderBy (Необязательно) Предложение ORDERBY(), содержащее столбцы, определяющие порядок сортировки каждой секции.
Если опущено:
— <связь> должна быть явно указана.
— по умолчанию упорядочивается по каждому столбцу в <отношении> , который еще не указан в <partitionBy>.
Пробелы (Необязательно) Перечисление, определяющее, как обрабатывать пустые значения при сортировке.
Поддерживаемые значения:
  • KEEP (значение по умолчанию), где поведение числовых значений является пустыми значениями, упорядочены от нуля до отрицательных значений. Поведение строк является пустым значением, упорядоченным перед всеми строками, включая пустые строки.
  • Во-первых, пустые всегда упорядочены в начале независимо от возрастания или убывающего порядка сортировки.
  • LAST, пустые всегда упорядочены в конце независимо от возрастания или убывания сортировки.

Обратите внимание, что при <указании пустых> параметров и пустых значений в функции ORDERBY() для отдельного> <выражения orderBy и выражения orderBy без <указания пустых> параметров будут учитываться <> в родительской функции Window.
partitionBy (Необязательно) Предложение PARTITIONBY(), содержащее столбцы, определяющие <секционирование отношений> .
Если опущено, <реляционная связь> рассматривается как одна секция.
matchBy (Необязательно) Предложение MATCHBY(), содержащее столбцы, определяющие сопоставление данных и определение текущей строки.
reset (Необязательно) Доступно только в визуальных вычислениях. Указывает, сбрасывается ли вычисление и на каком уровне иерархии столбцов визуальной фигуры. Допустимые значения: NONE, LOWESTPARENT, HIGHESTPARENT или целое число. Поведение зависит от целочисленного знака:
если ноль или опущено, вычисление не сбрасывается. Эквивалент NONE.
— Если положительный, целое число определяет столбец, начиная с самого высокого, независимо от зерна. САМЫЙ ВЫСОКИЙ УРОВЕНЬ ЭКВИВАЛЕНТЕН 1.
— Если отрицательное, целое число определяет столбец, начиная с самого низкого, относительно текущего зерна. САМЫЙ НИЗКИЙPARENT эквивалентен -1.

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

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

Замечания

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

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

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

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

  • РАНГ не сравнивается с RANKX, так как СУММА сравнивается с SUMX.

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

Пример 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