112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关
博客:www.jiaopengzi.com
一、背景
经过了一个双十一后,天天面对的都是订单。于是有了关于销售订单按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、按照日期维度,透视表展示总订单量,普通订单,商家订单,特殊订单订单数,及占比当日订单总是百分比。

结果表
二、数据源

数据源:订单表
偷懒就不建立日期表了。
输出

按照需求输出透视表
三、上度量值
总订单量
总订单量:=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

T2

T3

T4

by 焦棚子
112_Power Pivot 销售订单按 sku 订单类型特殊分类及占比相关的更多相关文章
- Delphi Mercadopago支付【支持支持获取账户信息和余额、创建商店,商店查询、创建二维码、二维码查询、创建订单、订单查询、订单退款等功能】
作者QQ:(648437169) 点击下载➨Delphi Mercadopago支付 [Delphi Mercadopago支付]支持 支持支持获取账户信息和余额.创建商店,商店查询.创建二维码.二维 ...
- java中基本类型封装对象所占内存的大小(转)
这是一个程序,java中没有现成的sizeof的实现,原因主要是java中的基本数据类型的大小都是固定的,所以看上去没有必要用sizeof这个关键字. 实现的想法是这样的:java.lang.Runt ...
- BlocksKit(1)-基本类型的分类
BlocksKit(1)-基本类型的分类 BlocksKit是一个用block的方式来解决我们日常用对集合对象遍历.对象快速生成使用.block作为委托对象的一种综合便利封装库.这个库主要分三个大块C ...
- 04StringBuffer相关知识、Arrays类、类型互换、正则、Date相关
04StringBuffer相关知识.Arrays类.类型互换.正则.Date相关-2018.7.12 1.StringBuffer A:StringBuffer的构造方法: public Strin ...
- usb接口类型 简单分类辨识
usb接口类型 简单分类辨识 - [相似百科] 庆欣 0.0 4 人赞同了该文章 1. 先放图,随着越来越多的接触智能设备,会遇到各种各样的usb接口,对于很多人来说,接口类型只有:usb接口,安卓接 ...
- 114_Power Pivot 销售订单之销售额、成本、利润率相关
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 双十二回来后遇到一个比较有意思的计算销售额和利润率的需求(见下文说明). 先看下效果. 结果 说明: 1.订单表 ...
- 113_Power Pivot 销售订单之重复购买率及购买间隔天数相关
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 1.背景 在论坛中看到朋友在提复购率(重复购买率)等相关问题,今天把结果贴出来. 问题原贴:计算订单中的老顾客复购率 感谢 ...
- 127_Power Pivot&Power BI DAX计算订单商品在库时间(延伸订单仓储费用)
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 前面已经写过一个先进先出的库龄案例,在业务发生又有这样一个需求:先进先出前提,需要按照订单计算每个商品在库时间, ...
- SAP交货单过账自动生产采购订单、采购订单自动收货入库
公司间需要买卖操作,由于发货和收货都是同一批人在操作,为了减少业务人员的工作量,提高工作效率,特实现以上功能 1.增强实现:增强点为交货单过账成功时触发,在提交前触发,如果遇到不可预知问题,可能造成数 ...
随机推荐
- 3_Phase Portrait_相图_相轨迹
- AWS 6R
"The 6 R's": 6 Application Migration Strategies "The 6 R's": 6 Application Migra ...
- html5与css交互 API 《一》classList
用过jquery的朋友都知道,jquery提供的方法中(3个)可以很方便的为指定的节点添加.删除类选择器,即addClass.removeClass.toggleClass.具体的用法我这里就不谈了, ...
- vue-baidu-map 进入页面自动定位的解决方案!
写在前面:我只是一个前端小白,文章中的提到可能会有不足之处,仅提供一个参考.若有不完善的地方,欢迎各位大佬指出!,希望对你有帮助! 好了,入正题.其实之前也被这问题困扰过,在网上也查了一番,没找到解决 ...
- <wx-open-launch-weapp>详解
demo图, h5跳转小程序 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- SpringMVC获取请求参数-集合类型
1.创建User实体类 ```java public class User { private String username; private int age; public String getU ...
- SpringBoot-总结
SpringBoot一站式开发 官网:https://spring.io/projects/spring-boot Spring Boot可以轻松创建独立的.基于Spring的生产级应用程序,它可以让 ...
- Java学习day14
可变参数用作方法的形参,方法参数的个数就可变 格式:修饰符 返回值类型 方法名(数据类型...变量名){ } 方法内的形参只能有一个,这里的变量是一个数组 public static <T> ...
- JavaScript学习②
2. 基本对象: 1. Function:函数(方法)对象 1. 创建: 1. var fun = new Function(形式参数列表,方法体); //忘掉吧 2. function 方法名称(形 ...
- java高级用法之:JNA类型映射应该注意的问题
目录 简介 String Buffers,Memory,数组和Pointer 可变参数 总结 简介 JNA提供JAVA类型和native类型的映射关系,但是这一种映射关系只是一个大概的映射,我们在实际 ...