1.数仓分层概述

数据仓库分为三层,自下而上为:

数据引入层(ODS,Operation Data Store)

数据公共层(CDM,Common Data Model)

数据应用层(ADS,Application Data Service)

数据引入层(ODS,Operation Data Store):将原始数据几乎无处理的存放在数据仓库系统,结构上与源系统基本保持一致,是数据仓库的数据准备区。

数据公共层(CDM,Common Data Model,又称通用数据模型层),包含DIM维度表、DWD和 DWS,由ODS层数据加工而成。主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。这一层里又包括三层:

1.公共维度层(DIM):全拼dimension

,基于维度建模理念思想,建立整个企业的一致性维度。降低数据计算口径和算法不统一风险。公共维度层的表通常也被称为逻辑维度表,维度和维度逻辑表通常一一对应。

2.数仓明细层(DWD):全拼data warehouse detail

大体作用:ods经过清洗,落地这一层,一般是最细粒度。

具体:以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,也即宽表化处理。明细粒度事实层的表通常也被称为逻辑事实表。

3.数据汇总层(DWS):全拼data warehouse service

大体作用:对dwd的轻微聚合,对一些可累加的指标进行聚合,增加复用性

具体:以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。公共汇总粒度事实层的表通常也被称为汇总逻辑表,用于存放派生指标数据。

数据应用层(ADS,Application Data Service):存放数据产品个性化的统计指标数据。根据CDM与ODS层加工生成

2.数仓开发规范

2.1 数据库命名

命名规则:数仓对应分层_{业务线|业务项目}

命名示例:ods_nshop/dwd_nshop/dws_nshop/dim_nshop/ads_nshop/

2.2 数仓各层对应数据库

ods/sda层 -> sda/ods_{业务线|业务项目}(原始数据)

dw层 -> dwd_{业务线|业务项目} (主题) + dws_{业务线|业务项目}(基于主题宽表汇总)

dim层 -> dim_维度 (维表库)

ads层 -> ads_{业务线|业务项目} (应用统计指标等)

middle层 -> mid_{业务线|业务项目}(中间库) 临时数据 -> temp_{业务线|业务项目}(临时库)

2.3 数据库表命名规则

原始数据层

命名规则:

ods_{业务线|业务项目}_{数据来源类型}_{业务}

ods_{业务线|业务项目}_{数据来源类型}_{业务}_{时间粒度}_delta

delta代表增量,主要用于数据同步方向产生的原始数据表

命名示例:

ods_nshop_01_useractlog XX用户日志原始数据表

ods_nshop_02_user XX用户表(全量)

ods_nshop_02_user_delta XX用户表(增量)

ods_nshop_02_user_hh_delta XX用户表(小时级增量 dd天)

主题/事实数据层

命名规则:

dwd_{业务线|业务项目}_{主题域}_{子业务}

命名示例:

dwd_nshop_user_logproview XX用户产品浏览日志事实表

dwd_nshop_user_comment XX用户关注事实表

主题/事实汇总层

命名规则:

dws_{业务线|业务项目}_{主题域}_{汇总相关粒度}_{汇总时间周期}

命名示例:

dws_nshop_user_order_nd XX用户订单汇总N天统计表

dws_nshop_user_cmtpro_nd XX用户产品关注汇总N天统计表

维表层

命名规则:

dim_{业务线|业务项目|pub公共}_{维度}

命名示例:

dim_pub_date 时间维表

dim_pub_area 地区维表

dim_pub_category 商品分类

集市层

命名规则:ads_{业务线|业务项目}_{统计业务}_{报表form|热门排序topN}

命名示例:

ads_nshop_order_form 订单统计表 ads_nshop_orderpay_form 订单支付统计

数据来源说明

01 -> hdfs数据 ods_nshop.ods_01_action_log 行为日志表

02 -> mysql数据 ods_nshop.ods_02_user 用户表

03 -> redis数据

04 -> mongodb数据

05 -> tidb数据

3.数据来源介绍

3.1 业务数据

业务数据往往产生于事务型过程处理,所以一般存储在关系型数据库中,如mysql、oracle

