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

下載本文檔

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

文檔簡(jiǎn)介

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

2、換和加載(etl)過程的實(shí)現(xiàn)??蛻羟岸讼到y(tǒng)的設(shè)計(jì)和部署(用于報(bào)告和交互分析)。生產(chǎn)系統(tǒng)人小的調(diào)整。系統(tǒng)的持續(xù)管理和維護(hù),包括對(duì)數(shù)據(jù)的增量更新。通過使用真實(shí)的部署方案,我們能全面了解如何使用這些工貝-。我們的目標(biāo)是解決大型公 司在進(jìn)行白身真實(shí)部署過程中會(huì)遇到的各種問題。本文主要討論 project real 的 sql server integration services (ssis)提取、轉(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)。此 解決方案的目的是利用ssis的全新應(yīng)用程序體系結(jié)構(gòu),以另外一種角度思考并設(shè)計(jì)一種 etl過程,使其成為常規(guī)的etl設(shè)計(jì)最佳實(shí)施策略的一個(gè)模型。在本口皮書屮,我們將 說明每一個(gè)方案的設(shè)計(jì)決策和project real ssis處理過程的實(shí)現(xiàn)細(xì)節(jié)。有關(guān)project real的概述,請(qǐng)參閱名為project real:技術(shù)概述的白皮書o project real 在存續(xù)期間將導(dǎo)致人量論文、工具和示例的產(chǎn)生。要杏看最新的信息,請(qǐng)退回到以下站點(diǎn):project real是microsoft和bi領(lǐng)域的眾多合作伙伴之間的

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

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

6、提供了清晰的處理過程狀態(tài),有助于隔離問題和解決問題。動(dòng)態(tài)配置。開發(fā)這項(xiàng)功能是為了在發(fā)布和分發(fā)核心組件吋支持企業(yè)系統(tǒng)。包含根據(jù)企業(yè)和技 術(shù)要求變化以及大型支持開發(fā)團(tuán)隊(duì)的相應(yīng)環(huán)境來考慮設(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)庫屮處理和管理的數(shù)據(jù)量,注意性能問題對(duì)于project real解決方案來 說非常重要。數(shù)據(jù)總共可高達(dá)數(shù)tbo內(nèi)容提耍本文主要介紹幾種特定的設(shè)計(jì)原則以及從設(shè)計(jì)過程獲得的一些經(jīng)驗(yàn)教訓(xùn),并說叨解決方案 的整體體系結(jié)構(gòu)。文屮提供了詳細(xì)參考并包含解決方案的一

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

8、tl處理時(shí)的特定方面。這些示例演示了前文介紹的一部分ii標(biāo)和以下常見的 etl方案:ssis開發(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)了所冇這些示例,而r該解決方案已用90天的每口 和每周生產(chǎn)數(shù)據(jù)成功運(yùn)行。處理的數(shù)據(jù)包括一部分假日零售高峰吋的數(shù)據(jù),數(shù)據(jù)時(shí)問跨度達(dá) 兩年,以證明此數(shù)據(jù)作為一個(gè)真實(shí)示例的穩(wěn)定性和可靠性。就像前血提到的那樣,barnes & noble從2004年11月就己經(jīng)在生產(chǎn)project real etl所

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

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

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

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

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

14、它們按各口的重復(fù)周期(每日或每 周)進(jìn)行命名-每日和每周對(duì)應(yīng)不同的數(shù)據(jù)包是因?yàn)閮烧咧g的業(yè)務(wù)邏輯是不 同的。例如,fact_dai ly_store_tnventory數(shù)據(jù)包執(zhí)彳亍的處理任務(wù)與相對(duì)應(yīng)的 每周數(shù)據(jù)包fact_wcckly_storc_invcntory執(zhí)行的處理任務(wù)不同,即使它們都 影響相同的事實(shí)藪據(jù)表。屜!固圈2 solution 'recurring etl* (1 project) _j solution remse p jj r&uiring etl曰eptoi5tc*e e:z"余恥閃il n1ept t guxtzy:x n>7pt t

