数仓实战1(阿里架构)

电商数仓架构介绍

2020-06-16  本文已影响0人  勇于自信
1.数仓分层概述

数据仓库分为三层,自下而上为:
数据引入层(ODS,Operation Data Store)
数据公共层(CDM,Common Data Model)
数据应用层(ADS,Application Data Service)

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 数据库表命名规则

3.数据来源介绍

3.1 业务数据
业务数据往往产生于事务型过程处理,所以一般存储在关系型数据库中,如mysql、oracle
业务数据源: 用户基本信息、商品分类信息、商品信息、店铺信息、订单数据、订单支付信息、活动信息、物流信息等
3.2 埋点日志
埋点日志相对业务数据是用于数据分析、挖掘需求,一般以日志形式存储于日志文件中,随后通过采集落地 分布式存储介质中如hdfs、hbase
用户行为日志: 用户浏览、用户点评、用户关注、用户搜索、用户投诉、用户咨询
3.3 外部数据
当前一般公司都会通过线上广告来进行获客,与三方公司合作更多的提取相关数据来进行深度刻画用户及用 户群体,另外爬取公共公开数据也是分析运营的常用方式。
外部数据源: 广告投放数据、爬虫数据、三方接口数据

4.数仓建设

4.1 ODS贴源层

1.ODS层存放您从业务系统获取的最原始的数据,是其他上层数据的源数据。
2.ODS层数据主要包括:用户基本信息、商品分类信息、商品信息、店铺信息、 订单数据、订单支付信息、活动信息、行为日志信息

中文含义 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表名
用户行为日志表 ods_nshop.ods_nshop_01_useractlog

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

中文含义 HIVE表名
广告投放信息表 ods_nshop.ods_nshop_01_releasedatas

外部数据来源主要有:
1 企业间的接口调用(如其他企业平台上的广告投放营销)
2 公共数据的爬虫数据(公共数据、友商数据、社区|社交平台公开数据)

4.2 DW主题层

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等等)

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/'
中文含义 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
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/'
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.数仓结构图

数仓运行简图:


数仓具体运行流程图:


上一篇 下一篇

猜你喜欢

热点阅读