




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、是否支持流行的數(shù)據(jù)存儲(chǔ),比如各種關(guān)系型數(shù)據(jù)庫(kù),文件數(shù)據(jù)存儲(chǔ)等2、是否在ETL過(guò)程中支持"事務(wù)"3、加載數(shù)據(jù)的性能,如十萬(wàn)條級(jí)別的數(shù)據(jù)的加載時(shí)間4、各種數(shù)據(jù)轉(zhuǎn)換的功能,自動(dòng)調(diào)度運(yùn)行等等測(cè)試分析測(cè)試點(diǎn):ETL常規(guī)檢查:LETL腳本是否有運(yùn)行錯(cuò)誤,腳本運(yùn)行時(shí)間(看執(zhí)行計(jì)劃).ETL腳本的錯(cuò)誤處理機(jī)制是否完整(代碼review).ETL腳本是否支持回滾業(yè)務(wù)邏輯檢查:.數(shù)據(jù)量的檢查。核對(duì)記錄數(shù)是否和預(yù)期一致.唯一性檢查。主鍵是否重復(fù)(cookie_id,member_id是否重復(fù)).業(yè)務(wù)字段轉(zhuǎn)換正確性檢查。指標(biāo)計(jì)算是否正確.抽樣檢查。需要注意的是這種參數(shù)表名包括databasetableinput或者executesqlscript,只要是參數(shù)作為表名的情況前面的輸入不能是從數(shù)據(jù)庫(kù)來(lái)的,應(yīng)為沒(méi)有辦法執(zhí)行這種preparedStatement語(yǔ)句,從數(shù)據(jù)庫(kù)來(lái)的值后面的操作是"值操作",而不是字符串替換,只有argument或者sequence操作當(dāng)作參數(shù)才是字符串替換.(這一點(diǎn)官方FAQ也有提到)updatetable和executesqlscript里面執(zhí)行update的區(qū)別執(zhí)行updatetable操作是比較慢的,它會(huì)一條一條基于comparekey對(duì)比數(shù)據(jù),然后決定是不是要執(zhí)行updatesql,如果你知道你要怎么更新數(shù)據(jù)盡可能的使用executesqlscript操作,在里面手寫(xiě)updatesql(注意源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)在哪),這種多行執(zhí)行方式(updatesql)肯定比單行執(zhí)行方式(updatetable操作)快的多。另一個(gè)區(qū)別是executesqlscript操作是可以接受參數(shù)的輸入的。它前面可以是一個(gè)跟它完全不關(guān)的表一個(gè)sql:selectfieldl,field2fieldsfromtableA后面執(zhí)行另一個(gè)表的更新操作:updatetableBsetfield4=?wherefield5=?Andfield6=?然后選中executesqlscript的executeforeachrow.注意參數(shù)是一一對(duì)應(yīng)的.(field4對(duì)應(yīng)fieldl的值,fields對(duì)應(yīng)field2的值,field6對(duì)應(yīng)field?的值)kettle的性能kettle本身的性能絕對(duì)是能夠應(yīng)對(duì)大型應(yīng)用的,一般的基于平均行長(zhǎng)150的一條記錄,假設(shè)源數(shù)據(jù)庫(kù),目標(biāo)數(shù)據(jù)庫(kù)以及kettle都分別在幾臺(tái)機(jī)器上(最常見(jiàn)的桌面工作模式,雙核,1G內(nèi)存),速度大概都可以到5000行每秒左右,如果把硬件提高一些,性能還可以提升,但是ETL過(guò)程中難免遇到性能問(wèn)題,下面一些通用的步驟也許能給你一些幫助.盡量使用數(shù)據(jù)庫(kù)連接池盡量提高批處理的commitsize盡量使用緩存,緩存盡量大一些(主要是文本文件和數(shù)據(jù)流)Kettle是Java做的,盡量用大一點(diǎn)的內(nèi)存參數(shù)啟動(dòng)Kettle.可以使用sql來(lái)做的一些操作盡量用sqlGroup,merge,streamlookup,splitfield這些操作都是比較慢的,想辦法避免他們.,能用sql就用sql插入大量數(shù)據(jù)的時(shí)候盡量把索引刪掉盡量避免使用update,delete操作,尤其是update,如果可以把update變成先delete,后insert.能使用truncatetable的時(shí)候,就不要使用deleteallrow這種類似sql合理的分區(qū)如果刪除操作是基于某一個(gè)分區(qū)的,就不要使用deleterow這種方式(不管是deletesql還是delete步驟)直接把分區(qū)drop掉,再重新創(chuàng)建盡量縮小輸入的數(shù)據(jù)集的大?。ㄔ隽扛乱彩菫榱诉@個(gè)目的)盡量使用數(shù)據(jù)庫(kù)原生的方式裝載文本文件(Oracle的sqlloader,mysql的bulkloader步驟)盡量不要用kettle的calculate計(jì)算步驟,能用數(shù)據(jù)庫(kù)本身的sql就用sql,不能用sql就盡量想辦法用procedure,實(shí)在不行才是calculate步驟.要知道你的性能瓶頸在哪,可能有時(shí)候你使用了不恰當(dāng)?shù)姆绞?,?dǎo)致整個(gè)操作都變慢,觀察kettlelog生成的方式來(lái)了解你的ETL操作最慢的地方。遠(yuǎn)程數(shù)據(jù)庫(kù)用文件+FTP的方式來(lái)傳數(shù)據(jù),文件要壓縮。(只要不是局域網(wǎng)都可以認(rèn)為是遠(yuǎn)程連接)描述物理環(huán)境源數(shù)據(jù)庫(kù)的操作系統(tǒng),硬件環(huán)境,是單數(shù)據(jù)源還是多數(shù)據(jù)源,數(shù)據(jù)庫(kù)怎么分布的,做ETL的那臺(tái)機(jī)器放在哪,操作系統(tǒng)和硬件環(huán)境是什么,目標(biāo)數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)庫(kù)是什么才桑作系統(tǒng),硬件環(huán)境,數(shù)據(jù)庫(kù)的字符集怎么選,數(shù)據(jù)傳輸方式是什么,開(kāi)發(fā)環(huán)境,測(cè)試環(huán)境和實(shí)際的生產(chǎn)環(huán)境有什么區(qū)別,是不是需要一個(gè)中間數(shù)據(jù)庫(kù)(staging數(shù)據(jù)庫(kù)),源數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)版本號(hào)是多少,測(cè)試數(shù)據(jù)庫(kù)的版本號(hào)是多少,真正的目標(biāo)數(shù)據(jù)庫(kù)的版本號(hào)是多少.……這些信息也許很零散,但是都需要一份專門(mén)的文檔來(lái)描述這些信息,無(wú)論是你遇到問(wèn)題需要?jiǎng)e人幫助的時(shí)候描述問(wèn)題本身,還是發(fā)現(xiàn)測(cè)試環(huán)境跟目標(biāo)數(shù)據(jù)庫(kù)的版本號(hào)不一致,這份專門(mén)的文檔都能提供一些基本的信息procedure為什么我不能觸發(fā)procedure?這個(gè)問(wèn)題在官方FAQ里面也有提到,觸發(fā)procedure和httpclient都需要一個(gè)類似與觸發(fā)器的條件,你可以使用generaterow步驟產(chǎn)生一個(gè)空的row,然后把這條記錄連上procedure步驟,這樣就會(huì)使這條沒(méi)有記錄的空行觸發(fā)這個(gè)procedure(如果你打算使用無(wú)條件的單次觸發(fā)),當(dāng)然procedure也可以象tableinput里面的步驟那樣傳參數(shù)并且多次執(zhí)行.另外一個(gè)建議是不要使用復(fù)雜的procedure來(lái)完成本該ETL任務(wù)完成的任務(wù),比如創(chuàng)建表,填充數(shù)據(jù),創(chuàng)建物化視圖等等.字符集Kettle使用Java通常使用的UTF8來(lái)傳輸字符集,所以無(wú)論你使用何種數(shù)據(jù)庫(kù),任何數(shù)據(jù)庫(kù)種類的字符集,kettle都是支持的,如果你遇到了字符集問(wèn)題,也許下面這些提示可以幫助你:.單數(shù)據(jù)庫(kù)到單數(shù)據(jù)庫(kù)是絕對(duì)不會(huì)出現(xiàn)亂碼問(wèn)題的,不管原數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)是何種種類,何種字符集.多種不同字符集的原數(shù)據(jù)庫(kù)到一個(gè)目標(biāo)數(shù)據(jù)庫(kù),你首先需要確定多種源數(shù)據(jù)庫(kù)的字符集的最大兼容字符集是什么如果你不清楚最好的辦法就是使用UTF8來(lái)創(chuàng)建數(shù)據(jù)庫(kù)..不要以你工作的環(huán)境來(lái)判斷字符集:現(xiàn)在某一個(gè)測(cè)試人員手上有一個(gè)oracle的基于XXX字符集的已經(jīng)存在的數(shù)據(jù)庫(kù),并且非常不幸的是XXX字符集不是utf8類型的,于是他把另一個(gè)基于yyy字符集的。racle數(shù)據(jù)庫(kù)要經(jīng)過(guò)某一個(gè)ETL過(guò)程轉(zhuǎn)換到。racle,后來(lái)他發(fā)現(xiàn)無(wú)論怎么樣設(shè)置都會(huì)出現(xiàn)亂碼,這是因?yàn)槟愕臄?shù)據(jù)庫(kù)本身的字符集不支持,無(wú)論你怎么設(shè)置都是沒(méi)用的.測(cè)試的數(shù)據(jù)庫(kù)不代表最后產(chǎn)品運(yùn)行的數(shù)據(jù)庫(kù),尤其是有時(shí)候?yàn)榱耸∈掳讯鄠€(gè)不同的項(xiàng)目的不相關(guān)的數(shù)據(jù)庫(kù)裝在同一臺(tái)機(jī)器上,測(cè)試的時(shí)候又沒(méi)有分析清楚這種環(huán)境,所以也再次強(qiáng)調(diào)描述物理環(huán)境的重要性..你所看到的不一定代表實(shí)際儲(chǔ)存的:mysql處理字符集的時(shí)候是要在jdbe連接的參數(shù)里面加上字符集參數(shù)的,而oracle則是需要服務(wù)器端和客戶端使用同一種字符集才能正確顯示,所以你要明確你所看到的字符集亂碼不一定代表真的就是字符集亂碼,這需要你檢查在轉(zhuǎn)換之前的字符集是否會(huì)出現(xiàn)亂碼和轉(zhuǎn)換之后是否出現(xiàn)亂碼,你的桌面環(huán)境可能需要變動(dòng)一些參數(shù)來(lái)適應(yīng)這種變動(dòng).不要在一個(gè)轉(zhuǎn)換中使用多個(gè)字符集做為數(shù)據(jù)源..預(yù)定義時(shí)間維Kettle提供了一個(gè)小工具幫助我們預(yù)填充時(shí)間維,這個(gè)工具在kettle_home/samples/transformations/General-populatedatedimension.這個(gè)示例產(chǎn)生的數(shù)據(jù)不一定能滿足各種需要,不過(guò)你可以通過(guò)修改這個(gè)示例來(lái)滿足自己的需求..SQLtab和Optionstab在你創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接的時(shí)候除了可以指定你一次需要初始化的連接池參數(shù)之外(在Pooling選項(xiàng)卡下面),還包括一個(gè)Options選項(xiàng)卡和一個(gè)SQL選項(xiàng)卡,Options選項(xiàng)卡里面主要設(shè)置一些連接時(shí)的參數(shù),比如autocommit是onoff,defaultFetchSize,useCursorFetch(mysql默認(rèn)支持的)Qracle還支持比如defaultExecuteBatch,oracle.jdbc.StreamBufferSize,oracle.jdbc.FreeMemoryOnEnterlmplicitCache,你可以查閱對(duì)應(yīng)數(shù)據(jù)庫(kù)所支持的連接參數(shù),另外一個(gè)小提示:在創(chuàng)建數(shù)據(jù)庫(kù)連接的時(shí)候,選擇你的數(shù)據(jù)庫(kù)類型然后選到Options選項(xiàng)卡,下面有一個(gè)Showhelptextonoptionsusage,點(diǎn)擊這個(gè)按鈕會(huì)把你帶到對(duì)應(yīng)各個(gè)數(shù)據(jù)庫(kù)的連接參數(shù)的官方的一個(gè)參數(shù)列表頁(yè)面,通過(guò)查詢這個(gè)列表頁(yè)面你就可以知道那種數(shù)據(jù)庫(kù)可以使用何種參數(shù)了.對(duì)于SQL選項(xiàng)卡就是在你一連接這個(gè)Connection之后,Kettle會(huì)立刻執(zhí)行的sql語(yǔ)句,個(gè)人比較推薦的一個(gè)sqI是執(zhí)行把所有日期格式統(tǒng)一成同一格式的sql,比如在oracle里面就是:altersessionsetnls_date_format=xxxxxxxxxxxxxaltersessionsetnls_xxxxxxxxx=xxxxxxxxxxxx這樣可以避免你在轉(zhuǎn)換的時(shí)候大量使用to_date(),to_char函數(shù)而僅僅只是為了統(tǒng)一日期格式,對(duì)于增量更新的時(shí)候尤其適用..數(shù)據(jù)復(fù)制有的時(shí)候可能我們需要的是類似數(shù)據(jù)復(fù)制或者一個(gè)備份數(shù)據(jù)庫(kù),這個(gè)時(shí)候你需要的是一種數(shù)據(jù)庫(kù)私有的解決方案,Kettle也許并不是你的第一選擇,比如對(duì)于Oracle來(lái)說(shuō),可能rman,oraclestream,oraclereplication等等,mysql也有mysqlrmaster/slave模式的replication等私有的解決方法,如果你確定你的需求不是數(shù)據(jù)集成這方面的,那么也許kettle并不是一個(gè)很好的首選方案,你應(yīng)該咨詢一下專業(yè)的DBA人士也會(huì)會(huì)更好..如何控制版本變更Kettle的每一個(gè)transformation和job都有一個(gè)version字段(在你保存的時(shí)候),不過(guò)這個(gè)功能還不實(shí)用,如果你需要版本控制的話,還是建議你將transformation和job轉(zhuǎn)換成文本文件保存,然后用svn或cvs或任意你熟悉的版本控制系統(tǒng)將其保存,kettle將在下一個(gè)版本加入版本控制的功能(做的更易用)..支持的數(shù)據(jù)源Kettle支持相當(dāng)廣的數(shù)據(jù)源,比如在數(shù)據(jù)庫(kù)里面的一些不太常見(jiàn)的Access,MaxDB(SAPDB),Hypersonic,SAPR/3system,BorlandInterbase,OracleRDB,Teradata和3.0新加入的SybaseIQ.另外還包括Excel,CSV,LDAP,以及OLAPServerMondrian,目前支持WebService不過(guò)暫時(shí)還不支持SOAP..調(diào)試和測(cè)試當(dāng)ETL轉(zhuǎn)換出現(xiàn)不可預(yù)知的問(wèn)題時(shí),或是你不清楚某個(gè)步驟的功能是什么的情況下,你可能需要?jiǎng)?chuàng)建一個(gè)模擬環(huán)境來(lái)調(diào)適程序,下面一些建議可能會(huì)有所幫助:盡量使用generaterow步驟或者固定的一個(gè)文本文件來(lái)創(chuàng)建一個(gè)模擬的數(shù)據(jù)源模擬的數(shù)據(jù)源一定要有代表性,數(shù)據(jù)集一定盡量小(為了性能考慮)但是數(shù)據(jù)本身要足夠分散.創(chuàng)建了模擬的數(shù)據(jù)集后你應(yīng)該清楚的知道你所要轉(zhuǎn)換之后的數(shù)據(jù)時(shí)什么樣的..錯(cuò)誤處理在ETL任務(wù)中由于數(shù)據(jù)問(wèn)題出現(xiàn)轉(zhuǎn)換錯(cuò)誤是一件非常正常的事情,你不應(yīng)該設(shè)計(jì)一個(gè)依賴于臨時(shí)表或者擁有事務(wù)特點(diǎn)的ETL過(guò)程,面對(duì)數(shù)據(jù)源質(zhì)量問(wèn)題的巨大挑戰(zhàn),錯(cuò)誤處理是并不可少的,kettle同樣提供非常方便的錯(cuò)誤處理方式,在你可能會(huì)出錯(cuò)的步驟點(diǎn)擊右鍵選擇DefineErrorhanding,它會(huì)要求你指定一個(gè)處理error的步驟,你可以使用文本文件或者數(shù)據(jù)庫(kù)的表來(lái)儲(chǔ)存這些錯(cuò)誤信息,這些錯(cuò)誤信息會(huì)包含一個(gè)id和一個(gè)出錯(cuò)的字段,當(dāng)你得到這些錯(cuò)誤信息之后就需要你自己分析出錯(cuò)的原因了,比如違反主鍵約束可能是你生成主鍵的方式有錯(cuò)誤或者本身的數(shù)據(jù)有重復(fù),而違反外鍵約束則可能是你依賴的一些表里面的數(shù)據(jù)還沒(méi)有轉(zhuǎn)換或者外鍵表本身過(guò)濾掉了這些數(shù)據(jù).當(dāng)你調(diào)整了這些錯(cuò)誤之后,確定所有依賴的數(shù)據(jù)都被正確的處理了kettleuserguide里面有更詳細(xì)的解釋,里面還附帶了一個(gè)使用javascript來(lái)處理錯(cuò)誤的示例,這種方式可以作為處理簡(jiǎn)單數(shù)據(jù)質(zhì)量的方式..文檔,文檔,文檔Kettle提供了豐富的文檔和使用手冊(cè),小到一個(gè)數(shù)據(jù)庫(kù)連接怎么連,大到一個(gè)功能怎么實(shí)現(xiàn),所有的參數(shù)列表,對(duì)話框的每一個(gè)輸入輸出代表什么意思都有解釋,所以當(dāng)你遇到問(wèn)題你應(yīng)該第一時(shí)間翻閱這些文檔,也許上面已經(jīng)告訴你怎么做了.另外kettle還有一個(gè)非?;钴S的社區(qū),你可以到上面提問(wèn),但是記住在你提問(wèn)之前先搜索一下論壇看有沒(méi)有類似的問(wèn)題已經(jīng)問(wèn)過(guò)了,如果沒(méi)有記得描述清楚你的問(wèn)題總結(jié)本系列文章主要討論了如何使用kettle來(lái)處理數(shù)據(jù)倉(cāng)庫(kù)中的緩慢增長(zhǎng)維,動(dòng)態(tài)ETL如何設(shè)計(jì),增量更新的一些設(shè)計(jì)技巧,在應(yīng)用程序中如何集成kettle以及在使用kettle時(shí)的一些常見(jiàn)問(wèn)題.如果你正在尋找一個(gè)工具來(lái)幫助你解決數(shù)據(jù)庫(kù)的集成問(wèn)題或是你打算建立一個(gè)商業(yè)智能項(xiàng)目的數(shù)據(jù)倉(cāng)庫(kù),那么kettle是一個(gè)不錯(cuò)的選擇,你不用支付任何費(fèi)用就可以得到很多很多數(shù)據(jù)集成的特性,大量文檔和社區(qū)支持.難道這些不就是你希望從一個(gè)商業(yè)工具上的到的嗎?還在等什么,開(kāi)始你的數(shù)據(jù)集成之旅吧關(guān)于PDI性能的簡(jiǎn)單測(cè)試作者:PDI()發(fā)表于:2008.07.1521:31分類:PDI使用出處:PDI使用了下面的技術(shù)來(lái)提高性能:.數(shù)據(jù)庫(kù)連接池。.多線程并發(fā)進(jìn)行數(shù)據(jù)轉(zhuǎn)換:轉(zhuǎn)換步驟是并發(fā)執(zhí)行的,使用生產(chǎn)者/消費(fèi)者的模式,每個(gè)步驟由一個(gè)線程來(lái)執(zhí)行,當(dāng)前步驟將一次處理完的數(shù)據(jù)放在緩存里,由下一個(gè)步驟的線程讀取并再處理這些數(shù)據(jù)。.數(shù)據(jù)批量裝載:表輸出步驟中設(shè)置批量裝載。.對(duì)于某些數(shù)據(jù)庫(kù)還利用了數(shù)據(jù)庫(kù)自身提供的裝載工具,如Oracle的SQLLoader.在PDI3.1中提供了該功能。.集群:主服務(wù)器(masterserver)將大任務(wù)分解為多個(gè)小任務(wù),并將要處理的數(shù)據(jù)通過(guò)soket發(fā)送到從服務(wù)器(slaveserver),由多個(gè)從服務(wù)器同時(shí)處理.從服務(wù)器需要啟動(dòng)carte服務(wù),以便建立連接接受數(shù)據(jù)。一個(gè)簡(jiǎn)單的性能測(cè)試:測(cè)試環(huán)境:CPU1.5GMemory1GOSWindows2000PDI3.1Oracle9i10/100M以太網(wǎng)測(cè)試內(nèi)容:從一臺(tái)機(jī)器的Oracle向另一臺(tái)機(jī)器的Oracle遷移數(shù)據(jù)測(cè)試結(jié)果:.當(dāng)使用普通的tableoutput輸出步驟立匕量裝載設(shè)置為500,平均速度達(dá)到7998條記錄/秒..當(dāng)使用SQLLoader輸出步驟,平均速度達(dá)到10021條記錄/秒線程同步問(wèn)題酉己置svn在redhat2011-07-29源表和目標(biāo)表各取一定數(shù)量記錄,判斷字段映射是否正確(映射字段)。指標(biāo)計(jì)算是否正確(指標(biāo)計(jì)算字段)4.隨機(jī)性驗(yàn)證(隨機(jī)取幾條數(shù)據(jù),看是否有亂碼,異常數(shù)據(jù)等。測(cè)試重點(diǎn)項(xiàng)目中的關(guān)鍵業(yè)務(wù),復(fù)雜邏輯部分作為測(cè)試重點(diǎn)用例劃分說(shuō)明:按每個(gè)指標(biāo)設(shè)計(jì)用例。測(cè)試策略:測(cè)試策略:增量測(cè)試(逐步提交測(cè)試)測(cè)試方法:基于查詢的測(cè)試(預(yù)期結(jié)果基于sql來(lái)展現(xiàn),做到數(shù)據(jù)變化,結(jié)果不變。另外便于回歸)2、標(biāo)準(zhǔn)數(shù)據(jù)集構(gòu)建造數(shù)據(jù)分2個(gè)方面,1個(gè)是直接抽取線上的數(shù)據(jù)1個(gè)是用腳本造異常數(shù)據(jù)。利用dblink抽取線上的數(shù)據(jù)。抽取線上數(shù)據(jù)時(shí),需要注意,測(cè)試數(shù)據(jù)的全面性。即測(cè)試數(shù)據(jù)全面覆蓋。比如sex字段,在抽取線上數(shù)據(jù)時(shí),需要抽取到ETL的一些概念(轉(zhuǎn))AnalysisWhatisalogicaldatamappingandwhatdoesitmeantotheETLteam?什么是邏輯數(shù)據(jù)映射?它對(duì)ETL項(xiàng)目組的作用是什么?答:邏輯數(shù)據(jù)映射(LogicalDataM叩)用來(lái)描述源系統(tǒng)的數(shù)據(jù)定義、目標(biāo)數(shù)據(jù)倉(cāng)庫(kù)的模型以及將源系統(tǒng)的數(shù)據(jù)轉(zhuǎn)換到數(shù)據(jù)倉(cāng)庫(kù)中需要做操作和處理方式的說(shuō)明文檔,通常以表格或Excel的格式保存如下的信息:目標(biāo)表名:目標(biāo)列名:目標(biāo)表類型:注明是事實(shí)表、維度表或支架維度表。SCD類型:對(duì)于維度表而言。源數(shù)據(jù)庫(kù)名:源數(shù)據(jù)庫(kù)的實(shí)例名,或者連接字符串。源表名:源列名:轉(zhuǎn)換方法:需要對(duì)源數(shù)據(jù)做的操作,如Sum(amount)等。邏輯數(shù)據(jù)映射應(yīng)該貫穿數(shù)據(jù)遷移項(xiàng)目的始終,在其中說(shuō)明了數(shù)據(jù)遷移中的ETL在進(jìn)行物理數(shù)據(jù)映射前進(jìn)行邏輯數(shù)據(jù)映射對(duì)ETL項(xiàng)目組是重要的,它起著元數(shù)據(jù)的作用。項(xiàng)目中最好選擇能生成邏輯數(shù)據(jù)映射的數(shù)據(jù)遷移工具。Whataretheprimarygoalsofthedatadiscoveryphaseofthedatawarehouseproject?在數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目中,數(shù)據(jù)探索階段的主要目的是什么?答:在邏輯數(shù)據(jù)映射進(jìn)行之前,需要首先對(duì)所有的源系統(tǒng)進(jìn)行分析。對(duì)源系統(tǒng)的分析通常包括兩個(gè)階段,一個(gè)是數(shù)據(jù)探索階段(DataDiscoveryPhase),另一個(gè)是異常數(shù)據(jù)檢測(cè)階段。數(shù)據(jù)探索階段包括以下內(nèi)容:.收集所有的源系統(tǒng)的文檔、數(shù)據(jù)字典等內(nèi)容。.收集源系統(tǒng)的使用情況,如誰(shuí)在用、每天多少人用、占多少存儲(chǔ)空間等內(nèi)容。.判斷出數(shù)據(jù)的起始來(lái)源(System-of-Record\.通過(guò)數(shù)據(jù)概況(DataProfiling)來(lái)對(duì)源系統(tǒng)的數(shù)據(jù)關(guān)系進(jìn)行分析。數(shù)據(jù)探索階段的主要目的是理解源系統(tǒng)的情況,為后續(xù)的數(shù)據(jù)建模和邏輯數(shù)據(jù)映射打下堅(jiān)實(shí)的基礎(chǔ)。Howisthesystem-of-recorddetermined?如何確定起始來(lái)源數(shù)據(jù)?這個(gè)問(wèn)題的關(guān)鍵是理解什么是System-of-RecordoSystem-of-Record和數(shù)據(jù)倉(cāng)庫(kù)領(lǐng)域內(nèi)的其他很多概念一樣,不同的人對(duì)它有不同的定義。在Kimball的體系中,System-of-Record是指最初產(chǎn)生數(shù)據(jù)的地方,即數(shù)據(jù)的起始來(lái)源。在較大的企業(yè)內(nèi),數(shù)據(jù)會(huì)被冗余的保存在不同的地方,在數(shù)據(jù)的遷移過(guò)程中,會(huì)出現(xiàn)修改、清洗等操作,導(dǎo)致與數(shù)據(jù)的起始來(lái)源產(chǎn)生不同。起始來(lái)源數(shù)據(jù)對(duì)數(shù)據(jù)倉(cāng)庫(kù)的建立有著非常重要的作用,尤其是對(duì)產(chǎn)生一致性維度來(lái)說(shuō)。我們從起始來(lái)源數(shù)據(jù)的越下游開(kāi)始建立數(shù)據(jù)倉(cāng)庫(kù),我們遇到垃圾數(shù)據(jù)的風(fēng)險(xiǎn)就會(huì)越大。ArchitectureWhatarethefourbasicDataFlowstepsofanETLprocess?在ETL過(guò)程中四個(gè)基本的過(guò)程分別是什么?Kimball數(shù)據(jù)倉(cāng)庫(kù)構(gòu)建方法中,ETL的過(guò)程和傳統(tǒng)的實(shí)現(xiàn)方法有一些不同,主要分為四個(gè)階段,分別是抽?。╡xtract\清洗(clean\一致性處理(comform)和交付(delivery),簡(jiǎn)稱為ECCDO.抽取階段的主要任務(wù)是:讀取源系統(tǒng)的數(shù)據(jù)模型。連接并訪問(wèn)源系統(tǒng)的數(shù)據(jù)。變化數(shù)據(jù)捕獲。抽取數(shù)據(jù)到數(shù)據(jù)準(zhǔn)備區(qū)。.清洗階段的主要任務(wù)是:清洗并增補(bǔ)列的屬性。清洗并增補(bǔ)數(shù)據(jù)結(jié)構(gòu)。清洗并增補(bǔ)數(shù)據(jù)規(guī)則。增補(bǔ)復(fù)雜的業(yè)務(wù)規(guī)則。建立元數(shù)據(jù)庫(kù)描述數(shù)據(jù)質(zhì)量。將清洗后的數(shù)據(jù)保存到數(shù)據(jù)準(zhǔn)備區(qū)。.一致性處理階段的主要任務(wù)是:一致性處理業(yè)務(wù)標(biāo)簽,即維度表中的描述屬性。一致性處理業(yè)務(wù)度量及性能指標(biāo),通常是事實(shí)表中的事實(shí)。去除重復(fù)數(shù)據(jù)。國(guó)際化處理。將一致性處理后的數(shù)據(jù)保存到數(shù)據(jù)準(zhǔn)備區(qū)。.交付階段的主要任務(wù)是:加載星型的和經(jīng)過(guò)雪花處理的維度表數(shù)據(jù)。產(chǎn)生日期維度。加載退化維度。加載子維度。加載1、2、3型的緩慢變化維度。處理遲到的維度和遲到的事實(shí)。加載多值維度。加載有復(fù)雜層級(jí)結(jié)構(gòu)的維度。加載文本事實(shí)到維度表。處理事實(shí)表的代理鍵。加載三個(gè)基本類型的事實(shí)表數(shù)據(jù)。加載和更新聚集。將處理好的數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)。從這個(gè)任務(wù)列表中可以看出,ETL的過(guò)程和數(shù)據(jù)倉(cāng)庫(kù)建模的過(guò)程結(jié)合的非常緊密。換句話說(shuō),ETL系統(tǒng)的設(shè)計(jì)應(yīng)該和目標(biāo)表的設(shè)計(jì)同時(shí)開(kāi)始。通常來(lái)說(shuō),數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)師和ETL系統(tǒng)設(shè)計(jì)師是同一個(gè)人。5.Whatarethepermissibledatastructuresforthedatastagingarea?Brieflydescribetheprosandconsofeach.在數(shù)據(jù)準(zhǔn)備區(qū)中允許使用的數(shù)據(jù)結(jié)構(gòu)有哪些?各有什么優(yōu)缺點(diǎn)?答:.固定格式的文本文件。(FlatFile)FlatFile指的是一種保存在系統(tǒng)上的一種文本文件格式,它以類似數(shù)據(jù)庫(kù)的表的方式用行和列來(lái)保存數(shù)據(jù)。這種文件格式經(jīng)常用來(lái)進(jìn)行數(shù)據(jù)交換。用于保存數(shù)據(jù)不太合適。.XML數(shù)據(jù)集。多用于數(shù)據(jù)交換,用戶保存數(shù)據(jù)不太合適。.關(guān)系數(shù)據(jù)庫(kù)的表。保存數(shù)據(jù)的較理想選擇。.獨(dú)立的數(shù)據(jù)庫(kù)表。獨(dú)立的數(shù)據(jù)庫(kù)表一般指建立的表和其他表沒(méi)有外鍵約束關(guān)系。這樣的表多用于數(shù)據(jù)處理。.三范式或者關(guān)系型模型。.非關(guān)系型數(shù)據(jù)源。非關(guān)系型數(shù)據(jù)源一般包括COBOLcopybooks.VSAM文件、Flat文件、Spreadsheets等。.維度模型。.原子事實(shí)表和聚集事實(shí)表。.代理鍵查找表。WhenshoulddatabesettodiskforsafekeepingduringtheETL?簡(jiǎn)述ETL過(guò)程中哪個(gè)步驟應(yīng)該出于安全的考慮將數(shù)據(jù)寫(xiě)到磁盤(pán)上?答:Staging的意思就是將數(shù)據(jù)寫(xiě)到磁盤(pán)上。出于安全及ETL能方便重新開(kāi)始,在數(shù)據(jù)準(zhǔn)備區(qū)(StagingArea)中的每個(gè)步驟中都應(yīng)該將數(shù)據(jù)寫(xiě)到磁盤(pán)上,即生成文本文件或者將建立關(guān)系表保存數(shù)據(jù),而不應(yīng)該以數(shù)據(jù)不落地方式直接進(jìn)行ETL。例如,在數(shù)據(jù)抽取階段,我們需要連接到源系統(tǒng),為了對(duì)源系統(tǒng)的影響盡量小,我們需要將抽取的數(shù)據(jù)保存成文本文件或者放入數(shù)據(jù)準(zhǔn)備區(qū)的表中,這樣,當(dāng)ETL過(guò)程出現(xiàn)錯(cuò)誤而失敗時(shí),我們就可以從這些文本文件開(kāi)始ETL,而不需要再次影響源系統(tǒng)。male,female情況,而不能僅僅是male或female,這樣測(cè)試數(shù)據(jù)就會(huì)缺失。對(duì)于有關(guān)聯(lián)的表進(jìn)行數(shù)據(jù)抽取時(shí),可以先抽取主表,然后根據(jù)主表的數(shù)據(jù)有條件的抽取子表。3.2造異常數(shù)據(jù),異常數(shù)據(jù)可以從下面幾個(gè)方面進(jìn)行考慮:字段類型、字段長(zhǎng)度、空值、業(yè)務(wù)異常值、唯一約束值3、測(cè)試用例設(shè)計(jì)測(cè)試用例可以單獨(dú)設(shè)計(jì),也可以采用調(diào)度的思想進(jìn)行設(shè)計(jì),采用調(diào)度方法進(jìn)行設(shè)計(jì)時(shí),能一次驗(yàn)證多個(gè)用例,另外也方便回歸。這里說(shuō)一下調(diào)度思想的測(cè)試用例的設(shè)計(jì)思路。設(shè)計(jì)思路:個(gè)人的一些想法:就像文中所說(shuō)的,由于每個(gè)人的配置不一樣,可能你精通kettle,所以你測(cè)試出來(lái)的結(jié)果kettle會(huì)比較快,如果你精通talend,可能talend測(cè)試出來(lái)的比較快,所以一味的比較速度沒(méi)有意思,沒(méi)有辦法在統(tǒng)一環(huán)境下測(cè)試.另外就是個(gè)人覺(jué)得ETL工具的性能并不是ETL工具最先考慮的東西,功能和易用性和可管理性才是最重要的,kettle在功能和易用性上得分比較高,可管理性則是很一般.ExtractDescribetechniquesforextractingfromheterogeneousdatasources.簡(jiǎn)述異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)抽取技術(shù)。答:在數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目中,需要抽取的數(shù)據(jù)經(jīng)常來(lái)自不同的數(shù)據(jù)源,它們的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)都可能不同,即稱之為異構(gòu)數(shù)據(jù)源。在對(duì)異構(gòu)數(shù)據(jù)源進(jìn)行整合抽取時(shí),我們需要做的事情依次是標(biāo)識(shí)出所有的源系統(tǒng),對(duì)源系統(tǒng)進(jìn)行概況分析,定義數(shù)據(jù)匹配邏輯,建立篩選規(guī)則,生成一致性維度。對(duì)于源數(shù)據(jù)的操作系統(tǒng)平臺(tái)和數(shù)據(jù)平臺(tái)各不相同的情況,我們需要根據(jù)實(shí)際情況來(lái)確定如何進(jìn)行數(shù)據(jù)抽取,通常的方法有建立ODBC連接、定義接口文件、建立DBLINK等方法。WhatisthebestapproachforhandlingERPsourcedata?從ERP源系統(tǒng)中抽取數(shù)據(jù)最好的方法是什么?答:ERP系統(tǒng)的產(chǎn)生是為了解決企業(yè)內(nèi)異構(gòu)數(shù)據(jù)的整合。這個(gè)問(wèn)題也是數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)面臨的主要問(wèn)題。ERP的解決方案是將企業(yè)內(nèi)的各個(gè)應(yīng)用包括銷售、會(huì)計(jì)、人力資源、庫(kù)存和產(chǎn)品等)建立在相同的平臺(tái)和相同的應(yīng)用框架下,即在應(yīng)用操作層將企業(yè)內(nèi)的數(shù)據(jù)進(jìn)行了一致性處理。而數(shù)據(jù)倉(cāng)庫(kù)是在應(yīng)用操作層之上建立一致性的規(guī)則并進(jìn)行一致性處理。目前比較流行的ERP系統(tǒng)有SAP、Peoples。代、Oracle.Baan和J.D.EDwards(大部分沒(méi)接觸過(guò)\如果企業(yè)內(nèi)只有一套ERP系統(tǒng),那么數(shù)據(jù)就已經(jīng)是一致的了,為數(shù)據(jù)抽取提供了方便。如果企業(yè)內(nèi)除了ERP外還有其他系統(tǒng),則數(shù)據(jù)抽取會(huì)變得復(fù)雜。因?yàn)槟壳暗腅RP系統(tǒng)的數(shù)據(jù)模型都非常復(fù)雜,可能有幾百幾千個(gè)表,并且較難理解。直接在ERP系統(tǒng)上建立數(shù)據(jù)捕獲和抽取是非常復(fù)雜的。最好的辦法是購(gòu)買能針對(duì)ERP系統(tǒng)數(shù)據(jù)抽取提供功能的ETL工具,將ERP內(nèi)部的復(fù)雜性留給ETL廠商處理。ExplaintheprosandconsofcommunicatingwithdatabasesnativelyversusODBC.簡(jiǎn)述直接連接數(shù)據(jù)庫(kù)和使用ODBC連接數(shù)據(jù)庫(kù)進(jìn)行通訊的優(yōu)缺點(diǎn)。答:通常連接數(shù)據(jù)庫(kù)的方式分為兩類,一類是直接連接,另一類是通過(guò)ODBC連接。直接連接的方式主要是通過(guò)COBOL、PL/SQL、Transact-SQL等方式連接數(shù)據(jù)庫(kù)。這種方式的優(yōu)點(diǎn)是運(yùn)行性能高,可以使用DBMS提供的一些特殊功能。缺點(diǎn)是通用性差。ODBC是為windows應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù)提供的一組接口。ODBC的優(yōu)點(diǎn)是靈活性,通過(guò)改變驅(qū)動(dòng)和連接方式可以使用不同的數(shù)據(jù)庫(kù)。ODBC方式的缺點(diǎn)是性能差。使用ODBC連接方式實(shí)現(xiàn)ETL的話,在ETL程序和至少要有兩層,分另(!是ODBCManager層和ODBCDriver層。另外,使用ODBC方式不能使用DBMS提供的一些特殊的功能。Describethreechangedatacapture(CDC)practicesandtheprosandconsofeach.簡(jiǎn)述出三種變化數(shù)據(jù)捕獲技術(shù)及其優(yōu)缺點(diǎn)。答:變化數(shù)據(jù)捕獲(CDC)技術(shù)是ETL工作中的重點(diǎn)和難點(diǎn),通常需要在增量抽取時(shí)完成。實(shí)現(xiàn)變化數(shù)據(jù)捕獲時(shí)最理想的是找到源系統(tǒng)的DBAO如果不能找到,就需要ETL項(xiàng)目組自己進(jìn)行檢測(cè)數(shù)據(jù)的變化。下面是一些常用的技術(shù)。.采用審計(jì)列審計(jì)列指表中如“添加日期"、"修改日期〃、“修改人”等信息的字段。應(yīng)用程序在對(duì)該表的數(shù)據(jù)進(jìn)行操作時(shí),同時(shí)更新這些字段,或者建立觸發(fā)器來(lái)更新這些字段。采用這種方式進(jìn)行變化數(shù)據(jù)捕獲的優(yōu)點(diǎn)是方便,容易實(shí)現(xiàn)。缺點(diǎn)是如果操作型系統(tǒng)沒(méi)有相應(yīng)的審計(jì)字段,需要改變已有的操作型系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),以保證獲取過(guò)程涉及的每張表都有審計(jì)字段。.數(shù)據(jù)庫(kù)日志DBMS日志獲取是一種通過(guò)DBMS提供的日志系統(tǒng)來(lái)獲得變化的數(shù)據(jù)。它的優(yōu)點(diǎn)是對(duì)數(shù)據(jù)庫(kù)或訪問(wèn)數(shù)據(jù)庫(kù)的操作系統(tǒng)的影響最小。缺點(diǎn)是要求DBMS支持,并且對(duì)日志記錄的格式非常了解。全表掃描或者全表導(dǎo)出文件后進(jìn)行掃描對(duì)比也可以進(jìn)行變化數(shù)據(jù)捕獲,尤其是捕獲刪除的數(shù)據(jù)時(shí)。這種方法的優(yōu)點(diǎn)是,思路清晰,適應(yīng)面廣,缺點(diǎn)是效率比較差。DataQuality11.Whatarethefourbroadcategoriesofdataqualitychecks?Provideanimplementationtechniqueforeach.數(shù)據(jù)質(zhì)量檢查的四大類是什么?為每類提供一種實(shí)現(xiàn)技術(shù)。答:數(shù)據(jù)質(zhì)量檢查是ETL工作中非常重要的一步,主要關(guān)注一下四個(gè)方面。.正確性檢查(Corret)檢查數(shù)據(jù)值及其描述是否真實(shí)的反映了客觀事務(wù)。例如地址的描述是否完全。.明確性檢查(Unambiguous)檢查數(shù)據(jù)值及其描述是否只有一個(gè)意思或者只有一個(gè)解釋。例如地名相同的兩個(gè)縣需要加區(qū)分方法。.一致性檢查(Consistent)檢查數(shù)據(jù)值及其描述是否統(tǒng)一的采用固定的約定符號(hào)來(lái)表示。例如幣別中人民幣用CNY'。.完全性檢查(Complete)完全性有兩個(gè)需要檢查的地方,一個(gè)是檢查字段的數(shù)據(jù)值及其描述是否完全。例如檢查是否有空值。另一個(gè)是檢查記錄的合計(jì)值是否完全,有沒(méi)有遺忘某些條件。AtwhichstageoftheETLshoulddatabeprofiled?簡(jiǎn)述應(yīng)該在ETL的哪個(gè)步驟來(lái)實(shí)現(xiàn)概況分析?答:數(shù)據(jù)概況分析是對(duì)源數(shù)據(jù)內(nèi)容的概況進(jìn)行分析,應(yīng)該在項(xiàng)目的開(kāi)始后盡早完成,它會(huì)對(duì)設(shè)計(jì)和實(shí)現(xiàn)有很大的影響。在完成需求收集后就應(yīng)該立即開(kāi)始數(shù)據(jù)概況分析。數(shù)據(jù)概況分析不光是對(duì)源系統(tǒng)的數(shù)據(jù)概況的定量描述,而且為ETL系統(tǒng)中需要建立的錯(cuò)誤事件事實(shí)君ErrorEventTable而審計(jì)維度君AuditDimension)打下基礎(chǔ),為其提供數(shù)據(jù)。WhataretheessentialdeliverablesofthedataqualityportionofETL?ETL項(xiàng)目中的數(shù)據(jù)質(zhì)量部分核心的交付物有那些?答:ETL項(xiàng)目中數(shù)據(jù)質(zhì)量部分的核心的交付物主要有下面三個(gè):.數(shù)據(jù)概況分析結(jié)果數(shù)據(jù)概況分析結(jié)果是對(duì)源系統(tǒng)的數(shù)據(jù)狀況的分析產(chǎn)物,包括如源系統(tǒng)中有多少個(gè)表,每個(gè)表有多少字段,其中多少為空,表間的外鍵關(guān)系是否存在等反映源系統(tǒng)數(shù)據(jù)質(zhì)量的內(nèi)容。這些內(nèi)容用來(lái)決定數(shù)據(jù)遷移的設(shè)計(jì)和實(shí)現(xiàn),并提供給錯(cuò)誤事件事實(shí)表和審計(jì)維度表需要的相關(guān)數(shù)據(jù)。.錯(cuò)誤事件事實(shí)表錯(cuò)誤事件事實(shí)表及相關(guān)的一系列維度表是數(shù)據(jù)質(zhì)量檢查部分的一個(gè)主要交付物。粒度是每一次數(shù)據(jù)質(zhì)量檢查中的錯(cuò)誤信息。相關(guān)維度包括日期維度表、遷移信息維度表、錯(cuò)誤事件信息維度表,其中錯(cuò)誤事件信息維度表中檢查的類型、源系統(tǒng)的信息、涉及的表信息、檢查使用的SQL等內(nèi)容。錯(cuò)誤事件事實(shí)表不提供給前臺(tái)用戶。.審計(jì)維度表審計(jì)維度表是給最終用戶提供數(shù)據(jù)質(zhì)量說(shuō)明的一個(gè)維度表。它描述了用戶使用的事實(shí)表的數(shù)據(jù)來(lái)源,數(shù)據(jù)質(zhì)量情況等內(nèi)容。Howcandataqualitybequantifiedinthedatawarehouse?如何來(lái)量化數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)質(zhì)量?答:在數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目中,通常通過(guò)不規(guī)則數(shù)據(jù)的檢測(cè)工作(AnomalyDetection)來(lái)量化源系統(tǒng)的數(shù)據(jù)質(zhì)量。除非成立專門(mén)的數(shù)據(jù)質(zhì)量調(diào)查項(xiàng)目組,否則這個(gè)工作應(yīng)該由ETL項(xiàng)目組完成。通??梢圆捎梅纸MSQL來(lái)檢查數(shù)據(jù)是否符合域的定義規(guī)則。對(duì)于數(shù)據(jù)量小的表,可以直接使用類似下面的SQL完成。selectstate,count(*)fromorder_detailgroupbystate對(duì)于數(shù)據(jù)量大的表,一般通過(guò)采樣技術(shù)來(lái)減少數(shù)據(jù)量,然后進(jìn)行不規(guī)則數(shù)據(jù)檢測(cè)。類似SQL如下。selecta?fromemployeea,(selectrownumcounter,a.*fromemployeea)Bwherea.empjd=b.empjdandmod(b.counter;trunc((selectcount(*)fromemployee)/1000,0))=0如果可以采用專門(mén)的數(shù)據(jù)概況分析工具進(jìn)行的話,可以減少很大的工作量。BuildingmappingsWhataresurrogatekeys?Explainhowthesurrogatekeypipelineworks.什么是代理鍵?簡(jiǎn)述代理鍵替換管道如何工作。答:在維度表的遷移過(guò)程中,有一種處理方式是使用無(wú)意義的整型值分配給維度記錄并作為維度記錄的主鍵,這些作為主鍵的整型值稱為代理鍵(SurrogateKeyX使用代理鍵有很多好處,如隔離數(shù)據(jù)倉(cāng)庫(kù)與操作環(huán)境,歷史記錄的保存,查詢速度快等。同時(shí),在事實(shí)表的遷移過(guò)程中,為了保證參照完整性也需要進(jìn)行代理鍵的替換工作。為了代理鍵替換的效率高一些,我們通常在數(shù)據(jù)準(zhǔn)備區(qū)中建立代理鍵查找表(SurrogateMappingTableorLookupTable\代理鍵查找表中保存最新的代理鍵和自然鍵的對(duì)應(yīng)關(guān)系。在對(duì)事實(shí)表進(jìn)行代理鍵替換時(shí),為了保證效率高,需要把代理鍵查找表中的數(shù)據(jù)加載到內(nèi)存中,并可以開(kāi)多線程依次替換同一記錄的中的不同代理鍵,使一條事實(shí)記錄在所有的代理鍵都替換完后再寫(xiě)如磁盤(pán)中,這樣的替換過(guò)程稱為代理鍵替換管道(SurrogateKeyPipelineXWhydodatesrequirespecialtreatmentduringtheETLprocess?為什么在ETL的過(guò)程中需要對(duì)日期進(jìn)行特殊處理?另外ETL工具中kettle的性能一向都是很強(qiáng)的,早在kettle被pentaho收購(gòu)之前,它在亞馬遜云上的5臺(tái)服務(wù)器的集群速度就是4000row*5,而且由于kettle配置集群又超級(jí)簡(jiǎn)單,而且是根據(jù)端口來(lái)區(qū)分節(jié)點(diǎn),所以一臺(tái)計(jì)算機(jī)上都可以配置幾個(gè)從服務(wù)器,上面給出的代碼中就是這樣的,不會(huì)配置的朋友可以看一下,(真的就是看一眼就懂了).另外一^覺(jué)得很有意思的ETL工具就是oracle的warehousebuild和dataintegration,由于里面使用的是oracle數(shù)據(jù)庫(kù)專有的pl/sql,不太清楚它的伸縮能力怎么樣(oracle的hints里面是可以控制并行度的,不知道pl/sql會(huì)不會(huì)也有控制并行度的選項(xiàng))再加上kettle的分區(qū)特性和正在做的"可配置并行度",kettle的伸縮能力是很強(qiáng)的.所以性能問(wèn)題一向都不是kettle的弱項(xiàng).最后要說(shuō)的就是還是最關(guān)心kettle的可管理性,它的"transform和job”的版本控制和"Repository"的全庫(kù)導(dǎo)入導(dǎo)出不知道什么時(shí)候可以做好.答:在數(shù)據(jù)倉(cāng)庫(kù)的項(xiàng)目中,分析是主導(dǎo)需求,而基于日期和時(shí)間的分析更是占了很大的比重。而在操作型源系統(tǒng)中,日期通常都是SQL的DATETIME型的。如果在分析時(shí),使用SQL對(duì)這種類型的字段臨時(shí)處理會(huì)出現(xiàn)一些問(wèn)題,如效率很差,不同的用戶會(huì)采用不同的格式化方法導(dǎo)致報(bào)表不統(tǒng)一。所以,在數(shù)據(jù)倉(cāng)庫(kù)的建模時(shí)都會(huì)建立日期維度表和時(shí)間維度表,將用到的和日期相關(guān)的描述都冗余到該表中。但是,并不是所有的日期都被轉(zhuǎn)化為日期維度表的外鍵。日期維度表中的記錄是有限的,有些日期如生日等可能會(huì)比日期維度表中記錄的最小日期還要早,這類字段可以直接在數(shù)據(jù)倉(cāng)庫(kù)中保存SQL的DATETIME型。而像購(gòu)買日期等與分析的業(yè)務(wù)緊密相關(guān)的通常都需要轉(zhuǎn)化為日期維度表的外鍵,可以用日期維度表中統(tǒng)一的描述信息進(jìn)行分析。Explainthethreebasicdeliverystepsforconformeddimensions.簡(jiǎn)述對(duì)一致性維度的三種基本的交付步驟。答:數(shù)據(jù)整合的關(guān)鍵就是生成一致性維度,再通過(guò)一致性維度將來(lái)自不同數(shù)據(jù)源的事實(shí)數(shù)據(jù)合并到一起,供分析使用。通常來(lái)說(shuō),生成一致性維度有如下三個(gè)步驟:.標(biāo)準(zhǔn)化(Standardizing)標(biāo)準(zhǔn)化的目的是使不同數(shù)據(jù)源的數(shù)據(jù)編碼方式,數(shù)據(jù)格式等相同,為下一步數(shù)據(jù)匹配打下基礎(chǔ)。.匹配(MatchingandDeduplication)數(shù)據(jù)匹配的工作有兩種,一種是將不同數(shù)據(jù)源的標(biāo)識(shí)同一事物的不同屬性匹配到一起,是數(shù)據(jù)更完善;另一種是將不同數(shù)據(jù)源的相同數(shù)據(jù)標(biāo)識(shí)成重復(fù),為下一步的篩選打下基礎(chǔ)。.篩選(Surviving)數(shù)據(jù)篩選的主要目的是選定一致性維度作為主數(shù)據(jù)(MasterData),也就是最終交付的一致性維度數(shù)據(jù)。NamethethreefundamentalfactgrainsanddescribeanETLapproachforeach.簡(jiǎn)述三種基本事實(shí)表,并說(shuō)明ETL的過(guò)程中如何處理它們。答:事實(shí)表從粒度的角色來(lái)劃分可以分為三類,分別是交易粒度事實(shí)表(TransactionGrain\周期快照粒度事實(shí)表(PeriodicSnapshot)和累計(jì)快照粒度事實(shí)表(AccumulatingSnapshotX在事實(shí)表的設(shè)計(jì)時(shí),一定要注意一個(gè)事實(shí)表只能有一個(gè)粒度,不能將不同粒度的事實(shí)建立在同一張事實(shí)表中。交易粒度事實(shí)表的來(lái)源伴隨交易事件成生的數(shù)據(jù),例如銷售單。在ETL過(guò)程中,以原子粒度直接進(jìn)行遷移。周期快照事實(shí)表是用來(lái)記錄有規(guī)律的定時(shí)間間隔的業(yè)務(wù)累計(jì)數(shù)據(jù),例如庫(kù)存日快照。在ETL過(guò)程中,以固定的時(shí)間間隔生成累計(jì)數(shù)據(jù)。周期快照事實(shí)表是用來(lái)記錄有規(guī)律的定時(shí)間間隔的業(yè)務(wù)累計(jì)數(shù)據(jù),例如庫(kù)存累積快照事實(shí)表用來(lái)記錄具有時(shí)間跨度的業(yè)務(wù)處理過(guò)程的整個(gè)過(guò)程的信息。在ETL過(guò)程中,隨著業(yè)務(wù)處理過(guò)程的步驟逐步完善該表中的記錄。Howarebridgetablesdeliveredtoclassifygroupsofdimensionrecordsassociatedtoasinglefact?簡(jiǎn)述橋接表是如何將維度表和事實(shí)表進(jìn)行關(guān)聯(lián)的?答:橋接表(BridgeTable)是維度建模中的一類比較特殊的表。在數(shù)據(jù)倉(cāng)庫(kù)的建模時(shí),會(huì)遇到具有層次結(jié)構(gòu)的維度表,對(duì)于這樣的表有一種建模方式是建立父子表,即每條記錄上包括一個(gè)指向其父記錄的字段。這種父子表的建立在層級(jí)深度可變時(shí)尤其有用,是一個(gè)緊湊而有效的建模方式。但是這種建模方式也有缺點(diǎn),就是用標(biāo)準(zhǔn)SQL很難對(duì)遞歸結(jié)構(gòu)進(jìn)行操作。與這種遞歸結(jié)構(gòu)的父子表不同,橋接表采用不同的建模方式也可以表示這種層級(jí)結(jié)構(gòu)。橋接表是建立在維度表和事實(shí)表中間的一個(gè)具有較多冗余信息的表,其中的記錄包含層級(jí)結(jié)構(gòu)中節(jié)點(diǎn)到其下面每個(gè)節(jié)點(diǎn)的路徑。表結(jié)構(gòu)如下所示:父關(guān)鍵字子關(guān)鍵字父層數(shù)層名底端標(biāo)識(shí)頂端標(biāo)識(shí)在橋接表中,節(jié)點(diǎn)與其下面的任意一個(gè)節(jié)點(diǎn)都建立一個(gè)關(guān)聯(lián)記錄保存在表中,即父子關(guān)系不再局限在相鄰層,如第一層與第三層同樣有父子關(guān)系,通過(guò)父層數(shù)可以區(qū)分相隔了幾層。這樣,可以通過(guò)父層數(shù)和父子關(guān)系來(lái)進(jìn)行層級(jí)結(jié)構(gòu)的查詢。當(dāng)然,橋接表也不是一個(gè)完備的解決方案,它只能是在某些情況下是查詢變得容易。Howdoeslatearrivingdataaffectdimensionsandfacts?Sharetechniquesforhandlingeach.遲到的數(shù)據(jù)對(duì)事實(shí)表和維度表有什么影響?怎樣來(lái)處理這個(gè)問(wèn)題?答:遲到的數(shù)據(jù)分為兩種,一種是遲到的事實(shí)表數(shù)據(jù),另一種是遲到的維度表數(shù)據(jù)。對(duì)于遲到的事實(shí)記錄,我們可以插入到相應(yīng)的事實(shí)表中。在插入的同時(shí),還需要做一些處理。首先,對(duì)于具有SCDTYPE2型維度的事實(shí)記錄需要在插入前判斷該事實(shí)記錄的發(fā)生日期到目前為止,維度記錄是否發(fā)生過(guò)變化,如果有變化,該事實(shí)記錄需要對(duì)應(yīng)到事實(shí)發(fā)生時(shí)的維度記錄上。其次,在事實(shí)記錄插入完成后,與該事實(shí)表相關(guān)的聚集事實(shí)表和合并事實(shí)表需要做相應(yīng)的處理。對(duì)于遲到的維度記錄,我們需要做的處理要復(fù)雜一些。首先,如果遲到的維度記錄是第一次進(jìn)入數(shù)據(jù)倉(cāng)庫(kù)中,那么需要在維度表中生成一條維度記錄,并將與該維度記錄對(duì)應(yīng)的事實(shí)記錄的外鍵進(jìn)行更新。其次,如果遲到的維度記錄是對(duì)原維度進(jìn)行的修改,那么我們?cè)诰S度表中生成一條新記錄的同時(shí),還需要找到維度本次變化到下次變化間的事實(shí)行,并將其維度外鍵更新為新加維度的代理關(guān)鍵字。MetadataDescribethedifferenttypesofETLmetadataandprovideexamplesofeach.舉例說(shuō)明各種ETL過(guò)程中的元數(shù)據(jù)。答:元數(shù)據(jù)是ETL項(xiàng)目組面對(duì)的一個(gè)非常重要的主題,對(duì)于整個(gè)數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目也是非常重要的一部分。對(duì)于元數(shù)據(jù)的分類和使用沒(méi)有很確定的定義。通常來(lái)說(shuō),我們可以把元數(shù)據(jù)分為三類,分別為業(yè)務(wù)元數(shù)據(jù)(BusinessMetadata),技術(shù)元數(shù)據(jù)(TechnicalMetadata)和過(guò)程處理元數(shù)據(jù)(ProcessExecutionMetadata'業(yè)務(wù)元數(shù)據(jù),是從業(yè)務(wù)的角度對(duì)數(shù)據(jù)的描述。通常是用來(lái)給報(bào)表工具和前端用戶對(duì)數(shù)據(jù)進(jìn)行分析和使用提供幫助。技術(shù)元數(shù)據(jù),是從技術(shù)的角度對(duì)數(shù)據(jù)的描述。通常包括數(shù)據(jù)的一些屬性,如數(shù)據(jù)類型、長(zhǎng)度、或者數(shù)據(jù)概況分析后一些結(jié)果。過(guò)程處理元數(shù)據(jù),是ETL處理過(guò)程中的一些統(tǒng)計(jì)數(shù)據(jù),通常包括有多少條記錄被加載,多少條記錄被拒絕接受等數(shù)據(jù)Shareacceptablemechanismsforcapturingoperationalmetadata.簡(jiǎn)述獲取操作型元數(shù)據(jù)的方法。答:操作型元數(shù)據(jù)(OperationalMetadata),也就是過(guò)程處理元數(shù)據(jù),記錄的是ETL過(guò)程中數(shù)據(jù)遷移情況,如上次遷移日期,加載的記錄數(shù)等信息。這部分元數(shù)據(jù)在ETL加載失敗時(shí)會(huì)非常重要。一般來(lái)說(shuō),對(duì)于使用ETL工具的數(shù)據(jù)加載,像遷移調(diào)度時(shí)間、遷移調(diào)度順序,失敗處理等內(nèi)容都可以在由在遷移工具中定義生成。像上次遷移日期等數(shù)據(jù)可以建表保存。如果是手工編寫(xiě)ETL程序的話,操作型元數(shù)據(jù)的處理會(huì)麻煩一些,需要自己來(lái)獲取和存儲(chǔ)。獲取的方式,不同的編程方式會(huì)不盡相同。Offertechniquesforsharingbusinessandtechnicalmetadata.Optimization/Operations簡(jiǎn)述共享業(yè)務(wù)元數(shù)據(jù)和技術(shù)元數(shù)據(jù)的方法。答為了能共享各種元數(shù)據(jù),在數(shù)據(jù)倉(cāng)庫(kù)的構(gòu)建過(guò)程中必須要有一些元數(shù)據(jù)標(biāo)準(zhǔn),并在實(shí)際開(kāi)發(fā)中遵守這些標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)包括元數(shù)據(jù)命名規(guī)則、存儲(chǔ)規(guī)則及共享規(guī)則等內(nèi)容。有關(guān)元數(shù)據(jù)標(biāo)準(zhǔn)的內(nèi)容可以參看公共倉(cāng)庫(kù)元模型(CommonWarehouseMetamodel,CWM)的相關(guān)資料。在最基本的層面上,企業(yè)應(yīng)該在下面三個(gè)方面制定好標(biāo)準(zhǔn)。.命名規(guī)則命名規(guī)則應(yīng)該在ETL組開(kāi)始編碼前制定好,范圍包括表、歹I」、約束、索引等等數(shù)據(jù)庫(kù)對(duì)象以及其他一些編碼規(guī)則。如果企業(yè)有自己的命名規(guī)則,ETL組應(yīng)該遵守企業(yè)的命名規(guī)則。當(dāng)企業(yè)的命名規(guī)則不能完全滿足需求時(shí),ETL組可以制定補(bǔ)充規(guī)則或者新的規(guī)則。對(duì)企業(yè)命名規(guī)則的改變需要有詳細(xì)的文檔記錄,并提交企業(yè)相關(guān)部門(mén)審核。.架構(gòu)在ETL組開(kāi)始工作前,架構(gòu)應(yīng)該先被設(shè)計(jì)好。例如ETL引擎是和數(shù)據(jù)倉(cāng)庫(kù)放在同一臺(tái)服務(wù)器上還是單獨(dú)設(shè)立服務(wù)器;數(shù)據(jù)準(zhǔn)備區(qū)是建立成臨時(shí)的還是持久的;數(shù)據(jù)倉(cāng)庫(kù)是基于維度建模的還是3NF建模的。并且這些內(nèi)容應(yīng)該有詳細(xì)的文檔記錄。.基礎(chǔ)結(jié)構(gòu)系統(tǒng)的基礎(chǔ)結(jié)構(gòu)也應(yīng)該先確定好。例如解決方案是基于Windows的還是基于UNIX的。這些企業(yè)基礎(chǔ)結(jié)構(gòu)元數(shù)據(jù)應(yīng)該在ETL組開(kāi)始工作前制定好。這些內(nèi)容也應(yīng)該有詳細(xì)的文檔記錄。在ETL的開(kāi)發(fā)中,制定好元數(shù)據(jù)標(biāo)準(zhǔn)并能很好的遵守,那么建立好的數(shù)據(jù)倉(cāng)庫(kù)的元數(shù)據(jù)就可以很好的完成共享功能。Statetheprimarytypesoftablesfoundinadatawarehouseandtheorderwhichtheymustbeloadedtoenforcereferentialintegrity.簡(jiǎn)述數(shù)據(jù)倉(cāng)庫(kù)中的表的基本類型,以及為了保證引用完整性該以什么樣的順序?qū)λ鼈冞M(jìn)行加載。答:數(shù)據(jù)倉(cāng)庫(kù)中的表的基本類型有維度表、事實(shí)表、子維度表、橋接表等幾類。其中子維度表即雪花模型由支架維度技術(shù)處理,橋接表用來(lái)處理多值維度或?qū)蛹?jí)結(jié)構(gòu)。數(shù)據(jù)倉(cāng)庫(kù)中需要加載的各類表之間有相互依賴的關(guān)系,所以加載時(shí)需要以一定的順序進(jìn)行加載。下面是一些加載的基本原則:子維度表加載成功后,再加載維度表。開(kāi)源ETL工具kettle系列之常見(jiàn)問(wèn)題摘要:本文主要介紹使用kettle設(shè)計(jì)一些ETL任務(wù)時(shí)一些常見(jiàn)問(wèn)題,這些問(wèn)題大部分都不在官方FAQ上,你可以在kettle的論壇上找到一些問(wèn)題的答案1.Join我得到A數(shù)據(jù)流(不管是基于文件或數(shù)據(jù)庫(kù)),A包含fieldl,field2,field3字段,然后我還有一個(gè)B數(shù)據(jù)流,B包含field4,fields,field6,我現(xiàn)在想把它們‘加’起來(lái),應(yīng)該怎么樣做.這是新手最容易犯錯(cuò)的一個(gè)地方,A數(shù)據(jù)流跟B數(shù)據(jù)流能夠Join,肯定是它們包含joinkeyjoinkey可以是一個(gè)字段也可以是多個(gè)字段。如果兩個(gè)數(shù)據(jù)流沒(méi)有joinkey,那么它們就是在做笛卡爾積,一般很少會(huì)這樣。比如你現(xiàn)在需要列出一個(gè)員工的姓名和他所在部門(mén)的姓名,如果這是在同一個(gè)數(shù)據(jù)庫(kù),大家都知道維度表加載成功后,再加載橋接表。子維度表、維度表和橋接表都加載成功后,再加載事實(shí)表。這個(gè)加載順序可以通過(guò)主外鍵的關(guān)系來(lái)確定。(注意,此回答為總線架構(gòu)的數(shù)據(jù)倉(cāng)庫(kù)的表的加載順序。)WhatarethecharacteristicsofthefourlevelsoftheETLsupportmodel?簡(jiǎn)述ETL技術(shù)支持工作的四個(gè)級(jí)別的特點(diǎn)。答:數(shù)據(jù)倉(cāng)庫(kù)上線后,ETL組需要為保證ETL工作的正常運(yùn)行提供技術(shù)支持。通常這種技術(shù)支持工作分為四個(gè)級(jí)別。1.第一級(jí)別的技術(shù)支持通常是電話支持人員,屬于技術(shù)支持服務(wù)窗口(HelpDesk)類型。如果數(shù)據(jù)遷移出現(xiàn)錯(cuò)誤或者用戶發(fā)現(xiàn)數(shù)據(jù)有問(wèn)題,問(wèn)題通過(guò)電話反映到第一級(jí)別的技術(shù)支持處。第一級(jí)別支持人員通過(guò)ETL項(xiàng)目組提供的一些問(wèn)題的解決辦法盡可能的解決發(fā)現(xiàn)的問(wèn)題,阻止問(wèn)題升級(jí)。2.第二級(jí)別的技術(shù)支持通常是系統(tǒng)管理員和DBA。如果第一級(jí)別不能解決問(wèn)題,問(wèn)題反映到第二級(jí)別。第二級(jí)別的人員通常技術(shù)上比較強(qiáng),硬件基礎(chǔ)結(jié)構(gòu)和軟件架構(gòu)上的問(wèn)題都可以解決。3.第三級(jí)別的技術(shù)支持通常是ETL項(xiàng)目負(fù)責(zé)人。如果第二級(jí)別不能解決問(wèn)題,問(wèn)題反映到第三級(jí)別。ETL項(xiàng)目負(fù)責(zé)人應(yīng)該具備足夠的知識(shí),能夠解決生產(chǎn)環(huán)境中的絕大部分問(wèn)題。ETL項(xiàng)目負(fù)責(zé)人在必要時(shí)可以和開(kāi)發(fā)人員或者外部產(chǎn)品提供商對(duì)某些問(wèn)題進(jìn)行交流,以便找出解決問(wèn)題的辦法。4.第四級(jí)別的技術(shù)支持通常是ETL的實(shí)際開(kāi)發(fā)人員。如果第三級(jí)別不能解決問(wèn)題,問(wèn)題反映到第四級(jí)別。ETL的實(shí)際開(kāi)發(fā)人員可以對(duì)代碼進(jìn)行跟蹤分析并找到問(wèn)題的解決辦法。如果問(wèn)題出現(xiàn)在產(chǎn)品供應(yīng)商的應(yīng)用中,還需要供應(yīng)商提供技術(shù)支持。在小些的數(shù)據(jù)倉(cāng)庫(kù)環(huán)境中,也是通常的情況下,第三級(jí)別和第!1!級(jí)別可以合并在一起。合并后對(duì)第二級(jí)別的要求會(huì)高一些。不建議每次出現(xiàn)問(wèn)題都找ETL的開(kāi)發(fā)人員。第一級(jí)別的技術(shù)支持人員不應(yīng)該僅僅提供電話支持服務(wù),在將問(wèn)題反映給下一個(gè)級(jí)別前,要盡自己的能力去解決問(wèn)題。在小些的數(shù)據(jù)倉(cāng)庫(kù)環(huán)境中,也是通常的情況下,第三級(jí)別和第!1!級(jí)別可以合并WhatstepsdoyoutaketodeterminethebottleneckofaslowrunningETLprocess?如果ETL進(jìn)程運(yùn)行較慢,需要分哪幾步去找到ETL系統(tǒng)的瓶頸問(wèn)題。答:ETL系統(tǒng)遇到性能問(wèn)題,運(yùn)行很慢是一件較常見(jiàn)的事情,這時(shí)要做的是逐步找到系統(tǒng)的瓶頸在哪里。首先要確定是由CPU、內(nèi)存、I/O和網(wǎng)絡(luò)等產(chǎn)生的瓶頸,還是由ETL處理過(guò)程產(chǎn)生的瓶頸。如果環(huán)境沒(méi)有瓶頸,那么需要分析ETL的代碼。這時(shí),我們可以采用排除的方法,需要隔離不同的操作,并分別對(duì)它們進(jìn)行測(cè)試。如果是采用純手工編碼方式的ETL處理,隔離不同的操作要麻煩一些,這時(shí)需要根據(jù)編碼的實(shí)際情況來(lái)處理。如果是采用ETL工具的話,目前的ETL工具應(yīng)該都有隔離不同處理的功能,隔離起來(lái)相對(duì)容易一些。分析最好從抽取操作開(kāi)始,然后依次分析各種計(jì)算、查找表、聚集、過(guò)濾等轉(zhuǎn)換環(huán)節(jié)的處理操作,最后分析加載操作。實(shí)際的處理中,可以按照下面的七個(gè)步驟來(lái)查找瓶頸。.隔離并執(zhí)行抽取查詢語(yǔ)句。先將抽取部分隔離出來(lái),去掉轉(zhuǎn)換和交付,可以將數(shù)據(jù)直接抽取到文件中。如果這一步效率很差,基本確定是抽取SQL的問(wèn)題。從經(jīng)驗(yàn)來(lái)看,未經(jīng)調(diào)優(yōu)的SQL是一個(gè)最常見(jiàn)的導(dǎo)致ETL效率差的原因。如果這步?jīng)]有問(wèn)題進(jìn)入第二步。.去掉過(guò)濾條件。這一條是針對(duì)全抽取,然后在ETL處理中進(jìn)行過(guò)濾的處理方式而言。在ETL處理中做過(guò)濾處理有時(shí)會(huì)產(chǎn)生瓶頸。可以先將過(guò)濾去掉,如果確定為這個(gè)原因,可以考慮在抽取時(shí)進(jìn)行數(shù)據(jù)過(guò)濾。.排除查找表的問(wèn)題。參照數(shù)據(jù)在ETL處理過(guò)程中通常會(huì)加載到內(nèi)存中,目的是做代碼和名稱的查找替換,也稱查找表。有時(shí)查找表的數(shù)據(jù)量過(guò)大也會(huì)產(chǎn)生瓶頸。可以逐個(gè)隔離查找表,來(lái)確定是否是這里出現(xiàn)問(wèn)題。注意要將查找表的數(shù)據(jù)量降到最低,通常一個(gè)自然鍵一個(gè)代理鍵就可以,這樣可以減少不必要的數(shù)據(jù)1/00.分析排序和聚集操作。排序和聚集操作都是非常費(fèi)資源的操作。對(duì)這部分隔離,來(lái)判斷是否因?yàn)樗鼈円鹦阅軉?wèn)題。如果確定是因?yàn)檫@個(gè),需要考慮是否可以將排序和聚集處理移出數(shù)據(jù)庫(kù)和ETL工具,移到操作系統(tǒng)中來(lái)處理。.隔離并分析每一個(gè)計(jì)算和轉(zhuǎn)換處理。有時(shí)轉(zhuǎn)換過(guò)程中的處理操作也會(huì)引起ETL工作的性能。逐步隔離移除它們來(lái)判斷哪里出了問(wèn)題。要注意觀察像默認(rèn)值、數(shù)據(jù)類型轉(zhuǎn)換等操作。.隔離更新策略。更新操作在數(shù)據(jù)量非常大時(shí)是性能非常差的。隔離這部分,看看是否這里出了問(wèn)題。如果確定是因?yàn)榇笈扛鲁隽诵阅軉?wèn)題。應(yīng)該考慮將insert、update和delete分開(kāi)處理。.檢測(cè)加載數(shù)據(jù)的數(shù)據(jù)庫(kù)I/O。如果前面各部分都沒(méi)有問(wèn)題,最后需要檢測(cè)是目標(biāo)數(shù)據(jù)庫(kù)的性能問(wèn)題??梢哉覀€(gè)文件代替數(shù)據(jù)庫(kù),如果性能提高很多,需要仔細(xì)檢測(cè)目標(biāo)數(shù)據(jù)庫(kù)的加載過(guò)程中的操作。例如是否關(guān)閉了所有的約束,關(guān)閉了所有的索引,是否使用了批量加載工具。如果性能還沒(méi)有提高,可以考慮使用并行加載策略。27.DescribehowtoestimatetheloadtimeofalargeETLjob.RealTimeETL簡(jiǎn)述如何評(píng)估大型ETL數(shù)據(jù)加載時(shí)間。答:評(píng)估一個(gè)大型的ETL的數(shù)據(jù)加載時(shí)間是一件很復(fù)雜的事情。數(shù)據(jù)加載分為兩類,一類是初次加載,另一類是增量加載。在數(shù)據(jù)倉(cāng)庫(kù)正式投入使用時(shí),需要進(jìn)行一次初次加載,而這次初次加載需要的時(shí)間一般較難預(yù)料。在數(shù)據(jù)倉(cāng)庫(kù)的日常使用和維護(hù)中,每天需要對(duì)數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行增量加載。增量加載的數(shù)據(jù)量要比初次加載小很多。下面以初次加載為例來(lái)談?wù)勅绾卧u(píng)估大型ETL的數(shù)據(jù)加載時(shí)間。對(duì)初次加載的加載時(shí)間進(jìn)行預(yù)估,需要將整個(gè)ETL過(guò)程分成抽取、轉(zhuǎn)換和加載三部分,分別對(duì)這三部分進(jìn)行評(píng)估。.對(duì)抽取時(shí)間的評(píng)估。抽取通常占用的ETL的大部分時(shí)間,而且對(duì)這部分需要時(shí)間的評(píng)估也是非常困難的。為了對(duì)這部分時(shí)間進(jìn)行評(píng)估,我們可以將查詢時(shí)間分成兩部分,一部分是查詢響應(yīng)時(shí)間,另一部分是數(shù)據(jù)返回時(shí)間。查詢響應(yīng)時(shí)間指從查詢開(kāi)始執(zhí)行到結(jié)果開(kāi)始返回這段時(shí)間。數(shù)據(jù)返回時(shí)間指第一條記錄返回到最后一條記錄返回的時(shí)間。另外,初次加載的數(shù)據(jù)量太大,我們可以考慮選擇其中的一部分來(lái)評(píng)估整體的時(shí)間,實(shí)際處理中,可以選擇事實(shí)表的一個(gè)分區(qū)。一般來(lái)說(shuō)各個(gè)分區(qū)的數(shù)據(jù)量差不多,評(píng)估出一個(gè)分區(qū)的時(shí)間,乘上分區(qū)數(shù)可以作為整體的評(píng)估時(shí)間。.對(duì)數(shù)據(jù)轉(zhuǎn)換時(shí)間的評(píng)估數(shù)據(jù)轉(zhuǎn)換工作通常在內(nèi)存中完成,一般來(lái)說(shuō)都有著非??斓乃俣?,占總體時(shí)間的比重比較小。如果要評(píng)估這部分需要的時(shí)間的話,最簡(jiǎn)單的評(píng)估方法是先評(píng)估出抽取時(shí)間和加載時(shí)間然后運(yùn)行整個(gè)過(guò)程用整體時(shí)間減去抽取時(shí)間和加載時(shí)間。.對(duì)加載時(shí)間的評(píng)估很多原因都可能影響加載時(shí)間,其中最重要的兩個(gè)分別是索引和日志。對(duì)加載時(shí)間的評(píng)估,也可以像評(píng)估抽取時(shí)間時(shí)一樣,選擇加載數(shù)據(jù)的一部分,如1/200進(jìn)行加載,計(jì)算出時(shí)間后乘以200來(lái)作為整體加載時(shí)間??傊笮虴TL數(shù)據(jù)的加載時(shí)間的評(píng)估是很困難的,我們采用的方法主要是類比評(píng)估,即選擇一部分?jǐn)?shù)據(jù)減少整體時(shí)間進(jìn)行評(píng)估。在進(jìn)行評(píng)估時(shí)要注意到測(cè)試環(huán)境和生產(chǎn)環(huán)境的配置等的差別會(huì)引起評(píng)估結(jié)果的偏差。雖然這種對(duì)時(shí)間的評(píng)估一定會(huì)有誤差,但是可以做為整體加載時(shí)間的一個(gè)參考。28.Describethearchitectureoptionsforimplementingreal-timeETL簡(jiǎn)述在架構(gòu)實(shí)時(shí)ETL時(shí)的可以選擇的架構(gòu)部件。答:在建立數(shù)據(jù)倉(cāng)庫(kù)時(shí),ETL通常都采用批處理的方式,一般來(lái)說(shuō)是每天的夜間進(jìn)行跑批。隨著數(shù)據(jù)倉(cāng)庫(kù)技術(shù)的逐步成熟,企業(yè)對(duì)數(shù)據(jù)倉(cāng)庫(kù)的時(shí)間延遲有了更高的要求,也就出現(xiàn)了目前常說(shuō)的實(shí)時(shí)ETL(Real-TimeETLX實(shí)時(shí)ETL是數(shù)據(jù)倉(cāng)庫(kù)領(lǐng)域里比較新的一部分內(nèi)容。在構(gòu)建實(shí)時(shí)ETL架構(gòu)的數(shù)據(jù)倉(cāng)庫(kù)時(shí),有幾種技術(shù)可供選擇。.微批處理(microbatchETL,MB-ETL)微批處理的方式和我們通常的ETL處理方式很相似但是處理的時(shí)間間隔要短,例如間隔一個(gè)小時(shí)處理一次。.企業(yè)應(yīng)用集成(EnterpriseApplicationIntegration,EAI)EAI也稱為功能整合,通常由中間件來(lái)完成數(shù)據(jù)的交互。而通常的ETL稱為數(shù)據(jù)整合。對(duì)實(shí)時(shí)性要求非常高的系統(tǒng),可以考慮使用EAI作為ETL的一個(gè)工具,可以提供快捷的數(shù)據(jù)交互。不過(guò)在數(shù)據(jù)量大時(shí)采用EAI工具效率比較差,而且實(shí)現(xiàn)起來(lái)相對(duì)復(fù)雜。.CTF(Capture,TransformandFlow)CTF是一類比較新的數(shù)據(jù)整合工具。它采用的是直接的數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)庫(kù)的連接方式,可以提供秒級(jí)的數(shù)據(jù)。CTF的缺點(diǎn)是只能進(jìn)行輕量級(jí)的數(shù)據(jù)整合。通常的處理方式是建立數(shù)據(jù)準(zhǔn)備區(qū),采用CTF工具在源數(shù)據(jù)庫(kù)和數(shù)據(jù)準(zhǔn)備區(qū)的數(shù)據(jù)庫(kù)之間相連接。數(shù)據(jù)進(jìn)入數(shù)據(jù)準(zhǔn)備區(qū)后再經(jīng)過(guò)其他處理后遷移入數(shù)據(jù)倉(cāng)庫(kù)。.Eli(EnterpriseInformationIntegration)Eli是另一類比較新的數(shù)據(jù)整合軟件,可以給企業(yè)提供實(shí)時(shí)報(bào)表。EII的處理方式和CTF很相似,但是它不將數(shù)據(jù)遷移入數(shù)據(jù)準(zhǔn)備區(qū)或者數(shù)據(jù)倉(cāng)庫(kù),而是在抽取轉(zhuǎn)換后直接加載到報(bào)表中。在實(shí)際建立實(shí)時(shí)ETL架構(gòu)的數(shù)據(jù)倉(cāng)庫(kù)時(shí),可以在MB-ETL,EAI,CTF,EH及通常的ETL中作出選擇或者進(jìn)行組合。29.Explainthedifferentreal-timeapproachesandhowtheycanbeappliedindifferentbusinessscenarios.簡(jiǎn)述幾種不同的實(shí)時(shí)ETL實(shí)現(xiàn)方法以及它們的適用范圍。答:實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù)在目前來(lái)說(shuō)還不是很成熟,成功案例也比較少,下面列舉了一些實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)的實(shí)現(xiàn)方法。.EliONLY使用EII技術(shù)來(lái)代替實(shí)時(shí)的數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)延遲可以保證在1分鐘左右,支持?jǐn)?shù)據(jù)整合的復(fù)雜程度較低。無(wú)法保存歷史數(shù)據(jù)。.EII+StaticDW會(huì)在一個(gè)sql里面加上where限定條件,但是如果員工表和部門(mén)表在兩個(gè)不同的數(shù)據(jù)流里面,尤其是數(shù)據(jù)源的來(lái)源是多個(gè)數(shù)據(jù)庫(kù)的情況,我們一般是要使用DatabaseJoin操作,然后用兩個(gè)databasetableinput來(lái)表示輸入流,一個(gè)輸入是部門(mén)表的姓名,另一個(gè)是員工表的姓名,然后我們認(rèn)為這兩個(gè)表就可以"Join"了,我們需要的輸出的確是這兩個(gè)字段,但是這兩個(gè)字段的輸出并不代表只需要這兩個(gè)字段的輸入,它們之間肯定是需要一個(gè)約束關(guān)系存在的。另外,無(wú)論是在做Join,Merge,Update,Delete這些常規(guī)操作的時(shí)候,都是先需要做一個(gè)compare操作的,這個(gè)compare操作都是針對(duì)comparekey的,無(wú)論兩個(gè)表結(jié)構(gòu)是不是一樣的,比如employee表和department表,它們比較的依據(jù)就是employee的外鍵departmenjid,沒(méi)有這個(gè)comparekey這兩個(gè)表是不可能連接的起來(lái)的..對(duì)于兩個(gè)表可能還有人知道是直接sql來(lái)做連接,如果是多個(gè)輸入數(shù)據(jù)源,然后是三個(gè)表,有人就開(kāi)始迷茫了,A表一個(gè)字段B表一個(gè)字段,C表一個(gè)字段然后就連Join操作都沒(méi)有直接databasetableoutput,然后開(kāi)始報(bào)錯(cuò),報(bào)完錯(cuò)就到處找高手問(wèn),他們的數(shù)據(jù)庫(kù)原理老師已經(jīng)在吐血了。如果是三個(gè)表連接,一個(gè)sql不能搞定,就需要先兩個(gè)表兩個(gè)表的連接,通過(guò)兩次comparekey連接之后得到你的輸出,記住,你的輸出并不能代表你的輸入.下面總結(jié)一下:.單數(shù)據(jù)源輸入,直接用sql做連接.多數(shù)據(jù)源輸入,(可能是文本或是兩個(gè)以上源數(shù)據(jù)庫(kù)),用databasejoin操作..三個(gè)表以上的多字段輸出.使用EH技術(shù)聯(lián)合非實(shí)時(shí)的數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)延遲可以保證在1分鐘左右,1天內(nèi)的數(shù)據(jù)整合的復(fù)雜程度較低,1天前的數(shù)據(jù)整合的復(fù)雜程度可以較高。可以保存歷史數(shù)據(jù)。.ETL+StaticDW普通的ETL處理,數(shù)據(jù)延遲在1天。支持復(fù)雜程度較高的數(shù)據(jù)整合。保存歷史數(shù)據(jù)。.CTF+Real-TimePartition+StaticDW使用CTF技術(shù)建立實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)延遲可保證在15分鐘左右。數(shù)據(jù)整合的復(fù)雜程度較低。保存歷史數(shù)據(jù)。.CTF+MB-ETL+Real-TimePartition+StaticDW使用CTF技術(shù)和MB-ETL聯(lián)合處理數(shù)據(jù)遷移,數(shù)據(jù)延遲可保證在1小時(shí)左右,支持?jǐn)?shù)據(jù)整合的復(fù)雜程度較高,保存歷史數(shù)據(jù)。.MB-ETL+Real-TimePartition+StaticDW直接使用MB-ETL建立實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)延遲可保證在1小時(shí)左右,支持?jǐn)?shù)據(jù)整合的復(fù)雜程度較高,保存歷史數(shù)據(jù)。.EAI+Real-TimePartition+StaticDW使用EAI技術(shù)建立實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)延遲可保證在1分鐘左右,支持?jǐn)?shù)據(jù)整合的復(fù)雜程度較高。保存歷史數(shù)據(jù)。上面列出了一些實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)的選擇,寫(xiě)的不是很詳細(xì),只是提出個(gè)思路,供大家自己去找資料學(xué)習(xí)。30.Outlinesomechallengesfacedbyreal-timeETLanddescribehowtoovercomethem.簡(jiǎn)述實(shí)時(shí)ETL的一些難點(diǎn)及其解決辦法。答:實(shí)時(shí)ETL的引入給數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)帶來(lái)了很多新的問(wèn)題和挑戰(zhàn),下面列舉了一些問(wèn)題,其中有些問(wèn)題有具體的解決辦法,有些只能在實(shí)際情況下去斟酌。.連續(xù)的ETL處理對(duì)系統(tǒng)可靠性提出更高的要求。.離散快照數(shù)據(jù)的間隔時(shí)間變短。.緩慢變化維變成快速變化維。.如何確定數(shù)據(jù)倉(cāng)庫(kù)中數(shù)據(jù)的刷新頻率。.目的是只出報(bào)表還是要實(shí)現(xiàn)數(shù)據(jù)整合。.做數(shù)據(jù)整合還是應(yīng)用整合。.采用點(diǎn)對(duì)點(diǎn)的方式還是集中的方式。.前端展現(xiàn)工具的數(shù)據(jù)刷新方式如何確定。ETL測(cè)試方法論(ETL測(cè)試分層與持續(xù)集成)根據(jù)ETL各個(gè)階段的不同特點(diǎn),可以將ETL測(cè)試分為:物理數(shù)據(jù)測(cè)試和邏輯數(shù)據(jù)測(cè)試。物理數(shù)據(jù)測(cè)試:是指純粹從技術(shù)上保證數(shù)據(jù)的有效性,與業(yè)務(wù)無(wú)關(guān)。邏輯數(shù)據(jù)測(cè)試:是從業(yè)務(wù)邏輯上,對(duì)原始指標(biāo)以及最終產(chǎn)出的業(yè)務(wù)指標(biāo)之間的邏輯平衡性監(jiān)控。通過(guò)這些監(jiān)控,能讓底層etl技術(shù)人員第一時(shí)間的發(fā)現(xiàn)數(shù)據(jù)問(wèn)題并且解決問(wèn)題,同時(shí)也能根據(jù)這些監(jiān)控提前知道可能產(chǎn)生的結(jié)果,為后續(xù)產(chǎn)生的業(yè)務(wù)分析報(bào)告作出進(jìn)一步的修正,從而保證數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)的是有效的是能真正反應(yīng)事實(shí)的。(引用adolph)在ETL測(cè)試過(guò)程中,根據(jù)實(shí)際情況可以將ETL的這些環(huán)節(jié)拆分或組合成多個(gè)測(cè)試面,根據(jù)不同的測(cè)試面進(jìn)行不同重點(diǎn)的測(cè)試。前可以將試面,根據(jù)不同的測(cè)試面進(jìn)行不同重點(diǎn)的測(cè)試。前可以將ETL環(huán)節(jié)拆分成以下4個(gè)測(cè)試面:源數(shù)據(jù)odl->adkidloadl■源數(shù)據(jù)〉adl測(cè)試面,其中源數(shù)據(jù)〉bdl側(cè)重物理數(shù)據(jù)測(cè)試,bdl->adl側(cè)重邏輯數(shù)據(jù)測(cè)試。1.各個(gè)測(cè)試面的關(guān)注點(diǎn)如下:1.第一面是源數(shù)據(jù)到。山的測(cè)試。主要關(guān)注以下幾個(gè)方面(側(cè)重物理數(shù)據(jù)測(cè)試):對(duì)ETL抽取方案的測(cè)試。首先是抽取方案穩(wěn)定性,如果源體系表結(jié)構(gòu)有改變,需要保證ETL抽取方案不變或者微變。其次數(shù)據(jù)傳送接口方案合理性。源系統(tǒng)以何種形式把數(shù)據(jù)提供給目標(biāo)系統(tǒng),源系統(tǒng)推送或者目標(biāo)系統(tǒng)主動(dòng)抽取。數(shù)據(jù)日期,數(shù)據(jù)大小,記錄數(shù),增量or全量。對(duì)于抽取策略的測(cè)試。檢測(cè)抽取策略的合理性。前常用的抽取策略有全量抽取,增量抽取。對(duì)于增量檢測(cè)抽取策略的合理性。前常用的抽取策略有全量抽取,增量抽取。對(duì)于增量抽取,捕捉變化的數(shù)據(jù)有如下幾種:1)采用快照方式。需要業(yè)務(wù)系統(tǒng)建立insertfupdatefdelete觸發(fā)器。2)時(shí)間戳方式,在業(yè)務(wù)系統(tǒng)表建一個(gè)時(shí)間戳字段,一旦數(shù)據(jù)發(fā)生變化,則修改此字段。3)全表刪除插入方式,每次ETL操作先將目標(biāo)表數(shù)據(jù)刪除,然后抽取。4)hash比對(duì),是全表比對(duì)的一個(gè)擴(kuò)展,通過(guò)計(jì)算主要業(yè)務(wù)字段的MD5校驗(yàn)碼存入hash維表,通過(guò)與hash維表的比對(duì)進(jìn)行抽取。5)日志表方式,跟進(jìn)業(yè)務(wù)系統(tǒng)的日志表進(jìn)行數(shù)據(jù)抽取。6)oracle變化數(shù)據(jù)捕捉,通過(guò)分析數(shù)據(jù)庫(kù)自身日志判斷變化的數(shù)據(jù)。對(duì)轉(zhuǎn)換規(guī)則的測(cè)試。首先是數(shù)據(jù)格式的合法性。對(duì)于數(shù)據(jù)源中時(shí)間.數(shù)值,字符等數(shù)據(jù)的處理,是否符合數(shù)據(jù)倉(cāng)庫(kù)規(guī)則,是否進(jìn)行統(tǒng)一的轉(zhuǎn)換。其次是值域的有效性。是否有超出維表或者業(yè)務(wù)值域的范圍。第三是空值的處理。是否捕獲字段空值,或者需要對(duì)空值進(jìn)行替換為其他含義值的處理。第四是主鍵的有效性。主鍵是否唯一。第五是亂碼的檢查。特殊符號(hào)或者亂碼符號(hào)的護(hù)理規(guī)則。第六是臟數(shù)據(jù)的處理。比如不符合業(yè)務(wù)邏輯的數(shù)據(jù),數(shù)據(jù)孤島。加載策略的測(cè)試。首先是加載策略的合理性。前常用的加載策略有如下幾種:1)trunctaeandinsert.直接清空目標(biāo)表,然后把新的數(shù)據(jù)加載進(jìn)去。2)append.先根據(jù)規(guī)則清首先是加載策略的合理性。除當(dāng)天的記錄,然后把當(dāng)天的新數(shù)據(jù)追加進(jìn)去。3)updateandinsert.用新數(shù)據(jù)與目標(biāo)表中的歷史數(shù)據(jù)進(jìn)行比較,有變化的則更新,新記錄則直接插入到目標(biāo)表中。4)keephistorychange.保持歷史的變化,通常是拉鏈記歷史的方式實(shí)現(xiàn)。2.第二面是odl到adl的測(cè)試。主要關(guān)注以下幾個(gè)方面(物理數(shù)據(jù)測(cè)試+邏輯數(shù)據(jù)測(cè)試):對(duì)轉(zhuǎn)換規(guī)則的測(cè)試。2.首先是數(shù)據(jù)格式的合法性。對(duì)于數(shù)據(jù)源中時(shí)間,數(shù)值,字符等數(shù)據(jù)的處理,是否符合數(shù)據(jù)倉(cāng)庫(kù)規(guī)則,是否進(jìn)行統(tǒng)一的轉(zhuǎn)換。其次是值域的有效性。是否有超出維表或者業(yè)務(wù)值域的范圍。第三是空值的處理。是否捕獲字段空值,或者需要對(duì)空值進(jìn)行替換為其他含義值的處理。第四是主鍵的有效性。主鍵是否唯一。第五是亂碼的檢直。特殊符號(hào)或者亂碼符號(hào)的護(hù)理規(guī)則。第六是臟數(shù)據(jù)的處理。比如不符合業(yè)務(wù)邏輯的數(shù)據(jù),數(shù)據(jù)孤島。對(duì)delta測(cè)試。Delta記錄的是變化的數(shù)據(jù),通過(guò)今天與昨天數(shù)據(jù)的比對(duì)找出變化的記錄。對(duì)拉鏈歷史測(cè)試。主要是檢查是否存在斷鏈的記錄,生命周期是否交叉。對(duì)數(shù)據(jù)趨勢(shì)測(cè)試。首先是數(shù)據(jù)趨勢(shì)要趨于平穩(wěn)-即波動(dòng)是否有規(guī)律,且波動(dòng)范圍在設(shè)定的閥值之
間。關(guān)于閥值的設(shè)定不同的業(yè)務(wù)指標(biāo)有不同的標(biāo)準(zhǔn)。對(duì)業(yè)務(wù)邏輯測(cè)試。根據(jù)業(yè)務(wù)規(guī)則驗(yàn)證業(yè)務(wù)正常流。指標(biāo)口徑的一致性,如對(duì)于有效cookie的定義是否統(tǒng)一口徑。如從行業(yè)維度考察各個(gè)行業(yè)的上架產(chǎn)品數(shù),需要注意區(qū)分行業(yè)以及上架產(chǎn)品的概念。各行業(yè)的LPV,根據(jù)平臺(tái)的情況,各個(gè)行業(yè)的LPV大致的區(qū)間范圍。各行業(yè)的DPV,根據(jù)平臺(tái)的情況,各個(gè)行業(yè)的DPV大致的區(qū)間范圍。理論上LPV>DPVO根據(jù)業(yè)務(wù)規(guī)則驗(yàn)證業(yè)務(wù)異常流。如上架產(chǎn)品數(shù)對(duì)于producjd的異常處理,考慮行業(yè)不存在的情況等等。程序編譯是否通過(guò),是否支持重復(fù)調(diào)度以及滾。根據(jù)業(yè)務(wù)是否需要記歷史。程序編譯是否通過(guò),是否支持重復(fù)調(diào)度以及滾。根據(jù)業(yè)務(wù)是否需要記歷史。驗(yàn)證記錄平衡,從瀏覽明細(xì)表統(tǒng)計(jì)出的行業(yè)LPV,DPV根據(jù)業(yè)務(wù)是否平衡。唯一性,目標(biāo)表中行業(yè)維度是否唯一,是否存在重復(fù)性記錄等等。3.第三面是idl到adl的測(cè)試。主要關(guān)注以下幾個(gè)方面(物理數(shù)據(jù)測(cè)試+邏輯數(shù)據(jù)測(cè)試):3.對(duì)業(yè)務(wù)邏輯測(cè)試。根據(jù)業(yè)務(wù)規(guī)則驗(yàn)證業(yè)務(wù)正常流。指標(biāo)口徑的一致性,如對(duì)于有效cookie的定義是否統(tǒng)一口徑。如從行業(yè)維度考察各個(gè)行業(yè)的上架產(chǎn)品數(shù),需要注意區(qū)分行業(yè)以及上架產(chǎn)品的概念。各行業(yè)的LPV,根據(jù)平臺(tái)的情況,各個(gè)行業(yè)的LPV大致的區(qū)間范圍。各行業(yè)的DPV,根據(jù)平臺(tái)的情況,各個(gè)行業(yè)的DPV大致的區(qū)間范圍。理論上LPV>DPVO根據(jù)業(yè)務(wù)規(guī)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子裝聯(lián)專用設(shè)備項(xiàng)目建設(shè)總綱及方案
- 2025年磁粉探傷機(jī)項(xiàng)目建議書(shū)
- 護(hù)理原發(fā)性支氣管肺癌
- 陜西航空職業(yè)技術(shù)學(xué)院《英語(yǔ)閱讀實(shí)驗(yàn)教學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 護(hù)理類說(shuō)課大賽
- 雅安職業(yè)技術(shù)學(xué)院《看新聞背單詞》2023-2024學(xué)年第二學(xué)期期末試卷
- 集美大學(xué)《西方哲學(xué)史》2023-2024學(xué)年第一學(xué)期期末試卷
- 青島恒星科技學(xué)院《實(shí)驗(yàn)基礎(chǔ)和儀器分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 青島濱海學(xué)院《中學(xué)生物學(xué)實(shí)驗(yàn)研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 青島電影學(xué)院《景觀設(shè)計(jì)3》2023-2024學(xué)年第一學(xué)期期末試卷
- DL-T5418-2009火電廠煙氣脫硫吸收塔施工及驗(yàn)收規(guī)程
- 2024內(nèi)蒙古自治區(qū)公務(wù)員考試數(shù)量關(guān)系專項(xiàng)練習(xí)題含答案(鞏固)
- 2024年山西林業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- 旅游概論(劉偉主編)(全國(guó)高職高專旅游類“十二五”示范教材) 全套課件(上)
- 19J102-1 19G613混凝土小型空心砌塊墻體建筑與結(jié)構(gòu)構(gòu)造
- 2024屆高考二輪復(fù)習(xí)備考 有機(jī)化學(xué)基礎(chǔ) 課件(共35張)
- 貴州省情知識(shí)考試總題庫(kù)(含答案)
- 女職工權(quán)益保護(hù)
- 抽水蓄能電站工程巖錨梁砼施工監(jiān)理控制措施
- 2022版義務(wù)教育(道德與法治)課程標(biāo)準(zhǔn)(附課標(biāo)解讀)
- 儀容儀表禮節(jié)禮貌培訓(xùn)(定)
評(píng)論
0/150
提交評(píng)論