编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Power BI之DAX神功:第1卷第22回 Calculate调节器之CROSSFILTER

wxchong 2024-08-05 02:04:49 开源技术 17 ℃ 0 评论

全集《孙兴华讲PowerBI视频版》

https://www.ixigua.com/6976409163886756383

上节课我们学习了USERELATIONSHIP函数功能是启用备胎关系(虚线),并终止现任关系(实线)

截止上节课,我们已经完整地学习了,Calculate两个调节器函数,分别是ALL函数和USERELATIONSHIP函数

并且了解到KEEPFILTERS是筛选参数调节器(只是将不能筛选的参数恢复筛选),它并不是Calculate调节器,KEEPFILTERS不止只可以在Calculate中使用,同时也可以在迭代函数中使用,例如 Sumx(keepfilters(ALL(表[列])),表达式)

同时,学习了Calculate调节器(等级)优先于筛选器,同级别从左向右执行。

接下来,我们再了解一下类似函数:CROSSFILTER函数,函数本身不返回任何值,只改变参数内的关系

这个函数并不是特别重要,它有等价函数可以代替其功能

但是,你仍然要保证表与表之间是一对多关系(我们不讨论一对一与多对多关系)

《DAX神功》第1卷第1回已经明确一对多原则,一百年不许变。

《孙兴华讲PowerBI火力全开》笔记28.03对这个函数做了详细讲解

详细案例请参考《火力全开》

【1】使用CROSSFILTER函数前提两表之间有实线关系

如果你两张表之间本身就没有连线,这个函数无法帮你连线。

【2】第1参数和第2参数的位置无所谓,它可以自动识别

度量值1 = CALCULATE(SUM('多端'[分数]),CROSSFILTER('一端'[学号],'多端'[学号],None))

等价

度量值1 = CALCULATE(SUM('多端'[分数]),CROSSFILTER('多端'[学号],'一端'[学号],None))

【3】第3参数:None 无筛选 其实就是禁用关系,将原本的连线临时删除

但是,它与USERELATIONSHIP函数一样,都是在这个度量值里面生效的。

就好比在Access中跟大家讲的,两个表连线是结婚的关系,而查询中的两个表连线是演员演夫妻的关系。现在就是演员演夫妻的关系。

USERELATIONSHIP函数与CROSSFILTER函数,他们对关系的处理都是在本度量值之内生效的,并没有改变原始关系模型。

例如:我想得到多端表中分数的度量值,但是不想让一端表中的字段筛选它

但是,由于一端表与多端表是一对多关系,一端表本身具有筛选多端表的功能

我可以在度量值1中取消两表之间的连线关系:

度量值1 = CALCULATE(SUM('多端'[分数]),CROSSFILTER('一端'[学号],'多端'[学号],None))

由于USERELATIONSHIP函数功能是启用备胎关系(虚线),并终止现任关系(实线)

如果你是想将现任关系(实线)终止,而不启用任何备胎(虚线)关系时,这个函数就派上用场了。但是方法不止一种,ALL函数同样可以实现一端表所有列不能筛选,例如:度量值2

度量值2 = CALCULATE(SUM('多端'[分数]),all('一端'))

【4】第3参数:Both 双向筛选

《DAX神功》第1卷第2回 避免使用双向箭头 中做了明确的说明 不建议大家使用双向箭头

【5】第3参数:Oneway 单向筛选

(1)如果关系模型中是双向筛选,你可以在度量值中将其改成单向筛选

但是,我始终就不建议你使用双向筛选关系

(2)提升速度

【度量值】总分1 = sum('多端'[分数])

【度量值】总分2 = CALCULATE( sum('多端'[分数]),CROSSFILTER('一端'[学号],'多端'[学号],OneWay))

由于两张表之间是一对多关系,一端可以筛选多端

但是你写的【总分1】,直接放到模型中,当数据量较大时,速度会慢,因为它会通过矩阵中一端表的学号筛选【总分1】

如果写成【总分2】的样子,它在度量值内部就已经使用了关系筛选,提升速度。

Ps: 速度是虚无飘渺的事情,如果数据量太大,就不建议使用PowerBI了。届时,你可以考虑SQL或Pandas等

【6】calculate多层嵌套CROSSFILTER时最内层生效

同上节课的USERELATIONSHIP函数

Ps: 第3参数还有两个OneWay_LeftFiltersRight和OneWay_RightFiltersLeft不用学习了。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表