Поделиться через


ОКНО

Область применения: вычисление вычисляемого столбца вычисляемой таблицы Меры визуального элемента

Возвращает несколько строк, расположенных в пределах заданного интервала.

Синтаксис

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 с одинаковыми результатами.

Снимок экрана ниже: визуальная матрица и выражение визуального вычисления:

Вычисление визуального элемента DAX

Пример 4. Визуальное вычисление

Следующий запрос DAX визуального вычисления:

TotalSalesRunningSumByQuarter = SUMX(WINDOW(0, ABS, 0, REL, , -1), [SalesAmount])

Возвращает совокупный общий объем продаж по месяцам, вычисляемый по каждому кварталу.

INDEX
MOVINGAVERAGE
OFFSET
ORDERBY
PARTITIONBY
ДИАПАЗОН
RANK
ROWNUMBERRUNNINGSUM