1.数仓建模步骤
自下而上 ADS-DWS-DWM-DWD
2.DWD方案(清洗转换,降维拉宽)
DWD层的表
dwd_sale_store_sale_dtl_i 门店销售明细宽表
维度dim 销售sale 合成成的宽表 dwd_dim_date_f
日期表
store_sale_dtl
门店销售明细表
dwd_sale_store_sale_dtl_i
门店销售明细表
dwd_dim_source_type_map_f
交易类型映射表
store_sale_info
门店销售信息表
dwd_dim_store_f
分店信息表
store_sale_pay
门店销售支付表
dwd_dim_goods_f
门店商品信息表
dwd_dim_store_goods_f
店组信息表
先合并销售的三张表(事实表),再去和维度的5张表合并,最后生成门店销售明细表的宽表
先与销售的3张事实表进行关联
销售日期:基于门店销售信息表中的库存日期处理
注意:所有时间数据都建议格式化下
母店编码和店铺编码: 母店编码为销售信息表的门店编码, 门店编码使用销售信息表的销售门店编码,如果没有, 再使用门店编码 交易来源:如果为null, 返回1,代表线下POS 会员类型: 如果以OL- 或者 SF- 开头的为1线上会员, 如果是''或者null为0非会员, 否则为实体卡会员 是否余额支付: 基于门店销售支付表,如果订单id为null返回0代表不是,否则返回1代表是 结算类型: 判断trade_id,如果为1 返回0(正常交易), 为2返回2, 如果为3,4返回5 母订单编号: 判断明细表中商品销售金额sale_amount如果小于0采用销售表的source_order_sn(退款单据ID),反之如果大于等于0采用销售表的parent_order_sn. 否则选order_no item,sort,cashier_no,cashier_name,zt_id(member_center_sn),member_id: 如果为null设为0 支付时间: 选择商品信息表的支付日期pay_date 最后更新时间: 选择商品信息表的库存时间deal_date 是否为组合类型: 判断明细表combination_flag,如果为1返回1(是),否则返回0(否) trade_mode_id,share_user_id,commission_amount: 如果为null, 设置为0 余额支付金额: 判断单据总支付金额如果等于0 , 则结果为0; 如果余额支付金额为null,则结果也为0, 否则使用余额支付金额 * (商品销售金额 / 单据总支付金额)
基于合并后的3个事实表结果,再去和其他五个维度表关联,生成最终商品明细宽表
刻钟: 判断0-14为1,15-29为2,30-44为3,45-59位4 刻钟数: 计算格式为hourly*4+刻钟 销售类型: 判断source_type或者original_source_type,当为1返回1, 当为9返回5 , 当为 4,5,6,7,8返回6. 当为11返回8 ,否则返回7 供应链类型: 判断门店商品信息表的 tag 商品标识为null, 返回4 采购仓库编号: 判断门店商品信息表的 dc_no 如果为null 返回-1 采购仓库名称: 判断门店商品信息表的 dc_name 如果为null 返回其他仓 采购柜组编号: 判断门店商品信息表的 group_no 如果为null, 返回-1 采购柜组名称: 判断门店商品信息表的 group_name 如果为null, 返回其他柜组 供应商ID: 判断门店明细表的vendor_id 如果为null, 返回0 是否日清: 判断门店商品信息表的is_clear 如果为null, 返回0 写入时间: 设置为昨天 核销时间: 设置为交易日期
冲减:冲减是会计学上使用较多的术语。是指收入或者费用之间相互抵消,冲减可以部分冲掉,也可以全额冲掉。
3.DWM方案(提前聚合,业务合并)
4.DWS方案(基于主题需求-维度指标,形成大宽表)
5.ADS方案(基于主题需求-维度指标,分析和计算最终指标)