電商數(shù)倉架構(gòu)介紹

1.數(shù)倉分層概述

數(shù)據(jù)倉庫分為三層,自下而上為:
數(shù)據(jù)引入層(ODS,Operation Data Store)
數(shù)據(jù)公共層(CDM,Common Data Model)
數(shù)據(jù)應(yīng)用層(ADS,Application Data Service)

  • 數(shù)據(jù)引入層(ODS,Operation Data Store):將原始數(shù)據(jù)幾乎無處理的存放在數(shù)據(jù)倉庫系統(tǒng),結(jié)構(gòu)上與源系統(tǒng)基本保持一致,是數(shù)據(jù)倉庫的數(shù)據(jù)準(zhǔn)備區(qū)。
  • 數(shù)據(jù)公共層(CDM,Common Data Model,又稱通用數(shù)據(jù)模型層),包含DIM維度表、DWD和 DWS,由ODS層數(shù)據(jù)加工而成。主要完成數(shù)據(jù)加工與整合,建立一致性的維度,構(gòu)建可復(fù)用的面向分析和統(tǒng)計的明細(xì)事實表,以及匯總公共粒度的指標(biāo)。這一層里又包括三層:
    1.公共維度層(DIM):全拼dimension
    ,基于維度建模理念思想,建立整個企業(yè)的一致性維度。降低數(shù)據(jù)計算口徑和算法不統(tǒng)一風(fēng)險。公共維度層的表通常也被稱為邏輯維度表,維度和維度邏輯表通常一一對應(yīng)。
    2.數(shù)倉明細(xì)層(DWD):全拼data warehouse detail
    大體作用:ods經(jīng)過清洗,落地這一層,一般是最細(xì)粒度。
    具體:以業(yè)務(wù)過程作為建模驅(qū)動,基于每個具體的業(yè)務(wù)過程特點,構(gòu)建最細(xì)粒度的明細(xì)層事實表。可以結(jié)合企業(yè)的數(shù)據(jù)使用特點,將明細(xì)事實表的某些重要維度屬性字段做適當(dāng)冗余,也即寬表化處理。明細(xì)粒度事實層的表通常也被稱為邏輯事實表。
    3.數(shù)據(jù)匯總層(DWS):全拼data warehouse service
    大體作用:對dwd的輕微聚合,對一些可累加的指標(biāo)進行聚合,增加復(fù)用性
    具體:以分析的主題對象作為建模驅(qū)動,基于上層的應(yīng)用和產(chǎn)品的指標(biāo)需求,構(gòu)建公共粒度的匯總指標(biāo)事實表,以寬表化手段物理化模型。構(gòu)建命名規(guī)范、口徑一致的統(tǒng)計指標(biāo),為上層提供公共指標(biāo),建立匯總寬表、明細(xì)事實表。公共匯總粒度事實層的表通常也被稱為匯總邏輯表,用于存放派生指標(biāo)數(shù)據(jù)。
  • 數(shù)據(jù)應(yīng)用層(ADS,Application Data Service):存放數(shù)據(jù)產(chǎn)品個性化的統(tǒng)計指標(biāo)數(shù)據(jù)。根據(jù)CDM與ODS層加工生成
2.數(shù)倉開發(fā)規(guī)范

