五、高級應用
21.任務分區
分區是通過並行處理來提供PowerCenter的執行效率。
分區類型包括:Database partitioning、Hash Auto-keys、Hash User-keys、Key Range、Pass Through、Round Robin。
PowerCenter執行原理:
默認情況下,一個session在運行時,在服務器上呈現的是一個進程,進程名為pmdtm。
無partition的mapping執行時有一個進程,最少會有3個線程(讀線程、轉換線程、寫線程)。
讀線程讀取一組數據,並將這組數據給轉換線程;
轉換線程開始處理第一組數據,同時讀線程開始讀取第二組數據;
一次類推,每個線程都在不停歇地工作,並將完成的工作傳給下一個線程。
各線程間是異步的。
為了提升性能有兩種方法:
對mapping進行縱向分割,即將轉換線程分成多個段,增加Partition Point;
對mapping進行橫向分割,即增加每個段的線程數量,增加Partition。
在PowerCenter中Partition可以理解為並行,包括橫向並行和縱向並行。
21.1 Database partitioning
Database partitioning是PowerCenter對數據庫分區表並行讀寫的一種方法。目前僅支持Oracle和DB2數據庫。
當表為分區表時,集成服務會讀取分區信息,按照設置的PowerCenter分區數量並行地讀取和寫數據。
PowerCenter分區數量可以和數據庫表的分區數量不一致。
例子:
源:分區表(PART_LIST1)
目標:文件(PART_LIST1_T)
做好Mapping后,在Session中實現Database partitioning的方法分為2種:靜態分區和動態分區。
1.使用PowerCenter靜態分區實現並行
靜態分區需要手工增加PowerCenter的分區。
雙擊Session--》映射頁簽--》Partition頁簽(左下)--》雙擊SQ--》添加2個分區,並選擇分區類型的Database partitioning
--》保存配置--》運行Session--》在M客戶端監控到2個分區同時運行--》在Session Log也可以看到2個分區信息。
在PowerCenter Session被分區后,並且目標是文本時,默認會生成多個文本文件。
雙擊Session--》映射頁簽--》選中目標--》屬性欄--》Merge Type屬性用來指定是否合並文本。
Merge Type屬性有4個選項:
No Merge:不進行合並(默認選項),根據PowerCenter分區數量決定生成文件的數量;
Sequential Merge:順序合並,按順序生成文件,再逐個合並文件,性能較差;
Concurrent Merge:並行合並,在多個文件輸出過程中,同時進行合並,性能較好;
File List:生成多個文件后,再生成一個列表文件,只記錄相關的文件名,不合並具體的數據。
2.使用PowerCenter動態分區實現並行
動態分區需要指定PowerCenter的分區個數。
雙擊Session--》映射頁簽--》Partition頁簽(左下)--》雙擊SQ,將分區屬性設置為Database partitioning。
雙擊Session--》配置對象頁簽--》Partitioning Options欄--》屬性Dynamic Partitioning和Number of Partitions。
Dynamic Partitioning屬性選項:
Disabled:不啟用Dynamic Partition;
Based on number of partitions:啟用Dynamic Partition,並行度由Number of Partitions屬性指定,可以和數據庫表的分區數量不一致。
Based on number of nodes in Grids:啟用Dynamic Partition,並行度與PowerCenter集群中節點(服務器)的數量一致。
Based on Source partitioning:啟用Dynamic Partition,並行度與數據庫表的分區數量一致。
Based on number of CPUs:啟用Dynamic Partition,並行度與PowerCenter服務器CPU的數量一致。
21.2 Hash partitioning
Hash指把任意長度的輸入通過Hash算法,變換成固定長度的輸出,該輸出為Hash值。
Hash partitioning就是使用Hash函數的輸出值作為分區依據。
依據Hash函數的輸入分為:Auto-Key、User-Key。
Auto-Key指由PowerCenter自動選擇Key(Hash函數的輸入值);
User-Key指由開發人員指定Key(Hash函數的輸入值)。
Hash partitioning就是使用Hash函數,根據輸入的Key計算其散列值,並據此進行分區。
1.Hash Auto-Key
用於Rank、Sorter、Joiner、Unsorted Aggregator組件需要進行分區的情況下。
Hash Auto-Key類似將數據分桶,相同的輸入Key會產生相同的Hash值,對上述組件來說,
Hash Auto-Key分區的Key是PowerCenter自動選擇的,分區的Key就是組件中分組的列。
對於Joiner組件使用Hash Auto-Key,
給Master表的SQ增加分區則會報錯;
給Detail表的SQ增加分區會產成1:N 分區,
1:N 分區指Master作為一個數據流流入Joiner,Detail有N個數據流與Master的索引進行Join運算,Detail的性能提升N倍;
給Joiner組件增加分區(Key是關聯字段)會產生N:N分區,Master表的SQ的分區數被Joiner組件改寫,所有組件的分區數都相同。
2.Hash User-Key
與Hash Auto-Key一致,不同之處在於需要開發人員手工指定Key。
21.3 Key Range partitioning
Key Range partitioning是PowerCenter根據指定的某個字段的值的范圍進行分區的一種方式。
在Session中增加分區時,選擇Key Range partitioning分區類型,並選擇分區Key列,再指定每個分區的取值范圍,
左側閉區間(>=),右側開區間(<),空表示上、下限。
Key Range partitioning不能空間每個分區的數據分布,並且部分組件不支持Key Range分區方法,需要對數據再分配。
21.4 Pass Through partitioning(適用於源是文本文件)
Pass Through partitioning分區將接收到的數據原樣向下傳遞。
Pass Through partitioning類似於數據庫的列表分區,
在Session中增加分區時,然后給每個分區進程指定讀取條件,比如按某個列的取值進行划分即可;
如果不指定讀取條件,那么每個分區進程將讀取全部數據。
問題是指定列的取值可能會變化,每個分區的數量不均衡。
對於源是文本文件的Mapping,則只需要給第一個分區進程指定源文件路徑即可,
PowerCenter將自動計算文本文件大小,然后按照分區數量將文件均分,每個分區進程讀取其中一份數據。
21.5 Round-robin partitioning(適用於轉換組件平均分配數據)
Round-robin partitioning會將其收到的數據塊平均向各個分區分發,理論上每個分區得到數據行數基本相同。
22.內存管理
ETL是一個高I/O的工作,合理地使用內存可以降低I/O,並提升性能。
一個Session進程使用的內存總量=DTM+Transformation cache
22.1 DTM內存
DTM Buffer由DTM Block組成,用於支持Session的讀、寫線程將數據從源傳送到目標的過程。
DTM Buffer是在Session級別管理的,修改 DTM Buffer只對當前Session有效。
雙擊任意Session--》映射頁簽--》屬性內存,修改屬性DTM buffer size和Default buffer block size即可。
DTM buffer size:默認值Auto,由集成服務自動分配(12MB);可調整為32MB、64MB、128MB。
調整時機:
當Session使用Partition時;
源和目標包括大量的比較長的字符串類型時;
源和目標包括包括Clob或Blob類型時;
存在XML源或目標時。
Default buffer block size:block size是組成DTM buffer的每個內存的大小。
每個讀、寫線程最少需要2個block。
當1個block不足以存放一行數據時需要調整block size。
調整原則:計算所有的源、目標、轉換組件中的單行數據長度,將block size設置為單行數據長度的100倍以上。
22.2 Transformation cache
部分轉換組件(如:Joiner、Lookup、Rank、Sorter、Aggregator等)有獨立的Cache,
這是Session內存的組成部分,對Transformation cache的調整可以優化轉換線程的性能。
以Joiner組件為例,cache使用過程如下:
當Master表的數據被讀入PowerCenter之后,Joiner組件會利用Cache來建立索引;
當Cache用完時,PowerCenter會將數據Dump到磁盤上(又將內存中的全部數據寫到磁盤上了);
只有當Master表的索引建立結束后,才開始讀取Detail表的數據,並將Detail表的數據與Master表的Cache關聯。
Cache包括:Data Cache Size、Index Cache Size、Sorter Cache Size等。
Data Cache Size=(主表行數)*(行大小+8); 行大小=連接字段+輸出字段的長度和。
Index Cache Size=(主表行數)*(行大小+16) ; 行大小=連接字段
點擊“Auto”后的小箭頭--》選中"計算",輸入行數,移動模式選“Unicode”
--》點計算按鈕--》生成Data Cache Size、Index Cache Size。
?設置了Cache后性能沒有得到明顯提升?
一般在Session Log中有一條提示信息是對Cache的大小建議。
一個Session可能使用了多個帶有Cache的組件,這時並不需要對所有組件都進行Cache調整。
PowerCenter提供了兩個參數來管理Auto時的默認值,這兩個參數以小的為准。
Maximum Memory Allowed For Auto Memory Attributes=512MB
PowerCenter 將自動為您在內存相關字段中為其指定“自動”的所有轉換計算最佳內存分配,例如緩存大小和緩沖區大小。
要限制為此會話中的“自動”轉換分配的總內存,請在此屬性中以 MB、GB 為單位指定最大內存。
Maximum Percentage of Total Memory Allowed For Auto Memory Attributes=5
PowerCenter 將自動為您在內存相關字段中為其指定“自動”的所有轉換計算最佳內存分配,例如緩存大小和緩沖區大小。
要限制為此會話中的“自動”轉換分配的總內存,請在此屬性中指定可用物理總內存的一個百分比。
這兩個參數不能針對單個Session修改,只能針對整個項目(所有Session)進行修改,
修改方法:任務--》會話配置--》default_session_config 編輯--》屬性頁簽
Maximum Memory Allowed For Auto Memory Attributes=1024MB
Maximum Percentage of Total Memory Allowed For Auto Memory Attributes=10。
修改后對所有Session有效。
項目實踐:使用這兩個參數滿足絕大多數Session的內存Cache;
對超大Cache的組件進行手工調整。
23.網格計算
網格計算是PowerCenter的集群功能,作用在於提升PowerCenter的擴展能力和處理能力。
23.1 Grid架構
Domain:一組管理進程或者線程,用於管理和協調Domain中的所有服務。
Domain在安裝第一個節點(N1)的過程中創建。
Grid(網格):由若干個節點(N1,N2...)組成。映射到安裝配置過程分為兩步:
1.創建Domain時添加,即安裝N1時選擇“Create Domain”,安裝N2..時需要選擇“Add into Existing Domain”;
2.在Admin Console上創建Grid,並把節點N1,N2...作為它的成員。
一個Domain可以包含多個Grid,一個Grid可以包含多個節點。
IS(Integration Service)集成服務:IS可以創建在Grid上或單節點上(在創建IS時選擇), 只有創建在Grid上的IS才支持集群。
創建在Grid上的IS邏輯上是一個名字,但在Grid的所有節點上各運行一個進程。
一個Grid上可以創建多個IS(特殊情況下需要,比如特殊字符集或者不同的環境變量)。
Repository Service存儲庫服務:主要負責與Repository交互的協調工作,壓力較少沒有Grid方式。
當IS采用Grid時,建議Repository Service采用HA(高可用)方式,即一主(Primary)一備(Backup)。
23.2 Grid負載均衡
PowerCenter負載均衡有兩種模式:Workflow on Grid、Session on Grid。
Workflow on Grid是將Grid中的所有節點當作資源池,以Task為單位進行任務分發,確保充分利用Grid的資源,是默認方式。
Session on Grid是將Grid中的所有節點當作資源池,以Session的Partition為單位進行任務分發,參見Grid與任務分區。
Domain提供了3種基本的任務分發方式,分別是:Round-robin、Metric-Based、Adaptive。
任務分發方式是Domain的屬性,一旦設定所有的IS均采用這一設置。
1.Round-robin模式
Load Balance分發器以Round-robin模式進行任務分發。
Load Balance管理檢查Maximum Process(進程數上限=10,Maximum Process是node的屬性,在Admin Console中進行管理)閾值設置,
如果增加當前任務不會超過它的閾值設置,這個任務將被分配給這個節點執行;
如果增加當前任務會超過它的閾值設置,Load Balance管理器將繼續尋找可用的服務器來執行此任務。
在Round-robin模式下,Load Balance分發器不會Bypass任何任務。
Round-robin模式一般用在節點資源比較平均的情況下。
2.Metric-Based模式
Load Balance分發器以Round-robin模式進行任務分發。
Load Balance管理檢查所有資源的閾值設置,同時檢查Swap空間。
如果當前任務的資源需求不超過節點的剩余資源,這個任務將被分配給這個節點執行;
如果當前任務的資源需求超過節點的剩余資源,Load Balance管理器將繼續檢查其他節點的剩余資源來執行此任務。
在Metric-Based模式下,PowerCenter會自動統計Task最近3次運行所需的資源,從而決定任務的資源需求;
對於首次執行的任務,PowerCenter會使用默認值40MB內存,15%CPU作為任務的資源需求。
在Metric-Based模式下,Load Balance分發器不會Bypass任何任務。
一個資源密集型任務被提交,其它同優先級的任務可能需要等待該任務被分配。
3.Adaptive模式
在Adaptive模式下,PowerCenter將評估所有Node的資源可用性(CPU空閑、所有閾值、Swap空間),
以CPU空閑為優先級檢查所有Node的閾值、Swap空間,如果滿足任務資源需求則分發;否則繼續查找。
在Adaptive模式下,PowerCenter會使用CPU Profile 和Task最近3次資源統計值來作為判斷依據;
對於首次執行的任務,PowerCenter會使用默認值40MB內存,15%CPU作為任務的資源需求。
在Adaptive模式下,Load Balance管理器根據任務資源需求和任務優先級決定任務的分配。
如果當前任務的資源需求不超過節點的剩余資源,這個任務將被分配給這個節點執行;
如果當前任務的資源需求超過節點的剩余資源,Load Balance管理器將繼續檢查其他節點的剩余資源來執行此任務。
“Admin Console--》Node--》資源配置閾值”:
進程數上限=10
CPU運行隊列長度上限=10
內存百分比上限=150
任務優先級Service Level:
在Domain中定義,在Workflow中使用。
即一個Workflow中的所有Task具有相同的優先級,不同Workflow中的Task可能具有不同的優先級。
Load Balance管理器將優先分發高優先級的任務,
為了避免低優先級任務始終不能被分發,設置了等待時長,
如果等待時間超過了等待時長閾值,那么低優先級任務將被升級為高一個等級的優先級。
CPU基線(CPU Profile):是根據PowerCenter提供的基線來評估CPU能力的一個值。
計算方法:選擇Node,選擇Action--》計算CPU基線
CPU Profile僅用於Adaptive模式下,對其他模式無效。
23.3 Grid與任務分區(Partition) Session on Grid
將一個Session分發到多個節點上執行,從而提高Session的執行效率。
Session在運行時一般表現為服務器上一個名為pmdtm的進程,如何將一個進程分發到多台服務器呢?
在PowerCenter中配置Session on Grid有兩種不同的組合:Session on Grid+Partition,Session on Grid+資源選項。
Session on Grid是session的一個屬性,(未找到)。
24.高可用性(HA)
HA(High Available)即高可用性集群,是保證業務連續性的有效解決方案。
由兩個或多個節點組成,分為活動節點和備用節點,活動節點只能有一個。
24.1 PowerCenter自帶的HA方案
存儲庫服務和集成服務被設置為HA。
第一個節點安裝時選擇"創建Domain",第二個節點安裝時“增加到已存在的Domain”。
安裝結束后,在Admin Console中創建一個存儲庫服務,創建時需要選擇Primary進程運行的節點,並選擇Backup進程運行的節點。
再創建一個集成服務,Primary進程節點選擇為存儲庫服務的Backup進程節點,Backup進程節點選擇為存儲庫服務的Primary進程節點。
安裝完成后,存儲庫服務和集成服務各有一個唯一的邏輯名稱,兩個節點上各有兩套進程。
主節點進程響應外部請求,備節點進程空跑;當主節點進程失效后,備節點進程自動接替為新的主節點進程。
PowerCenter的session支持程序異常退出時從斷點進行恢復的功能,
參數見“編輯任務--》屬性頁簽--》Recovery Strategy",取值分為3個:
Fail task and Continue workflow:將當前任務標記為失敗,但繼續運行后續任務。
Resume from last checkpoint:從斷點進行恢復,可用於HA環境。
Restart task:重新啟動該任務。對於重新運行不影響結果的任務,也可用於HA環境。
HA適用於實時任務,並不適用於批量任務(性能損失)。
24.2 依托HP Services Guard和IBM HACMP等第三方廠商的HA方案
只安裝一次PowerCenter。
將PowerCenter安裝在共享的存儲上,即隨着OS HA切換自動切換的存儲上;
將PowerCenter相關服務綁定在浮動IP或者浮動IP對應的主機名上,
並將PowerCenter服務整合到第三方HA軟件的Package中,保證主機節點發生切換時,PowerCenter可以在另外的節點上自動啟動。
同樣需要Recovery Strategy屬性支持。
24.3 兩種HA方案對比
比較項目 PowerCenter自帶HA 第三方HA
切換時間 秒級別。由於Backup服務已經啟動, 分鍾級別。需要unmount文件系統,重新mount到備份系統,
僅處於Backup狀態,所以切換時間快 並啟動PowerCenter服務,所以需要10分鍾左右。
安裝配置 需要在主、備節點上各安裝一次PowerCenter 僅在浮動IP上安裝一次PowerCenter
是否需要共享存儲 需要。並且要求兩個節點同時可讀可寫 需要。在某一時刻,某一節點可讀可寫
是否需要Recovery Stragety支持 需要 需要
25.web service應用
web service hub:PowerCenter提供的Web Service的集中訪問點。在web service hub上,
可以看到PowerCenter內置的Web Service服務和通過PowerCenter開發Web Service。
web service調度/監控接口:PowerCenter內置的Web Service服務,通過這些服務可以查看PowerCenter元數據、
對Workflow/Session等進行調度、監控及與第三方平台進行集成。
web service Provider:是將PowerCenter中的一個邏輯(轉換組件、Mapplet、Mapping等)發布成Web Service。
即用PowerCenter對外提供Web Service服務。
web service Consumer:即PowerExchange for Webservice。PowerExchange是PowerCenter所有對外接口的名字,
PowerExchange for Webservice是PowerCenter訪問 Web Service的接口的名字。
25.1 web service hub
web service hub是Domain管理的一個應用服務,作為外部客戶端訪問Web Service的網關。
web service hub處理來自外部客戶端訪問PowerCenter功能的SOAP請求。
創建web service hub,在控制台上”選中Domain--》點操作--》新建--》web service hub“,
輸入名稱”BI_WSH“,許可證,節點,存儲庫,用戶名、密碼后點”下一步“,
再輸入URL方案”http“,hub主機名”sc-201709251400“,點”完成“。
啟用web service hub服務,
打開服務網址:http://sc-201709251400:7333/wsh
Realtime WebService:將PowerCenter中的workflow發布為WebService服務。
Batch WebService:主要用於運行、監控Session和Workflow,還包括訪問Repository Metadata的WebService API。
25.2 web service調度/監控接口
Batch WebService提供了大量的調度、監控PowerCenter的API,可用於第三方工具的二次開發,也可用於項目中調度、管理的需要。
面向Data Integration的Web Service Operation包括如下幾類:
1.連接存儲庫服務的接口
Login
Logout
2.連接集成服務並獲得其相關信息的接口
pingDIServer
getDIServerProperties
initializeDIServerConnection (deprecated)
deinitializeDIServerConnection (deprecated)
3.調度、啟動workflows的接口
startWorkflow
startWorkflowEx
startWorkflowFromTask
stopWorkflow
scheduleWorkflow
unscheduleWorkflow
waitTillWorkflowComplete
4.啟動、停止Tasks的接口
recoverWorkflow
resumeWorkflow (deprecated)
startTask
stopTask
waitTillTaskComplete
5.獲得Session監控、統計的接口
getNextLogSegment (deprecated)
getSessionLog
getSessionPerformanceData
getSessionStatistics
getTaskDetails
getTaskDetailsEx
getWorkflowDetails
getWorkflowDetailsEx
getWorkflowLog
monitorDIServer
startSessionLogFetch (deprecated)
startWorkflowLogFetch (deprecated)
25.3 web service Provider
web service Provider:是將PowerCenter的相關對象發布成Web Service的過程。
用途:分享數據和結果。
在PowerCenter中可以將轉換組件、Mapplet、Mapping發布成Web Service。
例子1:用可重用轉換組件計算x+100,並發布為Web Service。
1.創建一個Reusable Transformation完成x+100的邏輯
在“D”客戶端選擇Transformation Developer,將表達式組件(f(x))拖入進來並命名為exp_add100,
創建輸入變量IN_VAR,和輸出變量OUT_VAR=N_VAR+100。
2.創建一個支持Web Service的Mapping
在“D”客戶端選擇"映射--》創建Web服務映射",有3個選項分別為:從WSDL導入、使用源/目標定義、使用轉換/Mapplet定義;
選擇“使用轉換/Mapplet定義”,選擇第一步創建的exp_add100組件(即將exp_add100組件發布成Web Service)。
自動創建的Mapping中帶有源和目標,這是PowerCenter對Web Service的封裝。
3.創建Workflow,並將其發布為一個Web Service
在“W”客戶端創建Workflow,“工作流--》向導--》輸入名稱w_add100---》選擇映射M_exp_add100--》下一步至完成”。
如果Mapping中使用了數據庫對象,則需要指定數據庫連接;
如果Mapping中使用了文本,則需要指定目錄和文件名。
配置工作流, “工作流--》編輯“,在”Web服務“后勾選”啟用“,並點擊”配置服務“,
服務名稱Service Name:發布的Web Service名稱,可以是任意字符串。
超時Timeout(秒Seconds):從web service hub獲取到請求開始到產生響應的最大等待時間,如果超過該時間仍無法響應,將發送失敗信息給客戶端。
服務時間閾值Service Time Threshold(毫秒Milliseconds):單個請求的處理時間,如果超過則啟用另一個實例來處理后續請求。
web service hubs:指定運行此workflow的web service hub,默認使用所有的web service hub。
每個Hub的最大運行計數Maximum Run Count per Hub:每個web service hub可以啟動的web services實例數。
受保護:啟動或運行Web Service需要提供授權信息(即輸入用戶名和密碼)。只有擁有Workflow權限的用戶才可以請求Web Service。
可見:決定Web Service是否在web service hub上是否可見。建議勾選。
可運行:允許Web Service請求啟動Web Service Workflow。建議勾選。
登陸web service hub,http://sc-201709251400:7333/wsh
在有效WebService中看到上面發布的BI_Add100,並可以對其進行測試和調用。
Try-It:是PowerCenter提供的Web Service測試工具,可以測試Web Service邏輯功能。
WSDL:提供了調用Web Service的WSDL定義和調用此Web Service的URL。
例子2:將DEPT表發布為Web Service,輸入部門編號,輸出部門的相關信息。
1.創建支持Web Service的Mapping模板
在“D”客戶端選擇"映射--》創建Web服務映射--》使用源/目標定義",
輸出Web服務名稱”Query_DEPT“,選擇源端口"DEPTNO",選擇目標端口”DEPTNO、DNAME、LOC“,點確定自動生成Mapping。
2.增加Lookup組件后保存Mapping。
使用Lookup組件查找DEPT表為目標表賦值。
3.創建Workflow,並將其發布為Web Service。
例子3:對已有的WSDL(Web Service Definition Language)定義一個Web Service。
1.導入源和目標
”源--》web service Provider--》從WSDL導入“。
2.完成源和目標的映射。
3.創建Workflow,並將其發布為Web Service。
25.4 web service Consumer
web service Consumer是PowerCenter提供的一個轉換組件,用於訪問外部提供的Web Service。
例子:調用Web Service(WS_Add100)
1.開發mapping ,調用Web Service(WS_Add100)
打開web service Hub,獲取WSDL調用的URL(向Web Service提供方索要):
http://sc-201709251400:7333/wsh/services/RealTime/WS_Add100
http://sc-201709251400:7333/wsh/services/RealTime/WS_2
拖入源表和目標表(目標表和源表都是EMP表),
拖入web service Consumer轉換組件(提示:沒有許可證),
在地址欄輸入WSDL的URL,點擊”打開“,選擇Operations,點”下一步“直到完成。
將SQ中的sal與web service Consumer的輸入端口n_IN_VAR連接,
將web service Consumer的輸出端口n_OUT_VAR與目標表的sal連接即可。
2.如何應對Pass Through字段
除SAL字段外,其它字段不能關聯?
雙擊web service Consumer組件,打開web service Consumer Properties頁簽,
點擊”Add Pass-Through Port“按鈕,將目標表的其他字段添加進來;
這時看到web service Consumer組件輸入端口新增了其他字段,輸出端口仍沒有添加;
選中web service Consumer組件的標題部分,單擊右鍵,在右鍵菜單中選擇”WSDL WorkSpace--》Output Mode“,
進入XML Editor,再選擇標題欄,單擊右鍵,在右鍵菜單中選擇”Add a Reference Port",在彈出框中選中其余字段按”OK“;
保存、退出。輸出端口已添加其余字段,字段命名前綴Ref_。
進入Mapping編輯界面,關聯相關輸入輸出字段,完成Mapping。
26.pushdown optimization
將部分ETL的負載轉移到數據倉庫服務器上。
26.1 pushdown優化是什么
PowerCenter的執行原理:
1.PowerCenter從存儲庫中讀取元數據;
2.PowerCenter的DTM引擎解析讀取的元數據(DTM引擎在PowerCenter服務器上執行)。
pushdown功能試圖將Mapping轉換為一組SQL,並將SQL推送到數據庫服務器上執行。
理論上,所有的Mapping均可以轉換為SQL;
實際上,PowerCenter並沒有將所有的Mapping或Mapping中的所有組件都轉換為SQL;
而是根據不同的類型,部分轉化為SQL,以期望獲得最大的系統性能。
26.2 pushdown優化類型
在Session--》映射 中未發現pushdown左側樹(起始頁和連接中間未發現pushdown)。
pushdown選項:
To Source:集成服務從源向目標分析Mapping,直到遇到下一個組件無法下推到源時,則將前面的所有組件生成的SQL下推到源系統。
To Target:集成服務從目標向源分析Mapping,直到遇到一個上游的組件無法下推到目標時,則將后面的所有組件生成的SQL下推到目標系統。
Full:集成服務從源和目標兩側分析Mapping,盡力將Mapping下推到數據庫中。
如果一條SQL能解決,則需要一個pushdown Group:Insert into 目標表 (列) select 列 from 源表;
如果一條SQL不能解決,則需要兩個pushdown Group:select 列 from 源表; insert into 目標表 (列);
$$PushdownConfig:根據數據庫負載,動態的選擇To Source、To Target、Full。
Pushdown Optimization左側樹只是預覽窗口,需要在session-->屬性頁簽進行配置:
Pushdown Optimization=To Source/To Target/Full/$$PushdownConfig 未發現該屬性
Allow Temporary View for Pushdown:允許PowerCenter在數據庫中創建臨時的視圖;利用關系源數據庫中的計算資源時創建臨時數據庫視圖。
Allow Temporary Sequence for Pushdown:允許PowerCenter在數據庫中創建臨時的序列;利用關系源數據庫中的計算資源時創建臨時數據庫序列。
Allow Pushdown for User Incompatible Connections:使用不同的用戶名跨各個連接利用計算資源。
27.版本控制及部署
Team Based Development功能包括版本管理、團隊開發及部署相關支持。
在使用Team Based Development功能時需要打開控制台存儲庫--》屬性頁中的Version Control選項。
將Version Control設置為true,即啟動了版本控制。
27.1 check in簽入/check out 簽出
對新開發並測試完成的對象(mapping,session,workflow)需要進行簽入操作,、
“版本控制--》簽入”,被簽入的對象不可以被修改。
如果需要修改時,則需要先將對象簽出(“版本控制--》簽出”)。
同一時間同一對象只能由一個開發人員進行簽出並修改。
27.2 Team-Based開發的一些有用功能
在“版本控制“下除”簽入、簽出”,還有“查看歷史紀錄、與先前版本對比”等功能;
點擊"查看歷史紀錄(View History)",在看歷史紀錄頁面,
“工具--》比較--》以前版本” :可以進行對象比較,
在“實例頁簽”可以看到Mapping中的對象,雙擊某個對象可以對比兩個版本之間該對象的差異。
這是PowerCenter元數據驅動架構的優勢,它可以跟蹤到一個表達式或一個字段的更改。
“工具--》查看相關性(View Dependency)” ,查看與當前對象有關聯的所有源、目標、轉換、映射、會話、工作流、mapplet、工作集、用戶定義的函數。
如果當前對象更改或刪除,與之有關聯的對象將可能失效。
27.3 Label與Deployment Group
PowerCenter提供了4種部署方案:
使用部署組(Deployment Group)支持部署;
使用pmrep命令進行部署;
使用圖形化拖拽的方式進行部署;
與第三方軟件配置管理、部署工具進行集成。
1.使用標簽,並進行部署
定義標簽:R客戶端--》版本控制--》標簽--》新建,輸入標簽名,點確定。
定義好標簽后,就可以給測試好的mapping或其他對象使用標簽了。
使用標簽:R客戶端--》版本控制--》應用標簽--》打開了標簽向導,下一步--》
選擇對象,選中某個對象后點添加,下一步--》
選擇標簽,勾選“為所有子項添加標簽”后,點“完成”。
根據標簽過濾:以標簽為過濾條件使用部署組進行部署。
部署組是將要進行部署的對象整合到一個管理對象中的一種機制。
部署組類型分為:靜態的部署組、動態的部署組。
靜態的部署組中物理地包含具體的PowerCenter的對象。
動態的部署組包含的是一個查詢對應的對象集合,滿足查詢條件的所有對象都屬於這個部署組。
創建部署組:R客戶端--》工具--》部署--》組--》新建
或者選中左側樹中的部署組點右鍵--》新建組,
選擇組類型(靜態、動態),如果選擇的是靜態部署組,只需要填寫組名(如:Static_deploy_Group)即可;
如果選擇的是動態部署組,除填寫組名(如:Dynamic_deploy_Group)外,還需要指定一組查詢條件。
點查詢,彈出查詢瀏覽器,點新建,彈出查詢編輯器,參數名稱選“Lable”,運算符選“Contains”,值1輸入標簽名“正式”,
查詢名稱修改為“Lable正式”,點保存並關閉此頁面;繼續選擇“Lable正式”點關閉;
查詢名稱值被帶入,修改組名“Dynamic_deploy_Group_正式”,並點確定。
左側樹中部署組內可以看到新添加的組,名稱帶(數字)的是靜態組,名稱帶(Dynamic)是動態組。
靜態組可以雙擊打開,動態組可以選中--》右鍵--》查看內容 打開。
靜態組的內容可以從對象處直接拖入,動態組的內容可以給對象添加標簽,再通過標簽查詢獲得。
27.4 復制對象從開發Repository到生產Repository
PowerCenter的每個客戶端都有導入、導出功能,可以在不同的存儲庫之間復制對象。
建議在R客戶端從開發Repository直接拖拽部署組到生產Repository。
從開發Repository向生產Repository部署的兩種方式:
使用pmrep命令部署(后續介紹);
使用圖形化拖拽方式部署。
可以拖拽部署的對象包括:
開發對象:Source、Target、Mapping、Session、Workflow等;
文件夾Folder;
部署組Deployment Group。
拖拽部署注意事項:
拖拽一個對象到生產Repository時,應該將對象放入對應的文件夾中;
拖拽一個文件夾或部署組時,應該將文件夾或部署組放到Repository上,而不是具體的文件夾或部署組上。