虚拟表

在 DAX的 语句中引入虚拟表定义。

语法

[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 香蕉

DEFINE
EVALUATE
VAR
虚拟列DAX 查询