数据描述:
PowerBI Report里面有一张Product数据源表。Product数据源表里面有一个color字段表明不同产品的颜色,另Product数据表中还包括Unit Cost和Unit Price字段可以用来计算Margin。
同一产品Color会有不同的Unit Cost和Unit Price。
Margin的计算方法在本文中为,对于同一产品Color的所有Unit Cost的和除以所有Unit Price 的和。
为了不让DAX的公式过长,并且公式清楚易于理解。先计算出Margin,然后再计算在这个Margin>0.45的条件下的产品Color的总数。
新建一个Calculate Column,命名为Margin。
定义如下:
Margin =
DIVIDE (
CALCULATE(
SUM(
'Product'[Unit Cost],
ALLEXCEPT(
'Product',
'Product'[Color]
)
),
CALCULATE(
SUM(
'Product'[Unit Price],
ALLEXCEPT(
'Product',
'Product'[Color]
)
),
0
)
(对于初学者来讲,我建议把unit cost和unit price的和也都单独建立calculate column。一步一步来,一方面可以整理思路,一方便清晰理解。初学者建议养成好的缩进习惯。)
现在我们来看一下结果:
在product表中的结果,关注最后一列。
在table里的结果。
下一步,计算Margin >0.45的数据值。
新建一个Measure,命名为numofcolor.
定义如下:
numofcolor=
CALCULATE (
DISTINCTCOUNT(
'Product'[Color]),
FILTER(
ALL('Product'),
Product'[Margin] > 0.45
)
)
现在我们来看一下结果:
card中结果为2
结合上图可知,只有"Yellow"和"Transparent"两个Color的Margin大于0.45。结果正确。
至此,这个关于产品Margin>0.45的产品Color数就算出来了!
(如果你不了解为什么建立Calculate Column,或者不了解Calculate Column和Measure的区别,别担心。请关注本公众号,稍后share君会share一些基础学习内容以及一些公式的用法简介.)
鉴于开始share君就说了,这是一个抛砖引玉的例子。那扩展一下。在Product数据源中,不同的Brand包含多个Color,如果想得到Color总数是3的Brand都包括哪些Color,该如何建立Calculate Column和Measure呢?或者你有什么更有意思的扩展问题呢?
请关注DAX Share.稍后继续分享。
关于DAX Share
--------------------------
略有所得。希望通过分享来让很多的朋友随心所欲的使用DAX。也希望通过分享来升华自己的所知。
学无止境,希望可以通过共同学习讨论来不断完善知识内容。
--------------------------
下期预告:
DAX Share陆续分享以下内容
1. 教你快速学会PowerBI,能做出漂亮的报表。---------会尽量的写的细一点,看篇幅而定,不会超过2篇文章。
内容包括导入数据,基本的图表使用,钻取(Drill Through),书签(Bookmark)等。也会简单的涉及到Row Level Security。
如何下载安装PowerBI之类的,我就不写了,哪里都有。
Publish Report,Gateway以及PowerBI App之类的暂时不涉及。各个公司情况不一样,以后可能写一个常用Solution什么的。
2. DAX基础分享---------今天分享的内容,有些朋友说不是很懂。所以打算一边写这样内容分享,一边写一个课程分享。
内容包括新建Measure和calculate Column的选择,常用函数的使用,Evaluation Contexts,Time Intelligent等等。
3. DAX分享--------有好玩的比较不好处理的数据计算,分享给有一定DAX基础的小伙伴们。
如果谁有好玩的,不好处理的数据问题也可以发给我。