活动
WINDOW
返回位于给定间隔内的多个行。
WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
术语 | 定义 |
---|---|
from |
指示 window 的开始位置。 它可以是返回标量 value的任何 DAX 表达式。
行为取决于 from_type 参数:- If from_type 为 REL,返回的行数(负 value)or 正行(正 value)从当前行获取 window中的 first 行。
- If from_type 是 ABS,andfrom 是正的,则它是从分区开头开始 window 的位置。 索引从 1 开始。 例如,1 表示 window 从分区的开头开始。
If
from 为负数,则表示从分区末尾开始 window 的位置。 -1 表示分区中的 last 行。 |
from_type |
修改 from 参数的行为。 可能的 valuesABS(绝对)and REL(相对)。 默认为 REL。 |
to |
与 from 相同,但表示 window的末尾。
last 行包含在 window中。 |
to_type |
与 from_type 相同,但修改 to 的行为。 |
relation |
(可选)从中返回输出行的表表达式。
If 指定, partitionBy 中的 all 列必须来自 orrelated 表。 省略 If:必须显式指定 - orderBy 。- All orderBy andpartitionBy 表达式必须是来自单个表的完全限定列名 and。
- 默认为 orderBy andpartitionBy all 列的 ALLSELECTED()。 |
axis |
(可选)视觉形状中的轴。 仅在视觉计算中可用,and 替换 relation 。 |
orderBy |
(可选)一个 ORDERBY() 子句,其中包含 define 每个分区排序方式的表达式。 省略 If:必须显式指定 - relation 。
- 默认按 relation 中已 notpartitionBy 中指定的每一列进行排序。 |
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。 |
从 windowAll 行。
Except 由 DAX 表函数添加的列、relation
中的每个列、matchBy
not 存在时,ormatchBy
andpartitionBy
中的每个列(当存在 matchBy
时),必须具有相应的外部 value 来帮助 define 要操作的当前行。
If
from_type
and
to_type
两者都有 valueABS,则以下内容仅适用于 partitionBy
列:
- If 正好有一个对应的外部列,则使用其 value。
-
If 没有相应的外部列:
- WINDOW 将 first 确定没有相应外部列的 all 列。
- 对于 WINDOW父上下文中这些列的现有 values 的每个组合,将计算 WINDOW,and 返回相应的行。
- WINDOW 最终输出是这些行的 union。
- If 有多个相应的外部列,则返回 error。
DAX 表函数添加了 relation
列的 Ifall,将返回 error。
If
matchBy
存在,WINDOW 将尝试使用 matchBy
andpartitionBy
列来标识行。
If
matchBy
not 存在 andorderBy
andpartitionBy
中指定的列无法唯一标识 relation
中的每一行,然后:
- WINDOW 将尝试 find 唯一标识每行所需的最少列数。
-
If 可以找到此类列,WINDOW 会自动将这些新列追加到
orderBy
,and 每个分区都使用此新 orderBy 列集进行排序。 - 找不到此类列 If 返回 error。
if返回空表:
-
orderBy
orpartitionBy
列的相应外部 valuenot 存在于relation
中。 - 整个 window 位于分区之外,orwindow 的开头在其结束之后。
If
WINDOW 在与 relation
相同的表中定义的计算列内使用,andorderBy
省略,则返回 error。
If window 的开头在 first 行之前,然后设置为 first 行。 同样,ifwindow 末尾位于分区的 last 行之后,然后将其设置为 last 行。
reset
只能用于视觉计算,and 不能与 orderBy
orpartitionBy
结合使用。
If
reset
存在,可以指定 axis
,但无法指定 relation
。
以下 measure:
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]))
)
返回每个 product的单位价格的 3dayaverage。 请注意,3-daywindow 包含三天,其中 product 有销售额,not 一定连续三 calendar 天。
以下 measure:
RunningSum =
SUMX (
WINDOW (
1, ABS, 0, REL,
ALLSELECTED (
'Date'[Fiscal Year],
'Date'[Month Number Of Year]
),
PARTITIONBY ( 'Date'[Fiscal Year] )
),
[Total Sales]
)
按 MonthYear数返回总销售额的运行 sum,每个会计 Year重启:
Year | Month Year 数 | Sales Amount | 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 | 1,519,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 | 2,057,902 美元 | 15,413,595 美元 |
2018 财年 | 9 | 2,523,948 美元 | 17,937,543 美元 |
2018 财年 | 10 | 561,681 美元 | 18,499,224 美元 |
2018 财年 | 11 | 4,764,920 美元 | 23,264,145 美元 |
2018 财年 | 12 | 596,747 美元 | 23,860,891 美元 |
2019 财年 | 1 | 1,847,692 美元 | 1,847,692 美元 |
2019 财年 | 2 | 2,829,362 美元 | 4,677,054 美元 |
2019 财年 | 3 | 2,092,434 美元 | 6,769,488 美元 |
2019 财年 | 4 | 2,405,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 | 3,611,092 美元 | 31,446,030 美元 |
2019 财年 | 12 | 2,624,078 美元 | 34,070,109 美元 |
2020 财年 | 1 | 3,235,187 美元 | 3,235,187 美元 |
2020 财年 | 2 | 4,070,046 美元 | 7,305,233 美元 |
2020 财年 | 3 | 4,429,833 美元 | 11,735,066 美元 |
2020 财年 | 4 | 4,002,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 | 3,542,150 美元 | 41,875,184 美元 |
2020 财年 | 11 | 5,151,897 美元 | 47,027,081 美元 |
2020 财年 | 12 | 4,851,194 美元 | 51,878,275 美元 |
以下视觉计算 DAX 查询:
TotalSalesRunningSumByYear = SUMX(WINDOW(0, ABS, 0, REL, ROWS, HIGHESTPARENT), [SalesAmount])
按每个 year计算的 month返回累计总销售额。 可以使用 values 1 and -2 而不是 HIGHESTPARENT
,结果相同。
以下屏幕截图显示了视觉对象矩阵 and 视觉计算表达式:
以下视觉计算 DAX 查询:
TotalSalesRunningSumByQuarter = SUMX(WINDOW(0, ABS, 0, REL, , -1), [SalesAmount])
按每个 quarter计算的 month返回累计总销售额。
INDEX
MOVINGAVERAGE
OFFSET
ORDERBY
PARTITIONBY
RANGE
RANK
ROWNUMBER
RUNNINGSUM