业务数据源: 用户基本信息、商品分类信息、商品信息、店铺信息、订单数据、订单支付信息、活动信息、物流信息等

3.2 埋点日志

埋点日志相对业务数据是用于数据分析、挖掘需求,一般以日志形式存储于日志文件中,随后通过采集落地 分布式存储介质中如hdfs、hbase

用户行为日志: 用户浏览、用户点评、用户关注、用户搜索、用户投诉、用户咨询

3.3 外部数据

当前一般公司都会通过线上广告来进行获客,与三方公司合作更多的提取相关数据来进行深度刻画用户及用 户群体,另外爬取公共公开数据也是分析运营的常用方式。

外部数据源: 广告投放数据、爬虫数据、三方接口数据

4.数仓建设

4.1 ODS贴源层

1.ODS层存放您从业务系统获取的最原始的数据,是其他上层数据的源数据。

2.ODS层数据主要包括:用户基本信息、商品分类信息、商品信息、店铺信息、 订单数据、订单支付信息、活动信息、行为日志信息

MySQL业务数据对应Hive表

中文含义

MYSQL表名

HIVE表名

用户基本信息表

nshop.customer

ods_nshop.ods_nshop_02_customer

用户关注表

nshop.customer_attention

ods_nshop.ods_nshop_02_customer_attention

收货地址管理表

nshop.customer_consignee

ods_nshop.ods_nshop_02_customer_consignee

订单表

nshop.orders

ods_nshop.ods_nshop_02_orders

订单详情表

nshop.order_detail

ods_nshop.ods_nshop_02_order_detail

订单支付记录表

nshop.orders_pay_records

ods_nshop.ods_nshop_02_orders_pay_records

埋点日志对应Hive表

中文含义

HIVE表名

用户行为日志表

ods_nshop.ods_nshop_01_useractlog

电商平台在网页版或APP版终端上进行业务埋点,采集相关用户行为数据发送给服务器进行用户行为分析。

外部数据对应Hive表

中文含义

HIVE表名

广告投放信息表

ods_nshop.ods_nshop_01_releasedatas

外部数据来源主要有:

1 企业间的接口调用(如其他企业平台上的广告投放营销)

2 公共数据的爬虫数据(公共数据、友商数据、社区|社交平台公开数据)

4.2 DW主题层

主题划分

在不同的业务中,数仓建设都会涉及到几种类型的数据:通用行为数据、业务强相关的数据、通用行为衍生出的行为数据以及其它不易划分的数据:

1 通用行为数据主题: 即各业务场景都容易出现行为,比如用户行为日志中的曝光、点击和下载等。

2 业务行为数据主题: 主要是指和业务强相关的行为,比如说电商下单业务,视频业务中有播放行为。

3 衍生行为数据主题: 主要是指非用户原始的行为,比如说留存,本身是由用户活跃来描述的。

4 其它行为数据主题: 有一些多主题交叉的数据,比如跨业务和行为的阅读带来的购买行为数据主题

电商项目中所涉及的主题包括:

【用户主题】-> 衍生行为数据主题(更多的)

【交易主题】-> 业务行为数据主题

【营销活动主题】-> 业务行为数据主题

【事件(行为日志)主题】-> 通用行为数据主题

主题概述

描述:DW层分为DWD和DWS层,是数据仓库维度建模的核心,需紧绕业 务过程来设计。

示例: 用户产品浏览主题

CREATE external TABLE

IF NOT EXISTS dwd_nshop.dwd_nshop_actlog_product_view (

user_id string COMMENT '用户id',

os string COMMENT '手机系统',

os_version string COMMENT '手机系统版本',

manufacturer string COMMENT '手机制造商',

carrier string COMMENT '电信运营商',

network_type string COMMENT '网络类型',

area_code string COMMENT '地区编码',

target_id string COMMENT '产品ID',

ct BIGINT COMMENT '产生时间'

)

1 数据依赖: ODS层的用户行为日志(ods_nshop.ods_nshop_01_useractlog)

2 哪些维度(包括关联其他主题维度)、度量?

