回忆是一座桥
却是通往寂寞的牢

30、表构造器

表构造器,顾名思义就是构造一张表,它是DAX中创建表的一种语法,应用范围非常广泛与灵活,常用于构建辅助表、简化布尔表达式、在查询中查看标量值等等,并且可以与TREATAS函数配合来实现自定义筛选。


表构造器的语法

表构造器的语法非常简单,只需要用大括号包围,并用小括号分隔多行,并且当要构造的表只有一列时,小括号还可以省略。示例写法如下:

{
    (1,"张三","男"),
    (2,"李四","男"),
    (3,"王五","女")
}

运行后的结果如下图所示,由于表构造器返回的是一张表,因此可以使用DAX查询或新建表功能来查看其返回的结果。

其中,每个小括号代表一行数据,并且每一行的值的数量必须要一致,即列数要一致,否则会报错,如下图所示:

此外,当要构造的表只有一列时,小括号还可以省略,如下图所示:

由表构造器创建的表无法指定列名,当构造的表只有单列时,列名为[Value],当构造的表有多个列时,则会以列顺序命名为[Value1]、[Value2]…等等。

当需要更改表构造器所构造的表的列名时,通常可以搭配使用SELECTCOLUMNS函数来修改列名,如下图所示:

表构造器的语法比较简单,因此就不再赘述,使用时注意保持每一行的列数一致即可。


表构造器的应用

1、简化布尔表达式

将表构造器与IN关键字搭配使用,可以将复杂的布尔表达式进行简化,具体可参考下面两个示例的等价写法。

示例一:

'Product'[Product Color] = "White" || 'Product'[Product Color] = "Red" || 'Product'[Product Color] = "Yellow"

等价于:

'Product'[Product Color] IN {"White","Red","Yellow"}

示例二:

('Product'[Product Color] = "White" && 'Product'[Product Code] = "P1001") ||
('Product'[Product Color] = "Red" && 'Product'[Product Code] = "P1002") ||
('Product'[Product Color] = "Yellow" && 'Product'[Product Code] = "P1003")

等价于:

('Product'[Product Color],'Product'[Product Code]) IN {("White","P1001"),("Red","P1002"),("Yellow","P1003")}

2、在查询中查看标量值

由于DAX查询只能返回表而不能返回标量值,因此有时想在DAX查询中输出查看某个中间变量或度量值时就会比较困难,如下图所示:

这时候,其实就可以使用表构造器,将要输出的标量值转换成单行单列的表,从而能够在DAX查询中正常输出,以便查看其具体的内容,如下图所示:

3、与TREATAS函数配合来实现自定义筛选

表构造器能够返回自定义的一张表,再使用TREATAS函数来更改数据沿袭,就可以实现任意形状的筛选器,从而得到更大的筛选自由度。如下图所示:


总结

表构造器的作用虽然只是构造一张表,但由于其能够在表达式里边进行表的构建,因此能够带来很大的应用灵活度。而且表构造器的语法简单易上手,是每个人都必须要掌握的一个语法。

未经允许不得转载:夕枫 » 30、表构造器
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论