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

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的初学者。

Fabric丨白茶 文章被收录于专栏

数据分析进阶之路,带你深入了解可视化技巧。

全部评论

相关推荐

寿命齿轮:实习就一段还拉了,项目一看就不是手搓,学历也拉了,技术栈看着倒是挺好,就是不知道面试表现能咋样。 不过现在才大三,争取搞两端大厂实习,或者一个纯个人项目+一段大厂,感觉秋招还是未来可期。
投递美团等公司10个岗位
点赞 评论 收藏
分享
qz鹿:*** 祝他毕业就失业
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务