维度:

1 以用户相关的维度【user_id、os、os_version、manufacturer等等】

2 关联相关主题维度【target_id】

3 度量值 聚合操作(sum,count等等)

DWD明细层

1.DWD概述

明细粒度事实层以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理. 明细粒度事实层(DWD)通常分为三种:事务事实表、周期快照事实表和累积快照事实表。

2 DWD中的信息有什么?

事实表中一条记录所表达的业务细节程度被称为粒度。通常粒度可以通过两种方式来表述:一种是维度属性 组合所表示的细节程度,一种是所表示的具体业务含义。

作为度量业务过程的事实,通常为整型或浮点型的十进制数值,有可加性、半可加性和不可加性三种类型:

(1) 可加性事实是指可以按照与事实表关联的任意维度进行汇总。

示例:交易订单记录表中的【用户ID】可以进行count|distinct count汇总

(2) 半可加性事实只能按照特定维度汇总,不能对所有维度汇总。

示例:库存可以按照地点和商品进行汇总,而按时 间维度把一年中每个月的库存累加则毫无意义。 交易订单记录表中的【时间维度、地区维度】按照这类“自然属性”的维度进行统计,在主题层没有实际意 义,而偏统计报表类计算更多在DM层进行汇总,或者在DWS层往往是以某个主题数据做核心,与其产生关系 的其他主题数据作为度量值来进行统计汇总的。

(3) 完全不可加性。

示例:转化率、比率型等事实。

事务事实表

事务事实表用来描述业务过程,跟踪空间或时间上某点的度量事件,保存的是最原子的数据,也称为原子事 实表。

示例:交易订单记录表、广告投放数据表,这类数据本身是一个业务过程。

周期快照事实表

周期快照事实表中的每行汇总了发生在某一标准周期, 如一天、 一周或一月的多个度量。 其粒度是周期 性的时间段, 而不是单个事务。周期快照事实表通常包含许多数据的总计, 因为任何与事实表时间范围一 致的记录都会被包含在内。

示例:

一个月|一周的销售订单周期快照, 用于按产品统计每个月总的销售订单金额和产品销售数量

累积快照事实表

累积快照事实表用来表述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日 期字段来记录关键时间点。当累积快照事实表随着生命周期不断变化时,记录也会随着过程的变化而被修 改。

具体实现方式:拉链表

DWS汇总层

DWS是基于DWD数据,以其中的主题信息为维度,以其他主题数据为统计度量的数据集合表

示例:

主题为【交易主题】下的订单记录

粒度1:【order_id, order_status,payment_money, order_ctime】是订单业务相关的维度信息

粒度2:【customer_id】用户主题相关,另外与支付主题相关

用户主题的用户启动日志表【DWD】建表示例:

CREATE external TABLE

IF NOT EXISTS dwd_nshop.dwd_nshop_actlog_launch (

user_id string COMMENT '用户id',

device_num string COMMENT '设备号',

device_type string COMMENT '设备类型',

os string COMMENT '手机系统',

os_version string COMMENT '手机系统版本',

manufacturer string COMMENT '手机制造商',

carrier string COMMENT '电信运营商',

network_type string COMMENT '网络类型',

area_code string COMMENT '地区编码',

launch_time_segment string COMMENT '启动时间段',

ct BIGINT COMMENT '产生时间'

) partitioned BY (bdp_day string) stored AS parquet location '/data/nshop/dw/user/dwd_nshop_actlog_launch/'

交易主题域的交易订单明细流水表【DWD】示例:

CREATE external TABLE

IF NOT EXISTS dwd_nshop.dwd_nshop_orders_details (

order_id string COMMENT '订单ID',

order_status INT COMMENT '订单状态:5已收货(完成)|6投诉 7退货',

supplier_code VARCHAR (20) NOT NULL COMMENT '店铺ID',

product_code VARCHAR (20) NOT NULL COMMENT '商品ID',

device_type string COMMENT '设备类型',

os string COMMENT '手机系统',

os_version string COMMENT '手机系统版本',

manufacturer string COMMENT '手机制造商',

carrier string COMMENT '电信运营商',

user_areacode string COMMENT '用户所在地区',

consignee_zipcode string COMMENT '收货人地址',

pay_type string COMMENT '支付类型:线上支付 10 网上银行 11 微信 12 支付宝 | 线下支 付(货到付款) 20 ',

pay_count INT COMMENT '支付次数',

product_price DECIMAL (5, 1) NOT NULL COMMENT '购买商品单价',

weighing_cost DECIMAL (2, 1) NOT NULL COMMENT '商品加权价格',

district_money DECIMAL (4, 1) NOT NULL DEFAULT 0.0 COMMENT '优惠金额',

is_activity NOT NULL DEFAULT 0 COMMENT '1:参加活动|0:没有参加活动',

order_ctime BIGINT COMMENT '创建时间'

) partitioned BY (bdp_day string) stored AS parquet location '/data/nshop/dwd/order/dwd_nshop_orders_details/'

营销活动主题的广告投放数据表【DWD】示例:

CREATE external TABLE

IF NOT EXISTS dwd_nshop.dwd_nshop_releasedatas (

customer_id string COMMENT '用户id',

device_num string COMMENT '设备号',

device_type string COMMENT '设备类型',

os string COMMENT '手机系统',

os_version string COMMENT '手机系统版本',

manufacturer string COMMENT '手机制造商',

area_code string COMMENT '地区编码',

release_sid string COMMENT '投放请求id',

release_ip string COMMENT '投放方ip',

release_session string COMMENT '投放会话id',

release_sources string COMMENT '投放渠道',

release_category string COMMENT '投放浏览产品分类',

release_product string COMMENT '投放浏览产品',

release_product_page string COMMENT '投放浏览产品页',

ct BIGINT COMMENT '创建时间'

) partitioned BY (bdp_day string) stored AS parquet location '/data/nshop/dwd/release/dwd_nshop_releasedatas/'

DIM维表层

MySQL业务数据对应的Hive表

中文含义

MYSQL表名

HIVE表名

商品分类表

nshop.category

dim_nshop.dim_pub_category

店铺表

nshop.supplier

dim_nshop.dim_pub_supplier

商品表

nshop.product

dim_nshop.dim_pub_product

页面布局表

nshop.page_dim

dim_nshop.dim_pub_page

通用字典表

nshop.comm_dim

dim_nshop.dim_pub_comm

时间字典表

nshop.date_dim

dim_nshop.dim_pub_date

地区字典表

nshop.area_dim

dim_nshop.dim_pub_area

MID中间层

用户启动统计【MID】建表示例:

CREATE external TABLE

IF NOT EXISTS mid_nshop.mid_nshop_actlog_launch_timesegs (

user_id string COMMENT '用户id',

os string COMMENT '手机系统',

os_version string COMMENT '手机系统版本',

manufacturer string COMMENT '手机制造商',

carrier string COMMENT '电信运营商',

network_type string COMMENT '网络类型',

area_code string COMMENT '地区编码',

launch_times string COMMENT '24bit表示24小时启动情况',

launch_count INT COMMENT '用户每天启动次数',

ct BIGINT COMMENT '产生时间'

) partitioned BY (bdp_day string) stored AS parquet location '/data/nshop/mid/actlog/mid_nshop_actlog_launch_timesegs/'

ADS应用数据层

总体运营统计的流量类指标_平台统计表【ADS】建表示例:

CREATE external TABLE

IF NOT EXISTS ads_nshop.ads_nshop_platform_flow_stat (

customer_gender TINYINT NOT NULL COMMENT '性别:1男 0女',

age_range VARCHAR (10) NOT NULL COMMENT '年龄段',

customer_natives VARCHAR (10) NULL COMMENT '所在地区',

visit_avg_duration INT COMMENT '人均页面访问时长',

visit_avg_counts INT COMMENT '人均页面访问数'

) partitioned BY (bdp_day string) stored AS parquet location '/data/nshop/ads/operation/ads_nshop_platform_flow_stat/'

5.数仓结构图

数仓运行简图:

数仓具体运行流程图:

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