基於Power Center 6的增量資料解決方案

2021-12-20 14:25:34 字數 3574 閱讀 2285

updateparameter(表示式節點)

更新對映變數值:setmaxvariable($$lastupdatetime,create_time)

● 存在問題

速度快,僅支援插入操作;

無法監控源表刪除和更新情況;

如果源資料記錄發生更新,但是該時間戳字段沒更新則該記錄在目標表中維持老記錄;

如果源資料記錄發生更新,但是該時間戳字段沒更新則該記錄仍存在目標表中;

load方式不支援

● 條件

源表和目標表包含標識記錄的主鍵

● 方法

第1步:在源資料庫建立序列(共用物件)

create sequence seq_bx start with 1 increment by 1;

第2步:在源資料庫建立函式(共用物件)

create or replace function changestatue(

var_table_name in varchar2, --表名

var_pk_column in int主鍵值

) return varchar2 is

var_update_sql varchar2(1000);

begin

/* func : changestatue

/* 說明 : 根據主鍵值更新監控表的狀態值

var_update_sql:='update '||var_table_name||' set statue=1 where id='||var_pk_column;

execute immediate var_update_sql;

commit;

return 'ok';

exception

when others then

return 'error';

end;

第3步:在源資料庫相關表(如「customer」,其主鍵「c_id」)上建立監控表(「customer_bx

」),用於記錄該錶的資料變化。

create table customer_bx(

id int not null,

c_id int not null,

operation varchar(10) not null,

statue int not null,

create_time date not null,

primary key(id)

);// 所有監控表的主鍵欄位名統一為』id』,以便儲存過程呼叫

// 如果聯合主鍵,則加上所有標識主鍵的字段,資料型別根據源表相關字段確定

c_id:主鍵字段對應的值

operation:』insert』、』update』、』delete』,標識記錄變化情況

statue:狀態碼,初始為0,當此條記錄匯入目標庫後更新為1

create_time:系統時間

第4步:建立觸發器用於監控源表(如「customer」)記錄的變化情況

create trigger tjfx_trg_customer_after_insert

after insert on customer for each row

begin

insert into customer_bx values(seq_'insert',0,sysdate);

end trigger_customer_after_insert;

create trigger trigger_customer_after_update

after update on customer for each row

begin

insert into customer_bx values(seq_'c_id','update',0,sysdate);

end trigger_customer_after_update;

create or replace trigger trigger_customer_after_delete

after delete on customer for each row

begin

insert into customer_bx values(seq_'c_id','delete',0,sysdate);

end trigger_customer_after_delete;

● powercenter6實現

1:在「source filter」選擇「customer_用於標識記錄是否已裝載進目標庫的狀態)的記錄;

select id,c_id,operation from customer_bx

where customer_

order by create_time

2:表示式節點,新建輸出埠「table_name」,其值為監控表名「customer_bx」;

3:儲存過程節點,呼叫函式「changestatue」,更新監控表狀態值;

4:路由節點,根據operation值分組;

operation=』delete』為一組,直接將該記錄從目標表刪除

operation='insert' or operation='update'為另一組,分別進行更新或插入操作

5:查詢節點,根據監控表字段「c_id」查詢對應源表的該條記錄(c_id為源表的主鍵值);

6:更新策略節點,根據「operation」字段值確認對該記錄資料庫操作

decode(operation,'insert', dd_insert,

update', dd_update)

7:更新策略節點,刪除該記錄

dd_delete

● 存在問題

etl設計流程複雜,工作量大;

速度快,但是觸發器程式和監控表出現問題則記錄改變資訊無法記錄,導致資料不完善;

需要維護源資料庫中的觸發器,儲存過程,監控表等;

監控表完善記錄了源表的操作過程,資料量龐大,需定期刪除;

delete from customer_bx where statue=1

load方式不支援

● 條件

要求資料記錄數小於百萬條,效能影響較小

● 方法

每次執行etl工作流前刪除目標表所有資料。

● powercenter6實現

在目標節點屬性「pre sql」裡均填寫:「truncate table d_customer;commit;」,意思是session啟動前先刪除目標表記錄,並選擇「relational writer」

● 存在問題

由於採用直接insert方式向iq裡寫資料,速度慢,適用於記錄數少的小表,但是能保證資料一致性;

● 解決辦法

建立2個相同對映流,如mapping1和mapping2,在mapping1前置節點輸入過濾條件「rownum<2」,目標節點的屬性「pre sql」和「post sql」裡均填寫:「truncate table d_customer;」(此對映作用是刪除目標表資料);針對兩個mapping分別建立session,依次為session1和session2,在session1裡的目標載入方式選擇「relational writer」,在session2裡的目標載入方式選擇「file writer」,並指定iq loader(真正的載入資料過程,速度快)。

基於6管理的服務補救系統模型構建

作者 蘇萬春 沿海企業與科技 2008年第07期 摘要 文章將6 管理法匯入服務企業,對6 的內涵及管理成就進行介紹。分析6 在構建服務補救系統模型中的意義。指出服務企業可以運用pdca迴圈與dmaic迴圈來實現服務質量標準,以達到服務質量的持續改進。然後融pdca迴圈與dmaic迴圈於6 管理中,...

基於埠的vlan

命令 vlan vlan id 模式 configuration 功能 進入此vlan id的vlan configuration模式,如果給定的vlan id不存在,增加此vlan id到vlan表中,然後再進入vlan configuration模式。最多隻支援256個vlan。vlan id在...

基於風險的方法的理解

什麼是基於風險的方法 基於風險的方法在某種程度上是一種自然而然的做法。例如 過馬路前看紅綠燈。看到有汽車行駛,立即止步。新版iso 9001中始終貫穿基於風險的方法。在標準中,自始至終考慮風險,預防措施是戰略策劃和運作 評審的一部分。基於風險的方法已經是過程方法的一部分。例如 可以直接過馬路或者從附...