建模师日志:折扣计算模型升级需求解析:商品折扣率原始数据.xlsx 已有数据表: 订单表: 大类折扣表: 小类折扣表: 商品类别表: 调价表: 当然原始数据里面还有2个单独的大类和小类表,初步审视之后,并未纳入建模需求,因为商品类别表里面已经都包含了信息。 因此,稍加整理一下,大约的思路如下: 数据重构:商品折扣率.xlsx 和 商品折扣率建模用数据.xlsx这里的重点是在分析需求之后,进一步获取大类和小类的折扣率信息,以及根据调价表来做商品不同日期的价格,最后把2个折扣率,1个价格信息反规范化到订单表,然后最终合并成执行的折扣率和价格,以满足分析的需求。 本模型升级前,我对于这个数据源先做了一些改进,方便数据清洗。 像大类折扣表这种样式,2个日期列,我们可以通过把日期转换成整数类型,快速构造{开始日期..结束日期}的模式的List构造来将这个表颗粒度调整到天,并合并查询到订单表,这个属于标准的ETL套路。小类折扣表也可以以此变形。 但是这里有个稍微特殊一点的,就是调价表。 调价表里面只有生效日期,并没有完整的结束日期,虽然逻辑上就是下一个开始日期-1。如果没有对应的下一个生效日期,那么可以以今天Today作为缺省的结束日期来做。这个在PQ里面做可能略微复杂,于是我采取函数公式的办法来补充这个信息。 辅助列和结束日期就用传统的函数快速计算出来了,算是比较常规的模式。 辅助列=[@商品]&"-"&COUNTIF($O$2:O2,O2) 结束日期=IFERROR(INDEX([生效日期],MATCH([@商品]&"-"&(COUNTIF($O$2:O2,O2)+1),[辅助],0))-1,TODAY()) 做好预处理之后,下面就是常规的ETL重构建模需要的表的过程。 这是 商品折扣率建模用数据.xlsx 的查询依赖项,想具体看过程的,可以去文件里面看。 查询1是日期表的通用代码,生成的算是比较丰富的标准日期表。 整理之后,就可以去建模了。在这里需要强调的是,相应的建模的表是和原始数据联动的,并不会丢失事实数据和纬度数据。只要在刷新模型之前,先刷新品折扣率建模用数据.xlsx,照常更新就好了。 数据建模:商品折扣计算模型.xlsx将整理好的3个表直接导入工作簿。 然后按照星型模型构建表间关系。 按照标准的商务分析过程编写度量值。 然后创建基于数据模型的数据透视表,实现预期的计算。 注意:这里增加的日期表暂且没有用到,但是当你需要做日期的YOY,YTD等分析的时候,已然准备好了。
|