在SSIS的數(shù)據(jù)流組件中,SSIS引擎使用Merge Join組件和 Lookup組件實(shí)現(xiàn)TSQL語句中的inner join 和 outer join 功能,Lookup查找組件的功能更類似TSQL的Exists關(guān)鍵字,只檢查數(shù)據(jù)是否存在。在SSIS引擎中,任何流經(jīng)數(shù)據(jù)流(Data Flow)組件的數(shù)據(jù)都會被加載到服務(wù)器內(nèi)存的數(shù)據(jù)緩沖區(qū)中,數(shù)據(jù)緩沖區(qū)能夠容納的數(shù)據(jù)量決定了轉(zhuǎn)換組件的性能。

一,轉(zhuǎn)換組件的結(jié)構(gòu)

1,Lookup轉(zhuǎn)換組件有一個輸入(Input),一個查找表(或叫緩存表,引用表),映射關(guān)系和多個輸出(Output)

映射關(guān)系是指Lookup轉(zhuǎn)換組件的輸入(Input)列和查找列之間的相等關(guān)系,定義了輸入和引用表之間按照什么條件進(jìn)行匹配,相當(dāng)于定義Join子句的On條件;在創(chuàng)建映射關(guān)系時,用戶需要顯式指定一個或多個映射關(guān)系,就是說,用戶需要指定哪些Input列和查找列之間具有相等關(guān)系。

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

Lookup組件查找的過程是:對于輸入(Input)中的每一個數(shù)據(jù)行,根據(jù)映射關(guān)系,對查找表進(jìn)行全表查找;如果該數(shù)據(jù)行能夠在查找表中找到相應(yīng)的鍵值,那么該數(shù)據(jù)行匹配成功,從“Lookup Match Output” 路徑輸出到下游組件;如果不能在查找表中找到相應(yīng)的鍵值,那么該數(shù)據(jù)行匹配失敗,從“Lookup No Match Output”路徑輸出到下游組件。

由于輸入中每一個行數(shù)據(jù)都會查找整個緩存表,因此,如果將查找表數(shù)據(jù)緩存在內(nèi)存中,能夠提高Lookup組件的查找性能,Lookup轉(zhuǎn)換組件提供三種緩存模式來處理查找表的數(shù)據(jù):全部緩存在內(nèi)存,部分緩存在內(nèi)存中,每次都從數(shù)據(jù)源中讀取。如果查找表數(shù)據(jù)量少,請