15、 it7 je、gx« taty 9zre satoi z 旳匚 oata sources審; sql_re al _war ©house, d$> sql_real_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:f

16、l a e2qe2zzsi:0 q fa«_dcinvehtory_daiy -dtsx女 n fact_div5trategy_daily. cfcsx 二 fart.stw einentory_ddi/ .dtsx皿faccstoresale$.daily.dt$x3 q lo*dgroup_dcinventory_daily.dtsx:僉門 loadgroupstorelnventorydailydtsx也 n loadgroupstoresatesdaily. dtsx0 _ real_wtl_load_group_wekly_storejnventorydt$xmreal_

17、etl_loadjsroup_v/eewy_dc_inventory.dt$x0 3 real_etl_loadj3roup_d3ify_store_inventory.dt$x£ u real上tl.fact.weekly_store.icwentory.dtsx-i real_etl.fact.wef缶 nr tew卅eydsx miscellaneous迫 realconfig.cfcscon .,匚q solution explorerclassproperties對(duì)于處理協(xié)調(diào),顯示了稱為加載組數(shù)據(jù)包的第三種數(shù)據(jù)包。這些數(shù)據(jù)包不包含 處理業(yè)務(wù)邏輯,用于處理前面描述的維度和事實(shí)

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

19、份,鎖定簽入和簽出的數(shù)據(jù)包、數(shù)據(jù) 源或文件以及進(jìn)行版本比較以突出差別。大部分源代碼管理功能可以在f訂c(文 件)source control (源代碼管理)菜單中找到,如圖3所示。使用visual source safe或其他源代碼管理應(yīng)用程序?qū)崿F(xiàn)源代碼管理后,只 要通過右鍵單擊數(shù)據(jù)包或數(shù)據(jù)源,就可以訪問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

20、 a ; rea 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 versio

21、ncompare.gethistory.cutmbcop 乂xdeleterenamepropertiesview designerry.dtsx dtsx命名和布局慣例值得注意數(shù)據(jù)包布局、任務(wù)命名和注釋的慣例。為了保持一致性,所有任務(wù)和 轉(zhuǎn)換的命名以代表任務(wù)或轉(zhuǎn)換類型的3或4位字母縮寫開頭,后跟3至4個(gè) 字詞的對(duì)象功能描述。這非常有助于審核和日志記錄,因?yàn)榭梢愿鶕?jù)對(duì)象名稱跟 蹤h志記錄詳細(xì)信息。數(shù)據(jù)包布局通常采用任務(wù)或轉(zhuǎn)換退出主控制流和數(shù)據(jù)流的 順序:先從上到下,后從左到右。注釋給出每個(gè)任務(wù)的詳細(xì)信息,有助于說明數(shù) 據(jù)包。數(shù)據(jù)量和處理的行計(jì)數(shù)。ssis本身提供各種日志提供程序類型的詳細(xì)數(shù)據(jù)包

22、執(zhí) 行日志記錄。這些詳細(xì)日志條口由事件驅(qū)動(dòng),并反規(guī)格化到選定提供程序的口標(biāo) 中。例如,如果某個(gè)數(shù)據(jù)庫被選作r志提供程序,則所冇口志條目都會(huì)插入一張 表中。在整個(gè)執(zhí)行過程中,事件是引擎的參考點(diǎn),如on warnings on validation on execute、on pre execute、on post execute 等。圖 6 突岀顯示了 日志記 錄事件詳細(xì)信息選擇器。日志事件中的每項(xiàng)記錄與任務(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)行ssis日志記錄時(shí),對(duì)于每個(gè)數(shù)據(jù)包都會(huì)產(chǎn)生成百上千(如杲不

23、是成千上萬)的條目。ss1s日志記錄為進(jìn)行故障排除捉供了大量的詳細(xì)信息。 但是,如果對(duì)ssis事件不是很了解,乂沒有通過一種清晰的方式將數(shù)據(jù)包執(zhí)行 id與引擎執(zhí)行的特定數(shù)據(jù)包映射起來,則很難獲取和理解這些信息。對(duì)于project real,目標(biāo)是通過一些與bi相關(guān)的特定執(zhí)行審核來增強(qiáng)內(nèi)置 日志記錄捉供程序,同時(shí)使用日志記錄功能生成詳細(xì)的具冇向下鉆取功能的報(bào) 告。審核結(jié)構(gòu)要實(shí)現(xiàn)的功能有:數(shù)據(jù)包和加載組的關(guān)聯(lián)和標(biāo)識(shí)。倉(cāng)庫結(jié)構(gòu)沿襲列的添加。行計(jì)數(shù)驗(yàn)證審核。具冇向下鉆取功能的rtl處理報(bào)告。數(shù)據(jù)包和加載組跟蹤在支持和管理bi解決方案中,掌握etl過程使用的數(shù)據(jù)包協(xié)調(diào)非常重要。 因此,建立了更高級(jí)別的跟

