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中始終貫穿基於風險的方法。在標準中,自始至終考慮風險,預防措施是戰略策劃和運作 評審的一部分。基於風險的方法已經是過程方法的一部分。例如 可以直接過馬路或者從附...