在小黄书上,有个关于calculate函数的入门例子,通过all函数删除销售人员维度的影响,得到结果的同时,又带来一个问题如下:
问
筛选上下文是小勤和A产品,删去小勤这个筛选上下文,还留一个A产品,那A产品的销量为啥不是100,而是空白呢?
这是一位读者的疑问:
首先,能注意到这个细节并深入思考,很赞!
对于初学者来说,可以先按书上的说法“维度A产品和销售人员小勤的组合为空”——这个虽然不是最本质的解析简单理解,记住这种情况,然后在实际工作中先用起来。
而随着学习和应用的深入,比如开始接触到DAX里一个比较“高阶”的知识点:AutoExist(自动匹配),这个问题就会迎刃而解:
答
DAX里为了提升计算效率,对于不可能存在的组合(同一个表里),会直接在度量计算开始时予以剔除。
在此,我们稍作拓展:如果维度不是来自于同一个表,会什么情况?
比如,产品和销售两个维度分别从不同的维度表与销售明细表关联,模型如下图所示:
在这种情况下,这两个维度完全有可能存在组合(不能因为明细表中可能不存在而剔除,因为现在没有,以后可能有;明细表中没有,其他关联表中可能有……),所以,DAX里不会提前剔除再计算,所以,我们如果基于维度表做忽略计算:
sumOfSales_AllSales =
CALCULATE(
[sumOfSales],
ALL('factDetail'[销售])
)
你会看到结果不太一样:
具体情况可下载本文配套案例文件查看:
https://share.weiyun.com/a8619S30
关于自动匹配,可以进一步参考我前期的文章《毁三观的自动匹配,到底是什么鬼?| DAX疑难点》,有兴趣的朋友可以深入了解一下,初学的朋友可以先有个简单的印象。
同时,对于DAX的学习,提供一点点建议如下:
1、初学者在学习基础的过程中,一般也可以不要陷在这些原理和细节的处理上,可以适当先加入点记忆;
2、在实际工作中先用起来,很多细节在实际工作的计算中不太会遇得到;
3、随着应用的深入,基础越来越扎实,同时也会遇到一些新的问题,然后再深入理解/修正。
学习,就是一个螺旋式前进的过程!
本文分享自 Excel到PowerBI 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!