天气太热,在家吹空调刷手机好舒服。为了逃避做家务,所以假装学习。好羞愧~~还好,认识的人基本不关心我写的东西,所以,我还是在学习。
先说一个简单的。
当我们拉一个简单的图表的时候,如下图所示。默认是有标题和X轴,Y轴内容的。这个也没啥特别的。
如果想当我在左边的图上选择了Brand,能够在右边这个图上显示出来“Quantity by Color by XX Brand",是不是还挺有小心思的。矩阵表或者List表里面的设置是一样的,我就不多说了。只写下图里面的实现。
默认情况下,如果不做任何处理的话。打开属性部分,查看标题title,如下图所示
Power BI Desktop会根据你拉入的内容自动生成名字。但是他也预留了fx让你做些自定义的内容。这里我想显示”Quantity by Color by XX Brand".
所以新建Measures定义DAX如下:
Title_P1 = IF(HASONEFILTER('Product'[Brand]), "Quanlity by Color by "& SELECTEDVALUE('Product'[Brand]),"Quanlity by Color")
这里,我先判断了下是否选择了一个Brand,然后得到我要显示的内容。有且仅有我只选择了一个Brand的时候,才会显示”Quantity by Color by XX Brand"。当然你也可以罗列你选出来的所有Brand,用DAX分享12中提到
CONCATENATEX函数,这里就不再写了。主要是列出来也不一定好看。
然后找到Title text,点中fx.
确定,基本上就完成了。随便选了一个Brand,结果如下。
这个是比较简单的,完全没有体现到什么小心机。下面就是关键时刻了。
下面的内容是关于带Drill Down,Drill Up的图的标题title的变化。我不太确定别人有没有解决方案,不过我是用小心机做的。仅供参考。
随便拉一张组合图。内容如下
Category和SubCategory是有上钻下钻的关系的,柱子就是Quantity的数据,线的内容是根据Category或者Subcategory的内容做的Running total.
上钻下钻中的标题显示如下图:
虽然前面一大串不咋地,但是by 后面的变化,还是蛮好的。
看到上钻下钻的问题,我第一反应是ISINSCOPE函数。轻松写下Measure:
Title_P2 = SWITCH(TRUE(),ISINSCOPE('Product Category'[Category]),"Category",ISINSCOPE('Product Subcategory'[Subcategory]),"Sub Category","")
然后放在了title fx处。
悲伤的发现,不起作用。伤心一下,然后开始分析。
拉出一个矩阵表,内容如下
其中category quantity 的定义如下:
category quantity = VAR ct = CALCULATE( SUM('Sales'[Quantity]), FILTER( ALLSELECTED('Product Category'[Category]), ISONORAFTER('Product Category'[Category], MAX('Product Category'[Category]), DESC) ))VAR sub_ct =CALCULATE( SUM('Sales'[Quantity]), FILTER( ALLSELECTED('Product Subcategory'[Subcategory]), ISONORAFTER('Product Subcategory'[Subcategory], MAX('Product Subcategory'[Subcategory]), DESC) ))VAR Result = SWITCH(TRUE(),ISINSCOPE('Product Category'[Category]),ct,ISINSCOPE('Product Subcategory'[Subcategory]),sub_ct)Return Result
好像也没有错啊,怎么title没有变化呢?
后来我想明白了,因为我放在图里面或者矩阵表里面,都是有上下文的,但是放在title里面,这个title_p2这个measures没有上下文,这个ISINSCOPE没有办法起作用,如果我把这个title_p2修改下如下,估计一直都是“XXX”。
Title_P2 = SWITCH(TRUE(),ISINSCOPE('Product Category'[Category]),"Category",ISINSCOPE('Product Subcategory'[Subcategory]),"Sub Category","XXX")
结果也确实如我想的一样。
好了,此路不通。咋办呢?机智如我,当然就开始用小心机了。
这个心机有前提的:
我只是觉得by Category/by Subcategory之前的描述不太喜欢;
没有其他变量的要求。
有其他根据变量变化什么的需求的,这个心机就白费了,不能即保留by Category/by Subcategory又有其他特别要求。
仔细观察拉的字段和title之间的关系。
title的名字 = 两个度量的名字 by Category
那就直接rename这个度量的名字就可以了。
这个例子不太好。因为两个度量值,这个and是去不掉的。一个度量值的时候重命名会更好用一些。
不过也进一步确定一个事情,就是要好好定义自己度量值的名字。
谢谢关注!