2.1 數(shù)據(jù)庫命名
命名規(guī)則:數(shù)倉對應(yīng)分層_{業(yè)務(wù)線|業(yè)務(wù)項目}
命名示例:ods_nshop/dwd_nshop/dws_nshop/dim_nshop/ads_nshop/
2.2 數(shù)倉各層對應(yīng)數(shù)據(jù)庫
ods/sda層 -> sda/ods_{業(yè)務(wù)線|業(yè)務(wù)項目}(原始數(shù)據(jù))
dw層 -> dwd_{業(yè)務(wù)線|業(yè)務(wù)項目} (主題) + dws_{業(yè)務(wù)線|業(yè)務(wù)項目}(基于主題寬表匯總)
dim層 -> dim_維度 (維表庫)
ads層 -> ads_{業(yè)務(wù)線|業(yè)務(wù)項目} (應(yīng)用統(tǒng)計指標(biāo)等)
middle層 -> mid_{業(yè)務(wù)線|業(yè)務(wù)項目}(中間庫) 臨時數(shù)據(jù) -> temp_{業(yè)務(wù)線|業(yè)務(wù)項目}(臨時庫)
2.3 數(shù)據(jù)庫表命名規(guī)則

  • 原始數(shù)據(jù)層
    命名規(guī)則:
    ods_{業(yè)務(wù)線|業(yè)務(wù)項目}_{數(shù)據(jù)來源類型}_{業(yè)務(wù)}
    ods_{業(yè)務(wù)線|業(yè)務(wù)項目}_{數(shù)據(jù)來源類型}_{業(yè)務(wù)}_{時間粒度}_delta
    delta代表增量,主要用于數(shù)據(jù)同步方向產(chǎn)生的原始數(shù)據(jù)表
    命名示例:
    ods_nshop_01_useractlog XX用戶日志原始數(shù)據(jù)表
    ods_nshop_02_user XX用戶表(全量)
    ods_nshop_02_user_delta XX用戶表(增量)
    ods_nshop_02_user_hh_delta XX用戶表(小時級增量 dd天)
  • 主題/事實數(shù)據(jù)層
    命名規(guī)則:
    dwd_{業(yè)務(wù)線|業(yè)務(wù)項目}_{主題域}_{子業(yè)務(wù)}
    命名示例:
    dwd_nshop_user_logproview XX用戶產(chǎn)品瀏覽日志事實表
    dwd_nshop_user_comment XX用戶關(guān)注事實表
  • 主題/事實匯總層
    命名規(guī)則:
    dws_{業(yè)務(wù)線|業(yè)務(wù)項目}_{主題域}_{匯總相關(guān)粒度}_{匯總時間周期}
    命名示例:
    dws_nshop_user_order_nd XX用戶訂單匯總N天統(tǒng)計表
    dws_nshop_user_cmtpro_nd XX用戶產(chǎn)品關(guān)注匯總N天統(tǒng)計表
  • 維表層
    命名規(guī)則:
    dim_{業(yè)務(wù)線|業(yè)務(wù)項目|pub公共}_{維度}
    命名示例:
    dim_pub_date 時間維表
    dim_pub_area 地區(qū)維表
    dim_pub_category 商品分類
  • 集市層
    命名規(guī)則:ads_{業(yè)務(wù)線|業(yè)務(wù)項目}_{統(tǒng)計業(yè)務(wù)}_{報表form|熱門排序topN}
    命名示例:
    ads_nshop_order_form 訂單統(tǒng)計表 ads_nshop_orderpay_form 訂單支付統(tǒng)計
  • 數(shù)據(jù)來源說明
    01 -> hdfs數(shù)據(jù) ods_nshop.ods_01_action_log 行為日志表
    02 -> mysql數(shù)據(jù) ods_nshop.ods_02_user 用戶表
    03 -> redis數(shù)據(jù)
    04 -> mongodb數(shù)據(jù)
    05 -> tidb數(shù)據(jù)
3.數(shù)據(jù)來源介紹

3.1 業(yè)務(wù)數(shù)據(jù)
業(yè)務(wù)數(shù)據(jù)往往產(chǎn)生于事務(wù)型過程處理,所以一般存儲在關(guān)系型數(shù)據(jù)庫中,如mysql、oracle
業(yè)務(wù)數(shù)據(jù)源: 用戶基本信息、商品分類信息、商品信息、店鋪信息、訂單數(shù)據(jù)、訂單支付信息、活動信息、物流信息等
3.2 埋點日志
埋點日志相對業(yè)務(wù)數(shù)據(jù)是用于數(shù)據(jù)分析、挖掘需求,一般以日志形式存儲于日志文件中,隨后通過采集落地 分布式存儲介質(zhì)中如hdfs、hbase
用戶行為日志: 用戶瀏覽、用戶點評、用戶關(guān)注、用戶搜索、用戶投訴、用戶咨詢
3.3 外部數(shù)據(jù)
當(dāng)前一般公司都會通過線上廣告來進行獲客,與三方公司合作更多的提取相關(guān)數(shù)據(jù)來進行深度刻畫用戶及用 戶群體,另外爬取公共公開數(shù)據(jù)也是分析運營的常用方式。
外部數(shù)據(jù)源: 廣告投放數(shù)據(jù)、爬蟲數(shù)據(jù)、三方接口數(shù)據(jù)

4.數(shù)倉建設(shè)

4.1 ODS貼源層

1.ODS層存放您從業(yè)務(wù)系統(tǒng)獲取的最原始的數(shù)據(jù),是其他上層數(shù)據(jù)的源數(shù)據(jù)。
2.ODS層數(shù)據(jù)主要包括:用戶基本信息、商品分類信息、商品信息、店鋪信息、 訂單數(shù)據(jù)、訂單支付信息、活動信息、行為日志信息

  • MySQL業(yè)務(wù)數(shù)據(jù)對應(yīng)Hive表
中文含義 MYSQL表名 HIVE表名
用戶基本信息表 nshop.customer ods_nshop.ods_nshop_02_customer
用戶關(guān)注表 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
  • 埋點日志對應(yīng)Hive表
中文含義 HIVE表名
用戶行為日志表 ods_nshop.ods_nshop_01_useractlog

電商平臺在網(wǎng)頁版或APP版終端上進行業(yè)務(wù)埋點,采集相關(guān)用戶行為數(shù)據(jù)發(fā)送給服務(wù)器進行用戶行為分析。

  • 外部數(shù)據(jù)對應(yīng)Hive表
中文含義 HIVE表名
廣告投放信息表 ods_nshop.ods_nshop_01_releasedatas

外部數(shù)據(jù)來源主要有:
1 企業(yè)間的接口調(diào)用(如其他企業(yè)平臺上的廣告投放營銷)
2 公共數(shù)據(jù)的爬蟲數(shù)據(jù)(公共數(shù)據(jù)、友商數(shù)據(jù)、社區(qū)|社交平臺公開數(shù)據(jù))

4.2 DW主題層

  • 主題劃分
    在不同的業(yè)務(wù)中,數(shù)倉建設(shè)都會涉及到幾種類型的數(shù)據(jù):通用行為數(shù)據(jù)、業(yè)務(wù)強相關(guān)的數(shù)據(jù)、通用行為衍生出的行為數(shù)據(jù)以及其它不易劃分的數(shù)據(jù):
    1 通用行為數(shù)據(jù)主題: 即各業(yè)務(wù)場景都容易出現(xiàn)行為,比如用戶行為日志中的曝光、點擊和下載等。
    2 業(yè)務(wù)行為數(shù)據(jù)主題: 主要是指和業(yè)務(wù)強相關(guān)的行為,比如說電商下單業(yè)務(wù),視頻業(yè)務(wù)中有播放行為。
    3 衍生行為數(shù)據(jù)主題: 主要是指非用戶原始的行為,比如說留存,本身是由用戶活躍來描述的。
    4 其它行為數(shù)據(jù)主題: 有一些多主題交叉的數(shù)據(jù),比如跨業(yè)務(wù)和行為的閱讀帶來的購買行為數(shù)據(jù)主題
    電商項目中所涉及的主題包括:
    【用戶主題】-> 衍生行為數(shù)據(jù)主題(更多的)
    【交易主題】-> 業(yè)務(wù)行為數(shù)據(jù)主題
    【營銷活動主題】-> 業(yè)務(wù)行為數(shù)據(jù)主題
    【事件(行為日志)主題】-> 通用行為數(shù)據(jù)主題

  • 主題概述
    描述:DW層分為DWD和DWS層,是數(shù)據(jù)倉庫維度建模的核心,需緊繞業(yè) 務(wù)過程來設(shè)計。
    示例: 用戶產(chǎn)品瀏覽主題

CREATE external TABLE
IF NOT EXISTS dwd_nshop.dwd_nshop_actlog_product_view (
    user_id string COMMENT '用戶id',
    os string COMMENT '手機系統(tǒng)',
    os_version string COMMENT '手機系統(tǒng)版本',
    manufacturer string COMMENT '手機制造商',
    carrier string COMMENT '電信運營商',
    network_type string COMMENT '網(wǎng)絡(luò)類型',
    area_code string COMMENT '地區(qū)編碼',
    target_id string COMMENT '產(chǎn)品ID',
    ct BIGINT COMMENT '產(chǎn)生時間'
)

