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

故事扮演 提交于 2020-08-12 05:26:06

CROSSFILTER函数

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

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

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

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

语法

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:

统计颜色数量 =
COUNTROWS ( '例子' )

代码2:

通过维度表 =
COUNTROWS ( '维度' )

代码3:

CROSSFILTER例子 =
CALCULATE ( COUNTROWS ( '例子' ), CROSSFILTER ( '例子'[类别], '维度'[类别], ONEWAY ) )

结果如下:

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

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

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

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

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

小伙伴们❤GET了么?

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

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

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!