Powercenter 基礎知識介紹- 4

 

1.1             Normalizer

  1. 在關係型數據庫處理中,Normalizer用來從一行變成多行;如:f1 f2 f3一行三個字段處理後可變成f1 f2,f1 f3兩行兩字段,如下圖

     

 

  1. Generated Key,自動產生不能刪除的端口,命名爲GK_XXX,由這個端口產生一個序列號值,在需要時可以作爲主鍵,運行成功後會在知識庫中保存下一個值,可以在Mapping中看到下一個值,可以修改這個值;
  2. Generated Column ID,自動產生不能刪除的端口,命名爲GCID_<occuring_field_name>,這個端口產生一個序號指名當前輸出來自多個輸入中的哪一個;
  3. Reset和Restart屬性:會話結束時重置GK值到上次的值或者到1;

 

1.2            Router

  1. Router和Filter很相似,Router可以用一或多個Filter來取代,不同的是用Router來生成多個組時輸入數據只需處理一次,所以效率更高;
  2. Router 由一個輸入組,一到多個用戶定義的輸出組和一個默認組組成,每一個用戶定義的輸出組含一個測試條件,滿足條件的輸入數據會進入相應的用戶定義組,不滿足所有用戶定義條件的數據會進入默認組;
  3. 輸入組和輸出組的端口類型和名稱相同;
  4. Powercenter根椐連接的用戶定義輸出組的順序來進行評估,如果默認組沒有連接,則不評估那些沒有連接的用戶定義輸出組;
  5. 如果某一行符合多個輸出組的評估條件,則出現在多個組的輸出數據流中;
  6. 可以將一個輸出組的端口連到多個Transformation或者Target上,但不能將多個輸出組的端口連到一個Transformation或者Target上;

 

1.3            Sequence

  1. Sequence用來產生序列號用以作爲主鍵欄位,可以重用;
  2. 只有兩個輸出端口:Nextval和Currval;
  3. 通過配置Start Value,End Value,Current Value 和 Cycle屬性,可以讓產生的Nextval在一個指定的範圍內循環;
  4. 可以將Nextval端口連到多個Target上,這時是阻塞式的產生序列號的,可以保證多個Target得到不同的序列號,如果想要得到相同的序列號,可以將Nextval端口連到Target之前的一個共有的Transformation上;

  1. 如果只連出Currval,得到的是一個常量,並且一次阻塞只能獲得一個值,所以爲性能考量,一般都不連出這個端口,如果Nextval同時有連出,這時Currval =  Nextval + Increment By;
  2. 在沒有配置Cycle屬性時,如果序列號達到了End Value,會話會失敗;
  3. 不重用的Sequence有Reset屬性,啓用以後,在每個會話結束時會將Current Value置爲會話開始時的值,這個值是它產生的第一個值;
  4. 當Sequence配置成重用時,應該給Number of Cached Values 一個大於零的緩存值,這個值是主要爲保證不出現重複數據而設置的.比如當設置爲100,那麼一個線程在從1開始在跑,則另外一個線程會從101開始.每次跑完都要補足100整數.

 

1.4            Sorter

  1. Sorter用來排序數據,可以指定多個排序端口,每個端口可以指定升降序,字符串比較時可以忽略大小寫,還可以用Distinct選項來消除重複(所有端口,包括沒有指定排序的端口);
  2. 排序時會用到輸入數據兩倍大小或者更大的空間,默認的排序Cache是8M,可選的排序Cache範圍是1M到4G,排序Cache不夠時,服務器會將數據臨時存儲在排序目錄,如果指定的排序Cache無法滿足,會話會失敗,可以用文檔中提到公式計算Cache;
  3. 當配置使用 Distinct屬性時,所有的端口都會用於排序;
  4. 默認情況下,NULL大於任何值,可以配置NULL值小於任何值;

 

1.5            Union

  1. Union可以將多個數據流合併成一個數據流,功能類似於SQL中的UNION ALL;
  2. Union可以有多個輸入組,只有一個輸出組,輸入組和輸出組有一一對應的端口;
  3. Ports 頁不可編輯,只能編輯Groups 和 Group Tabs頁;

 

1.6            Rank

  1. Rank可以用來返回根椐某個端口排序的最大或者最小的N條記錄,並且可以指定分組;可以用於得到去除的重複資料(比如5條相同數據,只取了一條,那麼另外四條可以由這個加上Sqerence組合得到其它四條.).
  2. Rank中可以使用分組,但並不能使用分組函數,可以指定多個分組端口,但用於排序的Rank端口不可用於分組;
  3. Rank端口有五種屬性:I(輸入),O(輸出),V(變量),R(排序),G(分組),至少需要有一個輸入端口和一個輸出端口,排序端口有且只有一個,而且必須輸出,排序端口和變量端口不能用於分組;
  4. 輸入端口的數據只能來自一個Transformation;
  5. 有一個默認的Rankindex端口,表示輸出行在排序中的位置;
  6. 如果是字符排序,可以選擇大小敏感或者大小寫不敏感;
  7. Top X 中的X數量表示前幾條數據(Rankindex的值就是順序),當Rankindex一樣時,取其中部分,比如Top1,有兩條記錄的Rankindex爲1,則取其中一條.其受cache限制,可按需調整cache.

 

1.7            Procedure

  1. 存取過程一般用於處理較爲複雜的數據,分爲連接型與非連接型,連接型一般用於取得返回值,非連接型一般用於在session執行前後執行一些動作,比如檢查數據庫空間之類的,但是可以完成所有連接型的功能,可用於Output Port作爲expression.
  2. 如果是隻有單個返回參數(out parameter)則使用方法類似:sp.sp_xxx(inID,proc_result),proc_result爲PM保留變量.如果有多個返回參數則需要定義本地變量來接收,比如sp.sp_xxx(inID,$$var1,proc_result),參數位置與類型必須與sp裏面定義的一致.
  3. 同個Procedure不得同時作爲連接型與非連接型.
  4. 可以使用多層嵌套存取過程.

 

1.8            Transaction Control

1.功能:用於控制事務的Commit, Rollback, Continues.,比如一年的銷售情況,可以按照月份分類,每個月作爲一個Transaction來控制,這樣就可以對單個月進行排序或者提交什麼的.

2.簡介:

在Properties Tab頁,主要屬性爲Transacion Control Condition, 在裏面寫控制事務的表達式,表達式的返回的值只能是以下值.

 

TC_CONTINUE_TRANSACTION

No transaction changes will be performed for this row. This is the default TC expression.

TC_COMMIT_BEFORE

Commit and Begin a new transaction before this row written to the target.

TC_COMMIT_AFTER

Write this row to the target and COMMIT the transaction and begin a new  transaction.

TC_ROLLBACK_BEFORE

Rollback the current transaction. Begin a new transaction and write row to target.

TC_ROLLBACK_AFTER

write the row to the target and rollback the transaction. Begin a new transaction.

注意:當表達式的返回的值爲TC_ROLLBACK_BEFORE或 TC_ROLLBACK_AFTER時需要設置session的Treat source rows as Data driven,要不WorkFlow會爲failed.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章