數倉筆記 增量更新

2021-10-16 12:21:35 字數 1765 閱讀 6214

全量計算開發處理雖然簡單,但隨著資料量的增加計算資源和時間會倍速增長;在物力人力等成本考量下,引入增量更新進行開發難度和計算資源的平衡。

前提

設計

黃色為歷史分割槽,以建立日期分割槽存放

綠色為增量資料,根據建立時間可以劃分出來的分割槽

藍色為合併後的分割槽

從黃色部分取和綠色劃分相同的分割槽進行資料合併,再動態寫回去

偽**

insert overwrite table bule partition

(dt)

select

coalesce

(green.

columns

,yellow.

columns),

coalesce

(green.dt,yellow.dt)

from yellow outer

full

join

green on yellow.

key= green.

keyand green.dt =

'$'where yellow.dt in

(select

distinct substring(

replace

(create_time,

'-'),1

,7) –## '20201001'

from green where dt =

'$')

問題在hive1.0(其它版本未測試過)中分割槽in語句會掃瞄所有分割槽,用udf解決

--固定分割槽值 掃瞄指定分割槽

select

count(1

)from dwd_a t where t.dt in

('20210204');

--固定分割槽值 掃瞄指定分割槽

select

count(1

)from dwd_a where find_in_set(dt,concat_ws(

',',

('20210202'

,'20210203'

,'20210204'))

)>0;

--動態分割槽值 但掃瞄全分割槽

select

count(1

)from dwd_a t where t.dt in

(select dt from ods_a where dt=

'$')

;--動態分割槽值 利用udf實現掃瞄指定分割槽

select

count(1

)from dwd_a t where t.dt in

(select dt from ods_a where find_in_set(ds,my_udf(

"select dt from ods_a where dt='$'"))

);

my_udf內部實現為執行輸入的sql,並返回類似20210202,20210203,20210204的字串

前提

設計

最近分割槽

分割槽

問題

呼~,有空再補圖吧,有些描述不太好理解

數倉專案筆記 20200817

1 資料倉儲 作為資料的管理和運算中心 資料存檔 各種統計 運算任務的核心平台 2 使用者畫像系統 含義 深入分析使用者後給使用者打上各種規範標籤 年齡,性別,地域特徵,偏好特徵,價值指數,行為習慣,消費習慣 作用 對使用者進行精準營銷,用於支撐精細化營運 比如,針對不同的人 放不同的優惠券 比如,...

數倉筆記 資料建模

3.資料整合及管理體系 3.3 分層建模 3.3.2 分層模型設計原則 3.4 主題域 3.5 建模實施 reference 隨著dt時代的發展,資料出現了爆發式的增長,需要對資料進行有序,有結構的分類組織和儲存,以方便應用。合適的資料建模,能帶來以下幾點好處 關係模型嚴格遵循第三正規化 3nf 較...

kettle 增量更新

後面的乙個問號就是表示它需要接受乙個引數,你在這個table input 下面需要指定replace variable in script 選項和execute for each row 為選中狀態,這樣,kettle就會迴圈執行這個sql 執行的次數為前面引數步驟傳入的資料集的大小。kettle執...