​一切为了业务方舒服:PowerBI中当用户选择切片器时,数据才显示

2020-05-07 17:02:51 浏览数 (1)

本案例非常简单,不过,这是一个为满足业务方的刁钻需求而思考的整个过程,诸多报告中都可以采用相同或相似思路。

在几乎每一个报告中,都有切片器的存在,而这,也正是DAX能够展示其精髓的外部条件之一。

而报告,或者说可视化,永远是为业务而存活。

业务的需求是各式各样,多种多样,随时变化。只有深入了解业务,甚至是只有直接参与业务,才能够做出真正适合使用者的报告。

有这么一个业务需求:用户打开报告时,地区切片器默认是无选择的,此时树状图不显示数据;只有当用户选择了地区后,树状图展示分析结果。

我们知道,默认情况下,切片器不选择相当于全选。也就是说,此时,可视化对象会显示全部的数据:

所以,我们稍作调整,加一个判断条件,如果用户选择了一个“地区”的值,那么就显示这个度量值,否则为空白,即blank,那么度量值可以这么写:

代码语言:javascript复制
销售额判定选择1 = IF(HASONEFILTER(data[地区]),[本期销售额],BLANK())

当然我们也可以这样写:

代码语言:javascript复制
销售额判定选择2 = IF(HASONEVALUE(data[地区]),[本期销售额],BLANK())

结果是相同的。

用户没有进行筛选时,视觉对象是空的:

用户选择了一个地区后,可视化对象出现了数据:

可是这样仍然会出现问题,一旦用户想要查看两个及以上的地区,那么由于HAS“ONE”FILTER和HAS“ONE”VALUE只能是单选,所以结果还是空:

这显然不是我们想要的。

所以,我们需要一个新的函数:ISFILTERED来判断该字段是否被直接筛选:

代码语言:javascript复制
销售额判定选择3 = IF(ISFILTERED(data[地区]),[本期销售额],"")

这样,当我们选择两个地区时,树状图是显示数据的:

这样,就达到了业务方的需求。

不过,有个小问题:当用户打开报告时,空白处的用户体验不是很好:

很有可能会让用户一时不知所措:

反应半天才会想起来在左侧点击地区进行筛选。

所以我们可以在空白的可视化对象处添加一个卡片图:

代码语言:javascript复制
销售额判定背景 = IF(ISFILTERED(data[地区]),"","请至少选择一个地区")

这样,当用户打开报告时,映入眼帘的是让他选择一个地区,他就会很自然地在左侧找到地区切片器进行筛选,然后就能看到分析数据了:

这样是不是会让业务方感觉更舒服?是不是会更卖力地工作?是不是会为企业创造更高的价值?

记住,一切可视化都是为业务服务。

0 人点赞