虚拟表

在 DEFINE的 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 香蕉 假 假 真