以服务分类和地区为分析维度,利润与销售额为度量指标,建立帕累托模型

原数据

建表-1帕累托维度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1-帕累托维度 = 
VAR city =
SELECTCOLUMNS (
ADDCOLUMNS ( DISTINCT ( 'SalesData'[城市] ), "分析维度", "城市" ),
"维度明细", [城市],
"分析维度", [分析维度]
)

VAR time =
SELECTCOLUMNS (
ADDCOLUMNS ( DISTINCT ( 'SalesData'[日期] ), "分析维度", "日期" ),
"维度明细", [日期],
"分析维度", [分析维度]
)

RETURN
UNION ( city,time)

建表-2度量指标

建表ABC

1
ABC = GENERATESERIES(0, 100, 1)

语法GENERATESERIES

返回一个单列表,其中包含一个算术序列的值,即一系列值,其中每个值与前面的值相差一个常数。 返回的列的名称为 Value。

1
GENERATESERIES(<startValue>, <endValue>[, <incrementValue>])
术语定义
startValue用于生成序列的初始值。
endValue用于生成序列的最终值。
incrementValue(可选)序列的增量值。 如果未提供,则默认值为 1。

示例

1
EVALUATE = GENERATESERIES(1, 5)
[值]
1
2
3
4
5

新建度量值 ABC 值

1
ABC 值 = SELECTEDVALUE('ABC'[ABC])

建表-3基础数据(度量值)

利润、销售额

1
2
利润 = SUM(SalesData[利润])
销售额 = sum(SalesData[销售额])

度量指标

1
2
3
4
度量指标 = SWITCH(SELECTEDVALUE('2-度量指标'[排序]),
1,[利润],
2,[销售额],
[销售额])

分析数据、分析数据合计

1
2
3
4
5
6
7
8
分析数据 = 
var Num1=TREATAS(VALUES('1-帕累托维度'[维度明细]),SalesData[日期])
var Num2=TREATAS(VALUES('1-帕累托维度'[维度明细]),SalesData[城市])
return SWITCH(TRUE(),
SELECTEDVALUE('1-帕累托维度'[分析维度])="日期",CALCULATE([度量指标],Num1),
SELECTEDVALUE('1-帕累托维度'[分析维度])="城市",CALCULATE([度量指标],Num2),
BLANK()
)
1
分析数据合计 = CALCULATE([度量指标],ALLSELECTED(SalesData))

数据占比

1
数据占比 = DIVIDE([分析数据],[分析数据合计])
1
2
累计占比 = var cur_rate = [数据占比]
return CALCULATE([数据占比],FILTER(ALL('1-帕累托维度'[维度明细]),[数据占比]>=cur_rate))

A

1
A = MIN('ABC'[ABC])/100

C

1
C = 1-MAX('ABC'[ABC])/100

B

1
B = 1-[A]-[C]

ABC.color

1
2
3
4
5
6
7
8
ABC.color = 
VAR a = [累计占比]
RETURN SWITCH( TRUE(),
a <= [A],1,
a >= [A] && a<= [A]+[B],2,
a > [A]+[B],3,
BLANK()
)

ABC.level

ABC参数(切片器)

柱状图ABC颜色

成果