前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >销售需求丨切换技巧

销售需求丨切换技巧

原创
作者头像
PowerBI丨白茶
修改2021-09-04 09:21:27
6900
修改2021-09-04 09:21:27
举报
文章被收录于专栏:PowerBIPowerBI

(时间:23点15分)微信嘀嘀嘀~

小A:白茶兄!!白茶兄!!在不在??!!救命啊,兄弟!

白茶:(一脸迷茫)啊?!

小A:是这样的,我遇到了一个需求问题!某位老板,想自由切换TOP3!

白茶:额,这个我不是教过你么?TOP3通过ALLSELECTED函数可以实现啊!

小A:不是这样的,这个老板是个完美主义者!要的是不同维度的TOP3,并且只能显示一个,比如选择A维度就不能出现B维度的TOP3,但是要求在一个框框中体现!

白茶:......

小伙伴们,以上就是本期内容的问题来源,一些场景和人物都是白茶虚构的,但是这个事却是真的。

在实际生活中,我们经常能遇到各种莫名其妙的需求,也就是白茶所说的中国式报表——即追求个性化自定义逻辑的报表。

而且因为行业和业务需求的不同,这类问题也是千奇百怪。没有办法做一个系统的归纳,只能是不断的发现需求,解决需求。

话不多说,开始本期的问题:

如何在不同维度之间切换TOP3,并且让无关项不显示呢?

模拟数据:

这是白茶随机模拟的一份销售明细。

其中包含了两个可以分析的维度:品名和分店。

将其导入到BI中,建立基础的度量值。

代码语言:txt
复制
销售数量 : =
SUM ( '销售明细'[销售数量] )

关于本期的问题,白茶有两个解决思路。

思路①:

通过IF判断字段来决定是否显示相关排名。

编写两个维度的TOP3排名度量值。

商品TOP:

代码语言:txt
复制
RANKX_商品 =
VAR T1 =
    RANKX ( ALLSELECTED ( '销售明细'[商品名称] ), [销售数量 :] )
RETURN
    IF ( T1 <= 3, T1, BLANK () )

分店TOP:

代码语言:txt
复制
RANKX_分店 =
VAR T1 =
    RANKX ( ALLSELECTED ( '销售明细'[所在分店]] ), [销售数量 :] )
RETURN
    IF ( T1 <= 3, T1, BLANK () )

结果如下:

添加切片器维度:

通过IF对筛选字段进行判断。

商品排名:

代码语言:txt
复制
RANKX_商品KPI =
IF ( SELECTEDVALUE ( '维度表'[维度] ) <> "分店", [RANKX_商品], BLANK () )

分店排名:

代码语言:txt
复制
RANKX_分店KPI =
IF ( SELECTEDVALUE ( '维度表'[维度] ) <> "商品", [RANKX_分店], BLANK () )

这里解释一下:

1、通过RANKX函数,分别对商品、分店维度进行排名,排序依据是销售数量,利用IF判断,排名小于3显示,否则为空;

2、利用IF进行维度字段判定,符合条件显示,否则为空,通过度量值实现维度消失的效果。

其效果如下:

如果BOSS想让两个在一个框框内,可以选择将两个可视化插件重叠,也可以通过多行卡片图显示。

思路②:

通过坐标维度显示。

编写如下代码,添加表函数:

代码语言:txt
复制
TABLE =
VAR T1 =
    SELECTCOLUMNS ( '销售明细', "明细", [商品名称], "类别", "商品", "INDEX", "1" )
VAR T2 =
    SELECTCOLUMNS ( '销售明细', "明细", [所在分店], "类别", "分店", "INDEX", "2" )
RETURN
    DISTINCT ( UNION ( T1, T2 ) )

结果如下:

编写度量值,将新生成的坐标维度与事实表建立联系:

代码语言:txt
复制
KPI =
VAR T1 =
    TREATAS ( VALUES ( 'TABLE'[明细] ), '销售明细'[商品名称] )
VAR T2 =
    TREATAS ( VALUES ( 'TABLE'[明细] ), '销售明细'[所在分店] )
VAR T3 =
    SELECTEDVALUE ( 'TABLE'[类别] )
RETURN
    SWITCH (
        TRUE (),
        T3 = "商品", CALCULATE ( [销售数量 :], T1 ),
        T3 = "分店", CALCULATE ( [销售数量 :], T2 )
    )

排序依据有了,编写排名代码:

代码语言:txt
复制
RANKX KPI =
VAR T1 =
    RANKX ( ALLSELECTED ( 'TABLE'[明细] ), [KPI] )
RETURN
    IF ( T1 <= 3, T1, BLANK () )

其结果如下:

解释一下思路:

1、通过新建的表函数,将两个维度放在一列中;

2、利用TREATAS将维度与事实表联系起来;

3、利用RANKX进行排序,之后IF判断,符合条件显示,否则为空。

我们对比一下效果:

小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球PowerBI丨需求圈)

这里是白茶,一个PowerBI的初学者。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档