Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:
Вычисляемый столбец
Вычисляемая таблица
Измерять
Визуальное вычисление
Возвращает несколько строк, расположенных в пределах заданного интервала.
Синтаксис
WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Параметры
| Термин | Определение |
|---|---|
from |
Указывает, где начинается окно. Это может быть любое выражение DAX, возвращающее скалярное значение.
Поведение зависит от параметра from_type: — если from_type REL, количество строк, возвращаемых (отрицательное значение) или вперед (положительное значение) из текущей строки, чтобы получить первую строку в окне.
— Если from_type значение ABSравно и 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 параметра и пустых в функции () дляORDERBY отдельных выражений blanks выражение 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. - Если такие столбцы не удается найти, возвращается ошибка.
Если возвращается пустая таблица:
- Соответствующее внешнее значение столбца
orderBypartitionByили столбца не существует вrelationпределах. - Все окно находится за пределами секции, или начало окна находится после его окончания.
Если вы используете WINDOW в вычисляемом столбце, определенном в той же таблице, что relationи orderBy опущен, возвращается ошибка.
Если начало окна перед первой строкой, оно устанавливается в первую строку. Аналогичным образом, если конец окна после последней строки секции, он имеет значение последней строки.
Вы можете использовать reset только в визуальных вычислениях, и его нельзя использовать в сочетании с orderBy или partitionBy. Если reset присутствует, можно указать axis , но нет relation.
Если значение reset является абсолютным (положительным целым числом или HIGHESTPARENTссылкой на поле), а вычисление вычисляется на целевом уровне иерархии или выше, вычисление сбрасывается для каждого отдельного элемента. То есть функция оценивается в секции, содержащей только этот конкретный элемент.
Примеры в этой статье можно использовать с примером модели Adventure Works DW 2020 Power BI Desktop. Сведения о получении модели см. в разделе DAXпримера модели.
Пример 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 с тем же результатом.