BOSS:白茶,能不能在展示产品销量的时候,前三的展示,其他的都归为“其他”啊?
白茶:可以啊!安排!
在实际项目中,一张Dashboard看板的设计,既要考虑逻辑的准确无误,也需要考虑用户的使用体验,更多的,是需要我们带有一点产品人性化的理念去设计看板。
日常汇报中,留给用户阐述的时间可能并不充裕,这就要求用户在使用看板时,可以快速准确地描述出问题给上层领导,这种思路,其实就是**“帕累托二八定律”**在工作中的应用。
案例数据:
这是本期的案例数据,共计三张表,一张产品表,一张分店表,一张事实表。
我们需要解决的问题就是:
当产品销量排名符合我们设定的阈值逻辑时,则正常展示销量,否则将超过阈值的数据,统一汇总为“其他”。
要实现这个问题,我们还需要额外添加一张表。
这是我们重新构建的一张产品维度表,可以看到,每个产品组的下面,我们都添加了“其他”这一分类。
PS:
小伙伴们可以通过其他方式构建此表,方法不唯一。
将上述的四张表,导入到PowerBI中,模型关系如下:
为了能够更加灵活展示Top,我们继续添加一张参数表。
到这里,我们的准备工作结束。
基础指标:
销售数量:
001.Quantity =
SUM ( 'Fact_Sales'[Quantity] )
切换上下文的销售数量:
002.CurrentValue =
VAR CurrentProduct =
VALUES ( 'Dim_ProductII'[ProductName] )
VAR CurrentValue =
CALCULATE (
[001.Quantity],
FILTER ( 'Dim_Product', 'Dim_Product'[ProductName] IN CurrentProduct )
)
RETURN
CurrentValue
这一步的目的,是为了将原本在产品表展示的销量,可以在第二张产品表进行展示,结果如下:
那么如何展示Top和其他呢?我们先要有一个排名的度量值。
销量排名:
003.CurrentQuantityRankx =
IF (
HASONEFILTER ( 'Dim_ProductII'[ProductName] ),
RANKX ( ALLSELECTED ( 'Dim_ProductII'[ProductName] ), [002.CurrentValue] )
)
结果如下:
有了排名之后,我们就可以实现动态展示Top和其他了。
004.TopOther =
VAR CurrentProduct =
SELECTEDVALUE ( 'Dim_ProductII'[ProductName] )
VAR Result =
IF (
CurrentProduct <> "其他",
IF (
[003.CurrentQuantityRankx] <= [Dim_Top Value],
[002.CurrentValue],
BLANK ()
),
CALCULATE (
[002.CurrentValue],
FILTER (
ALLSELECTED ( 'Dim_ProductII'[ProductName] ),
'DAX'[003.CurrentQuantityRankx] > [Dim_Top Value]
)
)
)
RETURN
Result
最终展示效果如下:
这里是白茶,一个PowerBI的初学者。