24、蹤表來實(shí)現(xiàn)一起執(zhí)行的相關(guān)數(shù)據(jù)包的關(guān)聯(lián)。其次,執(zhí) 行單一數(shù)據(jù)包時(shí)還創(chuàng)建了一張表。有了 ssts f1志記錄功能,這可能看起來冇點(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ū)徍酥饕峭ㄟ^“執(zhí)行sql”任務(wù)實(shí)現(xiàn)的。對(duì)于工作 流數(shù)據(jù)包,控制流中的第一個(gè)和最后一個(gè)步驟管理加載組審核。在這個(gè)示例加載 組數(shù)據(jù)包屮,突出顯示了處理此過程的控制流屮的第一個(gè)和最后一個(gè)步驟。ept dim merch oviss

25、on: ewoxwmcrch o»$ion pkg»ept oim mcrch .ept dim return type: e>:e«ute$ return type phjept own buyer: execute? buyw 懐gdim buyer:r數(shù)據(jù)包級(jí)跟蹤比數(shù)據(jù)包工作流審核低一個(gè)級(jí)別,它也采用類似設(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ò)謀?!笆录幚沓绦蚩刂屏?/p>

26、”概念是ssis的一大特色。這些可以在數(shù)據(jù)包u1的第三個(gè)選項(xiàng)卡上找到。為了快速識(shí)別錯(cuò)誤, 使用了 onec'or事件處理程序,該處理程序是在數(shù)據(jù)包級(jí)別上定義的,將捕獲出現(xiàn)的任何數(shù)據(jù)包錯(cuò)誤。fite ea sew project ma oebug ddu fcerrt ssis toofe wrxto到-* 為心迫 口 devebpme*t t " *9 * - /、* w * $i*冷自冋昭也y d味戀丨出注尊令i §號(hào)獣fact-st<xelnv.x red-omty fact_5toresafte«_d<mly.<mix * stad

27、 pgs;control how | 占 gu flow ewnt hykler3 二expfcxer(xeombi:evert hanay: | jonfrrori factmaoce5ale«daiysql on&rocsql 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.111!而11,使用了一組數(shù)據(jù)包變量跟蹤數(shù)據(jù)庫與這些“執(zhí)行sql”任務(wù)涉及到的數(shù) 據(jù)包2間的元

28、數(shù)據(jù)。使用的主要變量有系統(tǒng)變量system: :packagcexccutionll) 和system:packagename,以及.用戶變量user:etl_load_ld。該用戶變量是在 數(shù)據(jù)庫中創(chuàng)建的標(biāo)識(shí)符,并傳遞給數(shù)據(jù)包。使用ssis的父變量配置功能,這些 變量述從父數(shù)據(jù)包傳遞給子數(shù)據(jù)包。倉(cāng)庫的沿襲添加批處理標(biāo)識(shí)符etl_load_id不僅將審核元數(shù)據(jù)連在一起以進(jìn)行報(bào)告和隔離, 而且在倉(cāng)庫屮被用來禰識(shí)記錄源。每-個(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ù)提取后,通過衍牛列轉(zhuǎn)換可以立即將批處理標(biāo)

29、識(shí)符添加到數(shù)據(jù)流中。因 此,任何下游轉(zhuǎn)換都能使用此列進(jìn)行更新、插入和跟蹤,而且使元數(shù)據(jù)包含這些 記錄不需要什么開銷。t行計(jì)數(shù)跟蹤der audit: add auditing metadata from the variable collection to the pipeline so it can be used in the insert processes.數(shù)據(jù)驗(yàn)證對(duì)于dba來說幫助非常大,不僅作為bi解決方案的一部分用于管 理和故障排除,而r有助于建立用戶信任感。如果用戶對(duì)數(shù)據(jù)產(chǎn)生懷疑,解決方 案就可能失敗。project real使用行計(jì)數(shù)作為數(shù)據(jù)驗(yàn)證的一個(gè)方面。盡管此級(jí) 別的驗(yàn)證

30、只代表一部分應(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ì)算通過的行數(shù) 并將值存儲(chǔ)到一個(gè)預(yù)定義的用戶變量屮。行計(jì)數(shù)轉(zhuǎn)換的一大優(yōu)點(diǎn)是需要的開銷和 資源非常少。因此,在所有維度和事實(shí)數(shù)據(jù)包的核心數(shù)據(jù)流中,每個(gè)源數(shù)據(jù)的后 面、口標(biāo)或0ledb命令的前面以及數(shù)據(jù)流屮任何存在高值點(diǎn)的地方都插入了行 計(jì)數(shù)轉(zhuǎn)換。這些計(jì)數(shù)存儲(chǔ)到不同的變量中,并通過數(shù)據(jù)流轉(zhuǎn)換后緊跟的“執(zhí)行 sql”任務(wù)在數(shù)據(jù)庫中持續(xù)起作用。圖10顯示了數(shù)據(jù)流中這些行計(jì)數(shù)轉(zhuǎn)換的實(shí) 現(xiàn)。etl報(bào)告為了將所有內(nèi)容聯(lián)系在一起并形成條理清晰的信息供開發(fā)人員管理和進(jìn)行故 障排除時(shí)使用,設(shè)計(jì)了一系列

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

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

33、. gwxtg氏 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 fw0pjckjqtss動(dòng)態(tài)配置設(shè)計(jì)ssis數(shù)據(jù)包的可管理性、分發(fā)和部署的關(guān)鍵之處在于配置。ssis采用多種方 法來在運(yùn)行吋配置數(shù)據(jù)包屬性,允許更

34、新連接信息、變量和任何其他需要在執(zhí)行 時(shí)動(dòng)態(tài)配置的任務(wù)或轉(zhuǎn)換屬性。提供了幾種內(nèi)置的配置方法,涵蓋不同解決方案 可以使用的多種環(huán)境要求,包括:配置文件環(huán)境變量sql配置表格父數(shù)據(jù)包變量當(dāng)從開發(fā)etl數(shù)據(jù)包轉(zhuǎn)到生產(chǎn)該數(shù)據(jù)包時(shí),就能看到這項(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)境中。與此類似,還提供了多種版木的real解 決方案(完全版本、示例版本和演示版本)以供參考和演示。因此,通過內(nèi)置sql 配置,根據(jù)解決方案的不同數(shù)據(jù)庫版本對(duì)配置進(jìn)行

35、集中化,這樣可以將配置屬性 和映射放到關(guān)系表屮,數(shù)據(jù)包之間共享配置屬性和映射。要打開集屮化的管理工 具,請(qǐng)選擇ssts,然后選擇configurations (配置)。圖13顯示了 sql配 置選項(xiàng)。rr-n滬宀并to加0 ombat h cferce d如(8 2x創(chuàng) < mx.zrd c thr crtr ” w/tc be kndedpc> nr*.zq*f g 3”如 3jt«mnk1xmcorrtoiv處 svfilocdomzql "0 sirve»wwr y»nj. p.erct r«rthrca.lrw p«

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

37、置表的位置由數(shù)據(jù)包連接決定。但是,如果所有的 連接信息都放在配置表屮,則將出現(xiàn)循環(huán)引用,導(dǎo)致使用硬編碼的數(shù)據(jù)包連接值, 而這是我們不希望看到的。為了防止這種情況發(fā)生,使用了第二種配置類型- xml文件配置。此外,在將配置集屮到一個(gè)數(shù)據(jù)庫表格的口標(biāo)下,xml文件屮只 需要一個(gè)配置條目-指向包含sql配置表格的數(shù)據(jù)庫的連接字符串。正如您看 到的那樣,xml文件配置實(shí)際上只有一個(gè)屈性- xml文件的位置和文件名。丹ze如伸映 力e b 心* cf 辭4oe 謝山 2be x5k* smed * mk,化 mineerd orrtomrierflvzieiheytekieeimhdtrcmtmiarc

38、ov«wts 5ql*fxh>rwr"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ù)包所用的連接和變量)的。而冇些配置需要

39、僅限于數(shù)據(jù)包的特定執(zhí)行和數(shù)據(jù)包參與的工作流組的特定執(zhí)行。例如,工作流組 的批處理標(biāo)識(shí)符etl_load_id是在加載組數(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ù)包的。在ssis屮, 子數(shù)據(jù)包可以通過名稱請(qǐng)求父數(shù)據(jù)包中的變量,從而能夠從任何調(diào)用的使用“執(zhí) 行數(shù)據(jù)包”任務(wù)來調(diào)用了數(shù)據(jù)包的父數(shù)據(jù)包繼承變量。project real要求存在一種只針對(duì)一個(gè)數(shù)據(jù)包或一組數(shù)據(jù)包執(zhí)彳亍

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

41、ssis的主要功能。文本 在討論環(huán)境以及審核project real的結(jié)構(gòu)吋已經(jīng)幾次提到過這些組件。粗略地說,“控制流”是i辦調(diào)數(shù)據(jù)包的業(yè)務(wù)處理流邏輯的任務(wù)工作流引擎。無 論是包含單個(gè)步驟還是多個(gè)相互關(guān)聯(lián)的任務(wù),毎個(gè)數(shù)據(jù)包都只有一個(gè)主要控制流 (事件處理程序也是一種控制流)。控制流屮的任務(wù)通過約朿(成功、失敗、完 成和自定義約束表達(dá)式以及布爾邏輯)鏈接在一起?!皵?shù)據(jù)流”是數(shù)據(jù)處理引擎,它處理數(shù)據(jù)移動(dòng)、轉(zhuǎn)換邏輯、數(shù)據(jù)組織以及源和 目標(biāo)之間數(shù)據(jù)的提取和提交。與控制流不同,由控制流編排的數(shù)據(jù)包中可以定義 多個(gè)數(shù)據(jù)流。雖然數(shù)據(jù)流有與控制流工作流連接器非常相似的綠連接器和紅連接 器,但是它們的功能完全不

42、同??梢詫?shù)據(jù)流連接器視為以小批數(shù)據(jù)從一個(gè)轉(zhuǎn)換 流到另一個(gè)轉(zhuǎn)換的數(shù)據(jù)管道(稱為“緩沖區(qū)”)。而這是顯示數(shù)據(jù)流如何工作的 最簡(jiǎn)單方式,事實(shí)上,為了獲得最佳性能,向數(shù)據(jù)緩沖區(qū)移動(dòng)的工作實(shí)際上主要 是定義的轉(zhuǎn)換執(zhí)行的。ssis體系結(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開發(fā) 屮考慮了這些優(yōu)點(diǎn),因此某些設(shè)計(jì)決策并未遵循基于dts的體系結(jié)構(gòu)的現(xiàn)狀。有限的分段首先,ssis通過使復(fù)雜的數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)清潔和數(shù)據(jù)查詢可以在

