粒度的聲明是事實(shí)表建模非常重要的一步 , 意味著精確定義事實(shí)表 的每一行所表示的業(yè)務(wù)含義,粒度傳遞的是與事實(shí)表度量有關(guān)的細(xì)節(jié)層次 。明確的粒度能確保對(duì)事實(shí)表中行的意思的理解不會(huì)產(chǎn)生混淆,保證所有的事實(shí)按照同樣的細(xì)節(jié)層次記錄 。
應(yīng)該盡量選擇最細(xì)級(jí)別的原子粒度讀寫分離 oracle 應(yīng)用層,以確保事實(shí)表的應(yīng)用具有最大的靈活性 。同時(shí)對(duì)于訂單過(guò)程而言,粒度可以被定義為最細(xì)的訂單級(jí)別 。比如在淘寶訂單中有父子訂單的概念,即一個(gè)子訂單對(duì)應(yīng)一種商品,如 果拍下了多種商品 , 則每種商品對(duì)應(yīng)一個(gè)子訂單:這些子訂單一同結(jié)算 的話,則會(huì)生成一個(gè)父訂單 。那么在這個(gè)例子中,事實(shí)表的粒度應(yīng)該選擇為子訂單級(jí)別 。
確定維度
完成粒度聲明以后,也就意味著確定了主鍵,對(duì)應(yīng)的維度組合以及相關(guān)的維度字段就可以確定了,應(yīng)該選擇能夠描述清楚業(yè)務(wù)過(guò)程所處的環(huán)境的維度信息 。比如在淘寶訂單付款事務(wù)事實(shí)表中,粒度為子訂單 , 相關(guān)的維度有買家、賣家、商品、收貨人信息 、業(yè)務(wù)類型、訂單時(shí)間等維度 。
確定事實(shí)
事實(shí)可以通過(guò)回答“過(guò)程的度量是什么”來(lái)確定 。應(yīng)該選擇與業(yè)務(wù) 過(guò)程有關(guān)的所有事實(shí),且事實(shí)的粒度要與所聲明的事實(shí)表的粒度一致 。事實(shí)有可加性、半可加性、非可加性三種類型 ,需要將不可加性事實(shí)分解為可加的組件 。
比如在淘寶訂單付款事務(wù)事實(shí)表中,同粒度的事實(shí)有子訂單分?jǐn)偟闹Ц督痤~、郵費(fèi)、優(yōu)惠金額等 。
冗余維度
在傳統(tǒng)的維度建模的星形模型中,對(duì)維度的處理是需要單獨(dú)存放在專門的維表中的,通過(guò)事實(shí)表的外鍵獲取維度 。這樣做的目的是為了減少事實(shí)表的維度冗余 , 從而減少存儲(chǔ)消耗 。而在大數(shù)據(jù)的事實(shí)表模型設(shè)計(jì)中,考慮更多的是提高下游用戶的使用效率,降低數(shù)據(jù)獲取的復(fù)雜性 , 減少關(guān)聯(lián)的表數(shù)量 。所以通常事實(shí)表中會(huì)冗余方便下游用戶使用的常用維度,以實(shí)現(xiàn)對(duì)事實(shí)表的過(guò)濾查詢、控制聚合層次、排序數(shù)據(jù)以及定義主從關(guān)系等操作 。
比如在淘寶訂單付款事務(wù)事實(shí)表中,通常會(huì)冗余大量的常用維度字段,以及商品類目、賣家店鋪等維度信息 。
4.2 事務(wù)事實(shí)表
訂單作為交易行為的核心載體,直觀反映了交易的狀況 。訂單的流轉(zhuǎn)會(huì)產(chǎn)生很多業(yè)務(wù)過(guò)程,而下單、支付和成功完結(jié)三個(gè)業(yè)務(wù)過(guò)程是整個(gè) 訂單的關(guān)鍵節(jié)點(diǎn) 。獲取這三個(gè)業(yè)務(wù)過(guò)程的筆數(shù)、金額以及轉(zhuǎn)化率是日常 數(shù)據(jù)統(tǒng)計(jì)分析的重點(diǎn),事務(wù)事實(shí)表設(shè)計(jì)可以很好地滿足這個(gè)需求 。本節(jié) 將介紹三種不同事務(wù)事實(shí)表的設(shè)計(jì)方式,以及在淘寶交易訂單中關(guān)于郵 費(fèi)和折扣分?jǐn)偟阶佑唵蔚乃惴?。
4.2.1 設(shè)計(jì)過(guò)程
任何類型的事件都可以被理解為一種事務(wù) 。比如交易過(guò)程中的創(chuàng)建 訂單、買家付款,物流過(guò)程中的攬貨、發(fā)貨、簽收,退款中的申請(qǐng)退 款、 申請(qǐng)小二介入等,都可以被理解為一種事務(wù) 。事務(wù)事實(shí)表,即針對(duì)這些過(guò)程構(gòu)建的一類事實(shí)表,用以跟蹤定義業(yè)務(wù)過(guò)程的個(gè)體行為,提供豐富的分析能力,作為數(shù)據(jù)倉(cāng)庫(kù)原子的明細(xì)數(shù)據(jù) 。下面以淘寶交易事務(wù)事實(shí)表為例,闡述事務(wù)事實(shí)表的一般設(shè)計(jì)過(guò)程 。
選擇業(yè)務(wù)過(guò)程
圖 4.1 給出了淘寶交易訂單的流轉(zhuǎn)過(guò)程,其中介紹了四個(gè)重要過(guò)程:創(chuàng)建訂單、買家付款、 賣家發(fā)貨、買家 確認(rèn)收貨,即下單、支付 、 發(fā)貨和成功完結(jié)四個(gè)業(yè)務(wù)過(guò)程 。這四個(gè)業(yè)務(wù)過(guò)程不僅是交易過(guò)程中的重要時(shí)間節(jié)點(diǎn) , 而且也是下游統(tǒng)計(jì)分析的重點(diǎn) , 因此淘寶交易事務(wù)事實(shí)表 設(shè)計(jì)著重從這四個(gè)業(yè)務(wù)過(guò)程進(jìn)行展開。
維度建模理論認(rèn)為 , 為了便于進(jìn)行獨(dú)立的分析研究,應(yīng)該為每個(gè)業(yè)務(wù)過(guò)程建立一個(gè)事實(shí)表 。對(duì)于是否將不同業(yè)務(wù)過(guò)程放到同一個(gè)事實(shí)表 中,將在下一節(jié)中詳細(xì)介紹 。
確定粒度
業(yè)務(wù)過(guò)程選定以后,就要針對(duì)每個(gè)業(yè)務(wù)過(guò)程確定一個(gè)粒度,即確定事務(wù)事實(shí)表每一行所表達(dá)的細(xì)節(jié)層次 。下面先介紹淘寶訂單的產(chǎn)生過(guò)程 。
對(duì)于每一種商品產(chǎn)生的訂單就稱為子訂單,子訂單記錄了父訂單的訂單號(hào),并且有子訂單標(biāo)志 。如果在同一個(gè)店鋪只購(gòu)買了一種商品,則會(huì)將父子訂單進(jìn)行合并,只保留一條訂單記錄 。如圖 4.2 和圖 4.3 所示示例 。
賣家發(fā)貨這個(gè)業(yè)務(wù)過(guò)程可以選擇子訂單粒度,即將每個(gè)子訂 單作為賣家發(fā)貨事實(shí)表的一個(gè)細(xì)節(jié) 。然而,在實(shí)際操作中發(fā)現(xiàn),賣家發(fā)貨更多的是物流單粒度而非子訂單粒度,同 一個(gè)子訂單可以拆開成多個(gè)物流單進(jìn)行發(fā)貨 。在事務(wù)事實(shí)表設(shè) 計(jì)過(guò)程中,秉承確定為最細(xì)粒度的原則,因此對(duì)于賣家發(fā)貨確定為物流單粒度,和其他三個(gè)業(yè)務(wù)過(guò)程不同 , 這樣可以更好地給下游統(tǒng)計(jì)分析帶來(lái)靈活性 。
確定維度
選定好業(yè)務(wù)過(guò)程并且確定粒度后,就可以確定維度信息了 。在淘寶交易事務(wù)事實(shí)表設(shè)計(jì)過(guò)程中,按照經(jīng)常用于統(tǒng)計(jì)分析的場(chǎng)景,確定維度包含: 買家、賣家、商品、商品類目、發(fā)貨地區(qū)、收貨地區(qū)、父訂單維度以及雜 項(xiàng)維度 。由于訂單的屬性較多,比如訂單的業(yè)務(wù)類型、是否無(wú)線交易、訂單的屬性等 , 對(duì)于這些使用較多卻又無(wú)法歸屬到上述買賣家或商品維度中的屬性 , 則新建一個(gè)雜項(xiàng)維度進(jìn)行存放,如圖 4.4所示 。
確定事實(shí)
作為過(guò)程度量的核心,事實(shí)表應(yīng)該包含與其描述過(guò)程有關(guān)的所有事實(shí) 。以淘寶交易事務(wù)事實(shí)表為例,選定三個(gè)業(yè)務(wù)過(guò)程一一下單、支付和 成功完結(jié),不同的業(yè)務(wù)過(guò)程擁有不同的事實(shí) 。比如在下單業(yè)務(wù)過(guò)程中,需要包含下單金額、下單數(shù)量、下單分?jǐn)偨痤~;在支付業(yè)務(wù)過(guò)程中,包含支付金額、分?jǐn)傕]費(fèi)、折扣金額、紅包金額、積分金額;在完結(jié)業(yè)務(wù)過(guò)程中包含確認(rèn)收貨金額等 。由于粒度是子訂單,所以對(duì)于一些父訂單上的金額需要分?jǐn)偟阶佑唵紊?,比如父訂單郵費(fèi)、父訂單折扣等 。
5.冗余維度
在確定維度時(shí),包含了買賣家維度、商品維度、類目維度 、收發(fā)貨維度等 , 維度建模理論建議在事實(shí)表中只保存這些維表的外鍵 , 而淘寶交易事務(wù)事實(shí)表在維度建?;A(chǔ)之上做了進(jìn) 一 步的優(yōu) 化,將買賣家星級(jí)、標(biāo)簽、店鋪名稱、商品類型、商品特征、商品屬性、 類目層級(jí)等維度屬性都冗余到事實(shí)表中,提高對(duì)事實(shí)表進(jìn)行過(guò)濾查詢、統(tǒng)計(jì)聚合的效率,如圖 4.5 所示。
4.2.2 單事務(wù)事實(shí)表
單事務(wù)事實(shí)表,顧名思義 , 即針對(duì)每個(gè)業(yè)務(wù)過(guò)程設(shè)計(jì)一個(gè)事實(shí)表 。這樣設(shè)計(jì)的優(yōu)點(diǎn)不言而喻,可以方便地對(duì)每個(gè)業(yè)務(wù)過(guò)程進(jìn)行獨(dú)立的分析研究 。1688 交易流程則采用這 種模式構(gòu)建事務(wù)事實(shí)表 。
1688 交易和淘寶交易相 似,主要流程也是下單、支付、發(fā)貨和完結(jié),而在這四個(gè)關(guān)鍵流程中 1688 交易選擇下單和支付兩個(gè)業(yè)務(wù)過(guò)程設(shè) 計(jì)事務(wù)事實(shí)表,分別是1688交易訂單下單事務(wù)事實(shí)表和1688交易訂單支付事務(wù)事實(shí)表 。
選定業(yè)務(wù)過(guò)程后 , 將對(duì)每個(gè)業(yè)務(wù)過(guò)程確定粒度、維度和事實(shí) 。對(duì)于 1688 交易訂單下單事務(wù)事實(shí)表,確定子訂單粒度,選擇買家、賣家、商品、父訂單、收貨地區(qū)維度,事實(shí)包含下單分?jǐn)偨痤~和折扣金額 , 如 圖4.6 所示;而對(duì)于 1688 交易訂單支付事務(wù)事實(shí)表,粒度和維度與交易訂單下單事務(wù)事實(shí)表相同,所表達(dá)的事實(shí)則不 一樣讀寫分離 oracle 應(yīng)用層,包含支付金額、支付調(diào)整金額和支付優(yōu)惠等,如圖4.7 所示;
1688 交易針對(duì)下單和支付分別建立單事務(wù)事實(shí)表后 , 每天的下單記錄則進(jìn)入當(dāng)天的下單事務(wù)事實(shí)表中,每天的支付記錄進(jìn)入當(dāng)天的支付事務(wù)事實(shí)表中,由于事實(shí)表具有稀疏性質(zhì) ,因此只有當(dāng)天數(shù)據(jù)才會(huì)進(jìn)入當(dāng)天的事實(shí)表中 。下面以具體交易訂單為例,展示單事務(wù)事實(shí)表的設(shè)計(jì)實(shí)例 。
4.2.3 多事務(wù)事實(shí)表
多事務(wù)事實(shí)表,將不同的事實(shí)放到同一個(gè)事實(shí)表中,即同一個(gè)事實(shí)表包含不同的業(yè)務(wù)過(guò)程 。多事務(wù)事實(shí)表在設(shè)計(jì)時(shí)有兩種方法進(jìn)行事實(shí)的處理:
如何選擇:
4.2.4 兩種事實(shí)表對(duì)比
業(yè)務(wù)過(guò)程
對(duì)于單事務(wù)事實(shí)表,一個(gè)業(yè)務(wù)過(guò)程建立一個(gè)事實(shí)表,只反映一個(gè)業(yè)務(wù)過(guò)程的事實(shí) ;對(duì)于多事務(wù)事實(shí)表,在同 一個(gè)事實(shí)表 中反映多個(gè)業(yè)務(wù)過(guò)程 。多個(gè)業(yè)務(wù)過(guò)程是否放到同一 個(gè)事實(shí)表中,首先需要分析不同業(yè)務(wù)過(guò) 程之間的相 似性和業(yè)務(wù)源系統(tǒng) 。比如淘寶交易的下單、支付和成功完結(jié) 這三個(gè)業(yè)務(wù)過(guò)程是存在相似性的 , 都屬于訂單處理中的 一環(huán),并且都來(lái)自于交易系統(tǒng) ,因此適合放到同 一個(gè)事務(wù)事實(shí)表中 。
粒度和維度
在考慮是采用單事務(wù)事實(shí)表還是多事務(wù)事實(shí)表時(shí),另一個(gè)關(guān)鍵點(diǎn)就是粒度和維度,在確定好業(yè)務(wù)過(guò)程后,需要基于不同的業(yè)務(wù)過(guò)程確定粒度和維度,當(dāng)不同業(yè)務(wù)過(guò)程的粒度相同,同時(shí)擁有相似的維度時(shí),此時(shí)就可以考慮采用多事務(wù)事實(shí)表 。如果粒度不同,則必定是不同的事實(shí)表 。比如交易中支付和發(fā)貨有不同的粒度,則無(wú)法將發(fā)貨業(yè)務(wù)過(guò)程放到淘寶交易事務(wù)事實(shí)表中 。
事實(shí)
對(duì)于不同的業(yè)務(wù)過(guò)程,事實(shí)往往是不同的,單事務(wù)事實(shí)表在處理事實(shí)上比較方便和靈活,僅僅體現(xiàn)同一個(gè)業(yè)務(wù)過(guò)程的事實(shí)即可,而多事務(wù)事實(shí)表由于有多個(gè)業(yè)務(wù)過(guò)程,所以有更多的事實(shí)需要處理 。如果單一業(yè)務(wù)過(guò)程的事實(shí)較多,同時(shí)不同業(yè)務(wù)過(guò)程的事實(shí)又不相同,則可以考慮使 用單事務(wù)事實(shí)表,處理更加清晰 ; 若使用多事務(wù)事實(shí)表 , 則會(huì)導(dǎo)致事實(shí)表零值或空值字段較多 。
下游業(yè)務(wù)使用
單事務(wù)事實(shí)表對(duì)于下游用戶而言更容易理解,哪個(gè)業(yè)務(wù)過(guò)程就使用相應(yīng)的事務(wù)事實(shí)表;而多事務(wù)事實(shí)表包含多個(gè)業(yè)務(wù)過(guò)程,用戶使用時(shí)往往較為困惑 。1688 和淘寶交易分別采用了這兩種方式 , 從日常使用來(lái)看,對(duì)于淘寶交易事務(wù)事實(shí)表下游用戶確實(shí)有 一定的學(xué)習(xí)成本。
計(jì)算存儲(chǔ)成本
針對(duì)多個(gè)業(yè)務(wù)過(guò)程設(shè)計(jì)事務(wù)事實(shí)表 , 是采用單事務(wù)事實(shí)表還是多事務(wù)事實(shí)表,對(duì)于數(shù)據(jù)倉(cāng)庫(kù)的計(jì)算存儲(chǔ)成本也是參考點(diǎn)之 一,當(dāng)業(yè)務(wù)過(guò)程 數(shù)據(jù)來(lái)源于同 一個(gè)業(yè)務(wù)系統(tǒng),具有相同的粒度和維度 , 且維度較多而事實(shí)相對(duì)不多時(shí),此時(shí)可以考慮使用多事務(wù)事實(shí)表,不僅其加工計(jì)算成本 較低,同時(shí)在存儲(chǔ)上也相對(duì)節(jié)?。?是一種較優(yōu)的處理方式 。
4.2.5 父子事實(shí)的處理方式
4.2.6 事實(shí)的設(shè)計(jì)準(zhǔn)則
事實(shí)完整性:盡可能多地獲取所有的度量事實(shí)一致性:事實(shí)表中統(tǒng)一計(jì)算可以保證度量的一致性(比如金額由數(shù)量*單價(jià)先在事實(shí)表算出來(lái))事實(shí)可加性:事務(wù)事實(shí)表中 更多的是可加性事實(shí),下游用戶在聚合統(tǒng)計(jì)時(shí)更加方便4.3 周期快照事實(shí)表
4.3.1 特性
用快照采樣狀態(tài)
快照粒度密度與稀疏性半可加性
4.3.2 實(shí)例
4.3.3 注意事項(xiàng)
事務(wù)與快照成對(duì)設(shè)計(jì)附加事實(shí)周期到日期度量
4.4.1 設(shè)計(jì)過(guò)程
4.4.2 特點(diǎn)
數(shù)據(jù)不斷更新多業(yè)務(wù)過(guò)程日期
4.4.3 特殊處理
非線性過(guò)程多源過(guò)程業(yè)務(wù)過(guò)程取舍
4.4.4 物理實(shí)現(xiàn)
全量表的形式:此全量表一般為日期分區(qū)表,每天的 分區(qū)存儲(chǔ)昨天的全量數(shù)據(jù)和當(dāng)天的增量數(shù)據(jù)合并的結(jié)果,保證每條記錄 的狀態(tài)最新 。此種方式適用于全量數(shù)據(jù)較少的情況 。全量表的變化形式:比如針對(duì)交易訂單,我們以 200 天作為訂單從產(chǎn)生到消亡的最大間隔 。設(shè)計(jì)最近 200 天的交易訂單累積快照事實(shí)表,每天的分 區(qū)存儲(chǔ)最近 200 天的交易訂單而 200 天之前的訂單則按照創(chuàng) 建分區(qū)存儲(chǔ)在歸檔表中 。業(yè)務(wù)實(shí)體的結(jié)束時(shí)間分區(qū):每天的分區(qū)存放當(dāng)天結(jié) 束的數(shù)據(jù),設(shè)計(jì)一個(gè)時(shí)間非常大的分區(qū),比如 3000-12-31 ,存放截至當(dāng)前未結(jié)束的數(shù)據(jù) 。由于每天將當(dāng)天結(jié)束的數(shù)據(jù)歸檔至當(dāng)天分區(qū)中,時(shí)間 非常大的分區(qū)數(shù)據(jù)量不會(huì)很大, ETL 性能較好;并且無(wú)存儲(chǔ)的浪費(fèi),對(duì)于業(yè)務(wù)實(shí)體的某具體實(shí)例,在該表的全量數(shù)據(jù)中唯一 。但接口等原因 , 存在結(jié)束標(biāo)志的確認(rèn)問(wèn)題,有以下兩個(gè)方案:4.5 三種事實(shí)表的比較
4.6 無(wú)事實(shí)的事實(shí)表
4.7 聚集型事實(shí)表DWS
4.7.1 聚集的基本原則
4.7.2 聚集的基本步驟
確定聚集維度
在原始明細(xì)模型中會(huì)存在多個(gè)描述事實(shí)的維度,如日期、商品類別、 賣家等,這時(shí)候需要確定根據(jù)什么維度聚集,如果只關(guān)心商品的交易額 情況,那么就可以根據(jù)商品維度聚集數(shù)據(jù) 。
確定一致性上鉆確定聚集事實(shí)
4.7.3 阿里公共匯總層
基本原則交易匯總表設(shè)計(jì)
4.7.4 聚集補(bǔ)充說(shuō)明
【全 數(shù)據(jù)模型建設(shè)方法總結(jié)】本文到此結(jié)束,希望對(duì)大家有所幫助 。
- 數(shù)據(jù)分析軟件 Stata17 詳細(xì)安裝激活教程附安裝包下載
- 南京魯醫(yī)生的做法,會(huì)讓孩子有安全感嗎?
- 縣司法局宋發(fā)勝到校園為校園安全支招
- 塘沽有什么好玩的地方 塘沽景點(diǎn)大全 塘沽有什么好玩的地方
- ?賈靜雯曬全家福祝修杰楷父親節(jié)快樂(lè):有你真挺好的
- 為游戲而生!西部數(shù)據(jù)WD BLACK SN750評(píng)測(cè)
- 游戲數(shù)據(jù)平臺(tái)ThinkingGame獲線性資本百萬(wàn)級(jí)天使投資
- 四 微信安全知識(shí):為微信支付再加上一道安全線
- 裝修半包和全包哪個(gè)好 裝修半包和全包的優(yōu)缺點(diǎn)
- 全國(guó)高中排名一覽表
