核心交易分析之DWD层建表加载数据
要处理的表有两张:交易订单表、订单产品表。其中:
订单表是周期性事实表;为保留订单状态,可以使用拉链表进行处理;
订单产品表普通的事实表,用常规的方法进行处理;
如果有数据清洗、数据转换的业务需求,ODS => DWD
如果没有数据清洗、数据转换的业务需求,保留在ODS,不做任何变化。这个是本项目的处理方式
订单状态:
-3:用户拒收
-2:未付款的订单
-1:用户取消
0:待发货
1:配送中
2:用户确认收货
订单从创建到最终完成,是有时间限制的;业务上也不允许订单在一个月之后,状态仍然在发生变化;
DWD层建表
与维表不同, ...
核心交易分析之DIM层建表加载数据
首先要确定哪些是事实表、哪些是维表。
用什么方式处理维表,每日快照、拉链表?
小表使用每日快照:产品分类表、商家店铺表、商家地域组织表、支付方式表
大表使用拉链表:产品信息表
商品分类表
数据库中的数据是规范的(满足三范式),但是规范化的数据给查询带来不便。
备注:这里对商品分类维度表做了逆规范化
1234567891011DROP TABLE IF EXISTS dim.dim_trade_product_cat;create table if not exists dim.dim_trade_product_cat( firstId int, -- 一级商品分类id first ...
核心交易分析之缓慢变化维与周期性事实表
缓慢变化维
缓慢变化维(SCD;Slowly Changing Dimensions)。在现实世界中,维度的属性随着时间的流失发生缓慢的变化(缓慢是相对事实表而言,事实表数据变化的速度比维度表快)。
处理维度表的历史变化信息的问题称为处理缓慢变化维的问题,简称SCD问题。处理缓慢变化维的方法有以下几种常见方式:
保留原值
维度属性值不做更改,保留原始值。
如商品上架售卖时间:一个商品上架售卖后由于其他原因下架,后来又再次上架,此种情况产生了多个商品上架售卖时间。如果业务重点关注的是商品首次上架售卖时间,则采用该方式。
直接覆盖
修改维度属性为最新值,直接覆盖,不保留历史信息。
如商品属 ...
核心交易分析之ODS层建表与数据加载
ODS建表:
ODS层的表结构与源数据基本类似(列名及数据类型);
ODS层的表名遵循统一的规范;
ODS层建表
所有的表都是分区表;字段之间的分隔符为 , ;为表的数据数据文件指定了位置;
交易订单表
1234567891011121314151617181920212223DROP TABLE IF EXISTS `ods.ods_trade_orders`;CREATE EXTERNAL TABLE `ods.ods_trade_orders`( `orderid` int, `orderno` string, `userid` bigint, `status` tinyin ...
核心交易分析之数据导入
已经确定的事情:DataX、导出7张表的数据。
MySQL导出:全量导出、增量导出(导出前一天的数据)。
业务数据保存在MySQL中,每日凌晨导入上一天的表数据。
表数据量少,采用全量方式导出MySQL。
表数据量大,而且根据字段能区分出每天新增数据,采用增量方式导出MySQL。
3张增量表:
订单表 lagou_trade_orders
订单产品表 lagou_order_produce
产品信息表 lagou_product_info
4张全量表:
产品分类表 lagou_product_category
商家店铺表 lagou_shops
...
核心交易分析之业务需求与数据库表结构
业务需求
本主题是电商系统业务中最关键的业务,电商的运营活动都是围绕这个主题展开。
选取的指标包括:订单数、商品数、支付金额。对这些指标按销售区域、商品类型进行分析。
业务数据库表结构
业务数据库:数据源
交易订单表(trade_orders)
订单产品表(order_product)
产品信息表(product_info)
产品分类表(product_category)
商家店铺表(shops)
商家地域组织表(shop_admin_org)
支付方式表(payments)
交易订单表
12345678910111213141516171819 ...
广告业务分析之Datax数据导出与高仿日志数据测试
Datax数据导出
在MySQL创建对应的表
123456789drop table if exists dwads.ads_ad_show_place;create table dwads.ads_ad_show_place( ad_action tinyint, hour varchar(2), place varchar(20), product_id int, cnt int, dt varchar(10));
创建配置文件(json)
创建/data/lagoudw/script/advertisement/ads_ad_show_place.json
12345 ...
广告业务分析之广告点击分析
广告点击次数分析
需求分析
广告:ad
ad_action。用户行为;0 曝光;1 曝光后点击;2 购买
duration。停留时长
shop_id。商家id
event_type。“ad”
ad_type。格式类型;1 JPG;2 PNG;3 GIF;4 SWF
show_style。显示风格,0 静态图;1 动态图
product_id。产品id
place。广告位置;首页=1,左侧=2,右侧=3,列表页=4
sort。排序位置
公共字段
分时统计:
曝光次数、不同用户id数(公共信息中的uid)、不同用户数(公共信息中的device_i ...
广告业务分析之DWD层建表和数据加载
ODS:分区;事件的主要信息在json串中(json数组),公共信息在另外一个json串中;
ODS => 解析json,从json串中,提取jsonArray数据;将公共信息从json串中解析出来 => 所有事件的明细
所有事件的明细,包括:
分区
事件(json串)
公共信息字段
所有事件的明细 => 广告json串解析 => 广告事件的明细
广告事件的明细:
分区
广告信息字段
公共信息字段
DWD层建表
12345678910111213141516171819202122232425262728293031323334353 ...
广告业务分析之ODS层建表和数据加载
事件日志采集
1、启动Flume Agent(适当的修改参数,128M滚动一次)
12# 启动flumeflume-ng agent --conf /opt/lagou/servers/flume-1.9.0/conf --conf-file /opt/lagou/servers/flume-1.9.0/conf/flume-log2hdfs3.conf -name a1 -Dflume.root.logger=INFO,console
2、生成数据(文件大小约640M,100W条事件日志)
123cd /data/lagoudw/jarsjava -cp data-generator ...