業(yè)務(wù)智能+ETL+設(shè)計(jì)實(shí)施策略_第1頁(yè)
業(yè)務(wù)智能+ETL+設(shè)計(jì)實(shí)施策略_第2頁(yè)
業(yè)務(wù)智能+ETL+設(shè)計(jì)實(shí)施策略_第3頁(yè)
業(yè)務(wù)智能+ETL+設(shè)計(jì)實(shí)施策略_第4頁(yè)
業(yè)務(wù)智能+ETL+設(shè)計(jì)實(shí)施策略_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、簡(jiǎn)介成功的業(yè)務(wù)智能(b1)應(yīng)用程序需要可靠的工貝來(lái)運(yùn)行。如果開(kāi)發(fā)人員和管理員具備有關(guān) 如何執(zhí)行成功實(shí)現(xiàn)方而的有關(guān)知識(shí)基礎(chǔ)(也就是最佳實(shí)施策略信息),也會(huì)有助于創(chuàng)建這些 應(yīng)用程序。microsoft與其多個(gè)合作伙伴通過(guò)project real為基于 microsoft(r) sql server(tm) 2005的bi應(yīng)用程序找到最佳實(shí)施策略。在project real屮,通過(guò)創(chuàng)建基于 真實(shí)客戶(hù)方案的引用實(shí)現(xiàn)來(lái)研究最佳實(shí)施策略。這意味著客戶(hù)數(shù)據(jù)將被帶到企業(yè)內(nèi)部,并用 于解決這些客戶(hù)在部署過(guò)程中遇到的相同問(wèn)題。這些問(wèn)題包括:架構(gòu)設(shè)計(jì)關(guān)系架構(gòu)和analysis services屮使用的架構(gòu)。數(shù)據(jù)提取

2、、轉(zhuǎn)換和加載(etl)過(guò)程的實(shí)現(xiàn)??蛻?hù)前端系統(tǒng)的設(shè)計(jì)和部署(用于報(bào)告和交互分析)。生產(chǎn)系統(tǒng)大小的調(diào)整。系統(tǒng)的持續(xù)管理和維護(hù),包括對(duì)數(shù)據(jù)的增量更新。通過(guò)使用真實(shí)的部署方案,我們能全面了解如何使用這些工具。我們的目標(biāo)是解決人型公 司在進(jìn)行自身真實(shí)部署過(guò)程中會(huì)遇到的各種問(wèn)題。本文主要討論 project real 的 sql server integration services (ss1s)提取、轉(zhuǎn)換和加載 (etl)設(shè)計(jì)。此設(shè)計(jì)基于barnes & noble的etl體系結(jié)構(gòu)完全使用ssis構(gòu)建并且是 ssis的第一個(gè)etl產(chǎn)品實(shí)現(xiàn)。由于此解決方案不是在數(shù)據(jù)轉(zhuǎn)換服務(wù)(dts)或其他etl

3、 工具基礎(chǔ)上的升級(jí)設(shè)計(jì),因此所采用的許多方法不同于dts中的典型etl體系結(jié)構(gòu)。此 解決方案的f1的是利用ssis的全新應(yīng)用程序體系結(jié)構(gòu),以另外一種角度思考并設(shè)計(jì)一種 etl過(guò)程,使其成為常規(guī)的etl設(shè)計(jì)最佳實(shí)施策略的一個(gè)模型。在本白皮書(shū)中,我們將 說(shuō)明每一個(gè)方案的設(shè)計(jì)決策和project realssis處理過(guò)程的實(shí)現(xiàn)細(xì)節(jié)。冇關(guān)project real的概述,請(qǐng)參閱名為project real:技術(shù)概述的白皮|5« project real 在存續(xù)期間將導(dǎo)致大量論文、工具和示例的產(chǎn)生。耍查看最新的信息,請(qǐng)退回到以下站點(diǎn):project real是microsoft和bi領(lǐng)域的眾多合

4、作伙伴之間的協(xié)作嘗試。這些合作伙伴包 括:apollo data technologies> emc intellinet> panoramaproclarity> scalability experts 和 unisyso project real的業(yè)務(wù)方案和源數(shù)據(jù)集山barnes & noble友情提供。注意:本白皮書(shū)是初稿,其中包含我們根據(jù)使用sql server 2005的早期社區(qū)技術(shù)預(yù)覽 (ctp)版木的經(jīng)驗(yàn)推薦的最佳實(shí)施策略。木白皮朽在發(fā)布時(shí)是準(zhǔn)確的。木文檔中的產(chǎn)品功能 可能會(huì)改變,將來(lái)可能會(huì)開(kāi)發(fā)出更好的實(shí)施策略信息。project real etl 目標(biāo)

5、為了支持報(bào)告和分析要求,任何業(yè)務(wù)智能(bi)系統(tǒng)中都存在etl處理。盂要按此支持 功能實(shí)現(xiàn)etlo這沒(méi)有降低etl的重要功能,因?yàn)橐獔?bào)告的數(shù)據(jù)將通過(guò)etl處理過(guò)程肓 接進(jìn)行處理。etl要考慮該處理過(guò)程的計(jì)時(shí)、性能和準(zhǔn)確性等方面;etl設(shè)計(jì)的支持、管 理、靈活性和吋擴(kuò)展性也非常重耍。真實(shí)系統(tǒng)通常出現(xiàn)一些影響etl的耒知情況和界常情 況。這就要求etl處理過(guò)程能夠輕松處理各種變化并為穩(wěn)定系統(tǒng)的最終目標(biāo)服務(wù)。對(duì)于project real,這些關(guān)鍵方面使得etl設(shè)讓需要實(shí)現(xiàn)以下幾個(gè)主要目標(biāo):etl管理。為了提供管理支持,實(shí)現(xiàn)了可以跟蹤和報(bào)告etl元數(shù)據(jù)的設(shè)計(jì)。這為用戶(hù)進(jìn) 行參考和故障排除提供了清晰的處

6、理過(guò)程狀態(tài),冇助于隔離問(wèn)題和解決問(wèn)題。動(dòng)態(tài)配登。開(kāi)發(fā)這項(xiàng)功能是為了在發(fā)布和分發(fā)核心組件時(shí)支持企業(yè)系統(tǒng)。包含根據(jù)企業(yè)和技 術(shù)要求變化以及大型支持開(kāi)發(fā)團(tuán)隊(duì)的相應(yīng)環(huán)境來(lái)考慮設(shè)計(jì)的適應(yīng)性。平臺(tái)集成。這涉及到設(shè)計(jì)一種與bi解決方案的多個(gè)層次進(jìn)行交互的解決方案。包括安全性、 基礎(chǔ)結(jié)構(gòu)、關(guān)系和olap結(jié)構(gòu)、獲取數(shù)據(jù)的報(bào)告和分析工具。性能。鑒于數(shù)據(jù)倉(cāng)庫(kù)中處理和管理的數(shù)據(jù)量,注意性能問(wèn)題對(duì)于project real解決方案來(lái) 說(shuō)非常重要。數(shù)據(jù)總共可高達(dá)數(shù)tb。內(nèi)容提耍本文主要介紹兒種特定的設(shè)計(jì)原則以及從設(shè)計(jì)過(guò)程獲得的一些經(jīng)驗(yàn)教訓(xùn),并說(shuō)明解決方案 的整體體系結(jié)構(gòu)。文中提供了詳細(xì)參考并包含解決方案的一些設(shè)計(jì)要點(diǎn)。隨

7、著新解決方案的 成熟和在sql server 2005平臺(tái)上的開(kāi)發(fā),將會(huì)發(fā)布更詳細(xì)的、更全面的信息。以后的文章 將擴(kuò)充概念,提供優(yōu)化的性能設(shè)計(jì),并可能演示一些更好的設(shè)計(jì)示例。本文提供一個(gè)可靠的 基于ssis的bietl引用。在規(guī)劃和開(kāi)發(fā)etl的重新設(shè)計(jì)、升級(jí)和新的實(shí)現(xiàn)過(guò)程中,bi 體系結(jié)構(gòu)設(shè)計(jì)師可以使用該工具。ss1s的功能遠(yuǎn)不止僅僅處理etl它貝備系統(tǒng)集成、信息管理和數(shù)據(jù)轉(zhuǎn)換等眾多其他功 能。本文只討論該產(chǎn)品的兒個(gè)方面,涉及與etl處理過(guò)程有關(guān)的兒個(gè)ssis核心部分。 概述本文中的示例與project real實(shí)現(xiàn)直接相關(guān)。每個(gè)示例都是經(jīng)過(guò)挑選的,分別強(qiáng)調(diào)ssis 在應(yīng)用到etl處理時(shí)的特定

8、方面。這些示例演示了前文介紹的一部分目標(biāo)和以下常見(jiàn)的 etl方案:ssis開(kāi)發(fā)環(huán)境etl審核和記錄用于屬性和數(shù)據(jù)源管理的動(dòng)態(tài)配置設(shè)計(jì)標(biāo)準(zhǔn)和獨(dú)特方案的維度處理維度關(guān)聯(lián)的事實(shí)數(shù)據(jù)表處理和事實(shí)數(shù)據(jù)表更新數(shù)據(jù)處理體系結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)處理優(yōu)化技術(shù)project real ssis解決方案中實(shí)現(xiàn)了所有這些示例,而且該解決方案已用90天的每fi 和每周牛產(chǎn)數(shù)據(jù)成功運(yùn)行。處理的數(shù)據(jù)包括一部分假h零售高峰時(shí)的數(shù)據(jù),數(shù)據(jù)時(shí)間跨度達(dá) 兩年,以證明此數(shù)據(jù)作為一個(gè)真實(shí)示例的穩(wěn)定性和可靠性。就像前面提到的那樣,barnes & noble從2004年11刀就已經(jīng)在生產(chǎn)project real etl所基于的這個(gè)“真實(shí)

9、”的ssis 解決方案了。在這些示例和數(shù)據(jù)包中,許多可以或?qū)⒖梢杂脕?lái)仔細(xì)審閱實(shí)現(xiàn)的特定方面。將 來(lái)會(huì)在project real網(wǎng)站上發(fā)布此類(lèi)信息。另外,將在行業(yè)會(huì)議上提供這些數(shù)據(jù)包以演示 project real ssis 設(shè)計(jì)。數(shù)據(jù)配置文件盡管此引用項(xiàng)目是以一個(gè)零售系統(tǒng)為核心的,project real etl還是代表了 許多業(yè)務(wù)方案的提取要求。對(duì)于etl處理來(lái)說(shuō),通常存在一些日常處理要求, 每天都需要將對(duì)源數(shù)據(jù)的更改和添加提取并處理到系統(tǒng)屮去。而每周都運(yùn)行 一組過(guò)程來(lái)管理維度模型的每周庫(kù)存快照。數(shù)據(jù)配置文件包含每口事務(wù)提取、維 度更新和每周庫(kù)存事實(shí)數(shù)據(jù)表管理。事實(shí)數(shù)據(jù)表關(guān)系模型是一種標(biāo)準(zhǔn)的

10、星型架構(gòu)設(shè)計(jì),具有兩類(lèi)主要的事實(shí)數(shù)據(jù)表:銷(xiāo)售和庫(kù) 存。銷(xiāo)售事務(wù)每天收集,代表所冇零售商店的詳細(xì)產(chǎn)品購(gòu)買(mǎi)(包括網(wǎng)絡(luò)訂單)。 處理的數(shù)百萬(wàn)事務(wù)需要添加到銷(xiāo)售事實(shí)數(shù)據(jù)結(jié)構(gòu)中,多數(shù)銷(xiāo)售記錄來(lái)口麗一天的 銷(xiāo)售。另外,冇一小部分銷(xiāo)售對(duì)于系統(tǒng)來(lái)說(shuō)是新的,但卻是遲到的丿力史銷(xiāo)售。所 有的銷(xiāo)售每天都被跟蹤,etl過(guò)程設(shè)計(jì)成允許對(duì)整天的數(shù)據(jù)進(jìn)行多重處理。跟蹤 的主要數(shù)據(jù)圍繞各個(gè)項(xiàng)口事務(wù)的數(shù)量和銷(xiāo)售量。庫(kù)存結(jié)構(gòu)設(shè)計(jì)成一個(gè)以周為周期的標(biāo)準(zhǔn)快照事實(shí)數(shù)據(jù)表,庫(kù)存位置每天更新, 但隨著每周增量進(jìn)行丿力史管理。在商丿占和分發(fā)屮心按項(xiàng)目對(duì)庫(kù)存進(jìn)行跟蹤,每周 都會(huì)產(chǎn)生許多行,需要每天進(jìn)行很多更改。一個(gè)主要的報(bào)告目標(biāo)是了解庫(kù)存和銷(xiāo)

11、 售趨勢(shì),防止出現(xiàn)脫銷(xiāo)的情況。因此,除了標(biāo)準(zhǔn)的“手頭”數(shù)量,還跟蹤“庫(kù)存 天數(shù)”事實(shí)數(shù)據(jù),該信息以周為周期說(shuō)明某項(xiàng)物品在商丿占或分發(fā)屮心庫(kù)存的天數(shù)。 一周結(jié)束時(shí),庫(kù)存級(jí)別被復(fù)制并為新一周的開(kāi)始進(jìn)行初始化,它是etl需要進(jìn) 行的密集過(guò)程。維度表支持事實(shí)數(shù)據(jù)表的維度具冇一些獨(dú)特的特性,使設(shè)計(jì)變得冇趣,而月突出了 ssis的不同方面。產(chǎn)品維度具有數(shù)百力成員,包含標(biāo)準(zhǔn)的更改屬性和歷史屬性, 但要求只有在銷(xiāo)售后才可以開(kāi)始進(jìn)行歷史跟蹤屬性和層次結(jié)構(gòu)更改。木文屮討論 了產(chǎn)品維度是如何影響rtl的。除了產(chǎn)品維度外,還涉及到其他幾種典型的零 售維度。由丁源數(shù)據(jù)的管理方式,所有維度要求如果某個(gè)維度成員在事實(shí)數(shù)據(jù)處

12、 理過(guò)程屮丟失,將向該維度添加一個(gè)具冇相關(guān)業(yè)務(wù)鍵的占位符記錄,直到全部維 度源可以進(jìn)行完整更新。這稱(chēng)為“推斷成員”,并口對(duì)etl具有處理影響。少 數(shù)維度述可以從主事務(wù)或庫(kù)存源表屮直接獲取,要將其添加到事實(shí)數(shù)據(jù)表屮,需 要進(jìn)行特殊處理。整個(gè)ss1s過(guò)程借助復(fù)雜維度說(shuō)明了該工具的靈活性和擴(kuò)展性,旨在為基于 sql 2005平臺(tái)構(gòu)建的許多etl設(shè)計(jì)提供好的參考。ssis開(kāi)發(fā)環(huán)境business intclligcncc (bi) dcvclopment studio 基于 microsoft visual studio(r) 2005 (vs)平臺(tái)構(gòu)建。雖然與sql server 2000中企業(yè)管理

13、器ui冇 很多不同的地方,bi development studio的功能是本著讓數(shù)據(jù)庫(kù)管理員(dba)、 數(shù)據(jù)體系結(jié)構(gòu)設(shè)計(jì)師以及開(kāi)發(fā)人員之類(lèi)的人士容易上手的思想實(shí)現(xiàn)的。簡(jiǎn)化的、 關(guān)注bt開(kāi)發(fā)人員需求的ut配置文件減緩了 vs帶來(lái)的不良因索。對(duì)于project real,單一 bi解決方案涵蓋recurring etl項(xiàng)目。此項(xiàng)目按 增量運(yùn)行所冇的ss1s數(shù)據(jù)包。圖1顯示了具冇共享數(shù)據(jù)源和ss1s數(shù)據(jù)包的 解決方案資源管理器。數(shù)據(jù)包按其功能命名。存在多種類(lèi)型的數(shù)據(jù)包;第一種也 是最簡(jiǎn)單-的一種是維度數(shù)據(jù)包。源自其自身源實(shí)體的每個(gè)維度具有自己的數(shù)據(jù) 包。事實(shí)數(shù)據(jù)表數(shù)據(jù)包在設(shè)計(jì)上都類(lèi)似,只是它們按

14、各自的重復(fù)周期(每口或每 周)進(jìn)行命名-每日和每周對(duì)應(yīng)不同的數(shù)據(jù)包是因?yàn)閮烧遺間的業(yè)務(wù)邏輯是不 同的。例如,factdailystorelnventory數(shù)據(jù)包執(zhí)行的處理任務(wù)與相對(duì)應(yīng)的 每周數(shù)據(jù)包fact_weekly_store_inventory執(zhí)行的處理任務(wù)不同,即使它們都 影響相同的事實(shí)蛟據(jù)表。屜!固圈2 solution 'recurring etl* (1 project) _j solution remse p jj r&uiring etl曰匚 oata sources審; sql_re al _war ©house, d$> sql_real_

15、configurat»on.d$sql.realsource.ds丄 data source views® s5i5 packages滋 3 dim.buyer.dtsx:日dimcxzvendor. dtsx2 dimdrttributioncenter. dtsx2 3 dimjtem.dtsx缶.dimmerchdivision.dtsxq n dim-rturntdtsx:fl a e2qe2zzsi:0 q fa«_dcinvehtory_daiy -dtsx女 n fact_div5trategy_daily. cfcsx 二 fart.stw ein

16、entory_ddi/ .dtsx皿faccstoresale$.daily.dt$x3 q lo*dgroup_dcinventory_daily.dtsx:僉門(mén) loadgroupstorelnventorydailydtsx也 n loadgroupstoresatesdaily. dtsx0 _ real_wtl_load_group_wekly_storejnventorydt$xmreal_etl_loadjsroup_v/eewy_dc_inventory.dt$x0 3 real_etl_loadj3roup_d3ify_store_inventory.dt$x£ u

17、 real上tl.fact.weekly_store.icwentory.dtsx-i real_etl.fact.wef缶 nr tew卅eydsx miscellaneous迫 realconfig.cfcscon .,匚q solution explorerclasspropertiesil n1eptoi5tc*e e:z"余恥閃ept t guxtzy:x n>7pt t it7 je、gx« taty 9zre satoi z 旳對(duì)于處理i辦調(diào),顯示了稱(chēng)為加載組數(shù)據(jù)包的第三種數(shù)據(jù)包。這些數(shù)據(jù)包不包含 處理業(yè)務(wù)邏輯,用于處理前面描述的維度和事實(shí)數(shù)據(jù)包的工作流

18、協(xié)調(diào)以及一些應(yīng) 用程序?qū)徍撕涂芍匦聠?dòng)性。圖2顯示了一個(gè)加載組數(shù)據(jù)包示例。利用“執(zhí)行 數(shù)據(jù)包”任務(wù)執(zhí)行子維度和事實(shí)數(shù)據(jù)包,使用控制流處理一些處理任務(wù)的工作流 和并行化。包含有助于過(guò)程審核和可重新啟動(dòng)的其他任務(wù),這些將在木文的后面 內(nèi)容屮進(jìn)行更詳細(xì)的介紹。源代碼管理集成基于vs的bi development studio具有的優(yōu)點(diǎn)之一是源代碼管理集成。為 了幫助避免當(dāng)多個(gè)開(kāi)發(fā)人員同吋對(duì)相同的過(guò)程進(jìn)行處理吋出現(xiàn)開(kāi)發(fā)“死鎖”,real 的共享開(kāi)發(fā)環(huán)境使用microsoft visual source safe(r) (vss)(雖然不限于 vss) o vss標(biāo)準(zhǔn)功能包括:歷史記錄和備份,鎖定簽入和

19、簽出的數(shù)據(jù)包、數(shù)據(jù) 源或文件以及進(jìn)行版本比較以突岀差別。大部分源代碼管理功能可以在f訂e(文 件)source control (源代碼管理)菜單中找到,如圖3所示。使用visual source safe或其他源代碼管理應(yīng)用程序?qū)崿F(xiàn)源代碼管理后,只 要通過(guò)右鍵單擊數(shù)據(jù)包或數(shù)據(jù)源,就可以訪問(wèn)bi development studio中的許多與對(duì)象相關(guān)的功能,如圖4所示。ssis packagesb : dimensionbuy er. dtsx d : dimensi on _dc_vendor.dtsxreaii a _ rea £ 3 adm i a ; rea i a ; re

20、a i a ; rea i a : rea i a ' rea七rea "fact h-a j rea i a ; rea £ 二 dime "二 dime £ 二 dime £ 二 dime ;d . dimemiscellarset as startup objectexecute packageopenview codehve ntory 血 x itsx:nve ntory 血 x entory.dtsx tory.dtsx7.dtsx龍 check out for edit .錯(cuò)get latest versioncompar

21、e.gethistory.cutmbcop 乂xdeleterenamepropertiesview designerry.dtsx dtsx命名和布局慣例值得注意數(shù)據(jù)包布局、任務(wù)命名和注釋的慣例。為了保持一致性,所冇任務(wù)和 轉(zhuǎn)換的命名以代表任務(wù)或轉(zhuǎn)換類(lèi)型的3或4位字母縮寫(xiě)開(kāi)頭,后跟3至4個(gè) 字詞的對(duì)象功能描述。這非常有助于審核和日志記錄,因?yàn)榭梢愿鶕?jù)對(duì)象名稱(chēng)跟 蹤h志記錄詳細(xì)信息。數(shù)據(jù)包布局通常采用任務(wù)或轉(zhuǎn)換退出主控制流和數(shù)據(jù)流的 順序:先從上到下,后從左到右。注釋給出每個(gè)任務(wù)的詳細(xì)信息,有助于說(shuō)明數(shù) 據(jù)包。s<x onreexecutesql truncate keys tawesq

22、t orprex«cut«: cw 秋 <5 the riol旳elog audt erttry assocted with the etl led group the匕 executed wth-icnt save rowcounu: store the rowcounls from various points h themt fdctsales: coe dmo flow t«k to extract, trarwfornft and lod the djrfy satei data.li t uusql orp«te«cute:

23、completes the tog erttry for a padae execc/kifl with the compieton bme.sql truncate keys table: tnjnces the bu?n«5 key staging tdble to be repopuhted in the next step.mt keylog: data flow tek xwch tends the retevort bv%e菇 keys to 占久的刑 environment for u$e in fterngbokips.etl審核和n志記錄數(shù)據(jù)包和子數(shù)據(jù)包是ii定義的

24、審核步驟,通過(guò)父工作流集成到數(shù)據(jù)包結(jié)構(gòu)設(shè)計(jì) 中,跟蹤高級(jí)執(zhí)行詳細(xì)信息,包括數(shù)據(jù)包的開(kāi)始、結(jié)束、失敗次數(shù)以及幫助驗(yàn)證 數(shù)據(jù)量和處理的行計(jì)數(shù)。ssis木身提供各種日志提供程序類(lèi)型的詳細(xì)數(shù)據(jù)包執(zhí) 行日志記錄。這些詳細(xì)f1志條目由事件驅(qū)動(dòng),并反規(guī)格化到選定提供程序的廿標(biāo) 中。例如,如果某個(gè)數(shù)據(jù)庫(kù)被選作fi志提供程序,則所冇口志條目都會(huì)插入一張 表中。在整個(gè)執(zhí)彳亍過(guò)程中,事件是引擎的參考點(diǎn),如on warnings on validation on execute、on pre execute、on post execute 等。圖 6 突岀顯示了 日志記 錄事件詳細(xì)信息選擇器。日志事件中的每項(xiàng)記錄與任

25、務(wù)或轉(zhuǎn)換運(yùn)行時(shí)所在的相應(yīng)數(shù)據(jù)包的執(zhí)行id相 關(guān)聯(lián)。執(zhí)行id是每次運(yùn)行數(shù)據(jù)包吋生成的唯一 guido我們可以想象,當(dāng)以非常低的頻率進(jìn)行ss1s日志記錄時(shí),對(duì)于每個(gè)數(shù)據(jù)包都會(huì)產(chǎn)生成百上千(如果不 是成千上力)的條目。ssis日志記錄為進(jìn)行故障排除提供了大量的詳細(xì)信息。 但是,如果對(duì)ssis事件不是很了解,又沒(méi)有通過(guò)種清晰的方式將數(shù)據(jù)包執(zhí)行 td與引擎執(zhí)行的特定數(shù)據(jù)包映射起來(lái),則很難獲取和理解這些信息。對(duì)于project real,目標(biāo)是通過(guò)一些與b1相關(guān)的特定執(zhí)行審核來(lái)增強(qiáng)內(nèi)置 日志記錄提供程序,同時(shí)使用日志記錄功能生成詳細(xì)的具有向下鉆取功能的報(bào) 告。審核結(jié)構(gòu)要實(shí)現(xiàn)的功能有:數(shù)據(jù)包和加載組的關(guān)聯(lián)和

26、標(biāo)識(shí)。倉(cāng)庫(kù)結(jié)構(gòu)沿襲列的添加。行計(jì)數(shù)驗(yàn)證審核。具有向卜鉆取功能的etl處理報(bào)告。 數(shù)據(jù)包和加載組跟蹤在支持和管理bi解決方案屮,常握etl過(guò)程使用的數(shù)據(jù)包協(xié)調(diào)非常重要。 因此,建立了更高級(jí)別的跟蹤表來(lái)實(shí)現(xiàn)一起執(zhí)行的相關(guān)數(shù)據(jù)包的關(guān)聯(lián)。其次,執(zhí) 行單一數(shù)據(jù)包時(shí)還創(chuàng)建了一張表。有了 ssts f1志記錄功能,這可能看起來(lái)冇點(diǎn) 多余,但在以數(shù)據(jù)包命名的內(nèi)置口志記錄提供程序的執(zhí)行ii)與更高級(jí)執(zhí)行工作 流的組進(jìn)程id z間形成了一種直觀的映射。由于數(shù)據(jù)包審核表屮數(shù)據(jù)包的每次 執(zhí)行只存在一條記錄,因此也簡(jiǎn)化了報(bào)告并使向下鉆取報(bào)告功能能夠?qū)崿F(xiàn)。project real應(yīng)用程序?qū)徍酥饕峭ㄟ^(guò)“執(zhí)行sql”任務(wù)實(shí)

27、現(xiàn)的。對(duì)于工作 流數(shù)據(jù)包,控制流中的第一個(gè)和最后一個(gè)步驟管理加載組審核。在這個(gè)示例加載 組數(shù)據(jù)包屮,突出顯示了處理此過(guò)程的控制流屮的第一個(gè)和最后一個(gè)步驟。數(shù)據(jù)包級(jí)跟蹤比數(shù)據(jù)包工作流審核低一個(gè)級(jí)別,它也采用類(lèi)似設(shè)計(jì),使用第一 個(gè)和最后一個(gè)控制流步驟。由于加載組數(shù)據(jù)包本身就是一個(gè)數(shù)據(jù)包,圖7中的 第二個(gè)步驟和倒數(shù)第二個(gè)步驟也審核“執(zhí)行sql”任務(wù)。在維度或事實(shí)數(shù)據(jù)表數(shù) 據(jù)包中,它們是第一個(gè)和最后一個(gè)步驟。審核的另一個(gè)核心方而是快速識(shí)別錯(cuò)誤?!笆录幚沓绦蚩刂屏鳌备拍钍莝s1s 的一大特色。這些可以在數(shù)據(jù)包ui的第三個(gè)選項(xiàng)卡上找到。為了快速識(shí)別錯(cuò)誤, 使用了 onerror事件處理程序,該處理程序是

28、在數(shù)據(jù)包級(jí)別上定義的,將捕獲出現(xiàn)的任何數(shù)據(jù)包錯(cuò)誤。eoter bv todbo?sql on&rocfite ea sew project ma oebug ddu fcerrt ssis toofe wrxto5 三-卅* 矗心述 匚 devebpme訓(xùn) |氏冷 糾巧誹 dis i i il §:fact.stocelnv. .x (re«j-ody) factstoreskesddily.cmx * surt pagecontrol rew |j dtafkhm詁 event handerapackage expfcrer 1 j- 1 aexeojtdwc:e

29、vent hanciter:i fxjstoc gles.daiy|onfrrorsql onerrot: executes vhen an error occurs dinng the execution of a pock*8 and nw+s the dud< bg tabtej wth the error gs and time.而11,使用了一組數(shù)據(jù)包變量跟蹤數(shù)據(jù)庫(kù)與這些“執(zhí)行sql”任務(wù)涉及到的數(shù) 據(jù)包2間的元數(shù)據(jù)。使用的主要變量有系統(tǒng)變量system: :packagcexccutionll) 和system:packagename,以及.用戶(hù)變量user:etl_load

30、_ld。該用戶(hù)變量是在 數(shù)據(jù)庫(kù)中創(chuàng)建的標(biāo)識(shí)符,并傳遞給數(shù)據(jù)包。使用ssis的父變量配置功能,這些 變量述從父數(shù)據(jù)包傳遞給子數(shù)據(jù)包。倉(cāng)庫(kù)的沿襲添加批處理標(biāo)識(shí)符etl_load_id不僅將審核元數(shù)據(jù)連在一起以進(jìn)行報(bào)告和隔離, 而且在倉(cāng)庫(kù)中被用來(lái)標(biāo)識(shí)i己錄源。每一個(gè)維度和事實(shí)數(shù)據(jù)記錄都源自一個(gè)特定的 數(shù)據(jù)加載,此列標(biāo)識(shí)該加載。這對(duì)數(shù)據(jù)沿襲和驗(yàn)證以及出現(xiàn)數(shù)據(jù)崩潰時(shí)需要進(jìn)行 的手動(dòng)更正非常冇用。源數(shù)據(jù)提取后,通過(guò)衍生列轉(zhuǎn)換可以立即將批處理標(biāo)識(shí)符添加到數(shù)據(jù)流屮。因 此,任何下游轉(zhuǎn)換都能使用此列進(jìn)行更新、插入和跟蹤,而且使元數(shù)據(jù)包含這些 記錄不需要什么開(kāi)銷(xiāo)。t行計(jì)數(shù)跟蹤der audit: add audi

31、ting metadata from the variable collection to the pipeline so it can be used in the insert processes.數(shù)據(jù)驗(yàn)證對(duì)于dba來(lái)說(shuō)幫助非常大,不僅作為bi解決方案的一部分用于管 理和故障排除,而且有助于建立用戶(hù)信任感。如果用戶(hù)對(duì)數(shù)據(jù)產(chǎn)生懷疑,解決方 案就可能失敗。project real使用行計(jì)數(shù)作為數(shù)據(jù)驗(yàn)證的一個(gè)方面。盡管此級(jí) 別的驗(yàn)證只代表一部分應(yīng)該進(jìn)行的驗(yàn)證,但它是驗(yàn)證中的一個(gè)可靠的優(yōu)先層。行計(jì)數(shù)是在數(shù)據(jù)流屮使用行計(jì)數(shù)轉(zhuǎn)換實(shí)現(xiàn)的。行計(jì)數(shù)轉(zhuǎn)換就是計(jì)算通過(guò)的行數(shù) 并將值存儲(chǔ)到一個(gè)預(yù)定義的用戶(hù)變量中。

32、行計(jì)數(shù)轉(zhuǎn)換的一大優(yōu)點(diǎn)是需要的開(kāi)銷(xiāo)和 資源非常少。因此,在所有維度和事實(shí)數(shù)據(jù)包的核心數(shù)據(jù)流屮,每個(gè)源數(shù)據(jù)的后 面、目標(biāo)或ole db命令的前面以及數(shù)據(jù)流中任何存在高值點(diǎn)的地方都插入了行 計(jì)數(shù)轉(zhuǎn)換。這些計(jì)數(shù)存儲(chǔ)到不同的變量中,并通過(guò)數(shù)據(jù)流轉(zhuǎn)換后緊跟的“執(zhí)行 sql”任務(wù)在數(shù)據(jù)庫(kù)屮持續(xù)起作用。圖10顯示了數(shù)據(jù)流屮這些行計(jì)數(shù)轉(zhuǎn)換的實(shí)現(xiàn)。etl報(bào)告a :臥如” jtv hwuibes nixowinq sor * wb時(shí)(mr«l shnown slip sd omrtwsfce the為了將所冇內(nèi)容聯(lián)系在一起并形成條理清晰的信息供開(kāi)發(fā)人員管理和進(jìn)行故 障排除時(shí)使用,設(shè)計(jì)了一系列的report

33、ing services鏈接報(bào)告,這些報(bào)告與審 核、驗(yàn)證和日志記錄相關(guān)。讓我們冋顧一下前面的內(nèi)容,如果您閱讀了審核討論, 就口j能了解實(shí)現(xiàn)了關(guān)聯(lián)元數(shù)據(jù)的支持架構(gòu)。該架構(gòu)中使用了四個(gè)主要表格:三個(gè)用戶(hù)定義的表格和一個(gè)內(nèi)置的ssis日志記錄表格。load group executionpackage executionsys ssis log-m- l.row count validationproject real etl報(bào)告基于這些結(jié)構(gòu),并通過(guò)reporting services表分組 和鏈接的子報(bào)告提供能向下鉆取到詳細(xì)信息的高級(jí)加載組執(zhí)行摘要。包含以下級(jí) 別的報(bào)告:加載組執(zhí)行摘要-開(kāi)始和完成

34、時(shí)間、持續(xù)時(shí)間摘要和執(zhí)行狀態(tài)。數(shù)據(jù)包執(zhí)行摘要-加載組關(guān)聯(lián)、開(kāi)始和完成時(shí)間、持續(xù)時(shí)間摘要和執(zhí)行狀態(tài)。行計(jì)數(shù)詳細(xì)信息-步驟描述、類(lèi)型和行數(shù)。數(shù)據(jù)包控制流任務(wù)摘要-從基本日志表獲得的任務(wù)摘要匯總,包括任務(wù)持續(xù)時(shí) 間和狀態(tài)。詳細(xì)的事件f1志分類(lèi)-按選定數(shù)據(jù)包或任務(wù)排序和篩選的詳細(xì)日志條目。etl報(bào)告清楚地說(shuō)明了它在管理ss1s解決方案和進(jìn)行故障排除屮的作用。£ixt>on*ssafl 7rrw51qi20g$i:24«lpm421«2i20&sl:2sx>lpw1pmiutge data flow tartggngflk. oneffw. gwxtg氏

35、 cwre/eaee. oriacm/vaidac? qnpreeuttt, cnrevumm, ckagrms. otaif 6w" pvjw. pkaswt.uie uirt?f4iaer4r»qg,. 95e<neoax>tre«(i 2s2w51:2$:4r w3«14ijkckjfal$t2ms2;67;mpm1'ikxeeded712s.20ds 5:36:53 fw0pacl>0e«s動(dòng)態(tài)配置設(shè)計(jì)ssis數(shù)據(jù)包的可管理性、分發(fā)和部署的關(guān)鍵之處在于配置。ssis采用多種方 法來(lái)在運(yùn)行時(shí)配置數(shù)據(jù)包屬性,允許更

36、新連接信息、變量和任何其他需要在執(zhí)行 時(shí)動(dòng)態(tài)配置的任務(wù)或轉(zhuǎn)換屈性。提供了幾種內(nèi)置的配置方法,涵蓋不同解決方案 可以使用的多種環(huán)境要求,包括:配置文件環(huán)境變量sql配置表格父數(shù)據(jù)包變量當(dāng)從開(kāi)發(fā)etl數(shù)據(jù)包轉(zhuǎn)到生產(chǎn)該數(shù)據(jù)包吋,就能看到這項(xiàng)功能的實(shí)際價(jià)值。 在大多數(shù)情況卜,只要在配置系統(tǒng)中改變幾個(gè)條目就可以實(shí)現(xiàn)這個(gè)目的。sql配置project real的口標(biāo)是將配置進(jìn)行集小化,使etl設(shè)計(jì)可以部署到向上擴(kuò)展模型和分布式模型的兩種獨(dú)特環(huán)境屮。與此類(lèi)似,還捉供了多種版本的real解 決方案(完全版本、示例版本和演示版本)以供參考和演示。因此,通過(guò)內(nèi)置sql 配置,根據(jù)解決方案的不同數(shù)據(jù)庫(kù)版木對(duì)配置進(jìn)行

37、集屮化,這樣可以將配直屬性 和映射放到關(guān)系表中,數(shù)據(jù)包之間共享配置屬性和映射。要打開(kāi)集中化的管理工 具,請(qǐng)選擇ssis,然后選擇configurations (配置)。圖13顯示了 sql配 置選項(xiàng)。mnk1xm ccrrum g u>9c4ld<a5ql"ijrao弘 5<rvt<wr lymnxf "y* w*e»t vvifte上 畑x p«>滬宀并如。加0 ombat h cferce d 皿少如(8 2x創(chuàng) < mx. zrd c thr be kndednr*.在配置表屮,用多個(gè)條目表示不同的屈性。第一組條

38、目是冇關(guān)連接的。需要指 出的是如何應(yīng)用連接的配置條目,以及對(duì)于一個(gè)數(shù)據(jù)包來(lái)說(shuō)解決方案數(shù)據(jù)源是如 何工作的。從數(shù)據(jù)源對(duì)象創(chuàng)建連接后,該連接是運(yùn)行時(shí)的數(shù)據(jù)源,執(zhí)行數(shù)據(jù)包吋 該連接不會(huì)根據(jù)父數(shù)據(jù)源而更新。數(shù)據(jù)源是設(shè)計(jì)時(shí)結(jié)構(gòu),因此,當(dāng)在ut中打開(kāi) 一個(gè)數(shù)據(jù)包時(shí),那些從ssis解決方案中的數(shù)據(jù)源創(chuàng)建的連接將被更新。由于這 種原因,連接非常適合用于配置,它們通常需要根據(jù)環(huán)境(開(kāi)發(fā)、測(cè)試和生產(chǎn)) 動(dòng)態(tài)變化。project real配置表中的其他條目是可變映射。這些可變映射可以 更新etl屮用來(lái)處理邏輯和管理的可變值。xml文件配置在圖13屮,相應(yīng)sql配置表的位置由數(shù)據(jù)包連接決定。但是,如果所冇的 連接信息

39、都放在配置表中,則將岀現(xiàn)循環(huán)引用,導(dǎo)致使用硬編碼的數(shù)據(jù)包連接值, 而這是我們不希望看到的。為了防止這種情況發(fā)生,使用了第二種配置類(lèi)型- xml文件配置。此外,在將配置集中到一個(gè)數(shù)據(jù)庫(kù)表格的目標(biāo)下,xml文件中只 需要一個(gè)配置條目-指向包含sql配置表格的數(shù)據(jù)庫(kù)的連接字符吊。正如您看 到的那樣,xml文件配置實(shí)際上只冇一個(gè)屈性-xml文件的位置和文件名。丹ze如伸映 力e b 心* cf 辭4oe 謝山 2be x5k* smed * mk,化 mineerd orrtomrierflvzieiheytekieeimhdtrcmtmiarcov«wts 5ql*fxh>rwr&q

40、uot;mi sqlwee sfcam.r. >mhp文件配置的一大特色是能夠使用定義配置文件位置的服務(wù)器環(huán)境變量。由于所 有的數(shù)據(jù)包都引用此文件,使用環(huán)境變量使得只用一個(gè)位置就可以實(shí)現(xiàn)文件更 改。這對(duì)部署也非常冇用,執(zhí)行這些數(shù)據(jù)包的英他服務(wù)器可以使用不同的文件位 置和文件名。使用環(huán)境變量不同于ssis環(huán)境變量配置,后者允許一個(gè)服務(wù)器包 含多個(gè)替代任何數(shù)據(jù)包屬性的環(huán)境變量。父變量配置到現(xiàn)在為止,上述所冇project real配置使用都是針對(duì)全局屈性(即指定環(huán) 境中每次執(zhí)行一個(gè)數(shù)據(jù)包或一組數(shù)據(jù)包所用的連接和變量)的。而有些配置需要 僅限于數(shù)據(jù)包的特定執(zhí)行和數(shù)據(jù)包參與的工作流組的特定執(zhí)行。

41、例如,工作流組 的批處理標(biāo)識(shí)符etl_load_td是在加載組數(shù)據(jù)包的初始步驟創(chuàng)建的并用于所冇 的了數(shù)據(jù)包。數(shù)據(jù)包的每次執(zhí)行都是在不同批處理環(huán)境卜進(jìn)行的,因此,此變量 的配置需要根據(jù)執(zhí)行的數(shù)據(jù)包動(dòng)態(tài)變化。ssis的父變量配置功能使子數(shù)據(jù)包可以繼承父數(shù)據(jù)包的變量。這與ssis的 前身dts不同,在dts中,變量是從父數(shù)據(jù)包傳給子數(shù)據(jù)包的。在ssts中, 了數(shù)據(jù)包可以通過(guò)名稱(chēng)請(qǐng)求父數(shù)據(jù)包中的變量,從而能夠從任何調(diào)用的使用“執(zhí) 行數(shù)據(jù)包”任務(wù)來(lái)調(diào)用子數(shù)據(jù)包的父數(shù)據(jù)包繼承變量。project real要求存在一種只針對(duì)一個(gè)數(shù)據(jù)包或一組數(shù)據(jù)包執(zhí)行實(shí)例的配 置,這完全可以通過(guò)父變量配置功能實(shí)現(xiàn)。就像提到的

42、那樣,所冇的維度和事實(shí) 數(shù)據(jù)包都繼承etl.load.id,父數(shù)據(jù)包的執(zhí)行id也同樣可以被繼承,這就進(jìn)一 步實(shí)現(xiàn)了數(shù)據(jù)包z間的藪據(jù)相關(guān)。圖15顯示了 vnetl.load.ld標(biāo)識(shí)符的變量 配置。數(shù)據(jù)處理體系結(jié)構(gòu)到現(xiàn)在為止我們已經(jīng)討論了 ssis設(shè)計(jì)的支持結(jié)構(gòu),但沒(méi)有深入探究任何核心 etl處理邏輯。此概述將基于本文詢(xún)述章節(jié)給出的概念深入探究此處理邏輯。但 是,在詳細(xì)介紹project real數(shù)據(jù)處理實(shí)現(xiàn)的細(xì)節(jié)z前,需?;剡^(guò)頭來(lái)在重耍 的etl原則下考慮ss1s的一些新功能??刂屏骱蛿?shù)據(jù)流控制流和數(shù)據(jù)流組件中包含用來(lái)實(shí)現(xiàn)核心業(yè)務(wù)邏輯的ssts的主要功能。文本 在討論環(huán)境以及審核project

43、 real的結(jié)構(gòu)時(shí)已經(jīng)幾次提到過(guò)這些組件。粗略地說(shuō),“控制流”是協(xié)調(diào)數(shù)據(jù)包的業(yè)務(wù)處理流邏輯的任務(wù)工作流引擎。無(wú) 論是包含單個(gè)步驟述是多個(gè)相互關(guān)聯(lián)的任務(wù),每個(gè)數(shù)據(jù)包都只有一個(gè)主要控制流 (事件處理程序也是一種控制流)??刂屏髦械娜蝿?wù)通過(guò)約束(成功、失敗、完 成和口定義約束表達(dá)式以及布爾邏輯)鏈接在一起?!皵?shù)據(jù)流”是數(shù)據(jù)處理引擎,它處理數(shù)據(jù)移動(dòng)、轉(zhuǎn)換邏輯、數(shù)拯組織以及源和 口標(biāo)之間數(shù)據(jù)的提取和提交。與控制流不同,由控制流編排的數(shù)據(jù)包屮可以定義 多個(gè)數(shù)據(jù)流。雖然數(shù)據(jù)流冇與控制流工作流連接器非常相似的綠連接器和紅連接 器,但是它們的功能完全不同??梢詫?shù)據(jù)流連接器視為以小批數(shù)據(jù)從一個(gè)轉(zhuǎn)換 流到另一個(gè)轉(zhuǎn)

44、換的數(shù)據(jù)管道(稱(chēng)為“緩沖區(qū)”)。而這是顯示數(shù)據(jù)流如何工作的 最簡(jiǎn)單方式,事實(shí)上,為了獲得最佳性能,向數(shù)據(jù)緩沖區(qū)移動(dòng)的工作實(shí)際上主要 是定義的轉(zhuǎn)換執(zhí)行的。ssts體系結(jié)構(gòu)優(yōu)點(diǎn)產(chǎn)品ssis除了在互操作性、配置、可重新啟動(dòng)性和登錄方面比產(chǎn)品dts更 好外,它述引入了轉(zhuǎn)換引擎,這在大規(guī)模處理時(shí)更顯優(yōu)勢(shì),并使etl體系結(jié)構(gòu) 設(shè)計(jì)更加穩(wěn)定、更加靈活、更加基于性能。對(duì)于project real,核心etl開(kāi)發(fā) 屮考慮了這些優(yōu)點(diǎn),因此某些設(shè)計(jì)決策并未遵循基于dts的體系結(jié)構(gòu)的現(xiàn)狀。冇限的分段首先,ssis通過(guò)使復(fù)雜的數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)清潔和數(shù)據(jù)查詢(xún)可以在數(shù)據(jù)流屮直 接執(zhí)行(很少依賴(lài)rdbms引擎和存儲(chǔ)),從而減少

45、了分段環(huán)境。源表和倉(cāng)庫(kù)表 z間的數(shù)據(jù)對(duì)比可以通過(guò)具有條件拆分的杳詢(xún)轉(zhuǎn)換和合并轉(zhuǎn)換進(jìn)行處理,以將結(jié) 果定向到相應(yīng)的加載邏輯。為此,數(shù)據(jù)庫(kù)引擎的唯一要求是將數(shù)據(jù)輸出到ss1s 數(shù)據(jù)流而不是輸出到執(zhí)行查詢(xún)、連接或行對(duì)比的數(shù)據(jù)庫(kù)。管道優(yōu)點(diǎn)大多數(shù)數(shù)據(jù)流組件都具有真止的管道并行功能(不過(guò)要注意,sort轉(zhuǎn)換和 aggregate轉(zhuǎn)換并沒(méi)冇此功能),這意味著在小型數(shù)據(jù)緩沖區(qū)屮可以同時(shí)處理倉(cāng) 庫(kù)對(duì)彖,而不需要等待整個(gè)上游處理完成后才能進(jìn)行下一步。這有助于緩解對(duì)源 系統(tǒng)的提取影響,在project real開(kāi)發(fā)過(guò)程屮,多數(shù)情況下,優(yōu)化ssis數(shù)據(jù) 包后,從源提取原始數(shù)據(jù)并立即將其傳遞到數(shù)據(jù)庫(kù)所花費(fèi)的時(shí)間人約相當(dāng)

46、于提取 數(shù)據(jù)并將其傳遞到在數(shù)據(jù)流組件中設(shè)計(jì)的一系列內(nèi)存中的轉(zhuǎn)換所花費(fèi)的時(shí)間。 數(shù)據(jù)清潔和轉(zhuǎn)換現(xiàn)有的ssis數(shù)據(jù)流轉(zhuǎn)換包含-系列數(shù)據(jù)清潔工具,例如,模糊查詢(xún)和連接、 字符映射、數(shù)據(jù)類(lèi)型轉(zhuǎn)換、派生列以及一組用于數(shù)據(jù)對(duì)比和數(shù)據(jù)替換的基于布爾 值的函數(shù)。多對(duì)多源和目標(biāo)由于單個(gè)數(shù)據(jù)流可以包含多個(gè)不同的源和口標(biāo),因此這就使源于單個(gè)源的數(shù)據(jù) 可以被拆分到多個(gè)目標(biāo)。反之亦然,多個(gè)源對(duì)象口j以合并到單個(gè)目標(biāo)。通常在bi 系統(tǒng)中,維度可以源于同一系統(tǒng)或不同系統(tǒng)中的不同表。同樣,事實(shí)數(shù)據(jù)可以源 于一個(gè)表或多個(gè)表,或者事務(wù)性源可以分裂成多個(gè)事實(shí)數(shù)據(jù)表目標(biāo)。 維度和事實(shí)數(shù)據(jù)粒度及類(lèi)型更改多數(shù)情況下,倉(cāng)庫(kù)對(duì)象以與其源ol

47、tp對(duì)象相同的粒度被加載。但是,也冇維 度合計(jì)到較高粒度或者父了口連接的源降級(jí)到標(biāo)準(zhǔn)層次結(jié)構(gòu)的情況。源記錄可能 需要透視,例如,當(dāng)源行從第四常規(guī)設(shè)計(jì)統(tǒng)一到相關(guān)屈性的統(tǒng)一記錄集時(shí)。合計(jì) 或分組事實(shí)數(shù)據(jù)表以滿(mǎn)足報(bào)告要求時(shí),這些事實(shí)數(shù)據(jù)表也可能進(jìn)行類(lèi)似的轉(zhuǎn)換。 通常使用其他轉(zhuǎn)換(如,aggregate> pivot、un-pivot、sort> merge join 等 等)在數(shù)據(jù)流內(nèi)處理這些少見(jiàn)的情況。維度處理處理維度的歷史記錄是etl解決方案比較復(fù)雜的一個(gè)原因。對(duì)于project real,維度加載情況不僅涉及處理歷史屬性和更改屬性,還涉及維度更改類(lèi)型以 及與維度關(guān)聯(lián)無(wú)法同步的事實(shí)數(shù)

48、據(jù)。除了考慮scd(漸變維度)向?qū)У膬?nèi)置功能 外,我們還將考慮項(xiàng)目中包含的一些更特殊的要求:推斷維度成員,其中因?yàn)橥暾S度記錄尚不能加載,所以收到不具有匹配維度成 員的事實(shí)數(shù)據(jù)。有吋稱(chēng)為“孤立事實(shí)數(shù)據(jù)”。更改scd類(lèi)型,其屮在一個(gè)維度內(nèi)的成員有不同的歷史更改要求,其屮的個(gè)別 要求可能隨著時(shí)間的推移會(huì)有所更改。ss1s能夠同時(shí)處理project real解決方案的標(biāo)準(zhǔn)情況和特殊情況,如下所漸變維度向?qū)總€(gè)etl設(shè)計(jì)師都希望擁有一個(gè)可以神奇地處理漸變維度的工具ossis可以 基本達(dá)到這一效果-在ss1s屮冇一個(gè)向?qū)?,它基于源維度架構(gòu)和目標(biāo)維度架 構(gòu),通過(guò)一系列步驟使開(kāi)發(fā)人員可以確定更改的特征。然后

49、此向?qū)Ы⑻幚碓摼S 度所需要的轉(zhuǎn)換。即使要求改變,也可以重新調(diào)用該向?qū)?,通過(guò)允許修改原來(lái)的 選擇以便處理新的過(guò)程。對(duì)于project real,漸變維度(scd)工具很冇優(yōu)勢(shì)。除了一個(gè)星型架構(gòu)維度 表以外,其他所有星型架構(gòu)維度表都使用scd轉(zhuǎn)換。極大地縮短了維度處理所 用的開(kāi)發(fā)吋間。為了顯示scd向?qū)У墓ぷ鞣绞?,store維度提供了該向?qū)ё钊?面的使用方法。store維度的要求包括:新建維度成員-新維度成員添加到源中更改維度屈性- 蓋。以前的類(lèi)型1列更改,其中每次源列值更改時(shí)歷史記錄被覆歷史維度屬性-以前的類(lèi)型2列,其中通過(guò)添加一個(gè)新維度記錄將歷史記錄 保存到卜一次更改z前,添加的新維度記錄與

50、所有新事實(shí)數(shù)據(jù)記錄相關(guān)聯(lián)。推斷成員-即在事實(shí)數(shù)據(jù)處理運(yùn)行之前維度成員尚未加載到維度表屮的情況, 這樣會(huì)添加一個(gè)占位符記錄,一旦完整的源維度口j用,該占位符將隨后更新(類(lèi) 型1列和類(lèi)型2列)。瀏覽store維度的向?qū)В室粋€(gè)屏幕顯示了一系列可供其業(yè)務(wù)鍵選擇的列, 如圖16所示。下一步,該向?qū)枰獏^(qū)分出類(lèi)熨更改的列。選項(xiàng)冇changing屈性historical 屬性和標(biāo)識(shí)不應(yīng)當(dāng)更改的列的fixed屬性。圖17顯示了這些屬性。mmowty chnomg ownenuon wizardstowfy ctidriging din>en$km cohjnn$maage the chanqes to

51、 cohnn dau ti yotrcharmgng dmenfiora by settng thetype 2ftxed anrawmesdkt 如 eype 4n e tue m 0 change. chrts are treked « enoc5.sated otype & stoumngngcokms;chdr>ging altiitxxe shetftnstyperchdomvjw sbojd overwte e«tng va>«.hisloncd altiibutesetect ths type hen changes n coiu

52、m vkjes are mred r new records. frewxk are mv«d r rdcords narkedmfmdated thi$atype2 chdrf.dmcimftcobrwomhtype-cmrs mutmteadd 少mechngng atbtx/t33$血阿dttiweactt.untzchngr 航 zcc«kxx jrdchdrvgng attnu*ccer«rj>w<chgrigcty| mstcrd fctriwteoosejltef«eid«rixxj包含歷史列或類(lèi)型2列的維度需要一些元

53、數(shù)據(jù)來(lái)管理毎個(gè)更改的當(dāng)前和歷史 性質(zhì)。下一個(gè)屏幕(圖18)有助于處理過(guò)程了解store維度是如何跟蹤歷史記 錄的。在這種情況下,current_row列將跟蹤哪個(gè)維度記錄是更改的維度行的當(dāng)前維度記錄。下一步,如果使用推斷成員,圖19屮顯示的屏幕將標(biāo)識(shí)scd向?qū)绾沃?維度記錄是推斷成員,從而除業(yè)務(wù)鍵之外的所有列在處理過(guò)程中都會(huì)得到更新。 有兩個(gè)選項(xiàng)。第一個(gè)選項(xiàng)表示所有的非鍵列都是null值,來(lái)標(biāo)識(shí)推斷成員。第 二個(gè)選項(xiàng)出標(biāo)志列驅(qū)動(dòng),表示成員是否是推斷成員??紤]到值為null的列在 analysis services中不能e確顯示,所以我們選擇使用稱(chēng)為infcrrcd_mcmbcr 的列。然后

54、我們就可以用名為unknown值替換在analysis services層次結(jié)構(gòu) 中使用的屬性。上一屏幕后,該向?qū)闪艘?系列為向?qū)幚磉^(guò)程屮輸入的詳細(xì)信息定制的轉(zhuǎn) 換。主要轉(zhuǎn)換稱(chēng)為slowly changing dimension轉(zhuǎn)換。它將輸入作為維度源記 錄,無(wú)論它們是完整維度源記錄或僅僅是部分源記錄(在源記錄上添加或更改的 記錄)o將scd任務(wù)視為非緩存lookup轉(zhuǎn)換和conditional split轉(zhuǎn)換的組 合,其中針對(duì)倉(cāng)庫(kù)維度評(píng)估源維度記錄,然后分發(fā)到不同的scd輸出。圖20顯 示了 store scd轉(zhuǎn)換的最終ui圖像及其相關(guān)聯(lián)的輸出。唯一維度情況唯一不使用scd轉(zhuǎn)換的pro

55、ject real維度處理數(shù)據(jù)包是item維度。其要 求是唯一,其大?。ù蠹s六百萬(wàn)個(gè)成員)需要對(duì)可仲縮性進(jìn)行特殊處理。item維度區(qū)別于其他維度的一個(gè)特征是scd類(lèi)型更改的種類(lèi)不同。除了需要 推斷成員、changing屬性和historical屬性外,要求還指定對(duì)于一個(gè)給定的 成員,其屬性更改類(lèi)型可以從changing屬性變?yōu)閔istorical屬性;從類(lèi)型1 轉(zhuǎn)到類(lèi)型2o第一次銷(xiāo)售某項(xiàng)時(shí)將會(huì)發(fā)生這種情況。第一次銷(xiāo)售z前,所冇的屈 性都作為changing類(lèi)型1屬性,但是一旦銷(xiāo)售出去,一部分屬性將變?yōu)?historical類(lèi)型2更改。這種情況被定義為類(lèi)型1. 5更改,并由業(yè)務(wù)需求驅(qū) 動(dòng)來(lái)限制添

56、加到維度中的類(lèi)型2的數(shù)量,這是因?yàn)楫?dāng)某項(xiàng)第一次輸入到事務(wù)性 系統(tǒng)后,在前幾天建立其特征的過(guò)程將會(huì)導(dǎo)致發(fā)生多個(gè)更改。得出這些初始屬性 詳細(xì)信息時(shí),維度成員處于一種狀態(tài),其中對(duì)任何屈性的更改都會(huì)在維度中(而 非新類(lèi)型2歷史記錄)導(dǎo)致該屬性的更新。此方法所提供的值將使維度表的增 加僅限于有意義的歷史更改,當(dāng)某項(xiàng)處于穩(wěn)定狀態(tài)并處于銷(xiāo)售吋正是如此。雖然 這種情況曲不同的業(yè)務(wù)要求驅(qū)動(dòng)著,但是這種情況類(lèi)似于推斷成員的工作方式。 然而,在這種情況下,源維度記錄可用,并且一直耍求更新所有屬性,直到滿(mǎn)足 銷(xiāo)售要求。是否使用scd向?qū)У臎Q定性因素是維度所處理的記錄量。六百萬(wàn)個(gè)成員item 維度的100個(gè)屬性在一天內(nèi)

57、會(huì)經(jīng)歷上萬(wàn)次更改。內(nèi)置scd組件查詢(xún)過(guò)程正在生 成對(duì)數(shù)據(jù)庫(kù)同等數(shù)量的調(diào)用、杳詢(xún)大范圍的表并且在結(jié)果行返回許多列。此過(guò)程 所用的時(shí)間達(dá)不到窗口所需要的時(shí)間,因此采取了另一種方法。一種辦法就是使用lookup轉(zhuǎn)換并將整個(gè)維度保存到緩存屮,以便所有列將可 用于更改類(lèi)型對(duì)比。但是,將大型表的所冇列保存在緩存中需要幾gb的內(nèi)存, 并且還要花大量的時(shí)間來(lái)加載到內(nèi)存。因此,使用了左邊的merge join轉(zhuǎn)換, 其中左邊的源記錄通過(guò)業(yè)務(wù)鍵與右邊的當(dāng)前維度成員匹配,如圖21所示。此連 接的影響是將只輸入那些在相關(guān)事實(shí)數(shù)據(jù)屮實(shí)際使用的item記錄。更改類(lèi)型分 析的維度所需要的列包含在匹配記錄的數(shù)據(jù)流中。使用左邊的合并以便源(左邊) 的新記錄可以繼續(xù)沿著管道,其屮它們將作為新成員添加到維度屮。cwhgize the cropecbejumto >on tvw screes tf sorted dm. setert 出e wi type ardthenspeefy the cckrrftf eo be gd «the >cri hey. e 匚”的*1 be umj

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論