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


ROWNUMBER

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

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

Синтаксис

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

Параметры

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

Обратите внимание, что при <указании пустых> параметров и пустых значений в функции 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))

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

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

Вычисление визуального элемента DAX

INDEX
ORDERBY
PARTITIONBY
WINDOW
RANK