继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关

焦棚子
关注TA
已关注
手记 47
粉丝 2
获赞 1

一、背景

经过了一个双十一后,天天面对的都是订单。于是有了关于销售订单按sku类型分类的需求。

说明:(暂且不讨论这样分类是否合理,需求方确实这样的)
1、sku字符长度小于等于8位为普通订单sku

2、sku字符长度大于8,且开头不是e字母为商家订单sku

3、sku开头是e字母为特殊订单sku

4、订单中只要包含普通订单sku的订单即为普通订单,如:订单100001

5、订单中不包含普通订单sku且包含商家订单sku的订单即为商家订单,如:订单100006

6、订单中只包含特殊订单sku的订单即为特殊订单,如:订单100007

要求:

1、按照日期维度,透视表展示总订单量,普通订单,商家订单,特殊订单订单数,及占比当日订单总是百分比。

112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关

结果表

二、数据源

112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关

数据源:订单表

偷懒就不建立日期表了。

输出

112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关

按照需求输出透视表

三、上度量值

总订单量

总订单量:=DISTINCTCOUNT('订单表'[订单号])

普通订单

普通订单:=
VAR T1=SUMMARIZE (
    '订单表',
    '订单表'[订单号],
    "S1", SUMX ( ADDCOLUMNS ( '订单表', "S1", IF ( LEN ( '订单表'[SKU] ) <= 8, 1, 0 ) ), [S1] ),
    "S2", SUMX (ADDCOLUMNS ('订单表',"S2", IF ( LEN ( '订单表'[SKU] ) > 8 && LEFT ( '订单表'[SKU], 1 )<>"e", 1, 0 )),[S2]),
    "S3", SUMX (ADDCOLUMNS ( '订单表', "S3", IF ( LEFT ( '订单表'[SKU], 1 )="e" , 1, 0 ) ),[S3])
    )
VAR T2=FILTER(T1,[S1]>0)
RETURN
CALCULATE('订单表'[总订单量],T2)

普通订单%

普通订单%:=DIVIDE('订单表'[普通订单],'订单表'[总订单量])

商家订单

商家订单:=
VAR T1=SUMMARIZE (
    '订单表',
    '订单表'[订单号],
    "S1", SUMX ( ADDCOLUMNS ( '订单表', "S1", IF ( LEN ( '订单表'[SKU] ) <= 8, 1, 0 ) ), [S1] ),
    "S2", SUMX (ADDCOLUMNS ('订单表',"S2", IF ( LEN ( '订单表'[SKU] ) > 8 && LEFT ( '订单表'[SKU], 1 )<>"e", 1, 0 )),[S2]),
    "S3", SUMX (ADDCOLUMNS ( '订单表', "S3", IF ( LEFT ( '订单表'[SKU], 1 )="e" , 1, 0 ) ),[S3])
    )
VAR T3=FILTER(T1,[S1]=0&&[S2]>0)
RETURN
CALCULATE('订单表'[总订单量],T3)

商家订单%

商家订单%:=DIVIDE('订单表'[商家订单],'订单表'[总订单量])

特殊订单

特殊订单:=
VAR T1=SUMMARIZE (
    '订单表',
    '订单表'[订单号],
    "S1", SUMX ( ADDCOLUMNS ( '订单表', "S1", IF ( LEN ( '订单表'[SKU] ) <= 8, 1, 0 ) ), [S1] ),
    "S2", SUMX (ADDCOLUMNS ('订单表',"S2", IF ( LEN ( '订单表'[SKU] ) > 8 && LEFT ( '订单表'[SKU], 1 )<>"e", 1, 0 )),[S2]),
    "S3", SUMX (ADDCOLUMNS ( '订单表', "S3", IF ( LEFT ( '订单表'[SKU], 1 )="e" , 1, 0 ) ),[S3])
    )
VAR T4=FILTER(T1,[S1]=0&&[S2]=0&&[S3]>0)
RETURN
CALCULATE('订单表'[总订单量],T4)

特殊订单%

特殊订单%:=DIVIDE('订单表'[特殊订单],'订单表'[总订单量])

四、总结

1、如上需求用sql很好写;

2、主要利用ADDCOLUMNS,创建新的条件列,SUMX再聚合;

3、根据说明的4、5、6三点得到,T2,T3,T4的筛选上下文;

4、给出T1-T4的过程截图帮助理解,注意观察S1,S2,S3和说明4、5、6的对应关系。

T1

112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关

T2

112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关

T3

112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关

T4

112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP