Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:
Вычисляемый столбец
Вычисляемая таблица
Измерять
Визуальное вычисление
Возвращает строку в абсолютной позиции, указанной параметром позиции в указанной секции, отсортированной по указанному порядку. Если текущая секция не может быть выведена в одну секцию, может быть возвращено несколько строк.
Синтаксис
INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Параметры
| Срок | Определение |
|---|---|
position |
Абсолютная позиция (1 на основе), из которой можно получить данные: - position положительно: 1 — первая строка, 2 — вторая строка и т. д. - position является отрицательной: -1 является последней строкой, -2 является второй последней строкой и т. д. Если position выходит из границы, или ноль, или BLANK(), INDEX возвращает пустую таблицу. Это может быть любое выражение DAX, возвращающее скалярное значение. |
relation |
(Необязательно) Табличное выражение, из которого возвращаются выходные данные. При использовании в визуальных вычислениях этот параметр принимает ось в визуальной форме.
Если указано, все столбцы в partitionBy должны поступать из нее или связанной таблицы.
Если опущено: - orderBy необходимо явно указать.
. Все выражения orderBy и partitionBy должны быть полными именами столбцов и поступать из одной таблицы.
— по умолчанию ALLSELECTED() всех столбцов в orderBy и partitionBy. |
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. |
Возвращаемое значение
Строка в абсолютной позиции.
Замечания
Каждый столбец partitionBy и matchBy должен иметь соответствующее внешнее значение, чтобы определить "текущую секцию", с помощью следующего поведения:
- Если есть ровно один соответствующий внешний столбец, используется его значение.
- Если нет соответствующего внешнего столбца:
-
INDEX сначала определит все
partitionByиmatchByстолбцы, не имеющие соответствующего внешнего столбца. - Для каждого сочетания существующих значений для этих столбцов в родительском контексте INDEXвычисляется INDEX и возвращается строка.
- INDEXконечные выходные данные являются объединением этих строк.
-
INDEX сначала определит все
- Если существует несколько соответствующих внешних столбцов, возвращается ошибка.
Если matchBy присутствует, INDEX попытается использовать matchBy и partitionBy столбцы для идентификации строки.
Если matchBy отсутствует, и столбцы, указанные в orderBy и partitionBy, не могут однозначно идентифицировать каждую строку в relation:
- INDEX попытается найти наименьшее количество дополнительных столбцов, необходимых для уникальной идентификации каждой строки.
- Если такие столбцы можно найти, INDEX автоматически добавит эти новые столбцы в
orderBy, и каждая секция сортируется с помощью этого нового набора столбцов OrderBy. - Если такие столбцы не удается найти, возвращается ошибка.
Если возвращается пустая таблица:
- Соответствующее внешнее значение столбца PartitionBy не существует в
relation. - Значение
positionссылается на положение, которое не существует в разделе.
Если INDEX используется в вычисляемом столбце, определенном в той же таблице, что и relation, и orderBy опущен, возвращается ошибка.
reset можно использовать только в визуальных вычислениях и не может использоваться в сочетании с orderBy или partitionBy. Если reset присутствует, axis можно указать, но relation невозможно.
Если значение reset является абсолютным (т. е. положительным целым числом HIGHESTPARENT или ссылкой на поле), а вычисление вычисляется на целевом уровне иерархии или выше, вычисление сбрасывается для каждого отдельного элемента. То есть функция оценивается в секции, содержащей только этот конкретный элемент.
Пример 1— вычисляемый столбец
Следующий запрос DAX:
EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))
Возвращает следующую таблицу:
| DimDate[CalendarYear] |
|---|
| 2005 |
Пример 2— вычисляемый столбец
Следующий запрос DAX:
EVALUATE
SUMMARIZECOLUMNS (
FactInternetSales[ProductKey],
DimDate[MonthNumberOfYear],
FILTER (
VALUES(FactInternetSales[ProductKey]),
[ProductKey] < 222
),
"CurrentSales", SUM(FactInternetSales[SalesAmount]),
"LastMonthSales",
CALCULATE (
SUM(FactInternetSales[SalesAmount]),
INDEX(-1, ORDERBY(DimDate[MonthNumberOfYear]))
)
)
ORDER BY [ProductKey], [MonthNumberOfYear]
Возвращает следующую таблицу:
| FactInternetSales[ProductKey] | DimDate[MonthNumberOfYear] | [CurrentSales] | [LastMonthSales] |
|---|---|---|---|
| 214 | 1 | 5423.45 | 8047.7 |
| 214 | 2 | 4968.58 | 8047.7 |
| 214 | 3 | 5598.4 | 8047.7 |
| 214 | 4 | 5073.55 | 8047.7 |
| 214 | 5 | 5248.5 | 8047.7 |
| 214 | 6 | 7487.86 | 8047.7 |
| 214 | 7 | 7382.89 | 8047.7 |
| 214 | 8 | 6543.13 | 8047.7 |
| 214 | 9 | 6788.06 | 8047.7 |
| 214 | 10 | 6858.04 | 8047.7 |
| 214 | 11 | 8607.54 | 8047.7 |
| 214 | 12 | 8047.7 | 8047.7 |
| 217 | 1 | 5353.47 | 7767.78 |
| 217 | 2 | 4268.78 | 7767.78 |
| 217 | 3 | 5773.35 | 7767.78 |
| 217 | 4 | 5738.36 | 7767.78 |
| 217 | 5 | 6158.24 | 7767.78 |
| 217 | 6 | 6998 | 7767.78 |
| 217 | 7 | 5563.41 | 7767.78 |
| 217 | 8 | 5913.31 | 7767.78 |
| 217 | 9 | 5913.31 | 7767.78 |
| 217 | 10 | 6823.05 | 7767.78 |
| 217 | 11 | 6683.09 | 7767.78 |
| 217 | 12 | 7767.78 | 7767.78 |
Пример 3. Визуальное вычисление
Следующие визуальные вычисления DAX запросах:
SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))
SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))
Улучшение таблицы таким образом, чтобы она содержала, за каждый месяц:
- общий объем продаж;
- разница в первом месяце соответствующего года;
- и разница в первом месяце соответствующего квартала.
Снимок экрана ниже: визуальная матрица и первое выражение визуального вычисления: