OFFSET
применимо:вычисляемый столбецвычисляемой таблицеMeasureвизуального вычисления
Возвращает одну строку, расположенную перед or после текущей строки в той же таблице, заданной offset. If текущая строка не может быть выведена в одну строку, может быть возвращено несколько строк.
Синтаксис
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Параметры
Срок | Определение |
---|---|
delta |
Число строк до (отрицательных value) or после (положительного value) текущей строки, из которой необходимо получить данные. Это может быть любое выражение DAX, возвращающее скалярную value. |
relation |
(Необязательно) Табличное выражение, из которого возвращается выходная строка.
If указанные столбцы all в partitionBy должны поступать из нее or таблицу related.
If опущено: - orderBy необходимо явно указать.— выражения All orderBy andpartitionBy должны быть полными именами столбцов and поступать из одной таблицы.
. По умолчанию ALLSELECTED() столбцов all в orderBy andpartitionBy . |
axis |
(Необязательно) Ось в визуальной форме. Доступно только в визуальных вычислениях, and заменяет relation . |
orderBy |
(Необязательно) Предложение ORDERBY(), содержащее выражения, которые define сортировке каждой секции.
If опущено: - relation необходимо явно указать.
— по умолчанию упорядочивается по каждому столбцу в relation not, который уже указан в partitionBy . |
blanks |
(Необязательно) Перечисление, определяющее, как обрабатывать blankvalues при сортировке.
этот параметр зарезервирован для дальнейшего использования. В настоящее время единственным поддерживаемым value является DEFAULT , где поведение числовых valuesblankvalues упорядочено от нуля and отрицательных values. Поведение строк blankvalues упорядочивается перед all строками, включая пустые строки. |
partitionBy |
(Необязательно) Предложение PARTITIONBY(), содержащее столбцы, define секционирование relation .
If опущено, relation рассматривается как одна секция. |
matchBy |
(Необязательно) Предложение MATCHBY(), содержащее столбцы, define сопоставление данных and идентификации текущей строки. |
reset |
(Необязательно) Доступно только в визуальных вычислениях. Указывает if сбросы вычислений, and на каком уровне иерархии столбцов визуальной фигуры. Принятые values: ссылка на поле столбца в текущей визуальной форме, NONE (по умолчанию), LOWESTPARENT , HIGHESTPARENT , or целое число. Поведение зависит от целочисленного sign: - If ноль or пропущено, вычисление выполняет сброс not. Эквивалентно NONE .
— If положительным, целое число определяет столбец, начиная с самого высокого, независимо от зерна. HIGHESTPARENT эквивалентно 1.
- If отрицательное число определяет столбец, начиная с самого низкого, относительно текущего зерна. LOWESTPARENT эквивалентно -1. |
Возврат value
Один or больше строк из relation
.
Замечания
Except для столбцов, добавленных DAX табличными функциями, каждый столбец в relation
, если matchBy
присутствует not, or каждый столбец в matchBy
andpartitionBy
, если matchBy
присутствует, должен иметь соответствующий внешний value, чтобы помочь define текущей строке, с помощью следующего поведения:
- If есть ровно один соответствующий внешний столбец, используется его value.
-
If нет соответствующего внешнего столбца, а затем:
- OFFSET first определить столбцы all, у которых нет соответствующего внешнего столбца.
- Для каждого сочетания существующих values для этих столбцов в родительском контексте OFFSETOFFSET возвращается and возвращается строка.
- OFFSETконечные выходные данные — это union этих строк.
- If есть несколько соответствующих внешних столбцов, возвращается error.
If
all столбцов relation
были добавлены DAX табличными функциями, возвращается error.
If
matchBy
присутствует, OFFSET попытается использовать столбцы matchBy
andpartitionBy
для идентификации строки.
If
matchBy
not присутствуют and столбцы, указанные в orderBy
andpartitionBy
, не могут однозначно идентифицировать каждую строку в relation
, а затем:
- OFFSET попытается find наименьшее количество дополнительных столбцов, необходимых для уникальной идентификации каждой строки.
-
If такие столбцы можно найти, OFFSET автоматически добавит эти новые столбцы к
orderBy
, and каждый раздел сортируется с помощью этого нового набора столбцов OrderBy. - If не удается найти такие столбцы, возвращается error.
Пустая таблица возвращается if:
- Соответствующий внешний value столбца OrderByorPartitionBynot существует в
relation
. -
delta
value приводит к переходу к строке, которая not существует в разделе.
If
OFFSET используется в вычисляемом столбце, определенном в той же таблице, что и relation
, andorderBy
опущен, возвращается error.
reset
можно использовать только в визуальных вычислениях, and нельзя использовать в сочетании с orderBy
orpartitionBy
.
If
reset
присутствует, axis
можно указать, но relation
невозможно.
Пример 1— вычисляемый столбец
Следующий запрос DAX:
DEFINE
VAR vRelation = SUMMARIZECOLUMNS (
DimProductCategory[EnglishProductCategoryName],
DimDate[CalendarYear],
"CurrentYearSales", SUM(FactInternetSales[SalesAmount])
)
EVALUATE
ADDCOLUMNS (
vRelation,
"PreviousYearSales",
SELECTCOLUMNS(
OFFSET (
-1,
vRelation,
ORDERBY([CalendarYear]),
PARTITIONBY([EnglishProductCategoryName])
),
[CurrentYearSales]
)
)
Возвращает таблицу, которая суммирует общий объем продаж для каждой категории productandcalendaryear, а также общий объем продаж для этой категории в previousyear.
Пример 2. measure
Следующий запрос DAX:
DEFINE
MEASURE DimProduct[CurrentYearSales] = SUM(FactInternetSales[SalesAmount])
MEASURE DimProduct[PreviousYearSales] = CALCULATE(SUM(FactInternetSales[SalesAmount]), OFFSET(-1, , ORDERBY(DimDate[CalendarYear])))
EVALUATE
SUMMARIZECOLUMNS (
DimDate[CalendarYear],
"CurrentYearSales", DimProduct[CurrentYearSales],
"PreviousYearSales", DimProduct[PreviousYearSales]
)
Использует OFFSET() в measure для возврата таблицы, которая суммирует общий объем продаж для каждого calendaryearand общих продаж для previousyear.
Пример 3. Вычисляемый столбец
Следующий запрос DAX:
EVALUATE
ADDCOLUMNS (
FactInternetSales,
"Previous Sales Amount",
SELECTCOLUMNS (
OFFSET (
-1,
FactInternetSales,
ORDERBY ( FactInternetSales[SalesAmount], DESC ),
PARTITIONBY ( FactInternetSales[ProductKey] ),
MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
),
FactInternetSales[SalesAmount]
)
)
Возвращает таблицу FactInternetSales с добавлением столбца, указывающего для каждой продажи, его суммы previous продажи, в том же product, в порядке убывания объема продаж, при этом текущая продажа определяется его SalesOrderNumber and SalesOrderLineNumber. Без MATCHBYзапрос вернет error, так как в таблице FactInternetSales нет ключевых столбцов.
Пример 4. Визуальное вычисление
Следующий визуальный расчет DAX запроса:
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
Возвращает разницу в общем объеме продаж между каждым monthandprevious один в пределах одной year.
Снимок экрана ниже: визуальная матрица and выражения визуального вычисления: