PowerBI自带的数据钻取功能,在实际应用中是用户使用度较高的功能之一,特别是需要实际操作的业务用户,往往需要根据汇总的结果定位到相关的明细数据,以便进行下一步的流程操作,这种场景下钻取功能显得尤为便利。
关于钻取功能,白茶之前也介绍过,包括云端的跨页钻取,本期是结合特定的场景进行实际应用的介绍,偏向于业务会多一些。
先来看看本期的案例数据:
数据较为简单,一张事实表。将其导入到PowerBI里面。
案例数据与以往的不同,偏向于商机类型的数据,一般数据来源于SalesForce结构会与此类似,SAP系统中关于销售订单类型的数据,也符合本期的应用场景。
商机数据的划分,前几个阶段都属于未关单数据,最后的Loseing和Win都属于已关单数据。业务用户往往会关注未关单的数据进展如何,是否需要提供额外的支持,已关单的数据其中丢单的原因是什么等等。
而销售订单数据,会划分为已发货/未发货,部分发货/全部发货,已发货确收/已发货未确收等,业务形态与商机数据区别很大,但是在BI上需要的功能点,基本雷同。
编写如下基础度量值:
001.OppAmt =
SUM ( Fact_Opportunity[Amount] )
根据上面的业务形态,不难发现,其实用户想要的,就是动态度量值的切换,我们实现的办法有两种。
①新建维度表,通过逻辑关系关联度量值。
新建如下度量值:
未关单数据:
002.NoEndOppCount =
CALCULATE (
[001.OppAmt],
FILTER (
'Fact_Opportunity',
'Fact_Opportunity'[Status] IN { "1", "2", "3", "4" }
)
)
已关单数据:
003.EndOppCount =
CALCULATE (
[001.OppAmt],
FILTER (
'Fact_Opportunity',
NOT 'Fact_Opportunity'[Status] IN { "1", "2", "3", "4" }
)
)
动态度量值:
004.SelectValue =
VAR SelectValue =
SELECTEDVALUE ( 'Dim_Select'[Index] )
VAR Result =
SWITCH (
TRUE (),
SelectValue = 1, [002.NoEndOppCount],
SelectValue = 2, [003.EndOppCount]
)
RETURN
Result
结果如下:
②新建字段参数。
我们将两个结果放在一起对比一下:
从数据上来看,二者在动态度量值的处理上,结果是差不多的。
咱们继续,按照背景介绍,是需要钻取到对应的明细数据的。
分别添加两个明细页,将两个度量值呈现出来。
可以看出,二者之间目前呈现的方式都有点问题,度量值拼接的方式没有数据,而字段参数此时呈现的是2个值,我们来分别钻取看一下效果:
两个度量值都可以满足钻取的需求,但是有一个严重的漏洞,实际上我们在设计报表时,明细表默认是不会选择隐藏的,是需要开放给用户进行明细数据导出的,而两个明细表默认进来的情况,都不太理想,需要我们处理一下。
修改如下度量值:
004.SelectValue =
VAR SelectValue =
SELECTEDVALUE ( 'Dim_Select'[Index] )
VAR Result =
SWITCH (
TRUE (),
SelectValue = 1, [002.NoEndOppCount],
SelectValue = 2, [003.EndOppCount],
[002.NoEndOppCount] + [003.EndOppCount]
)
RETURN
Result
结果如下:
度量值逻辑修改后,可以满足当用户默认不筛选时,呈现正常的数据,而字段参数功能,则无法进行其他修改。
所以,面对如上业务场景时,白茶建议选择度量值维度表关联的方式。
PS:如果有知道解决方案的小伙伴,也可以联系白茶。