ОКНО
Область применения: вычисление вычисляемого столбца вычисляемой таблицы Меры визуального элемента
Возвращает несколько строк, расположенных в пределах заданного интервала.
Синтаксис
WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Параметры
Термин | Определение |
---|---|
от | Указывает, где начинается окно. Это может быть любое выражение DAX, возвращающее скалярное значение. Поведение зависит от <параметра from_type> . Если <from_type> является REL, количество строк для возврата (отрицательного значения) или перенаправления (положительное значение) из текущей строки, чтобы получить первую строку в окне. — Если <from_type> является ABS, а <от> него положительным, то это позиция начала окна с начала секции. Индексирование основано на 1. Например, 1 означает, что окно начинается с начала раздела. Если <результат> отрицательный, то это позиция начала окна с конца раздела. -1 означает последнюю строку в разделе. |
from_type | Изменяет поведение <параметра из> параметра. Возможные значения: ABS (абсолютные) и REL (относительные). Значение по умолчанию — REL. |
до | То же, что и <из>, но указывает конец окна. Последняя строка включена в окно. |
to_type | То же, что и <from_type, но изменяет поведение<>.> |
relation | (Необязательно) Табличное выражение, из которого возвращаются выходные строки. Если задано, все столбцы в <partitionBy> должны поступать из нее или связанной таблицы. Если опущено: — <orderBy> должен быть явно указан. — Все <выражения orderBy> и <partitionBy> должны быть полными именами столбцов и поступать из одной таблицы. — Значение по умолчанию — ALLSELECTED() всех столбцов в <порядке> и <partitionBy>. |
Ось X | (Необязательно) Ось в визуальной форме. Доступно только в визуальных вычислениях и заменяет <отношение>. |
orderBy | (Необязательно) Предложение ORDERBY(), содержащее выражения, определяющие порядок сортировки каждой секции. Если опущено: — <связь> должна быть явно указана. — по умолчанию упорядочивается по каждому столбцу в <отношении> , который еще не указан в <partitionBy>. |
Пробелы | (Необязательно) Перечисление, определяющее, как обрабатывать пустые значения при сортировке. Этот параметр зарезервирован для дальнейшего использования. В настоящее время единственным поддерживаемым значением является DEFAULT, где поведение числовых значений — пустые значения упорядочены от нуля до отрицательных значений. Поведение строк является пустым значением, упорядоченным перед всеми строками, включая пустые строки. |
partitionBy | (Необязательно) Предложение PARTITIONBY(), содержащее столбцы, определяющие <секционирование отношений> . Если опущено, <реляционная связь> рассматривается как одна секция. |
matchBy | (Необязательно) Предложение MATCHBY(), содержащее столбцы, определяющие сопоставление данных и определение текущей строки. |
reset | (Необязательно) Доступно только в визуальных вычислениях. Указывает, сбрасывается ли вычисление и на каком уровне иерархии столбцов визуальной фигуры. Допустимые значения: NONE, LOWESTPARENT, HIGHESTPARENT или целое число. Поведение зависит от целочисленного знака: если ноль или опущено, вычисление не сбрасывается. Эквивалент NONE. — Если положительный, целое число определяет столбец, начиная с самого высокого, независимо от зерна. САМЫЙ ВЫСОКИЙ УРОВЕНЬ ЭКВИВАЛЕНТЕН 1. — Если отрицательное, целое число определяет столбец, начиная с самого низкого, относительно текущего зерна. САМЫЙ НИЗКИЙPARENT эквивалентен -1. |
Возвращаемое значение
Все строки из окна.
Замечания
За исключением столбцов, добавленных функциями таблицы DAX, каждый столбец в <отношении, если <сопоставлениеBy> отсутствует, или каждый столбец в <сопоставленииBy> и <partitionBy при наличии сопоставленияBy><> должен иметь соответствующее внешнее значение, чтобы помочь определить текущую строку, с> которой следует работать. Если <from_type и <to_type>> имеют значение ABS, то следующие действия применяются только к столбцам <partitionBy>:
- Если есть ровно один соответствующий внешний столбец, используется его значение.
- Если нет соответствующего внешнего столбца:
- ОКНО сначала определяет все столбцы, у которых нет соответствующего внешнего столбца.
- Для каждого сочетания существующих значений для этих столбцов в родительском контексте WINDOW вычисляется окно и возвращаются соответствующие строки.
- Окончательные выходные данные WINDOW — это объединение этих строк.
- Если существует несколько соответствующих внешних столбцов, возвращается ошибка.
Если все <столбцы отношения> были добавлены функциями таблицы DAX, возвращается ошибка.
Если <значение matchBy> присутствует, ОКНО попытается использовать <столбцы matchBy> и <partitionBy> для идентификации строки.
Если <matchBy> отсутствует, и столбцы, указанные в <orderBy> и <partitionBy> , не могут однозначно идентифицировать каждую строку в <отношении>, а затем:
- WINDOW попытается найти наименьшее количество дополнительных столбцов, необходимых для уникальной идентификации каждой строки.
- Если такие столбцы можно найти, ОКНО автоматически добавит эти новые столбцы в <порядок,> и каждая секция сортируется с помощью этого нового набора столбцов orderBy.
- Если такие столбцы не удается найти, возвращается ошибка.
Если возвращается пустая таблица:
- Соответствующее внешнее значение столбца orderBy> или <partitionBy> не существует в <связи>.<
- Все окно находится за пределами секции, или начало окна после его окончания.
Если окно используется в вычисляемом столбце, определенном в той же таблице, что <и отношение>, и <orderBy> опущен, возвращается ошибка.
Если начало окна выходит перед первой строкой, оно устанавливается в первую строку. Аналогичным образом, если конец окна находится после последней строки секции, то для нее задано значение последней строки.
<сброс> можно использовать только в визуальных вычислениях и не может использоваться в сочетании с <orderBy> или <partitionBy>. Если <сброс> присутствует, ось> может быть указана, <но <связь> не может быть указана.
Пример 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 и -2 можно использовать вместо HIGHESTPARENT с одинаковыми результатами.
Снимок экрана ниже: визуальная матрица и выражение визуального вычисления:
Пример 4. Визуальное вычисление
Следующий запрос DAX визуального вычисления:
TotalSalesRunningSumByQuarter = SUMX(WINDOW(0, ABS, 0, REL, , -1), [SalesAmount])
Возвращает совокупный общий объем продаж по месяцам, вычисляемый по каждому кварталу.
Связанный контент
INDEX
MOVINGAVERAGE
OFFSET
ORDERBY
PARTITIONBY
ДИАПАЗОН
RANK
ROWNUMBERRUNNINGSUM