背景:用戶的分日離線數據是數據部門每天統計完成後寫入離線分日表中,那麼寫入的時候就會有時間差,大概凌晨-3點基本用戶是看不到昨日的數據的,爲了優化這個痛點,我們做了優化當昨日離線沒有值的時候,我們會去redis實時數據(生命週期是3天都有)。雖然是業務相關的,但也體現了商業廣告數據統計的維度:1.商品分天維度(一個商品按天統計-離線數據)。2.商品分時維度(一個商品一天各小時數據數據-離線/實時)。3.用戶產品類型維度(該用戶所有商品的推廣數據)。
取數據邏輯:
有離線取離線,離線沒有就會取緩存。
1.離線有數據:
當離線表有數據的時候,使用數據中心查看分成3中場景
場景1:只選擇日期,不選擇商品,日期開始結束不是同一天
離線數據取自 tdb_adstat.daily_data_adproduct_promote
造數據如圖:
adstat日誌,查詢入參
返回結果:
場景2:選擇日期,開始結束爲同一天,不選擇商品
數據中心查詢如圖:
數據取自tdb_adstat.hourly_data_adproduct_promote,如圖:
adstat查詢日誌
結果返回:
場景3:選擇日期,選擇商品,日期開始結束不是同一天
離線數據取自tdb_adstat.daily_data_product_promote表,該表示按照promotionId查詢,注意區分promotionid對應優店通查詢條件
數據庫造數據如圖:
adstat查詢日誌
2.沒有離線數據:
場景1:只選擇日期,不選擇商品,日期開始結束不是同一天
保證離線數據查詢日誌沒有,在操作redis設置分日緩存
頁面返回:
場景3:選擇日期,選擇商品,日期開始結束不是同一天
首選保證離線表沒有數據,然後操作redis設置分日緩存(這種按日期取直接取分日緩存,不會sum分時緩存,同時緩存key設置按照promotionid)
redis造數據如圖:
返回結果:
測試點:
除了redis的key要寫對,有一些是到分日的,有一些是分時的,還有就是場景:離線沒有取redis->離線有了取離線,有個動作變化,其他沒有了。