周期快照事實表概念
周期快照事實表以具有規律性的、可預見的時間間隔記錄事實,時間間隔如每天、每月、每年等,簡稱“快照事實表”
快照事實表特性
用快照采樣狀態
快照事實表以預定的間隔采樣狀態度量。這種間隔聯合一個或多個維度,將被用來定義快照事實表的粒度,每行都將包含記錄所涉及狀態
的事實。
現在以淘寶交易賣家自然年匯總事實表為例進行介紹。淘寶活動運營小二或者賣家經常都需要看一些交易狀態數據,比如自然年至今或者
歷史至今的下單金額、支付金額、支付買家數、支付商品件數等狀態度量,對於賣家而言,可能每天早上都想看一下截至昨天的成交情況;對於小二而言,可能在頻繁的活動周期就需要查看一次成交情況。這些狀態度量可以每天通過事務事實表進行聚集,但隨着時間跨度變大聚集效率會越來越低,因此需要設計快照事實表進行狀態的度量,這里用於采樣的周期間隔是每天
下圖快照事實表記錄了每個賣家的下單和支付情況
快照粒度
事務事實表的粒度可以通過業務過程中所涉及的細節程度來描述,但快照事實表的粒度通常總是被多維聲明,可以簡單地理解為快照需要
采樣的周期以及什么將被采樣。
在淘寶交易賣家快照事實表中,粒度可以被理解為每天針對賣家的歷史截至當日的下單支付金額進行快照。
當然,快照周期不一定都按天來進行,也可以按照月或者季度來統計。比如淘寶交易有針對賣家加類目的每月匯總事實表,每月統計一次,同時維度也不僅一個,包含了賣家和類目。
密度與稀疏性
快照事實表和事務事實表的一個關鍵區別在密度上。
事務事實表是稀疏的,只有當天發生的業務過程,事實表才會記錄該業務過程的事實,如下單、支付等;
快照事實表是稠密的,無論當天是否有業務過程發生,都會記錄一行,比如針對賣家的歷史至今的下單和支付金額,無論當天賣家是否有下單支付事實,都會給該賣家記錄一行。稠密性是快照事實表的重要特征,如果在每個快照周期內不記錄行,比如和事務事實表一樣,那么確定狀態將變得非常困難。
半可加性
在快照事實表中收集到的狀態度量都是半可加的。與事務事實表的可加性事實不同,半可加性事實不能根據時間維度獲得有意義的匯總結
果。
比如對於淘寶交易事務事實表,可以對一個周期內的下單金額或者支付金額進行匯總,得到下單支付總額,但快照事實表在每個采樣周期內是不能對狀態度量進行匯總的。
比如淘寶交易賣家快照事實表,無法對每天的歷史至今的下單金額進行匯總,也沒有匯總意義。雖然不能匯總,但可以計算一些平均值,比如計算每天一個下單的平均值。
快照事實表設計
單維度的每天快照事實表
確定粒度
采樣周期為每天,針對賣家、買家、商品、類目、地區等維度的快照事實表,比如淘寶賣家歷史至今匯總事實表、淘寶商品自然月至今
匯總事實表等,不同的采樣粒度確定了不同的快照事實表。
確定狀態度量
確定好粒度以后,就要針對這個粒度確定需要采樣的狀態度量。
比如淘寶賣家歷史至今匯總事實表,包含了歷史截至當日的下單金額、歷史截至當日的支付金額等度量
淘寶商品歷史至今快照事實表,確定了商品維度和商品狀態度
混合維度的每天快照事實表
混合維度相對於單維度,只是在每天的采樣周期上針對多個維度進行采樣。
比如淘寶買賣家歷史至今快照事實表,采樣周期依然是每天,維度是賣家加買家,反映的是不同買家對於不同賣家的下單支付金額
單維度和混合維度這兩類快照事實表都有一個特點一一都可以從事務事實表進行匯總產出,這是周期快照事實表常見的一種產出模式。
淘寶賣家信用分和 DSR 快照事實表
該事實表直接使用操作型系統的數據作為周期快照事實表的數據源進行加工,比如淘寶賣家星級、賣家DSR 事實表等。
在淘寶店鋪交易成功以后會進行一次好中差評以及 DSR 評價(包括物流服務、描述相符和服務態度),淘寶賣家信用就是基於好中差評計算得出的,DSR 評分會累積計算一個綜合分;天貓店鋪交易完成以后僅有 DSR 評價,默認都是好評
其中淘寶賣家信用是通過好中差評的次數進行計算的,具體為:好評加一分,中評零分,差評扣一分;然后累積最終的得分,得到賣家的信用,如上圖的賣家信用分是25318 。
DSR 評分是通過分項的星級綜合得到最終的評分,其中描述相符、服務態度和物流服務都是 1~5 星的打分方式,綜合每一個星級的買家數得到最終的一個平均分,具體為:( 1 星× l 星人數+2 星×2 星人數+3 星×3 星人數+4 星×4 星人數+ 5星×5 星人數) /(1 星人數十2 星人數+3 星人數+4 星人數+5 星人數)。
前面所述的賣家信用分和DSR 評分都是在操作型系統中計算完成的,阿里巴巴數據倉庫關於淘寶賣家信用分和DSR 快照事實表是直接
采用操作型系統數據進行設計加工,采樣周期是每天,針對賣家維度的統計,狀態度量就是賣家信用分和DSR 評分,如下:
全量快照事實表
全量快照事實表是一類特殊的快照事實表,這類事實表的特性與前面兩類快照事實表有一些差異,但依然屬於周期快照事實表范疇。
下面還是以淘寶好中差評快照事實表為例來闡述該類事實表的設計方法。
- 確定粒度
淘寶好中差評每天都在變化,下游統計分析也是每天都在進行的,因此確定采樣周期是每天。這里的采樣維度比較特殊,是針對評價本身,即每天按照評價進行采樣的,每一條好中差評價就是快照事實表的最細粒度。 - 確定狀態度量
對於好中差評價的度量關注更多的是評價本身,即沒有類似於金額、商品數這樣的度量,因此設計為無事實的事實表,更多關注評價的狀態。對於全量快照事實表,這里再增加一步,即冗余維度。此如好中差評快照事實表,冗余了子訂單維度、商品維度、評論者維度、被評論者維度以及雜項維度,包括評論內容、是否匿名等信息
注意事項
事務與快照成對設計
數據倉庫維度建模時,對於事務事實表和快照事實表往往都是成對設計的,互相補充,以滿足更多的下游統計分析需求,特別是在事務事
實表的基礎上可以加工快照事實表。
如前面所述的淘寶賣家歷史至今快照事實表,就是在事務事實表的基礎上加工得到的,既豐富了星形模型,又降低了下游分析的成本。
附加事實
快照事實表在確定狀態度量時, 一般都是保存采樣周期結束時的狀態度量。但是也有分析需求需要關注上一個采樣周期結束時的狀態度
量,而又不願意多次使用快照事實表,因此一般在設計周期快照事實表時會附加一些上一個采樣周期的狀態度量。
周期到日期度量
在介紹淘寶賣家歷史至今快照事實表時,指定了統計周期是賣家歷史至今的一些狀態度量,比如歷史截至當日的下單金額、成交金額等。然而在實際應用中,也有需要關注自然年至今、季度至今、財年至今的一些狀態度量,因此在確定周期快照事實表的度量時,也要考慮類似的度量值,以滿足更多的統計分析需求。
淘寶數據倉庫在設計周期快照事實表時,就針對多種周期到日期的度量設計了不同的快照事實表,比如淘寶賣家財年至今的下單金額、淘寶商品自然年至今的收藏次數等。