忽略筛选器与自动匹配,这一点没深入讲的问题,其实早就碰到了!| DAX实战
在小黄书上,有个关于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、随着应用的深入,基础越来越扎实,同时也会遇到一些新的问题,然后再深入理解/修正。
学习,就是一个螺旋式前进的过程!
相关文章
- 直接在代码里面对list集合进行分页
- .NET Framework 4.5新特性详解
- 大数据的简要介绍
- 大数据的由来
- 高斯混合模型的自然梯度变量推理
- timing-wheel 仿Kafka实现的时间轮算法
- 使用Navicat软件连接自建数据库(Linux系统)
- 那一天,我被Redis主从架构支配的恐惧
- Redis 深入了解键的过期时间
- C#使用委托调用实现用户端等待闪屏
- 基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统
- GRAND | 转录调控网络预测数据库
- JFreeChart API中文文档
- 临床相关突变查询数据库
- TIGER | 人类胰岛基因变化查询数据库
- 视频边缘计算网关EasyNVR在视频整体监控解决方案中的应用分析
- Apache Arrow - 大数据在数据湖后的下一个风向标
- 常见的电商数据指标体系
- AKShare-艺人数据-艺人流量价值
- MySQL中多表联合查询与子查询的这些区别,你可能不知道!