周末酝酿了两天,实在是不知道要把基础版的写到多么detail才好。还是先继续DAX分享吧。
第一次分享留下的问题答案如下:
在Product表里面创建一个Calculate Column。DAX定义如下:
Colors in Brand = CONCATENATE("With ",
CALCULATE(
DISTINCTCOUNT('Product'[Color])
,ALLEXCEPT('Product','Product'[Brand])
) )&" Color"
在visualization里面创建一个Table。得到结果如下
因为写到问题的时候是临时起意,所以也没有想到数据表里面居然就没有一个brand有3个color的结果,都是大于3的。所以就先做出个这样的结果吧。
如果你问为什么要用CONCATENATE function,不直接用&符号,因为我想放点好玩的,虽然不把number数字型format转换成text字符类型,也可以用&。或者可以理解为就是表现的好像知道很多公式而已。
------正式开始分享2------
PowerBI里面有个很炫酷的计算就是Time Intelligence。说起来就让人热血沸腾,因为忒简单啊。对于一个懒人来说,越简单越好吖!
今天就简单的分享下YTD的计算吧。
如下链接下载财务数据样例。
https://docs.microsoft.com/zh-cn/power-bi/sample-financial-download
加载入powerbi中,得到数据表financials。
创建date table。建好financials table和date table的关系。
计算YTD在其他报表工具里面都是比较有难度的,但是在PowerBI里面就是很简单.如果用New Quick Measure,PowerBI会自动推荐用TOTALYTD.
Sales YTD = TOTALYTD(SUM('financials'[ Sales]),'Date'[Date])
我个人习惯用DATESYTD。结果是一样的。
Sales DATESYTD = CALCULATE(SUM(financials[ Sales]),DATESYTD('Date'[Date]))
直接计算一年内的YTD还挺简单的,那如果财年是从今年的4月到下一年的3月呢?重点看最后一行。
Sales FinYearYTD =
VAR MAXFY= MAX('Date'[Fin Year])
VAR MAXDT = MAX('Date'[FinBI Month])
RETURN
CALCULATE(
SUM(financials[ Sales]),
FILTER(
ALL('Date'),
'Date'[FinBI Month] <= MAXDT && 'Date'[Fin Year] = MAXFY
)
)
是不是感叹,在PowerBI里面用DAX算这些YTD可真是简单啊!还速度很快。
那扩展两个问题吧,如果需要计算Running total呢?(所有值按照时间月份的running total)。如果需要计算当前月往前推12个月的总和的average呢?(有的月份可能就没有数据哦)
写到了variable,突然就想到了下一个分享内容。Rank排序吧,都有点忘记了。
关注DAX Share,了解更多DAX在PowerBI中的应用。