43、數(shù)據(jù)流中直 接執(zhí)行(很少依賴rdbms引擎和存儲(chǔ)),從而減少了分段環(huán)境。源表和倉(cāng)庫表 之間的數(shù)據(jù)對(duì)比口j以通過具冇條件拆分的查詢轉(zhuǎn)換和合并轉(zhuǎn)換進(jìn)行處理,以將結(jié) 果定向到相應(yīng)的加載邏輯。為此,數(shù)據(jù)庫引擎的唯一要求是將數(shù)據(jù)輸出到ssis 數(shù)據(jù)流而不是輸出到執(zhí)行查詢、連接或行對(duì)比的數(shù)據(jù)庫。 管道優(yōu)點(diǎn)大多數(shù)數(shù)據(jù)流組件都具冇真正的管道并行功能(不過要注意,sort轉(zhuǎn)換和 aggregate轉(zhuǎn)換并沒有此功能),這意味著在小型數(shù)據(jù)緩沖區(qū)中可以同時(shí)處理倉(cāng) 庫對(duì)彖,而不需要等待整個(gè)上游處理完成后才能進(jìn)行下一步。這冇助于緩解對(duì)源 系統(tǒng)的提取影響,在project real開發(fā)過程中,多數(shù)情況下,優(yōu)化ssis數(shù)據(jù)

44、包后,從源提取原始數(shù)據(jù)并立即將其傳遞到數(shù)據(jù)庫所花費(fèi)的吋間大約相當(dāng)于提取 數(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ù)清潔工具,例如,模糊查詢和連接、 字符映射、數(shù)據(jù)類型轉(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ì)象可以合并到單個(gè)口標(biāo)。通常在bi 系統(tǒng)中,維度可以源于同一系統(tǒng)或不同系統(tǒng)中的不同表。同樣,事實(shí)數(shù)據(jù)可以源 于一個(gè)表或多個(gè)表,或者事務(wù)性源可以分裂成多個(gè)事實(shí)數(shù)據(jù)表目標(biāo)。

45、 維度和事實(shí)數(shù)據(jù)粒度及類型更改多數(shù)情況下,倉(cāng)庫對(duì)象以與其源oltp對(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ù)表以滿足報(bào)告要求時(shí),這些事實(shí)數(shù)據(jù)表也可能進(jìn)行類似的轉(zhuǎn)換。 通常使用其他轉(zhuǎn)換(如,aggregate> pivot、un-pivot、sort> merge join 等 等)在數(shù)據(jù)流內(nèi)處理這些少見的情況。維度處理處理維度的丿力史記錄是etl解決方案比較復(fù)雜的一個(gè)原因。對(duì)于project real,維度加載情況不僅涉及處理歷史屬

46、性和更改屬性,還涉及維度更改類型以 及與維度關(guān)聯(lián)無法同步的事實(shí)數(shù)據(jù)。除了考慮scd (漸變維度)向?qū)У膬?nèi)置功能 外,我們還將考慮項(xiàng)目中包含的一些更特殊的要求:推斷維度成員,其中因?yàn)橥暾S度記錄尚不能加載,所以收到不具有匹配維度成 員的事實(shí)數(shù)據(jù)。有吋稱為“孤立事實(shí)數(shù)據(jù)” o更改scd類型,其中在一個(gè)維度內(nèi)的成員有不同的歷史更改要求,其中的個(gè)別 要求可能隨著吋間的推移會(huì)有所更改。ssis能夠同時(shí)處理project real解決方案的標(biāo)準(zhǔn)情況和特殊情況,如卜所 示。漸變維度向?qū)總€(gè)etl設(shè)計(jì)師都希望擁冇一個(gè)可以神奇地處理漸變維度的工具ossts可以 基木達(dá)到這一效果-在ssis中有一個(gè)向?qū)?,它基于?/p>

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

48、通過添加一個(gè)新維度記錄將歷史記錄 保存到下一次更改之前,添加的新維度記錄與所冇新事實(shí)數(shù)據(jù)記錄相關(guān)聯(lián)。推斷成員-即在事實(shí)數(shù)據(jù)處理運(yùn)行之前維度成員尚未加載到維度表中的情況, 這樣會(huì)添加一個(gè)占位符記錄,一旦完整的源維度可用,該占位符將隨后更新(類 型1列和類型2列)。瀏覽store維度的向?qū)?,第一個(gè)屏幕顯示了一系列可供其業(yè)務(wù)鍵選擇的列, 如圖16所示。select a dimension table and keyssetect o詁* to zd sd map comrr in the tmformabongjt to斛 the d*r«nconnecttoo nnwr:lbueor二d

49、botw.om.store3irout comrr couw$ *eytypenot o kjey couwptot o t coumstore-typetime-cam>7 ye.c&d_codemot 亦tpaof.cw/.- t(ode.co(w$nj*j<6ock | jjext > j 咚"i i下一步,該向?qū)枰獏^(qū)分出類型更改的列。選項(xiàng)有changing屈性jlistorical 屬性和標(biāo)識(shí)不應(yīng)當(dāng)更改的列的fixed屬性。圖17顯示了這些屬性。m slowly chanqkvg dlnienmoo wizardstowfy ctidogrig d

50、bnermkm columr 序manipe the changes to cahm data m yoir do*4y changng dtacrrfxrts by settra the type 2comwfmed amraicesciect tmype e mg m 0 c(aihoudfx*cmnpt.cmn9ware irmtmj« enors.sated o chme bp® «cc*um$:changing aluibute sbodd overwte e«tng vaiw.hisloncl altiibutcsetect ths type

51、 then changes r> cohrm vtues are 空wed 訴 new reccrds. aremkxh v«iue$ are mved records 2說“z&ted m“type2 twje cmnoetypeadjvzgagingacmjdtmem4r.k>elchngng attiixae cmftgrfl mbtmtem.unezcaxxjnd certerj>wcchangrg attrtc chaorqty| zcr«l 咬 trixiteckwejwtefcc&wrbxonor»0thk/ezjl

52、it fit (1<b«k包含丿力史列或類型2列的維度需耍一些元數(shù)據(jù)米管理母?jìng)€(gè)史改的當(dāng)麗和丿力史 性質(zhì)。下二個(gè)屏幕(圖18)有助于處理過程了解store維度是如何跟蹤歷史記 錄的。在這種情況下,current_row列將跟蹤哪個(gè)維度記錄是更改的維度行的當(dāng)前維度記錄。卜一步,如果使用推斷成員,圖19中顯示的屏幕將標(biāo)識(shí)scd向?qū)绾沃?維度記錄是推斷成員,從而除業(yè)務(wù)鍵z外的所冇列在處理過程屮都會(huì)得到更新。 有兩個(gè)選項(xiàng)。第一個(gè)選項(xiàng)表示所有的非鍵列都是null值,來標(biāo)識(shí)推斷成員。第 二個(gè)選項(xiàng)由標(biāo)志列驅(qū)動(dòng),表示成員是否是推斷成員??紤]到值為null的列在 analysis servic

53、es中不能正確顯示,所以我們選擇使用稱為tnferred member 的列。然后我們就可以用名為unknown值替換在analysis services層次結(jié)構(gòu) 屮使用的屬性。上一屏幕后,該向?qū)闪艘幌盗袨橄驅(qū)幚磉^程中輸入的詳細(xì)信息定制的轉(zhuǎn) 換。主要轉(zhuǎn)換稱為slowly changing dimension轉(zhuǎn)換。它將輸入作為維度源記 錄,無論它們是完整維度源記錄或僅僅是部分源記錄(在源記錄上添加或更改的 記錄)o將scd任務(wù)視為非緩存lookup轉(zhuǎn)換和conditional split轉(zhuǎn)換的組 合,其中針對(duì)倉(cāng)庫維度評(píng)估源維度記錄,然后分發(fā)到不同的scd輸出。圖20顯 示了 store s

54、cd轉(zhuǎn)換的最終ui圖像及其相關(guān)聯(lián)的輸出。唯一維度情況唯一不使用scd轉(zhuǎn)換的project real維度處理數(shù)據(jù)包是item維度。其要 求是唯一,其大小(大約六百萬個(gè)成員)需要對(duì)可伸縮性進(jìn)行特殊處理。item維度區(qū)別于其他維度的一個(gè)特征是scd類型更改的種類不同。除了需要 推斷成員、changing屬性和historical屬性外,要求述指定對(duì)于一個(gè)給定的 成員,其屬性更改類型口j以從changing屬性變?yōu)閔istorical屬性;從類型1 轉(zhuǎn)到類型2。第一次銷售某項(xiàng)時(shí)將會(huì)發(fā)生這種情況。第一次銷售z而,所有的屬 性都作為changing類型1屈性,但是一旦銷售出去,一部分屈性將變?yōu)?histo

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

56、的決定性因素是維度所處理的記錄量。六百力個(gè)成員item 維度的100個(gè)屬性在一天內(nèi)會(huì)經(jīng)歷上萬次更改。內(nèi)置scd組件查詢過程正在生 成對(duì)數(shù)據(jù)庫同等數(shù)量的調(diào)用、查詢?nèi)朔秶谋聿⑶以诮Y(jié)果行返回許多列。此過程 所用的時(shí)間達(dá)不到窗口所需要的時(shí)間,因此采取了另一種方法。一種辦法就是使用lookup轉(zhuǎn)換并將整個(gè)維度保存到緩存中,以便所有列將可 用于更改類型對(duì)比。但是,將大型表的所有列保存在緩存屮需要幾gb的內(nèi)存, 并且還要花大量的吋間來加載到內(nèi)存。因此,使用了左邊的merge join轉(zhuǎn)換, 其中左邊的源記錄通過業(yè)務(wù)鍵與右邊的當(dāng)前維度成員匹配,如圖21所示。此連 接的影響是將只輸入那些在相關(guān)事實(shí)數(shù)據(jù)屮實(shí)際使

57、用的item記錄。更改類型分 析的維度所需要的列包含在匹配記錄的數(shù)據(jù)流中。使用左邊的合并以便源(左邊) 的新記錄可以繼續(xù)沿著管道,其屮它們將作為新成員添加到維度屮。因?yàn)檩斎肓幸呀?jīng)進(jìn)行了排序,所以此情況屮的合并進(jìn)展很順利一進(jìn)行匹配 吋,記錄將被釋放到下游轉(zhuǎn)換以便進(jìn)行處理。conditional split轉(zhuǎn)換(位于merge join轉(zhuǎn)換的下面)評(píng)估某些條件,然 后將行定向到多個(gè)轉(zhuǎn)換輸出。這些條件是按順序進(jìn)行評(píng)估的。滿足行的第一個(gè)條 件指派其輸出,以便行不是發(fā)送到多個(gè)輸出。圖22中的conditional split轉(zhuǎn)換首先使用isnull函數(shù)評(píng)估連接右側(cè)是 否存在匹配的成員。與空檢查匹配的源行被輸出到將行作為新維度成員進(jìn)行添加的轉(zhuǎn)換。由于其余的成員都存在與倉(cāng)庫維度表中的成員匹配的成員,因此評(píng)估更 改類型條件。對(duì)于匹配記錄,評(píng)估的第一個(gè)條件就是推斷成員和銷售標(biāo)志條件。 由于這些都需要對(duì)維度屬性進(jìn)行完整更新,因此它們將被合并,并同時(shí)進(jìn)行處理。 接下來,將評(píng)估歷史更改屬性。如果一個(gè)或多個(gè)歷史跟蹤的屬性有更改,那么將 生成類型2更改記錄。最后,其余更改類型列的任何更改都將導(dǎo)致維度更新聲 明以覆蓋該屈性(以類型1方式)以両的值。注意:雖然沒有指定最終條件,但是co

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論