BI技巧丨对比分析

BOSS:咦?我要干啥来着?哦,对了,白茶?!

白茶:嗯?BOSS,咋地了!

BOSS:咳咳,是这样的,就是我想知道,咱们这些个门店最直观的对比情况!就是那种可以选择任意两个门店进行各项数据对比的!

白茶:对…对比分析?!

BOSS:我不懂这个那个的,你就告诉我能不能整?

白茶:嗯,能!

在日常工作中,关于对比的可视化思路,主要就是采用扇形图、树状图、云词图或者蚊香图之类的可视化方式。

但是白茶觉得,有时候当类别过多,或者KPI过多的时候,这些可视化插件的呈现效果往往没有一个Table来的直观。

其实大家在做可视化数据分析的时候,都会有一个误区,就是执着于使用图形化插件,但是只要能把分析的结果说清楚,或者达到促进业务发展的价值,其实用哪种方式去呈现反而不是那么重要。

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

标准的三张表。

需求是什么?

思路很重要,本期的需求是做对比分析,那么对比分析至少需要两个切片器才能达到对比切换的效果,对吧?

所以输入如下代码:

分店表B =
DISTINCT ( '分店表' )

建立如下模型关系:

看到右侧的虚线,小伙伴们有没有想起来什么?

1

2

3

答案:未激活关系

白茶之前写购物篮分析的时候,用的主要思路就是未激活关系,即可以通过函数进行关系激活——USERELATIONSHIP

思路已经缕好,开始编写代码:

FACT_01_销售数量A =
SUM ( '销售明细'[销售数量] )

这是主要筛选器的度量值。

FACT_01_销售数量B =
CALCULATE (
    [FACT_01_销售数量A],
    ALL ( '分店表'[分店名] ),
    USERELATIONSHIP ( '销售明细'[所在分店], '分店表B'[分店名] )
)

这是对比筛选的度量值。

将二者同时放到一个上下文中进行检验:

经过检验,写法上没有任何问题。

开始构建其他分析KPI。

成交订单A代码:

FACT_02_成交订单A =
COUNTROWS ( VALUES ( '销售明细'[销售流水] ) )

成交订单B代码:

FACT_02_成交订单B =
CALCULATE (
    [FACT_02_成交订单A],
    ALL ( '分店表'[分店名] ),
    USERELATIONSHIP ( '销售明细'[所在分店], '分店表B'[分店名] )
)

顾客数量A代码:

FACT_03_顾客数量A =
COUNTROWS ( VALUES ( '销售明细'[客户流水号] ) )

顾客数量B代码:

FACT_03_顾客数量B =
CALCULATE (
    [FACT_03_顾客数量A],
    ALL ( '分店表'[分店名] ),
    USERELATIONSHIP ( '销售明细'[所在分店], '分店表B'[分店名] )
)

销售金额A代码:

FACT_04_销售金额A =
SUMX ( '销售明细', [FACT_01_销售数量A] * RELATED ( '产品表'[销售价] ) )

销售金额B代码:

FACT_04_销售金额B =
CALCULATE (
    [FACT_04_销售金额A],
    ALL ( '分店表'[分店名] ),
    USERELATIONSHIP ( '销售明细'[所在分店], '分店表B'[分店名] )
)

销售成本A代码:

FACT_05_销售成本A =
SUMX ( '销售明细', [FACT_01_销售数量A] * RELATED ( '产品表'[成本] ) )

销售成本B代码:

FACT_05_销售成本B =
CALCULATE (
    [FACT_05_销售成本A],
    ALL ( '分店表'[分店名] ),
    USERELATIONSHIP ( '销售明细'[所在分店], '分店表B'[分店名] )
)

销售利润A代码:

FACT_06_销售利润A =
[FACT_04_销售金额A] - [FACT_05_销售成本A]

销售利润B代码:

FACT_06_销售利润B =
[FACT_04_销售金额B] - [FACT_05_销售成本B]

至此,所有KPI指标已经构建完毕。

那么如何将这些KPI指标放在同一个表中进行对比呢?

构建中间维度表!

点击界面操作的输入数据,输入如下内容:

利用SWITCH函数将度量值合而为一。

KPIA代码:

KPIA =
VAR T1 =
    SELECTEDVALUE ( 'Measure'[INDEX] )
VAR T2 =
    SWITCH (
        TRUE (),
        T1 = 01, SELECTEDVALUE ( '分店表'[分店名] ),
        T1 = 02, [FACT_01_销售数量A],
        T1 = 03, [FACT_02_成交订单A],
        T1 = 04, [FACT_03_顾客数量A],
        T1 = 05, [FACT_04_销售金额A],
        T1 = 06, [FACT_05_销售成本A],
        T1 = 07, [FACT_06_销售利润A]
    )
RETURN
    T2

KPIB代码:

KPIB =
VAR T1 =
    SELECTEDVALUE ( 'Measure'[INDEX] )
VAR T2 =
    SWITCH (
        TRUE (),
        T1 = 01, SELECTEDVALUE ( '分店表B'[分店名] ),
        T1 = 02, [FACT_01_销售数量B],
        T1 = 03, [FACT_02_成交订单B],
        T1 = 04, [FACT_03_顾客数量B],
        T1 = 05, [FACT_04_销售金额B],
        T1 = 06, [FACT_05_销售成本B],
        T1 = 07, [FACT_06_销售利润B]
    )
RETURN
    T2

这里主要采用的是SWITCH的条件输出。

参考文章:《动态数据》

最终效果如下:

小伙伴们❤GET了么?

(BOSS:干得漂亮!)

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

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

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

Fabric丨白茶 文章被收录于专栏

数据分析进阶之路,带你深入了解可视化技巧。

全部评论

相关推荐

10-30 10:16
南京大学 Java
龚至诚:给南大✌️跪了
点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 10:46
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务