虚拟表
语法
[DEFINE
(
TABLE <table name> = <table expression>
[WITH VISUAL SHAPE
(AXIS <axis name>
(GROUP <column>[, <column>] + TOTAL <column>) +
ORDER BY <column>[, <column>] +
) +
[DENSIFY <string literal>]
]
) +
]
(EVALUATE <table expression>) +
参数
表表达式定义虚拟表的内容。 虚拟表仅在当前查询范围内定义。
(可选)可以在虚拟表上定义视觉形状。 视觉对象形状用于视觉计算。 视觉形状由具有布尔 DENSIFY 列的轴组成。
轴定义为汇总组的列表,后跟按列排序的顺序列表,以指定坐标轴的排序方式。 汇总组由一个或多个列组成,然后由一个布尔总计列组成,指示每一行是否是当前汇总组的分类汇总。 FALSE 值指示当前行是详细信息行(按当前汇总组分组)。 TRUE 值表示当前行已汇总(而不是按当前汇总组分组)。
如果请求 DENSIFY 列,则视觉形状将执行 densification。 这意味着除了原始表表达式中的行外,我们还添加原始表表达式中不存在的轴值的组合。 换句话说,我们使用原始表表达式从轴的交叉联接中执行左外部联接。 DENSIFY 列中的 TRUE 值指示当前行不在原始表表达式中,并由 densification 过程添加。 此类行应在所有度量值列(轴定义之外的列)中具有空值。 DENSIFY 列中的 FALSE 值指示当前行来自原始表表达式。
返回值
定义虚拟表
备注
与变量不同,虚拟表具有自己的世系,并且不会从其定义的表表达式中携带世系。
例
假设表 T 具有以下行:
年 | 产品 | SalesAmount |
---|---|---|
2000 | 苹果 | $ 10.1 |
2000 | 香蕉 | $ 10.2 |
2001 | 苹果 | $ 20.3 |
DEFINE TABLE data = SUMMARIZECOLUMNS(ROLLUPADDISSUBTOTAL(T[Year], "IsYearTotal"), ROLLUPADDISSUBTOTAL(T[Product], "IsProductTotal"), "Meausre", SUM(T[SalesAmount]))
WITH VISUAL SHAPE
AXIS ROWS GROUP [Year] TOTAL [IsYearTotal] ORDER BY [Year]
AXIS COLUMNS GROUP [Product] TOTAL [IsProductTotal] ORDER BY [Product]
DENSIFY "IsDensified"
EVALUATE data
返回的结果为
data[Year] | data[Product] | data[IsYearTotal] | data[IsProductTotal] | data[Measure] | data[IsDensified] |
---|---|---|---|---|---|
真 | 真 | $ 40.6 | 假 | ||
2000 | 假 | 真 | $ 20.3 | 假 | |
2001 | 假 | 真 | $ 20.3 | 假 | |
苹果 | 真 | 假 | $ 30.4 | 假 | |
2000 | 苹果 | 假 | 假 | $ 10.1 | 假 |
2001 | 苹果 | 假 | 假 | $ 20.3 | 假 |
香蕉 | 真 | 假 | $ 10.2 | 假 | |
2000 | 香蕉 | 假 | 假 | $ 10.2 | 假 |
2001 | 香蕉 | 假 | 假 | 真 |