如:s_etl_run記錄上次抽取日期,s_etl_curr_run記錄當前抽取日期,抽取sql如下:
where update_date〉s_etl_run.prev_load_dt and update_date<=s_etl_curr_run.load_dt
2,資料來源的時間列update_date > '$$increment_ts' ,increment_ts儲存在target db或者infa repository db中:
setvariable($$increment_ts,sessstarttime)
3,增量表記錄抽取資料(dac增量抽取siebel資料來源的方法)
像s_evt_act此類活動表,siebel中有時間欄位來記錄新更新的資料,dac在資料來源建立img表可以每天捕捉到增量資料,使用檢視v_etv_act進行增量抽取,
使用表s_evt_act進行全量抽取。
1)第一次抽取後,在prune days引數期間的行就被抽取到相應的s_etl_r_img_ 表中,
2)之後的change capture過程:
先將不在s_etl_r_img_ 表中的行並且源表的last_upd列比last_refresh_date減去prune days新的行插入s_etl_i_img_ 表中(之前先truncate),再將s_etl_d_img_中的資料加入s_etl_i_img_中,然後s_etl_i_img_ 表與base table join在一起只抽取增量的行(即建立檢視v_etv_act用於增量抽取)。
3)etl過程完成後,將s_etl_i_img_ 的行push到然後s_etl_r_img_ 表中,並刪除s_etl_r_img_ 表中早於last_refresh_date減去prune days的行。
4)s_etl_d_img_表是siebel delete trigger寫入的表,該錶的資料插入s_etl_i_img_表中(operation='d')然後抽取到dw中,可以實現軟刪除或者硬刪除(delete_***='d')
具體sql過程:
change capture(img_build)
# of prune days: 14
dbms_stats.gather_table_stats(ownname => 'siebel', tabname => 's_etl_r_img_20', estimate_percent => dbms_stats.auto_sample_size, method_opt => 'for all indexed columns size auto',cascade => false, degree => dbms_stats.default_degree)
dbms_stats.gather_table_stats(ownname => 'siebel', tabname => 's_etl_d_img_20', estimate_percent => dbms_stats.auto_sample_size, method_opt => 'for all indexed columns size auto',cascade => false, degree => dbms_stats.default_degree)
truncate table s_etl_i_img_20
create view v_evt_act as
select
* from
s_evt_act,
s_etl_i_img_20
where
s_evt_act.row_id = s_etl_i_img_20.row_id
change capture sync(img_sync)
# of prune days: 14
delete
from s_etl_d_img_20
where
exists
(select
'x'
from
s_etl_i_img_20
where
s_etl_d_img_20 .row_id = s_etl_i_img_20.row_id
and s_etl_i_img_20.operation = 'd'
) 2015-04-02 11:33:37.73 - executing :
delete
from s_etl_i_img_20
where last_upd < to_date('2015-03-19 09:59:59', 'yyyy-mm-dd hh24:mi:ss')
delete
from s_etl_i_img_20
where last_upd > to_date('2015-04-02 09:59:59', 'yyyy-mm-dd hh24:mi:ss')
delete from s_etl_r_img_20 where last_upd < to_date('2015-03-19 09:59:59', 'yyyy-mm-dd hh24:mi:ss')
mysql增量備份幾種 mysql的增量備份
一 啟用 binary log 修改 mysql server 的系統設定檔案 eg.etc my.cnf 在 mysqld 區塊中加上 log bin mysql bin 選項,然後重新啟動 mysql server,例如 mysqld log bin 啟用後你應該可以在 mysql 的 data...
ETL增量抽取方案
一 etl體系結構 資料庫 抽取 轉換 載入 目的資料來源 二 etl抽取方案 1 全量抽取 全量抽取類似於資料遷移或資料複製,它將資料來源中的表或檢視的資料原封不動的從資料庫中抽取出來,並轉換成自己的etl工具可以識別的格式,全量抽取比較簡單。全量抽取一般只在系統初始化時使用,全量一次後,就要每天...
Hive增量更新方案
hive增量更新方案 方案一 總結出來業界可行方案 1 hive原始表提前規劃好以時間分割槽,初始化裝載源庫記錄為base table 最新資料 2 每個相關表都會有乙個timestamp列,對每一行操作做了修改,都會重置這列timestamp為當前時間戳 3 新增資料通過sqoop 支援當天抽取 ...