alt

PowerBI自带的数据钻取功能,在实际应用中是用户使用度较高的功能之一,特别是需要实际操作的业务用户,往往需要根据汇总的结果定位到相关的明细数据,以便进行下一步的流程操作,这种场景下钻取功能显得尤为便利。

关于钻取功能,白茶之前也介绍过,包括云端的跨页钻取,本期是结合特定的场景进行实际应用的介绍,偏向于业务会多一些。

alt

先来看看本期的案例数据:

alt

数据较为简单,一张事实表。将其导入到PowerBI里面。

案例数据与以往的不同,偏向于商机类型的数据,一般数据来源于SalesForce结构会与此类似,SAP系统中关于销售订单类型的数据,也符合本期的应用场景。

商机数据的划分,前几个阶段都属于未关单数据,最后的Loseing和Win都属于已关单数据。业务用户往往会关注未关单的数据进展如何,是否需要提供额外的支持,已关单的数据其中丢单的原因是什么等等。

而销售订单数据,会划分为已发货/未发货,部分发货/全部发货,已发货确收/已发货未确收等,业务形态与商机数据区别很大,但是在BI上需要的功能点,基本雷同。

编写如下基础度量值:

001.OppAmt =
SUM ( Fact_Opportunity[Amount] )

根据上面的业务形态,不难发现,其实用户想要的,就是动态度量值的切换,我们实现的办法有两种。

①新建维度表,通过逻辑关系关联度量值。

alt

新建如下度量值:

未关单数据:

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

结果如下:

alt

新建字段参数。

alt alt

我们将两个结果放在一起对比一下:

alt

从数据上来看,二者在动态度量值的处理上,结果是差不多的。

咱们继续,按照背景介绍,是需要钻取到对应的明细数据的。

分别添加两个明细页,将两个度量值呈现出来。

alt

alt

可以看出,二者之间目前呈现的方式都有点问题,度量值拼接的方式没有数据,而字段参数此时呈现的是2个值,我们来分别钻取看一下效果: alt

两个度量值都可以满足钻取的需求,但是有一个严重的漏洞,实际上我们在设计报表时,明细表默认是不会选择隐藏的,是需要开放给用户进行明细数据导出的,而两个明细表默认进来的情况,都不太理想,需要我们处理一下。

修改如下度量值:

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

结果如下:

alt

度量值逻辑修改后,可以满足当用户默认不筛选时,呈现正常的数据,而字段参数功能,则无法进行其他修改。

所以,面对如上业务场景时,白茶建议选择度量值维度表关联的方式。

PS:如果有知道解决方案的小伙伴,也可以联系白茶。

alt alt