RANK
применяется:вычисляемый столбец
вычисляемой таблицы
измерение
визуального вычисления
Возвращает рейтинг текущего контекста в указанной секции, отсортированный по указанному порядку. Если совпадение не удается найти, то ранг пустой.
Синтаксис
RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Параметры
Срок | Определение |
---|---|
ties |
(Необязательно) Определяет способ обработки ранжирования при привязке двух или более строк.
Если задано, поддерживаемое значение имеет значение DENSE или SKIP. Если опущено: — значение по умолчанию для SKIP |
relation |
(Необязательно) Табличное выражение, из которого возвращается выходная строка.
Если указано, все столбцы в orderBy и partitionBy должны поступать из него.
Если опущено: - orderBy необходимо явно указать.— все столбцы orderBy и partitionBy должны быть полностью квалифицированы и получены из одной таблицы.
— по умолчанию ALLSELECTED() всех столбцов в orderBy и partitionBy . |
axis |
(Необязательно) Ось в визуальной форме. Доступно только в визуальных вычислениях и заменяет relation . |
orderBy |
(Необязательно) Предложение ORDERBY(), содержащее столбцы, определяющие порядок сортировки каждой секции.
Если опущено: - relation необходимо явно указать.
— по умолчанию упорядочивается по каждому столбцу в relation , который еще не указан в partitionBy . |
blanks |
(Необязательно) Перечисление, определяющее, как обрабатывать пустые значения при сортировке relation или axis .
Поддерживаемые значения:
Примечание. Если параметр blanks и пустые значения в функции ORDERBY() для отдельных выражений указываются, blanks для отдельного выражения 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конечные выходные данные — это номер ранга.
-
RANK сначала определит все
Если
matchBy
присутствует, RANK попытается использовать столбцы вmatchBy
иpartitionBy
для idenfity текущей строки.Если столбцы, указанные в
orderBy
иpartitionBy
, не могут однозначно идентифицировать каждую строку вrelation
, то два или более строк могут иметь одинаковый рейтинг, а ранжирование определяется параметром связей.RANK возвращает пустое значение для общих строк. Рекомендуется тщательно протестировать выражение.
RANK не сравнивается с RANKX, так как SUM сравнивается с SUMX.
reset
можно использовать только в визуальных вычислениях и не может использоваться в сочетании сorderBy
илиpartitionBy
. Еслиreset
присутствует,axis
можно указать, ноrelation
невозможно.
Пример 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))
Создайте два столбца, которые ранжировать каждый месяц по общему объему продаж, как в течение каждого года, так и всей истории.
Снимок экрана ниже: визуальная матрица и первое выражение визуального вычисления: