指標管理提問:數倉分層后,原子指標如何指定來源事實表
在做指標管理時,我們需要保證數據的一致性,后續思考相關問題時,我們也可以基于這一準則做出解答。這篇文章里,作者就針對“數倉分層后,原子指標如何指定來源事實表”這一問題做出解答,一起來看看吧。
開門見山,直接來個提問:
背景1:數倉已經分層,現有兩張表,一張是天粒度的表dwd.order_d(放在了DWD層),一張是周粒度的表dws.order_w(放在了DWS層),兩張表里面都有指標訂單金額。
背景2:你現在負責建設或管理指標管理系統,當中有個模塊叫原子指標管理。界面和功能類似下圖的華為產品(DataArts Studio_新建原子指標)
提問:新增「訂單金額」這個原子指標的時候,應該設置哪個表為原子指標的來源表?指標后續要統一從哪一層出呢?比如,要匯總月訂單指標的時候,應該從哪個表來匯總呢
來,思考3秒,3…2…1,給出你的答案。這個問題,很容易陷入當中給出的兩個選項:天粒度 or 周粒度?
我先提醒你牢記,做指標管理有一個核心關注點:保證數據的一致性。我的答案是:原子指標要基于最原始、粒度最細的數據來定義,當然,這是理想的做法。
對于訂單這個動作來說,什么是最原始、粒度最細的數據呢?
下訂單就增加一條記錄的那張表,不管下單是最終成功還是失敗,系統都會記錄,這張表就是最細粒度的表。這個最原始的銷售訂單事實表,里面通常包含每一筆訂單的詳細信息,如交易時間、金額、客戶信息等。而且基于這張表進行多種聚合計算,如按天、周、月等不同時間粒度或者其他維度(如商品類別、地區等)來匯總數據。
而在實踐中,就如提問的背景說的那樣,你進入某新公司,數倉已經建好了,表也建好了,就等利用管理系統來科學管理指標了,這時候,可能會根據使用場景的不同選擇不同的表來作為指標計算的基礎。
場景:嚴格遵照定義管理
如果是為了保持最大的靈活性和精確度,你應當找到那張最細粒度的銷售訂單事實表去定義原子指標。這保證了指標的靈活性和準確性,因為原子指標應該代表最基礎的事實,允許在此基礎上構建更加復雜的計算和分析。
場景:從實際業務需求出發
如果業務需求明確主要關注天或周的銷售趨勢,分析場景里沒有比天更細的粒度,且這些聚合表是可靠的數據來源,可以直接使用這些聚合表作為指標的數據來源。
- 天粒度的表:是對原始事實表中的數據按照天來進行預先聚合的結果。如果業務需求主要關注日常運營分析,以天作為標準時間單位,則天粒度表能夠快速提供所需數據。
- 周粒度的表:則更進一步將數據聚合到周級別,適用于那些關注周趨勢的分析場景。
不管是哪種場景,我們的目標重點是保持清晰的指標定義和一致的取數口徑,即使在不同的聚合層級之間,銷售金額指標的計算規則也應該是一致的,比如都包括或排除退貨、折扣等因素。
寫在最后
無論是從事實表還是某個聚合表中取數,結果都應該是相互驗證且一致的。
之前寫了事實表里沒有原子指標,結果實際在系統里管理原子指標的時候,又要指定它的來源表,這是咋回事呢?
原子指標定義的是取數的邏輯和部分計算表達式(完全SQL取數里面的計算表達式部分),后續再來講講~
專欄作家
Lee,公眾號:數據產品小lee,人人都是產品經理專欄作家。關注直播、短視頻和文娛領域、擅長數據架構、CDP及數據治理相關工作。
本文原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協議
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發揮!