BOSS:咦?我要干啥来着?哦,对了,白茶?!
白茶:嗯?BOSS,咋地了!
BOSS:咳咳,是这样的,就是我想知道,咱们这些个门店最直观的对比情况!就是那种可以选择任意两个门店进行各项数据对比的!
白茶:对...对比分析?!
BOSS:我不懂这个那个的,你就告诉我能不能整?
白茶:嗯,能!
在日常工作中,关于对比的可视化思路,主要就是采用扇形图、树状图、云词图或者蚊香图之类的可视化方式。
但是白茶觉得,有时候当类别过多,或者KPI过多的时候,这些可视化插件的呈现效果往往没有一个Table来的直观。
其实大家在做可视化数据分析的时候,都会有一个误区,就是执着于使用图形化插件,但是只要能把分析的结果说清楚,或者达到促进业务发展的价值,其实用哪种方式去呈现反而不是那么重要。
先来看看本期的案例数据:
标准的三张表。
需求是什么?
思路很重要,本期的需求是做对比分析,那么对比分析至少需要两个切片器才能达到对比切换的效果,对吧?
所以输入如下代码:
代码语言:txt复制分店表B =
DISTINCT ( '分店表' )
建立如下模型关系:
看到右侧的虚线,小伙伴们有没有想起来什么?
1
2
3
...
答案:未激活关系
白茶之前写购物篮分析的时候,用的主要思路就是未激活关系,即可以通过函数进行关系激活——USERELATIONSHIP!
思路已经缕好,开始编写代码:
代码语言:txt复制FACT_01_销售数量A =
SUM ( '销售明细'[销售数量] )
这是主要筛选器的度量值。
代码语言:txt复制FACT_01_销售数量B =
CALCULATE (
[FACT_01_销售数量A],
ALL ( '分店表'[分店名] ),
USERELATIONSHIP ( '销售明细'[所在分店], '分店表B'[分店名] )
)
这是对比筛选的度量值。
将二者同时放到一个上下文中进行检验:
经过检验,写法上没有任何问题。
开始构建其他分析KPI。
成交订单A代码:
代码语言:txt复制FACT_02_成交订单A =
COUNTROWS ( VALUES ( '销售明细'[销售流水] ) )
成交订单B代码:
代码语言:txt复制FACT_02_成交订单B =
CALCULATE (
[FACT_02_成交订单A],
ALL ( '分店表'[分店名] ),
USERELATIONSHIP ( '销售明细'[所在分店], '分店表B'[分店名] )
)
顾客数量A代码:
代码语言:txt复制FACT_03_顾客数量A =
COUNTROWS ( VALUES ( '销售明细'[客户流水号] ) )
顾客数量B代码:
代码语言:txt复制FACT_03_顾客数量B =
CALCULATE (
[FACT_03_顾客数量A],
ALL ( '分店表'[分店名] ),
USERELATIONSHIP ( '销售明细'[所在分店], '分店表B'[分店名] )
)
销售金额A代码:
代码语言:txt复制FACT_04_销售金额A =
SUMX ( '销售明细', [FACT_01_销售数量A] * RELATED ( '产品表'[销售价] ) )
销售金额B代码:
代码语言:txt复制FACT_04_销售金额B =
CALCULATE (
[FACT_04_销售金额A],
ALL ( '分店表'[分店名] ),
USERELATIONSHIP ( '销售明细'[所在分店], '分店表B'[分店名] )
)
销售成本A代码:
代码语言:txt复制FACT_05_销售成本A =
SUMX ( '销售明细', [FACT_01_销售数量A] * RELATED ( '产品表'[成本] ) )
销售成本B代码:
代码语言:txt复制FACT_05_销售成本B =
CALCULATE (
[FACT_05_销售成本A],
ALL ( '分店表'[分店名] ),
USERELATIONSHIP ( '销售明细'[所在分店], '分店表B'[分店名] )
)
销售利润A代码:
代码语言:txt复制FACT_06_销售利润A =
[FACT_04_销售金额A] - [FACT_05_销售成本A]
销售利润B代码:
代码语言:txt复制FACT_06_销售利润B =
[FACT_04_销售金额B] - [FACT_05_销售成本B]
至此,所有KPI指标已经构建完毕。
那么如何将这些KPI指标放在同一个表中进行对比呢?
构建中间维度表!
点击界面操作的输入数据,输入如下内容:
利用SWITCH函数将度量值合而为一。
KPIA代码:
代码语言:txt复制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代码:
代码语言:txt复制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的初学者。