一致性維度:
1.很重要
2、在維度設計的時候一定要保證維度的一致性
eg:
兩個不同的業務:
1.流量的 item pv uv
2.交易的 item gmv
數據交叉探查:
將不同業務域 的 商品維度的數據 結合到一塊 進行展示!!
即:
item pv uv gmv 這是比較常見的
那麼一致性維度?
1.商品維度 對應:
1.流量域 : a b c 三個屬性
2.交易域 :b c e f g h 四個屬性
這個時候:
只有b c 可能 兩個商品數據 可能不一致的情況 就是說
這兩個域 數據可能 不能放在一塊來看
2.時間維度:
1.流量域 : timestamp
2.交易域 : yyyy-MM-dd
這種 進行數據交叉探查的時候 會導致 不一致
所以維度一致 是很重要的
那麼這些問題 該如何解決??如何保證維度的一致性??
1.共享維度表 (就是 你不同的域 建自己的維度的時候 要注意 一致性維度)
維度 整合與拆分:
整合:
1. 表名、字段名 命名規範統一
2. 字段類型的統一
3. 業務含義相同的表 進行統計
1.高內聚
2.低耦合
eg:
1.把源端 數據形式 差異較小的表進行整合
2.把源端 數據形式 差異很大的表進行拆分
1.主從表設計:
1.主表:
1.主要業務常用的維度屬性
2.從表:
1.業務中不常用的屬性
2.直接合並:
eg:
1.垂直合併:
1.eg:
低價區間 這個字段 依據 廣告樣式 和 價格來定的
就是 不需要 把 低價區間 按照不同的 廣告樣式 創建不同的字段
合在一個字段裏
2.水平合併
就是 上面的 不同廣告樣式 不同的低價區間字段
會有問題:
會有 null
拆分:
1.水平拆分:
eg:
維度設計可能遇到的問題:
1.某些維表屬性的來源表 產出數據的時間比較早
某些維表屬性的來源表 產出數據的時間比較晚
2.某些維表 字段 熱度比較高
某些維表 字段 熱度比較低
3.某些維表 字段 經常會變化
某些維表 字段 不會變化 穩定
這三個場景 有什麼好的解決方案呢??
1.主從表設計
設計原則:
1.擴展性
2.易用性
3.效率
粒度方面也要考慮! 粒度不一樣的字段 就不要放在一張表 !
數據方面
歷史數據的歸檔:
1.歸檔策略:
1.通過設置數倉表的生命週期實現
1.ods 3天
2.dwd dws dim 3個月
3.report 歷史全部保留
4.增量表 歷史全部保留
緩慢漸變維:
1.看下面的圖
1.當帽子 類目發生變化 變成 帽子類
1.處理方式?
1.重寫 維度值
第二種處理方式:
1.插入新的維度行 (上面的圖片 少了 商品key 我就不改了)
業務需求 :
eg:
將6月所有的數據 歸到老的類目
有什麼問題??
1. 重寫維度 方式 做不到 !! 因爲類目全 變了
2. 插入新的維度 方式 做不到!!! 實際上可以做到 where 對吧 很麻煩
eg:
你依照 商品ID 去關聯 發現 一個商品 id 對應兩個 類目
或者 依據 商品key 關聯 再where 也可以 (畢竟 商品key 是唯一的)
第三種方式:
1.新增維度列
好處:
1.數據不會重複
2. 統計方便
想依據什麼類目統計 選就可以了
快照維表:
快照:就是 當時的 狀態 某個時間點的狀態
快照的週期:多久去獲取一次數據
eg: 1天、
按天獲取快照 該如何獲取和構建???
1.按天 進行數據抽取即可
注意:
1.抽取的是全量抽取
creattime updatetime
eg:
抽取 20200627 凌晨1點 抽取 到0627 24:點
createtime 小於 20200627 加上 updatetime 小於20200627 的數據
放入 hive dt=20200626
就可以達到按天構建全量表的 策略!
問題:
1.數據量達到一定程度 全量抽取 絕對不行!!這纔是1張表 n張表 是不可取的 !!
2.抽取性能 業務 庫壓力很大
該如何解決呢?
1.增量抽取 + merge
2.拉鍊表