1 數(shù)據(jù)依賴: ODS層的用戶行為日志(ods_nshop.ods_nshop_01_useractlog)
2 哪些維度(包括關(guān)聯(lián)其他主題維度)、度量?
維度:
1 以用戶相關(guān)的維度【user_id、os、os_version、manufacturer等等】
2 關(guān)聯(lián)相關(guān)主題維度【target_id】
3 度量值 聚合操作(sum,count等等)

  • DWD明細(xì)層
    1.DWD概述
    明細(xì)粒度事實層以業(yè)務(wù)過程作為建模驅(qū)動,基于每個具體的業(yè)務(wù)過程特點,構(gòu)建最細(xì)粒度的明細(xì)層事實表??梢越Y(jié)合企業(yè)的數(shù)據(jù)使用特點,將明細(xì)事實表的某些重要維度屬性字段做適當(dāng)冗余,即寬表化處理. 明細(xì)粒度事實層(DWD)通常分為三種:事務(wù)事實表、周期快照事實表和累積快照事實表。
    2 DWD中的信息有什么?
    事實表中一條記錄所表達(dá)的業(yè)務(wù)細(xì)節(jié)程度被稱為粒度。通常粒度可以通過兩種方式來表述:一種是維度屬性 組合所表示的細(xì)節(jié)程度,一種是所表示的具體業(yè)務(wù)含義。
    作為度量業(yè)務(wù)過程的事實,通常為整型或浮點型的十進制數(shù)值,有可加性、半可加性和不可加性三種類型:
    (1) 可加性事實是指可以按照與事實表關(guān)聯(lián)的任意維度進行匯總。
    示例:交易訂單記錄表中的【用戶ID】可以進行count|distinct count匯總
    (2) 半可加性事實只能按照特定維度匯總,不能對所有維度匯總。
    示例:庫存可以按照地點和商品進行匯總,而按時 間維度把一年中每個月的庫存累加則毫無意義。 交易訂單記錄表中的【時間維度、地區(qū)維度】按照這類“自然屬性”的維度進行統(tǒng)計,在主題層沒有實際意 義,而偏統(tǒng)計報表類計算更多在DM層進行匯總,或者在DWS層往往是以某個主題數(shù)據(jù)做核心,與其產(chǎn)生關(guān)系 的其他主題數(shù)據(jù)作為度量值來進行統(tǒng)計匯總的。
    (3) 完全不可加性。
    示例:轉(zhuǎn)化率、比率型等事實。

  • 事務(wù)事實表
    事務(wù)事實表用來描述業(yè)務(wù)過程,跟蹤空間或時間上某點的度量事件,保存的是最原子的數(shù)據(jù),也稱為原子事 實表。
    示例:交易訂單記錄表、廣告投放數(shù)據(jù)表,這類數(shù)據(jù)本身是一個業(yè)務(wù)過程。

  • 周期快照事實表
    周期快照事實表中的每行匯總了發(fā)生在某一標(biāo)準(zhǔn)周期, 如一天、 一周或一月的多個度量。 其粒度是周期 性的時間段, 而不是單個事務(wù)。周期快照事實表通常包含許多數(shù)據(jù)的總計, 因為任何與事實表時間范圍一 致的記錄都會被包含在內(nèi)。
    示例:
    一個月|一周的銷售訂單周期快照, 用于按產(chǎn)品統(tǒng)計每個月總的銷售訂單金額和產(chǎn)品銷售數(shù)量

  • 累積快照事實表
    累積快照事實表用來表述過程開始和結(jié)束之間的關(guān)鍵步驟事件,覆蓋過程的整個生命周期,通常具有多個日 期字段來記錄關(guān)鍵時間點。當(dāng)累積快照事實表隨著生命周期不斷變化時,記錄也會隨著過程的變化而被修 改。
    具體實現(xiàn)方式:拉鏈表

  • DWS匯總層
    DWS是基于DWD數(shù)據(jù),以其中的主題信息為維度,以其他主題數(shù)據(jù)為統(tǒng)計度量的數(shù)據(jù)集合表
    示例:
    主題為【交易主題】下的訂單記錄
    粒度1:【order_id, order_status,payment_money, order_ctime】是訂單業(yè)務(wù)相關(guān)的維度信息
    粒度2:【customer_id】用戶主題相關(guān),另外與支付主題相關(guān)
    用戶主題的用戶啟動日志表【DWD】建表示例:

CREATE external TABLE
IF NOT EXISTS dwd_nshop.dwd_nshop_actlog_launch (
    user_id string COMMENT '用戶id',
    device_num string COMMENT '設(shè)備號',
    device_type string COMMENT '設(shè)備類型',
    os string COMMENT '手機系統(tǒng)',
    os_version string COMMENT '手機系統(tǒng)版本',
    manufacturer string COMMENT '手機制造商',
    carrier string COMMENT '電信運營商',
    network_type string COMMENT '網(wǎng)絡(luò)類型',
    area_code string COMMENT '地區(qū)編碼',
    launch_time_segment string COMMENT '啟動時間段',
    ct BIGINT COMMENT '產(chǎn)生時間'
) partitioned BY (bdp_day string) stored AS parquet location '/data/nshop/dw/user/dwd_nshop_actlog_launch/'

交易主題域的交易訂單明細(xì)流水表【DWD】示例:

CREATE external TABLE
IF NOT EXISTS dwd_nshop.dwd_nshop_orders_details (
    order_id string COMMENT '訂單ID',
    order_status INT COMMENT '訂單狀態(tài):5已收貨(完成)|6投訴 7退貨',
    supplier_code VARCHAR (20) NOT NULL COMMENT '店鋪ID',
    product_code VARCHAR (20) NOT NULL COMMENT '商品ID',
    device_type string COMMENT '設(shè)備類型',
    os string COMMENT '手機系統(tǒng)',
    os_version string COMMENT '手機系統(tǒng)版本',
    manufacturer string COMMENT '手機制造商',
    carrier string COMMENT '電信運營商',
    user_areacode string COMMENT '用戶所在地區(qū)',
    consignee_zipcode string COMMENT '收貨人地址',
    pay_type string COMMENT '支付類型:線上支付 10 網(wǎng)上銀行 11 微信 12 支付寶 | 線下支 付(貨到付款) 20 ',
    pay_count INT COMMENT '支付次數(shù)',
    product_price DECIMAL (5, 1) NOT NULL COMMENT '購買商品單價',
    weighing_cost DECIMAL (2, 1) NOT NULL COMMENT '商品加權(quán)價格',
    district_money DECIMAL (4, 1) NOT NULL DEFAULT 0.0 COMMENT '優(yōu)惠金額',
    is_activity NOT NULL DEFAULT 0 COMMENT '1:參加活動|0:沒有參加活動',
    order_ctime BIGINT COMMENT '創(chuàng)建時間'
) partitioned BY (bdp_day string) stored AS parquet location '/data/nshop/dwd/order/dwd_nshop_orders_details/'

營銷活動主題的廣告投放數(shù)據(jù)表【DWD】示例:

CREATE external TABLE
IF NOT EXISTS dwd_nshop.dwd_nshop_releasedatas (
    customer_id string COMMENT '用戶id',
    device_num string COMMENT '設(shè)備號',
    device_type string COMMENT '設(shè)備類型',
    os string COMMENT '手機系統(tǒng)',
    os_version string COMMENT '手機系統(tǒng)版本',
    manufacturer string COMMENT '手機制造商',
    area_code string COMMENT '地區(qū)編碼',
    release_sid string COMMENT '投放請求id',
    release_ip string COMMENT '投放方ip',
    release_session string COMMENT '投放會話id',
    release_sources string COMMENT '投放渠道',
    release_category string COMMENT '投放瀏覽產(chǎn)品分類',
    release_product string COMMENT '投放瀏覽產(chǎn)品',
    release_product_page string COMMENT '投放瀏覽產(chǎn)品頁',
    ct BIGINT COMMENT '創(chuàng)建時間'
) partitioned BY (bdp_day string) stored AS parquet location '/data/nshop/dwd/release/dwd_nshop_releasedatas/'
  • DIM維表層
    MySQL業(yè)務(wù)數(shù)據(jù)對應(yīng)的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
地區(qū)字典表 nshop.area_dim dim_nshop.dim_pub_area
  • MID中間層
    用戶啟動統(tǒng)計【MID】建表示例:
CREATE external TABLE
IF NOT EXISTS mid_nshop.mid_nshop_actlog_launch_timesegs (
    user_id string COMMENT '用戶id',
    os string COMMENT '手機系統(tǒng)',
    os_version string COMMENT '手機系統(tǒng)版本',
    manufacturer string COMMENT '手機制造商',
    carrier string COMMENT '電信運營商',
    network_type string COMMENT '網(wǎng)絡(luò)類型',
    area_code string COMMENT '地區(qū)編碼',
    launch_times string COMMENT '24bit表示24小時啟動情況',
    launch_count INT COMMENT '用戶每天啟動次數(shù)',
    ct BIGINT COMMENT '產(chǎn)生時間'
) partitioned BY (bdp_day string) stored AS parquet location '/data/nshop/mid/actlog/mid_nshop_actlog_launch_timesegs/'
  • ADS應(yīng)用數(shù)據(jù)層
    總體運營統(tǒng)計的流量類指標(biāo)_平臺統(tǒng)計表【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 '所在地區(qū)',
    visit_avg_duration INT COMMENT '人均頁面訪問時長',
    visit_avg_counts INT COMMENT '人均頁面訪問數(shù)'
) partitioned BY (bdp_day string) stored AS parquet location '/data/nshop/ads/operation/ads_nshop_platform_flow_stat/'
5.數(shù)倉結(jié)構(gòu)圖

數(shù)倉運行簡圖:


數(shù)倉具體運行流程圖:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容