Power BI之DAX神功:第4卷第11回 管理数据颗粒度(对不兼容颗粒度进行隐藏)
《权威指南》本节课要表达的意思,没有他说的那么麻烦,讲清楚这件事两张表足够

将上面两张表通过品牌建立多对多弱关系,箭头方向:商品筛选计划

将下面度量值放到矩阵上:

商品表只能通过品牌筛选计划表:

当我们将颜色也放入行标题时,每个颜色必然显示这个品牌的总计划数:

所谓的管理数据颗粒度,目的:如果只有一种颜色,就保留总计划值,否则显示为空。就是将与当前关系不兼容的颗粒度进行隐藏。如下图所示:

当颜色的行数与品牌行数相等时,就颜色就显示计划数,否则对颜色隐藏计划数。
我们的最终目的如下图所示,任天堂只有一种颜色,就让他显示计划数,有多所颜色的,就让品牌显示计划数,而颜色隐藏计划数。画红线的地方显示为BLANK()

那么我们怎么获得品牌和颜色的行数呢?答案:知道商品表的行数就可以了。因为行标题上有品牌和颜色,他可以筛选自己表的行数。
放到矩阵中后,我们再需要一个品牌的行数就可以做对比了。这个品牌的行数怎么得到?是不是只让品牌筛选,不让其它列筛选。能把这句中国话出来的人就能把公式写出来。

有两种写法:
放在我们的矩阵上结果一样,但是它有区别:
详见《DAX神功》答网友问15 Allexcept和ALL/VALUES的区别 删除与添加筛选器

ALLEXCEPT执行速度也可能在某些方面会快于ALL+VALUES,但是ALL+VALUES是动态的相对更安全。更建议大家使用ALL+VALUES组合。
现在我们就可以将最终度量值写出来了:
返回结果:

《孙兴华讲PowerBI火力全开》PowerBI必学课程
https://www.bilibili.com/video/BV1qa4y1H7wp
《DAX神功》文字版合集:
https://www.bilibili.com/read/readlist/rl442274
《DAX神功》视频版合集:
https://www.bilibili.com/video/BV1YE411E7p3
《DAX神功番外篇》文字版合集:
https://www.bilibili.com/read/readlist/rl478271
PowerBI(DAX函数)、PowerQuery(M函数)、Python办公自动化、Python爬虫、Python数据分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等