ROWNUMBER
Область применения: вычисление вычисляемого столбца вычисляемой таблицы Меры визуального элемента
Возвращает уникальное ранжирование текущего контекста в указанной секции, отсортированного по указанному порядку. Если совпадение не удается найти, то число строк пусто.
Синтаксис
ROWNUMBER ( [<relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Параметры
Термин | Определение |
---|---|
relation | (Необязательно) Табличное выражение, из которого возвращается выходная строка. Если задано, все столбцы в <порядке и <partitionBy>> должны поступать из него. Если опущено: — <orderBy> должен быть явно указан. — Все <столбцы orderBy> и <partitionBy> должны быть полностью квалифицированы и получены из одной таблицы. — Значение по умолчанию — ALLSELECTED() всех столбцов в <порядке> и <partitionBy>. |
Ось X | (Необязательно) Ось в визуальной форме. Доступно только в визуальных вычислениях и заменяет <отношение>. |
orderBy | (Необязательно) Предложение ORDERBY(), содержащее столбцы, определяющие порядок сортировки каждой секции. Если опущено: — <связь> должна быть явно указана. — по умолчанию упорядочивается по каждому столбцу в <отношении> , который еще не указан в <partitionBy>. |
Пробелы | (Необязательно) Перечисление, определяющее, как обрабатывать пустые значения при сортировке. Поддерживаемые значения:
Обратите внимание, что при <указании пустых> параметров и пустых значений в функции ORDERBY() для отдельного> <выражения orderBy и выражения orderBy без <указания пустых> параметров будут учитываться <> в родительской функции Window. |
partitionBy | (Необязательно) Предложение PARTITIONBY(), содержащее столбцы, определяющие <секционирование отношений> . Если опущено, <реляционная связь> рассматривается как одна секция. |
matchBy | (Необязательно) Предложение MATCHBY(), содержащее столбцы, определяющие сопоставление данных и определение текущей строки. |
reset | (Необязательно) Доступно только в визуальных вычислениях. Указывает, сбрасывается ли вычисление и на каком уровне иерархии столбцов визуальной фигуры. Допустимые значения: NONE, LOWESTPARENT, HIGHESTPARENT или целое число. Поведение зависит от целочисленного знака: если ноль или опущено, вычисление не сбрасывается. Эквивалент NONE. — Если положительный, целое число определяет столбец, начиная с самого высокого, независимо от зерна. САМЫЙ ВЫСОКИЙ УРОВЕНЬ ЭКВИВАЛЕНТЕН 1. — Если отрицательное, целое число определяет столбец, начиная с самого низкого, относительно текущего зерна. САМЫЙ НИЗКИЙPARENT эквивалентен -1. |
Возвращаемое значение
Номер строки для текущего контекста.
Замечания
Каждый <столбец orderBy>, <partitionBy> и <matchBy> должен иметь соответствующее внешнее значение, чтобы определить текущую строку, в которой следует работать, с помощью следующего поведения:
- Если есть ровно один соответствующий внешний столбец, используется его значение.
- Если соответствующий внешний столбец отсутствует, то:
- ROWNUMBER сначала определяет все <столбцы orderBy, <partitionBy>> и <matchBy>, у которых нет соответствующего внешнего столбца.
- Для каждого сочетания существующих значений для этих столбцов в родительском контексте ROWNUMBER вычисляется rowNUMBER и возвращается строка.
- Окончательные выходные данные ROWNUMBER — это объединение этих строк.
- Если существует несколько соответствующих внешних столбцов, возвращается ошибка.
Если <значение matchBy> присутствует, то ROWNUMBER попытается использовать столбцы в <matchBy и <partitionBy>> для idenfity текущей строки.
Если столбцы, указанные в <orderBy> и <partitionBy> , не могут однозначно идентифицировать каждую строку в <отношении>, то:
- ROWNUMBER попытается найти наименьшее количество дополнительных столбцов, необходимых для уникальной идентификации каждой строки.
- Если такие столбцы можно найти, ROWNUMBER будет
- Попробуйте найти минимальное количество дополнительных столбцов, необходимых для уникальной идентификации каждой строки.
- Автоматически добавляйте эти новые столбцы в <предложение orderBy> .
- Сортируйте каждую секцию с помощью этого нового набора столбцов orderBy.
- Если такие столбцы не удается найти и функция обнаруживает связь во время выполнения, возвращается ошибка.
<сброс> можно использовать только в визуальных вычислениях и не может использоваться в сочетании с <orderBy> или <partitionBy>. Если <сброс> присутствует, ось> может быть указана, <но <связь> не может быть указана.
Пример 1— вычисляемый столбец
Следующий запрос DAX:
EVALUATE
ADDCOLUMNS(
'DimGeography',
"UniqueRank",
ROWNUMBER(
'DimGeography',
ORDERBY(
'DimGeography'[StateProvinceName], desc,
'DimGeography'[City], asc),
PARTITIONBY(
'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc
Возвращает таблицу, которая однозначно ранжирует каждую географию с одинаковым значением EnglishCountryRegionName, по состоянию StateProvinceName и City.
Пример 2. Визуальное вычисление
Следующие запросы DAX визуального вычисления:
SalesRankWithinYear = ROWNUMBER(ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))
SalesRankAllHistory = ROWNUMBER(ORDERBY([SalesAmount], DESC))
Создайте два столбца, которые однозначно ранжировать каждый месяц по общему объему продаж, как в течение каждого года, так и всей истории.
Снимок экрана ниже: визуальная матрица и первое выражение визуального вычисления: