函数周期表丨筛选丨无丨CROSSFILTER

2021-08-30 10:24:49 浏览数 (3)

CROSSFILTER函数

CROSSFILTER函数属于“筛选”类函数,其本身不返回值也不返回表。

CROSS是什么意思?交叉! FILTER呢?筛选!

因此,CROSSFILTER函数的意思就是交叉筛选的意思。其用途也是简洁明了,改变计算过程中的筛选方向。

用途: 使用模型关系筛选时,数量过大会导致模型运载变慢,这个时候可以使用CROSSFILTER函数进行优化。

语法

代码语言:txt复制
DAX=
CROSSFILTER(<列1>, <列2>, <方向>)

参数

列1:现有固定列的名称,不可以是表达式,代表多端。

列2:现有固定列的名称,不可以是表达式,代表一端。

方向:

有三个选项ONEWAY,BOTH,NONE。

ONEWAY:表示单向筛选;BOTH表示双向筛选;NONE表示无交叉筛选。

注意事项

1、如果模型关系是一对一的情况,使用ONEWAY和BOTH没区别。

2、如果多端列和一端列位置反了,函数本身会自我修正。

3、此函数只能在接受筛选器作为参数的函数中使用:

CALCULATE系列、CLOSINGBALANCE系列、OPENINGBALANCE系列、TOTAL系列

4、CROSSFILTER函数会覆盖任何现有筛选关系。

5、如果两个参数没有任何链接关系,那么返回结果会报错。

6、如果使用多个CROSSFILTER,最内层的会覆盖外面的。

返回结果

本身不返回任何值,只是改变函数内部的筛选方向。

例子

模拟数据:

这是白茶随机模拟的一份数据。

例子:白茶决定统计各个颜色出现的次数,分别放在不同的上下文中进行对比。

代码1:

代码语言:txt复制
统计颜色数量 =
COUNTROWS ( '例子' )

代码2:

代码语言:txt复制
通过维度表 =
COUNTROWS ( '维度' )

代码3:

代码语言:txt复制
CROSSFILTER例子 =
CALCULATE ( COUNTROWS ( '例子' ), CROSSFILTER ( '例子'[类别], '维度'[类别], ONEWAY ) )

结果如下:

通过上图,我们能看出来以下结果:

单纯的利用COUNTROWS统计“例子”表的结果是正确的;

统计“维度表”的数据因为上下文的问题结果是不符合我们要求的;

利用CROSSFILTER函数激发筛选关系的结果是正确的。

注:可能有的小伙伴说了,我直接计算事实表就行了,为啥要计算维度表呢?因为一旦数据量过大,迭代事实表的速度会变慢,这样做可以使其优化,提升速度。

小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球PowerBI丨需求圈)

这里是白茶,一个PowerBI的初学者。

0 人点赞