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

2020年3月1日20:11:06 评论 404 1723字阅读5分44秒

焦棚子的文章目录

请在文末下载附件

 

一、背景

经过了一个双十一后,天天面对的都是订单。于是有了关于销售订单按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 订单类型特殊分类及占比相关

 

by 焦棚子

焦棚子的文章目录

请点击【立即购买】或者【升级VIP】获得案例附件。

隐藏内容需要支付:¥10
立即购买 升级VIP
焦棚子
  • 本文由 发表于 2020年3月1日20:11:06
  • 除非特殊声明,本站文章均为焦棚子原创,转载请务必保留本文链接
142_Power BI之同比预测 Power BI

142_Power BI之同比预测

焦棚子的文章目录 请在文末下载附件 一、背景 最近刚好在做一个简单同比预测的模型,预测方法很简单,就是累计同比预测,把MTD展示出来。 二、数据源 1、日期表:Calendar 2、事实表1:Data...
140_Power BI&Power Pivot之降维展示同类型比较 Power BI

140_Power BI&Power Pivot之降维展示同类型比较

焦棚子的文章目录 请在文末下载附件 一、背景 最近一段时间比较忙,几乎没有时间更新网站内容,今天刚好周末,更新一个简单的需求。 上效果图: 在我们日常做对比分析的时候,经常几个相同维度(比如省份、区域...
138_Power BI&Power Pivot特殊半累加度量 Power BI

138_Power BI&Power Pivot特殊半累加度量

焦棚子的文章目录 请在文末下载附件 一、背景 半累加度量(semi-additive measure),在DAX建模分析的时候经常遇见;应用场景诸如银行存款、库存等。 接下来看一个比较有意思的案例(结...