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

传送门:https://zhuanlan.zhihu.com/p/50352113

一、背景

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

说明:(暂且不讨论这样分类是否合理,需求方确实这样的)

  1. sku字符长度小于等于8位为普通订单sku
  2. sku字符长度大于8,且开头不是e字母为商家订单sku
  3. sku开头是e字母为特殊订单sku
  4. 订单中只要包含普通订单sku的订单即为普通订单,如:订单100001
  5. 订单中不包含普通订单sku且包含商家订单sku的订单即为商家订单,如:订单100006
  6. 订单中只包含特殊订单sku的订单即为特殊订单,如:订单100007

要求:
按照日期纬度,透视表展示总订单量,普通订单,商家订单,特殊订单订单数,及占比当日订单总是百分比。
file

二、数据源

file
偷懒就不建立日期表了。

输出
file
按照需求输出透视表

三、上度量值

总订单量

总订单量:=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
file

T2
file

T3
file

T4
file

by 焦棚子