参考项目网址:(1)https://hub.fastgit.org/HammingMa/gmall-dw
相关概念
SKU,SPU
首先通过检索搜索出来的商品列表中,每个商品都是一个SKU。每个SKU都有自己独立的库存数。也就是说每一个商品详情展示都是一个SKU。
比如,咱们购买一台iPhoneX手机,iPhoneX手机就是一个SPU,但是你购买的时候,不可能是以iPhoneX手机为单位买的,商家也不可能以iPhoneX为单位记录库存。必须要以什么颜色什么版本的iPhoneX为单位。比如,你购买的是一台银色、128G内存的、支持联通网络的iPhoneX ,商家也会以这个单位来记录库存数。那这个更细致的单位就叫库存单元(SKU)。
维度建模:
维度建模是一种将数据结构化的逻辑设计方法。首先介绍两个最重要的概念:事实,维度。
维度建模将业务过程分为度量和上下文。度量是由业务过程和支持它们的业务源系统获取的,常常以数值形式体现,我们称它们为“事实”。
事实由大量的文本形式的上下文包围着,这些文本形式的上下文是伴随着事实产生而确定的。这些上下文被直观的分割成多个独立的模块我们将其称作“维”。维度描述了事实的相关信息,比如who,what,when,where,why等等。
例如小明在淘宝上下单100元买了两箱牛奶,100元和2箱就是事实,而小明,牛奶,时间,配送地址等等这些信息就是维
维度模型主要应用于OLAP系统中,因为关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。
所以把相关各种表整理成两种:事实表和维度表两种。所有维度表围绕着事实表进行解释。
数据仓库里表的分类
1)实体表:
一个现实存在的业务对象,比如用户,商品,商家,销售员等等。
例如用户表可以包含
id |
姓名 |
生日 |
性别 |
邮箱 |
用户等级 |
创建时间 |
同步策略:数据量比较小,通常可以做每日全量,就是每天存一份完整数据。即每日全量。
2)维度表:
一般是指对应一些业务状态,代码的解释表。也可以称之为码表。
比如地区表,订单状态,支付方式,审批状态,商品分类等等。,
例如订单状态表可以包含
编号 |
订单状态名称 |
同步策略:
针对可能会有变化的状态数据可以存储每日全量。
没变化的客观世界的维度(比如性别,地区,民族,政治成分,鞋子尺码)可以就存一份固定值。
3)事务型事实表,一般指随着业务发生不断产生的数据。特点是一旦发生不会再变化。
一般比如,交易流水,操作日志,出库入库记录等等。
例如交易流水表包含
编号 |
对外业务编号 |
订单编号 |
用户编号 |
支付宝交易流水编号 |
支付金额 |
交易内容 |
支付类型 |
支付时间 |
同步策略:以做成每日增量表,即每日创建一个分区存储。
4)周期型事实表,一般指随着业务发生不断产生的数据。
与事务型不同的是,数据会随着业务周期性的推进而变化。
比如订单,其中订单状态会周期性变化。再比如,请假、贷款申请,随着批复状态在周期性变化。
例如订单表包含:
订单编号 |
订单金额 |
订单状态 |
用户id |
支付方式 |
支付流水号 |
创建时间 |
操作时间 |
同步策略:需要得到每日新增及变化量。为方便的取到某个时间切片的快照数据,用利用每日新增和变化表,制作一张拉链表。
原始数据
从日志中抽取用户行为数据(json格式),包括启动数据和事件行为数据(这里模拟生成),存到指定文件。还有从数据库表里获得的相关数据,也存到指定文件。
(1)启动数据包括 :
//设备id // 用户id // 程序版本号 5,6等 //程序版本名 v1.1.1 // 安卓系统版本 //设置日志类型 start appStart.setEn("start"); // 语言 es,en,pt // 渠道号 从哪个渠道来的 appStart.setSr(getRandomChar(1)); // 区域 // 手机品牌 ba ,手机型号 md,就取2位数字了 // 嵌入sdk的版本 // gmail // 屏幕宽高 hw // 客户端产生日志时间 // 手机网络模式 3G,4G,WIFI // 拉丁美洲 西经34°46′至西经117°09;北纬32°42′至南纬53°54′ // 经度 // 纬度 // 入口 // 开屏广告类型 // 状态 // 加载时长 // 失败码 // 扩展字段
数据例子
{"action":"1","ar":"MX","ba":"HTC","detail":"201","en":"start","entry":"1","extend1":"","g":"RWT7HN31@gmail.com","hw":"750*1134","l":"pt","la":"-9.0","ln":"-54.0","loading_time":"1","md":"HTC-17","mid":"31","nw":"WIFI","open_ad_type":"2","os":"8.2.6","sr":"C","sv":"V2.0.8","t":"1632675539796","uid":"31","vc":"11","vn":"1.3.6"}
(2)事件行为数据分为下面几种:
1.商品点击,展示 2.商品详情页 3. 商品列表页 4.广告 5.消息通知 6.用户前台活跃 7.用户后台活跃 8. 故障日志 9.用户评论 10. 用户收藏 11.用户点赞
数据例子
1632709453025|{"cm":{"ln":"-44.7","sv":"V2.8.4","os":"8.1.1","g":"TTF03B8I@gmail.com","mid":"32","nw":"3G","l":"en","vc":"17","hw":"750*1134","ar":"MX","uid":"32","t":"1632706083536","la":"13.4","md":"sumsung-5","vn":"1.0.3","ba":"Sumsung","sr":"M"},"ap":"app","et":[{"ett":"1632637800076","en":"loading","kv":{"extend2":"","loading_time":"0","action":"3","extend1":"","type":"2","type1":"201","loading_way":"2"}},{"ett":"1632628780999","en":"notification","kv":{"ap_time":"1632652229365","action":"2","type":"3","content":""}},{"ett":"1632652586798","en":"active_foreground","kv":{"access":"","push_id":"1"}},{"ett":"1632649878013","en":"favorites","kv":{"course_id":7,"id":0,"add_time":"1632616387020","userid":3}},{"ett":"1632631836363","en":"praise","kv":{"target_id":5,"id":8,"type":3,"add_time":"1632668604153","userid":4}}]}
&#x