Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:
Вычисляемый столбец
Вычисляемая таблица
Измерять
Визуальное вычисление
Возвращает несколько строк, расположенных в пределах заданного интервала.
Синтаксис
WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Параметры
| Термин | Определение |
|---|---|
from |
Указывает, где начинается окно. Это может быть любое выражение DAX, возвращающее скалярное значение.
Поведение зависит от параметра from_type: — если from_type REL, количество строк, возвращаемых (отрицательное значение) или вперед (положительное значение) из текущей строки, чтобы получить первую строку в окне.
— если from_typeABS, а from положительным, то это позиция начала окна с начала раздела. Индексирование основано на 1, а 0 интерпретируется как 1. Например, 0 и 1 означают, что окно начинается с начала раздела. Если from отрицательно, то это позиция начала окна с конца раздела. -1 означает последнюю строку в разделе. |
from_type |
Изменяет поведение параметра from. Возможные значения: ABS (абсолютные) и REL (относительные). Значение по умолчанию — REL. |
to |
То же, что и from, но указывает конец окна. Последняя строка включена в окно. |
to_type |
То же, что и from_type, но изменяет поведение to. |
relation |
(Необязательно) Табличное выражение, из которого возвращаются выходные строки. При использовании в визуальных вычислениях этот параметр принимает ось в визуальной форме.
Если указано, все столбцы в partitionBy должны поступать из нее или связанной таблицы.
Если опущено: - orderBy необходимо явно указать.. Все выражения orderBy и partitionBy должны быть полными именами столбцов и поступать из одной таблицы.
— по умолчанию ALLSELECTED() всех столбцов в orderBy и partitionBy. |
orderBy |
(Необязательно) Предложение ORDERBY(), содержащее выражения, определяющие порядок сортировки каждой секции.
Если опущено: - relation необходимо явно указать.
— по умолчанию упорядочивается по каждому столбцу в relation, который еще не указан в partitionBy. |
blanks |
(Необязательно) Перечисление, определяющее, как обрабатывать пустые значения при сортировке relation или axis.
Поддерживаемые значения:
Обратите внимание, что при blanks указании параметра и пустых blanks значений в функции () дляORDERBY отдельных выражений orderBy выражение имеет приоритет для соответствующего выражения orderBy, а выражения orderBy не blanks будут учитывать blanks параметр родительской функции. |
partitionBy |
(Необязательно) Предложение (PARTITIONBY) с столбцами, определяющими relation способ секционирования. Если опущено, relation рассматривается как одна секция. |
matchBy |
(Необязательно) Предложение (MATCHBY) с столбцами, определяющими сопоставление данных и определение текущей строки. |
reset |
(Необязательно) Доступно только в визуальных вычислениях. Указывает, сбрасывается ли вычисление и на каком уровне иерархии столбцов визуальной фигуры. Допустимые значения: ссылка на поле столбца в текущей визуальной форме, NONE (по умолчанию), LOWESTPARENT, HIGHESTPARENTили целое число. Поведение зависит от целочисленного знака: — если нулевая или опущенная, вычисление не сбрасывается. Эквивалентно NONE.
— если положительный, целое число определяет столбец, начиная с самого высокого, независимо от зерна. HIGHESTPARENT эквивалентно 1.
— если отрицательно, целое число определяет столбец, начиная с самого низкого, относительно текущего зерна. LOWESTPARENT эквивалентно -1. |
Возвращаемое значение
Все строки из окна.
Замечания
За исключением столбцов, добавленных функциями таблицы DAX, каждый столбец в relation, если matchBy отсутствует, или каждый столбец в matchBy и partitionBy, если matchBy присутствует, должен иметь соответствующее внешнее значение, чтобы помочь определить текущую строку, с которой следует работать. Если from_type и to_type оба значения ABS, то следующие действия применяются только к столбцам partitionBy:
- Если есть ровно один соответствующий внешний столбец, используется его значение.
- Если нет соответствующего внешнего столбца:
- WINDOW сначала определит все столбцы, у которых нет соответствующего внешнего столбца.
- Для каждого сочетания существующих значений для этих столбцов в родительском контексте WINDOWвычисляется WINDOW и возвращаются соответствующие строки.
- WINDOW окончательные выходные данные — это объединение этих строк.
- Если существует несколько соответствующих внешних столбцов, возвращается ошибка.
Если все столбцы relationбыли добавлены DAX табличными функциями, возвращается ошибка.
Если matchBy присутствует, WINDOW попытается использовать matchBy и partitionBy столбцы для идентификации строки.
Если matchBy отсутствует, а столбцы, указанные в orderBy, и partitionBy не могут однозначно идентифицировать каждую строку в relation, а затем:
- WINDOW попытается найти наименьшее количество дополнительных столбцов, необходимых для уникальной идентификации каждой строки.
- Если такие столбцы можно найти, WINDOW автоматически добавит эти новые столбцы в
orderBy, и каждая секция сортируется с помощью этого нового набора столбцов orderBy. - Если такие столбцы не удается найти, возвращается ошибка.
Если возвращается пустая таблица:
- Соответствующее внешнее значение столбца
orderByилиpartitionByне существует вrelation. - Все окно находится за пределами секции, или начало окна после его окончания.
Если WINDOW используется в вычисляемом столбце, определенном в той же таблице, что и relation, и orderBy опущен, возвращается ошибка.
Если начало окна выходит перед первой строкой, оно устанавливается в первую строку. Аналогичным образом, если конец окна находится после последней строки секции, то для нее задано значение последней строки.
reset можно использовать только в визуальных вычислениях и не может использоваться в сочетании с orderBy или partitionBy. Если reset присутствует, axis можно указать, но relation невозможно.
Если значение reset является абсолютным (т. е. положительным целым числом HIGHESTPARENT или ссылкой на поле), а вычисление вычисляется на целевом уровне иерархии или выше, вычисление сбрасывается для каждого отдельного элемента. То есть функция оценивается в секции, содержащей только этот конкретный элемент.
Пример 1 — мера
Следующая мера:
3-day Average Price =
AVERAGEX(
WINDOW(
-2,REL,0,REL,
SUMMARIZE(ALLSELECTED('Sales'), 'Date'[Date], 'Product'[Product]),
ORDERBY('Date'[Date]),
KEEP,
PARTITIONBY('Product'[Product])
),
CALCULATE(AVERAGE(Sales[Unit Price]))
)
Возвращает 3-дневный средний показатель цен на единицу для каждого продукта. Обратите внимание, что 3-дневное окно состоит из трех дней, в которых продукт имеет продажи, не обязательно три дня подряд.
Пример 2. Мера
Следующая мера:
RunningSum =
SUMX (
WINDOW (
1, ABS, 0, REL,
ALLSELECTED (
'Date'[Fiscal Year],
'Date'[Month Number Of Year]
),
PARTITIONBY ( 'Date'[Fiscal Year] )
),
[Total Sales]
)
Возвращает беговую сумму для общего объема продаж по количеству месяцев года, перезапуская за каждый финансовый год:
| Год | Число месяцев года | Сумма продаж | RunningSum |
|---|---|---|---|
| ФГ2018 | 1 | $1,327,675 | $1,327,675 |
| ФГ2018 | 2 | $3,936,463 | $5,264,138 |
| ФГ2018 | 3 | $700,873 | $5 965 011 |
| ФГ2018 | 4 | $1519,275 | $7,484,286 |
| ФГ2018 | 5 | $2,960,378 | $10,444,664 |
| ФГ2018 | 6 | $1,487,671 | $11,932,336 |
| ФГ2018 | 7 | $1,423,357 | $13,355,693 |
| ФГ2018 | 8 | $2057,902 | $15,413,595 |
| ФГ2018 | 9 | $2,523,948 | $17,937,543 |
| ФГ2018 | 10 | $561,681 | $18,499,224 |
| ФГ2018 | 11 | $4764,920 | $23,264,145 |
| ФГ2018 | 12 | $596,747 | $23,860,891 |
| 2019 финансовый год | 1 | $1,847,692 | $1,847,692 |
| 2019 финансовый год | 2 | $2,829,362 | $4677 054 |
| 2019 финансовый год | 3 | $2092,434 | $6 769 488 |
| 2019 финансовый год | 4 | $2405,971 | $9,175,459 |
| 2019 финансовый год | 5 | $3,459,444 | $12,634,903 |
| 2019 финансовый год | 6 | $2,850,649 | $15,485,552 |
| 2019 финансовый год | 7 | $2,939,691 | $18,425,243 |
| 2019 финансовый год | 8 | $3,964,801 | $22,390,045 |
| 2019 финансовый год | 9 | $3,287,606 | $25,677,650 |
| 2019 финансовый год | 10 | $2,157,287 | $27,834,938 |
| 2019 финансовый год | 11 | $ 3611,092 | $31,446,030 |
| 2019 финансовый год | 12 | $ 2624 078 | $34,070,109 |
| 2020-й финансовый год | 1 | $3,235,187 | $3,235,187 |
| 2020-й финансовый год | 2 | $ 4070 046 | $7,305,233 |
| 2020-й финансовый год | 3 | $4429,833 | $11,735,066 |
| 2020-й финансовый год | 4 | $4002,614 | $15,737,680 |
| 2020-й финансовый год | 5 | $5,265,797 | $21,003,477 |
| 2020-й финансовый год | 6 | $3,465,241 | $24,468,717 |
| 2020-й финансовый год | 7 | $3,513 064 | $27,981,781 |
| 2020-й финансовый год | 8 | $5,247,165 | $33,228,947 |
| 2020-й финансовый год | 9 | $5,104,088 | $38,333,035 |
| 2020-й финансовый год | 10 | $3542,150 | $41,875,184 |
| 2020-й финансовый год | 11 | $5,151,897 | $47,027,081 |
| 2020-й финансовый год | 12 | $4,851,194 | $51,878,275 |
Пример 3. Визуальное вычисление
Следующий визуальный расчет DAX запроса:
TotalSalesRunningSumByYear = SUMX(WINDOW(0, ABS, 0, REL, ROWS, HIGHESTPARENT), [SalesAmount])
Возвращает совокупный общий объем продаж по месяцам, вычисляемым по каждому году. Значение 1 можно использовать вместо HIGHESTPARENTтого, чтобы с тем же результатом.
Снимок экрана ниже: визуальная матрица и выражение визуального вычисления:
Пример 4. Визуальное вычисление
Следующий визуальный расчет DAX запроса:
TotalSalesRunningSumByQuarter = SUMX(WINDOW(0, ABS, 0, REL, , -1), [SalesAmount])
Возвращает совокупный общий объем продаж по месяцам, вычисляемый по каждому кварталу.
Значение LOWESTPARENT может использоваться вместо -1 с тем же результатом.