PowerBI建立关联关系TREATAS函数

PowerBI建立关联关系TREATAS函数

解决方案goocz2025-06-09 22:40:134A+A-

按计划应该是先要把关系函数和部分表操作函数写完再在TREATAS函数,因为在上次的关系激活函数USERELATIONSHIP后有朋友留言问,如果维度表是事实表之间没有事先建立关系连线,能否使用TREATAS实现上面的功能。答案是可以的,这一篇就继续使用之前的数据,加上TREATAS函数来实现同时展示下单日期的金额和完成日期的金额。

还是按照流程先尽量简单的介绍一下TREATAS函数。TREATAS函数属于表操作函数,主要作用就是在没有建立关系的表字段之间通过有关联关系列的连接建立关系。语法如下↓

TREATAS(table_expression, <column>[, <column>[, <column>[,…]]]} )

还是稍微有点抽象,暂时不理解没有关系,看一遍下面的案例再回头看看应该就能够理解了。


首先还是展示一下数据,有一个印象。我们有一个销售数据表,里面有下单日期和完成日期,我们通过和日期维度表建立关系,使用日期维度表作为筛选器。筛选每月下单日期、完成日期的金额。数据如下↓


但是我们事先在这两个表之间不建立任何关系,所以最开始日期维度表是无法控制销售数据金额的。我们先计算每月下单金额的数据,通过TREATAS函数建立下单日期和维度表里面日期的关联关系,DAX语句如下↓

下单金额1(万) = CALCULATE([金额(万)],
                TREATAS(VALUES('date'[日期]),'销售数据'[下单日期]))


简单解释一下,TREATAS函数里面两个参数,第一个是作为切片器项的日期维度表 ,只能使用数组值的形式,所以需要通过VALUES函数把日期维度表里面的日期转换成值;第二个参数就是销售表里面所对应的关系字段,下单日期。这样就建立了下单日期与维度表里面日期的关联关系↓


然后我们只需要再照着画个葫芦就实现了上一篇的效果,我们再计算一个完成金额的值,思路完全一下,把对应关系的日期改成完成日期就可以了,DAX语句和结果如下↓

完成金额1(万) = CALCULATE([金额(万)],
                TREATAS(VALUES('date'[日期]),'销售数据'[完成日期]))



至此,我们初步了解了TREATAS函数的使用方法。下面再深入一下,我们前面只建立了日期维度的相关关系,但是我们还有其他的维度,比如我们还需要产品品类的维度进行筛选。当然你可以直接建立实际的物理关系,就不需要这么麻烦使用TREATAS函数了,但我们这里主要介绍的TREATAS函数,就要用TREATAS函数来实现。先简单看看三个表之间的关系,完成日期的维度已经没问题了,我们就再加一个产品的维度,通过产品id进行关系的建立,DAX语句如下↓

完成金额-品类 = CALCULATE([金额(万)],
                TREATAS(VALUES('date'[日期]),'销售数据'[完成日期]),
                TREATAS(VALUES('产品表'[产品id]),'销售数据'[产品id]))


思路还是很简单,就再加一个TREATAS函数建立关联关系就可以了。所以TREATAS函数你就可以简单理解那一条建立关系的线就行了,是吧。最后看看效果↓


从结果也可以看到,只有我们建立了关联关系的最后一类数据可以通过品类进行切片筛选,前面的金额都是没有任何变化了。


End

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5