Anda di halaman 1dari 6

Forrs: http://www.doksi.

hu

cmlapon

Adattrhz-pts
lpsrl lpsre

Ismerje meg az adattrhzak feltltsnek titkait, s derljn fny


arra, hogy mit tud az Integration Services 2008!

g tisztn emlkszem az els BI-projektemre, amely 11 hnapig llt, mert a forrsrendszerek adatminsge olyan silny volt, hogy nem tudtuk betlteni ket az
OLAP-kockkba. Hnapokig csak vrtunk, vrtunk, mg vgre olyan szintre kerltek, hogy el tudtunk kezdeni dolgozni.
Persze, ha eltte megvizsgltuk volna az adatok minsgt, ms lett volna a helyzet. Ehhez
azonban kt dologra lett volna szksg.
1. Zldflknt nem kellett volna elhinnem, hogy Nlunk az adatok jk.
2. Kellett volna egy olyan kis eszkz, ami a 2008-as Integration Services-ben mr van, s
amivel gpi ton mg betlts eltt tudjuk ellenrizni az adatok minsgt.
De ne szaladjunk ennyire elre. Az Integration Services 2008 valban alkalmas a forrsrendszerek adatminsgnek felmrsre, de nem ez az elsdleges feladata. Elssorban nem
erre hasznljuk.

Mire val az Integration Services?


Ha megkrdeznk valakit, hogy szerinte mire val az Integration Services, akkor rgtn r fogja vgni: arra, hogy adatot tltsnk be vele egyik adatbzisbl egy msikba.
A legfontosabb feladata tnyleg ez. Lehetleg minl tbbfajta adatforrsbl tudjon adatokat
kiolvasni, s azt minl gyorsabban bele tudja pumplni az SQL Serverbe. s ebben nagyon j.
Nem tudom, hogy tudja-e a kedves olvas, hogy a jelenlegi betltsi sebessgi vilgrekordot
pp ez az Integration Services 2008 tartja, amelyrl a cikk szl. Nem kevesebb, mint 1 terabjtnyi text-fjl betltshez csak 25 perc 20 msodpercre van szksge, ami jelenleg mg elg
a vilgelssghez.
Sokan azt valljk, hogy az SSIS egy ltalnos clra hasznlhat adatbetlt (ETL-) eszkz,
csak ppen nem lehet az SQL Server programcsomagtl kln megvsrolni. Ez igaz is meg
nem is. (Mint Mtys kirly mesjben)
Igaz, mert tnyleg szinte tetszleges adatforrsbl szinte tetszleges adatszerkezetbe tudjuk
segtsgvel mozgatni az adatokat (hasonlan egy ltalnos clra kifejlesztett ETL-szoftverhez).
De nem igaz, mert az Integration Services csak arra van kihegyezve, hogy az SQL Server adatbzisba villmgyorsan be lehessen tlteni vele az adatokat. Arra mr nincs, hogy ms adatbzisokba is villmgyorsan t tudja tlteni azokat. Ez nem azt jelenti, hogy nem tudunk idegen
adatbzisokba (pldul: Oracle vagy IBM) adatokat tlteni, hanem azt, hogy ezt csak relatve
lassan tudjuk megtenni.
Ez nem vletlenl van gy. A Microsoft elsdleges clja, hogy az adatok bejutst (integrlst) az SQL Serverbe minl knnyebb s gyorsabb tegye (innen az Integration Services nv).
Az, hogy SQL Server-adatokat minl gyorsabban tudjunk ttenni msik adatbzisgyrtk ter10

mkeibe rthet mdon nem kapott akkora fkuszt a fejlesztsek sorn. (Hasonlan
egybknt ms adatbzisgyrtk ETL-eszkzhez.)
gy fest azonban, hogy az Integration
Services 2008-ban e tren is vltozs fog bellni. Ha igazak a hrek, kb. 2-3 hnap mlva az Enterprise verzit hasznlk ingyenesen le fognak tudni tlteni konnektorokat
Oracle-hz, SAP-hez s a Teradathoz. Ezek
segtsgvel mr az adatok exportlst is
gyorsan meg fogjuk tudni oldani, s egyre kzelebb kerlnk ahhoz, hogy az Integration
Services tnyleg egy SQL Serverbe csomagolt
ltalnos cl ETL-eszkz legyen.

Alapozs
Nemsokra belecsapunk a lecsba, s elkezdek szakszavakkal doblzni, gyhogy eltte
ejtsnk mg nhny szt az SSIS s az adattrhz-pts alapjairl.
Nemrg hallottam valakit, aki gy mutatta be az Integration Services-t, hogy az
Integration Services az, amiv a DTS szeretett volna vlni. Ebben a mondatban
minden benne van, hiszen a DTS Data
Transformation Services az SQL 7.0-ban
bemutatkoz, majd az SQL 2000 utn kihal adatbetlt eszkz volt, az Integration
Services pedig egy vadij eszkz, zrrl fejlesztve. Szerencsre. Hiszen akik a DTS elnyeirl beszlnek, rendszerint azt mondjk
rla, hogy az egy egyszer eszkz volt egyszer feladatokra. Mint amikor egy nre azt
mondjk, hogy aranyos.

Forrs: http://www.doksi.hu

cmlapon
Nzzk a szakszavakat.
mr elegend informcija lesz ahhoz, hogy
re, a clkomponens pedig beszrja az adatoAz Integration Services (SSIS) package
meg tudja tervezni a fizikai adatmodellt (mikat a cladatbzisba.
vagy magyarul csomag az, amit futtatunk. Ez
lyen adattpusokat kell majd hasznlni az
Most, hogy mr minden szaksz ismert:
az, ami a betltsi munkt vgzi. Hvhatnnk
adattrhzban).
Csapjunk a lecsba!
betltprogramnak is, de maradjunk a micro
Az adatok profilozst gpi ton vgezEgy ETL-szoftvertl, mint amilyen az Integra
softos terminolginl, s hvjuk csomagzk. Eddig vagy sajt magunk rtunk olyan
tion Services is, joggal vrja el az ember, hogy
nak. Egy SSIS-csomag valjban egy dtsx
szkripteket, amelyek elvgzik az adatok profimaximlisan tmogassa az
kiterjeszts fjl, amit akr parancssorbl is
lozst, s a vgn kikpnek
adattrhzak feltltse sorn
meghvhatunk:
egy riportot a profilozs eredhasznlt mdszereket. Ilyen
dtexec /f c:\SSIS-Csomagom.dtsx
mnyrl, vagy egy clszoftpldul az adattrhzba rkeAz Integration Services-csomagokat a BI
verre bztuk mindezt. Eddig,
z rekordok auditlsa, verzi
Development Studiban fejlesztjk. Ez az
mert mostanra a Microsoft
zsa, a mestersges kulcsok
az eszkz egybknt egy Visual Studio ,
kifejlesztett egy adatprofilokiosztsa vagy az adatok tiszamely a vizulis interfszt biztostja a fejleszz alkalmazst, amit j szottsa. Ezek a fogalmak most
tshez s a futtatshoz.
ksa szerint becsomagolt az
mg taln knainak tnnek,
Egy Integration Services-csomag kt f
Integration Services 2008de ha vgigolvassa valaki a
sszetevbl pl fel. Van az gynevezett
ba. (Tette mindezt gy, hogy
cikket, akkor tisztban lesz
Control flow rsze, ami a vezrlst vgzi s
kzben vltozatlanul hagyta
2. bra. talaktva
az adattrhz-betltsek foegy data flow rsze, ami mozgatja az adatokat.
az SQL Server rt. A 2008lyamatval.
A Control flow valstja meg a betltsi
as SQL Server pont annyiba
Mint a bevezetben emlogikt. Ha pldul szeretnk egy olyan bekerl, mint 2005-s eldje.)
ltettem, zldflknt elhittltcsomagot rni, ami lefuttat egy trolt
Az Integration Services
tem, hogy az adatok nlunk
eljrst, s ha az sikeresen lefutott, akkor
2008 adatprofiloz taszkja a
jk, s ennek katasztroflis
kld egy e-mailt, akkor ezt a BI Development
kvetkez profiloz eljrsokvetkezmnyei lettek. Ma
Studiban gy kell megrni:
kat tmogatja:
a kitltttsganalzis segt
mr mshogy csinlom: visAz 1. brn lthat dobozokat nevezik taszsgvel kpet kaphatunk arszakrdezek, mint a Windows,
koknak. A taszk az SSIS-csomag legkisebb
rl, hogy egy oszlop hny
hogy biztos? , aztn az
nllan futtathat egysge, s a taszkok kszzalka tartalmaz null rels lpsek egyikeknt meg
ztt fggsgeket llthatunk fel. (Ezt repreprofilozom a forrsrendszeretkeket;
zentljk a klnbz szn nyilak a taszkok
az adathosszeloszls-elemzs
3. bra. Az adatbetlt taszk
ket. Megprblom felderteni
kztt).
megmutatja neknk, hogy
azokat az anomlikat, adatAz bra szerinti csomagban pldul a levlhny darab 1 hossz, 2 hossz, 3 stb. hosminsgi problmkat, amelyek eddig rejtve
kldsi taszk csak akkor indul el, ha az adatsz szveget tartalmaz az oszlopunk (lsd
maradtak a forrsrendszerekben, hogy ezek
betlts sikeresen lefutott.
a 4. brt);
ne akkor kerljenek napvilgra, amikor mr
Az 1. bra SSIS-csomagja teht adato kulcskpessg-elemzs, amellyel meggyminden ksz, csak fel kne tlteni az adattrkat nem mozgat, csak meghv egy trolt elzdhetnk arrl, hogy egy kulcsnak gonhzat, vagy a BI-rendszert.
jrst, s ha az sikeresen lefutott, akkor
dolt mez tnyleg az-e (klnsen szvegUgorjunk neki, s nzkld egy levelet. Ha szeretnnk
fjlokon keresztl rkez adatoknl lehet
zk meg, mi az (1. bra).
egy olyan betltcsomagot rerre szksgnk);
ni, ami lefuttat egy trolt elAdatprofilozs
mintk keresse, amellyel telefonszmok,
jrst, majd meghv egy adatAz adatprofilozs az a folyarendszmok, irnytszmok vagy egyb
betlt folyamatot (data flow),
mat, amelynek sorn megkttt struktrj, ugyanakkor szabadszs ha az adatbetlts nem sikevizsgljuk a forrsrendszeveges mezknt trolt adatainkat analizlrl, akkor kld egy e-mailt, akrek adatait, azokrl statiszhatjuk;
kor a 2. brn lthat mdon
1. bra. Control flow
oszlopstatisztikk, amelyek visszaadjk netikkat ksztnk (pldul
kell talaktanunk a csomagot.
azSSIScsomagokban
knk az oszlopok statisztikai jellemzit
hny NULL rtket tartalAz adatbetlt taszk komponensekbl pl fel, s egy adatbetlt taszknak 3 f komponense van: egy
adatforrs-komponense, egy adattranszformcis komponense s egy clkomponense.
A forrskomponens felolvassa az adatokat
a forrsrendszerbl, a transzformci-komponens valamilyen mdostst hajt rajta vgszeptember

-oktber

maznak az oszlopok), s informcit gyjtnk az adatok minsgrl


(mennyire tisztk az adatok).
Az adatprofilozs sorn tallkozik elszr az adattrhz-tervez az les adatokkal.
Ekkor kezd el kialakulni benne egy kp az
adatminsgrl, s a profilozs befejezsekor

(mint pldul az oszlop minimuma, maximuma, tlaga vagy szrsa);


rtkeloszls-analzis, amely kimutatja pldul, hogy hny Bla van a keresztnevek
oszlopban;
sszefggs-vizsglat, amellyel hierarchikat kereshetnk tblkon bell;
11

Forrs: http://www.doksi.hu

cmlapon
olyan rszhalmazok keresse, amelyekkel
adatkapcsolatokat derthetnk fel kt tbla kztt.
Az Integration Services adatprofiloz
taszkjt azonban nemcsak a forrsrendszerek

adatait. Semmi talakts, semmi mdosts.


Az adatokat gy, ahogy vannak, temeljk a
sajt szervernkre. Csak arra kell trekednnk, hogy a forrsrendszereket minl rvidebb ideig s a lehet legkevsb terheljk,
s lehetleg csak azokat az
adatokat hozzuk t, amelyek mg nem szerepelnek
az adattrhzban. Aztn
ha mr nlunk vannak az
adatok, s leszakadtunk a
forrsrendszerekrl, akkor
kezddhetnek az erforrsignyes talaktsok.

Az j adatok
levlogatsa
Egy adattrhzat nem lehet
mindig nullrl feltlteni,
mert olyan adatmennyi4. bra. Adathosszeloszls-elemzs az Integration Services adatprofiloz
sgekkel kell dolgoznunk,
taszkjval
amelyek teljes betltse
tbb hetet vehet ignybe.
felmrsre hasznlhatjuk, hanem az adattrgy az egyik napi betlts mg be sem fejezdhzba rkez adatok ellenrzsre is. A napi
ne, s mris belefutnnk a kvetkez betlbetltsek sorn mg a betltsek eltt megtsbe. (gy jrnnk, mint szegny Lewis Fry
vizsglhatjuk pldul azt, hogy a frissen rkeRichardson meteorolgus, aki a 20-as vekz adatok szrsa milyen kpet mutat a mr
ben 1 hnap alatt szmolta ki, hogy mennyivel fog vltozni a lgkri nyoms 6 ra
az adattrhzban lv adatok szrshoz kmlva.) De az adattrhz jratltsnek van
pest, s ha jelents eltrst tapasztalunk, akmsik htultje is: elvesztennk azokat az
kor dnthetnk a betlts elhalasztsrl.
informcikat, amelyek historikusan csak az
Ha viszont minden rendben a betltsre
adattrhzban vannak meg, a forrsrendszevr adatokkal, akkor kezdjk el feltlteni az
rekben mr nem.
adattrhzunkat. Els lpsknt vlogassuk
Azrt, hogy ne kelljen tciblni mindig
le a lehetleg csak az utols levlogats ta
keletkezett adatokat a forrsrendszerekbl,
s tltsk be ket egy ideiglenes, gynevezett
staging adatbzisba. Ezt a folyamatot nevezik
extract fzisnak, s ez a teljes ETL- (adattrhz-betltsi) folyamat (Extract, Transzform,
Load) els fzisa.

Az E bet az ETL szbl


Az adattrhzak feltltse sorn egy forrsrendszeri adat sok lpcsn megy keresztl,
amg eljut a felhasznlk szmra is lthat
vgleges adatbzisba. Elszr bemsoljuk egy
tmeneti (Stage) adatbzisba, majd elvgznk
rajta egy-kt talaktst, s vgl begymszljk az adattrhzba. Ezt a folyamatot mutatja az 5. bra.
Az adattrhz-feltltsek els (Extract) fzisban gyakorlatilag a forrsrendszerek szerkezetvel megegyez mdon tmsoljuk azok
12

5. bra. Az E
reggel az sszes forrsadatot, ki kell tallnunk valamilyen adatlevlogatsi mdszert,
amelynek segtsgvel meg tudjuk llaptani,
hogy melyek azok a rekordok, amelyek jak,
vagy megvltoztak az utols betlts ta.
Ha a forrsrendszernk egy SQL 2008-as
adatbzis, s az zemeltetk bekapcsoljk neknk az gynevezett Change Data Capture

szolgltatst, akkor nagy szerencsnk van.


Ez a Change Data Capture ugyanis elkapja
a vltozsokat a forrsrendszerben, s kiteszi ket egy kln tblba, gy nem kell azzal bajldnunk, hogy kitalljuk, mi vltozott
meg az utols levlogats ta. Ha nincs ilyen
szerencsnk, akkor neknk kell kitallnunk
valamilyen mdszert az j vagy megvltozott
adatok levlogatsra (pldul idblyeg vagy
rekordazonost alapjn trtn szrs). S ha
megvan a mdszer, akkor indulhat a levlogats s az j adatok betltse az gynevezett
Staging adatbzisba.

Audit
Adattrhzba rekordot gy nem tltnk be,
hogy ki ne egsztennk a szrmazsra vonatkoz informcikkal. Legalbb annyit
kell tudnunk egy adattrhzban cscsl rekordrl, hogy:
melyik forrsrendszerbl (esetleg tblbl)
jtt az adott rekord;
melyik (mikori) betltssel kerlt be;
s melyik SSIS-csomag tlttte be.
E hrom informci mr elegend ahhoz,
hogy mindent tudjunk a betlttt rekord eredetrl, amit hibakeressnl vagy egy esetleges hibs betlts visszavonsnl hasznlhatunk.
Ezeket, a szrmazsra vonatkoz informcikat nevezzk auditinformciknak. Az
auditinformcikat a bejv rekordokhoz az
Integration Services Audit nvre hallgat
taszkjval tudjuk hozzadni. Ez a taszk nemcsak egy ltalunk meghatrozott szveget
vagy kifejezst kpes a befel raml rekordokhoz fzni, hanem olyan bels vltozk
tartalmt is, mint a gp vagy az SSIS-csomag
nevt vagy az adott futs egyedi azonostjt
(amit remekl hasznlhatunk kulcsknt bonyolultabb auditrendszerek kialaktshoz).
Nos. Minden szksges adat az auditinformcikkal egytt ott cscsl a sajt szervernk staging adatbzisban. A forrsrendszerekrl leszakadhatunk, kezddhet az adatok
talaktsa, transzformlsa.

A nagy T bet az ETL szbl


Az adatok transzformlsa sorn kt f feladatot hajtunk vgre:
megtiszttjuk
s elfeldolgozzuk ket,
hogy a kvetkez (Load) fzis betltsi munkit amelynek sorn vgleges helykre ke-

Forrs: http://www.doksi.hu

cmlapon
rlnek majd az adatok az adattrhzban a
lehet legegyszerbb tegyk.

bellrl, hanem a Data Flow-n bellrl is


megtehetjk, azaz a betlts kzben minden
egyes sort elkldhetnk egy webszerviz fel.
Adattisztts
Tegyk fel, hogy nnek cmadatokat kell tiszAz Integration Services kt olyan taszkot
ttania. Milyen lehetsge volt eddig? Fogta,
is tartalmaz, amelyek segthetnek neknk a
letlttte a Posta honlapjrl az irnytpontatlan vagy hinyos adatok megtiszttsszmok nev xls-t, abbl ptett egy referenban, a dupliklt adatok sszefcia-vrostrzset, s a fuzzy
slsben. Ez a kt taszk a f uzzy
lookup taszkkal kikereste
grouping s a fuzzy lookup taszaz adatokat a vrostrzsbl.
kok. Mg az elbbi a dupliklt
Ma mr azonban a leadatok sszehozsra (pldul
hetsge megvan r, hogy
kt azonos, de klnbz formeghvjon egy olyan webrsrendszerekben is szerepl
szervizt, amely megtiszttva
vevbl egyet csinlni), addig
visszakldi nnek a helyes
6. bra. A bejv rekordok
az utbbi a hinyos, elgpelt
cmeket. Nem nnl van
kiegsztse szrmazsi
adatok kitiszttsra szolgl.
a referencia-adatbzis, nem
informcikkal
Mindkt taszk hasonlsgi
n tartja azt karban, haalapon tiszttja az adatokat. Ha kt adat elnem valaki ms. Valaki ms, aki tudja, hogy
r egy ltalunk meghatrozott hasonlsgi
a Jzsef A. utca az a Jzsef Attila utca, s hogy
indexet, akkor a taszkok ennek megfelelen
a Bp. az a Budapest. Ma persze mg nem tujavtjk a hibs adatokat. Ha a hasonlsg
dok ilyen magyar nyelvet tmogat webszerkisebb, mint az ltalunk meghatrozott kvizrl, de sokat gondolkodtam rajta, hogy
szbszm, akkor marad a kzi tisztts.
kne csinlni egyet. Ezt ugyanis nemcsak az
Fontos tudni, hogy e kt taszk nyelvfgadattrhzasok, hanem a web- s az alkalmagetlen, azaz nem veszi figyelembe a magyar
zsfejlesztk is hasznlhatnk, ami mr egy
kicsit nagyobb piac.
De a suszter maradjon a kaptafjnl, gyhogy trjnk vissza az adattrhzakhoz, hiszen adataink mr tisztk, s alig vrjk, hogy
egyre beljebb tltsk ket az adattrhzba,
egyre kzelebb kerljenek a felhasznlkhoz.
Az adattrhz-feltlts kvetkez lpse az
adatok elfeldolgozsa. Az elfeldolgozs sorn a friss adatokat ttranszformljuk az
7. bra. A T
adattrhz formtumnak megfelel alakra.
Nha letroljuk ket egy ideiglenes adatbs egyb nyelvi sajtossgokat. Neki a sizisban (nevezzk ezt Transzform adatbzisrly s a sirj sz kztt kt karakter eltrs
nak), nha rptben tltjk ket tovbb az
lesz, s nem fogja szrevenni, hogy a kt sz
adattrhzba. Most a knnyebb magyarzhaugyanazt jelenti. (Ahhoz tudnia kne, hogy
tsg kedvrt troljuk le ket ebben a kztes
magyarban ktfajta, j hangot jell bett is
transzform-adatbzisban.
hasznlunk.)
A fuzzy grouping s lookup taszkok mr
a 2005-s Integration Services-ben is lteztek, azok nem a 2008-as Integration Services
jdonsgai. Ami jdonsg e tren, az a webszervizek hvhatsga a data flow taszkon bellrl. Ltszlag persze a webszerviz hvhatsgnak semmi kze az adattiszttshoz. De
ez csak a ltszat.
Webszervizt eddig is tudtunk hvni SSISbl, ez nem jdonsg. A nagy jdonsg az,
8. bra. Adattisztts a fuzzy lookup taszkkal
hogy ezt immron nemcsak a Control Flown
szeptember

-oktber

Ebben az esetben a transzform-adatbzis


szerkezete nhny oszlop kivtelvel, amirl ksbb lesz sz tkletesen egyezik az
adattrhz szerkezetvel. Mindkt adatbzisban megtallhatak ugyanazok a dimenzis tnytblk, ugyanazok az oszlopok, csak
mg az adattrhzban tbb vre visszamenleg tartalmaznak adatokat, addig a temporlis transzform-adatbzis csak az utols betlts ta keletkezett friss adatokat tartalmazza.

9. bra. Az L
Elrkeztnk oda, hogy az adatok megtiszttva, az adattrhzba tltshez elksztve
vrjk, hogy betltsk ket a vgleges helykre: az adattrhzba.

A Load fzis
Az eddig bemutatott talaktsok mind-mind
csak elfeldolgozsok voltak. Csak azt a clt
szolgltk, hogy az adatokat knnyen be tudjuk tlteni az adattrhzba. (Abba az adatbzisba, amelyet a felhasznlk hasznlni fognak.)
Mieltt rtrnnk erre az gynevezett
load fzisra, essen nhny sz az adattrhz
adatszerkezetrl, hogy tudjuk, mgis milyen
szerkezetbe kell betlteni az adatokat.
Az adattrhzak adatszerkezete lehet normalizlt, vagy lehet csillagsms. Mindkt
adatszerkezetnek van elnye, s van htrnya is a msikkal szemben, de mi most csak
a csillagsms adattrhzak ptsre koncentrlunk.
A csillagsma kzponti eleme a tnytbla,
amely tartalmazza a mutatszmokat, s ekrl helyezkednek el csillag alakban a dimenzitblk, amelyek lerjk a tnytblban szerepl mutatszmokat.
A klasszikus pldban a tnytblban troljuk, hogy mennyit rtkestettnk, a dimenzitblkkal pedig lerjuk, hogy az adott
rtkests milyen termkbl, melyik vevnek s mikor trtnt.
A tnytblk s a dimenzitblk kztt
a kapcsolatot egy ltalunk generlt, jelents
13

Forrs: http://www.doksi.hu

cmlapon
nlkli, gynevezett mestersges kulcs teremti meg. Br hasznlhatnnk a dimenzielemek forrsrendszeri kulcst, mint pldul
a vevkdot vagy a cikk-kdot, de nem ezt
tesszk. A mirtekrl hamarosan, most nzzk elszr a folyamatot:

10. bra. Csillagsma


Tegyk fel, hogy bejn egy 311001-es vevkd a forrsrendszerbl. Megnzzk, hogy
ez a vev ltezik-e mr az adattrhzban, s
ha nem, akkor beszrjuk a dimenzitblba.
Kap egy j azonostt, s a tnytblhoz ezzel
az azonostval fogjuk majd ktni. Ezt az azonostt nevezzk mestersges kulcsnak, helyettest kulcsnak vagy surrogate key-nek.

Mestersges kulcs generlsa


A mestersges kulcs lesz a dimenzitblban
szerepl sorok egyedi azonostja. Mint az
elbbiekben emltettem, az adattrhzakban
ezt az gynevezett mestersges kulcsot hasznljuk a dimenzielemek egyedi azonostjaknt, s ezen a kulcson keresztl fognak kapcsoldni a tnytblkhoz.
Mestersges kulcs gyannt jelents nlkli
egsz szmokat hasznlunk. Lehet ez egy, az
adatbzis ltal karbantartott automatikusan
nv egsz szm (Identity), vagy generlhatjuk mi is az Integration Services segtsgvel.
Mirt nem hasznljuk a forrsrendszerekbl mr mindenki ltal jl ismert vevkdot?
Mirt kell helyettk egy jelents nlkli mestersges kulcsot hasznlnunk?
A mestersges kulcs elsdleges feladata,
hogy segtsgvel meg tudjuk oldani az adattrhzba rkez rekordok verzizst. Ha pldul a vevnek megvltozik a telephelye s
ez az informci fontos szmunkra , akkor
a cm fellrsa helyett eltroljuk a vevnek
mind a kt llapott: az 1-es mestersges vevkddal troljuk a vevt a rgi cmvel, a
2-es mestersges vevkddal pedig beszrjuk
az j cmvel.
14

A mestersges kulcsok elsdleges szerepe


teht az, hogy segtsgvel megoldhassuk a
dimenzielemek vltozsainak nyomon kvetst. Mindemellett a mestersges kulcs
hasznlatval:
elszakadhatunk a forrsrendszerek kdolstl, gy azok esetleges vltozst (pldul egy forrsrendszercsert) viszonylag
fjdalommentesen tvszelhetnk;
egyszerre tbb forrsrendszerbl jv vevkdot is fel tudunk dolgozni;
felvehetnk a dimenziba olyan dimenzielemeket, amelyek nem lteznek a forrsrendszerekben;
az egsz szmknt trolt mestersges kulcs
hatkonyabb, mint a szveges termszetes
kulcs: kevesebb helyet foglal, knnyebben
megbirkzik vele a relcis adatbzis-kezel s az Analysis Services is, gy hatkonyabb lesz a lekrdezs s a feldolgozs is.
Most, amikor tudjuk, hogy a forrsrendszerek termszetes kulcst ki kell cserlnnk
egy ltalunk generlt mestersges kulcsra,
mr csak egy krds maradt: Hogyan?

retnk olyan lekrdezst kszteni, hogy hny


forintot kltttek a hzasok s a ntlenek,
akkor tudnom kell, hogy mennyit vsrolt
Gipsz Jakab, amg ntlen volt s mennyit vsrolt miutn bektttk a fejt.
Modellezzk le mindezt. Gipsz Jakab mint
ntlen vsrl bekerl az adattrhzvev dimenzitbljba, s megkapja az 50-es mestersges kulcsot:

11. bra. Gipsz Jakab, a vsrl


Nem sokkal ksbb Gipsz Jakab meghzasodik. Mivel tudni szeretnnk, hogy mennyit vsrolt Gipsz Jakab, amg ntlen volt, s
mennyit vsrol majd, mint ns ember, ezrt
felvesznk egy msik Gipsz Jakabot a vev-dimenzitblba. A rgi Gipsz Jakab rekordjt
lejratjuk, azaz berjuk, hogy Gipsz Jakab
a mai napig bezrlag ntlen volt, s az j
Gipsz Jakabot pedig felvesszk az 51-es mestersges kulccsal:

Slowly Changing Dimensions (SCD)


A Slowly Changing Dimensions vagy ms
nven SCD igazbl egy technika, egy
olyan technika, amelynek segtsgvel nyomon kvethetjk dimenzielemeink vltozst. Az SCD techniknak kt tiszta formja
ltezik:
az SCD type-1 mdszer lnyege, hogy nem
kveti a dimenzielemek vltozst, nem
rzi meg pldul a vevk korbbi jellemzit (mint pldul a telephely), hanem azokat helyben fellrja;
az SCD type-2 mdszer lnyege, hogy a dimenzielem megvltozsa esetn ltrehozza annak egy jabb verzijt, nem rja fell
a vev korbbi telephelyt, hanem ltrehoz
egy j vevt az j telephellyel, gy, hogy
kzben megmarad a rgi is.
Megprblom elmagyarzni egy msik pldn keresztl is. Tegyk fel, hogy vevinkrl
akik most legyenek szemlyek sszesen
kt informcit trolunk az adattrhzban:
1. hzasok-e, 2. mi az e-mail-cmk. s most
kezdjnk el gondolkodni a felhasznlk fejvel! Fontos neknk, hogy tudjuk, mi volt
a vevnk e-mail-cme, mieltt megvltozott
volna? Valsznleg nem. s azt fontos tudnunk, hogy mikor vltozott meg a vevnk
csaldi llapota? Bizony fontos, hiszen ha sze-

12. bra. Gipsz Jakab 2.0


Telnek-mlnak a mzes hetek, s Gipsz
Jakab e-mail-cme megvltozik. rdekel minket, hogy mi volt Gipsz Jakab rgi e-mailcme? Nem. Minket csak az rdekel, hogy
mi Gipsz Jakab mostani e-mail-cme. Ezrt
mindkt Gipsz Jakab (a ns s a ntlen)
email-cmt is megvltoztatjuk az jra. me:

13. bra. Gipsz Jakabok sszestve


Ezek voltak azok a mdszerek, amelyekkel
nyomon tudjuk kvetni a dimenzielemeink
vltozsait. Nzzk meg, hogyan ltethet t
mindez a gyakorlatba.
Az Integration Services tartalmaz egy
Slowly Changing Dimension nev taszkot,
amelynek a feladata pontosan a fenti technika megvalstsa. Ez remek. A val let
azonban a fenti eseteknl sokkal cifrbbakat is produkl. Kpzeljen el egy olyan dimenzielemet, amelynek vltozsait csak egy

Forrs: http://www.doksi.hu

cmlapon
bizonyos id utn akarjuk nyomon kvetni. Miutn megtrtnt r pldul az els
rtkests. Szerencsre a Slowly Changing
Dimension taszk erre is fel van ksztve. Erre
mutat pldt az albbi, vals letbl vett
SSIS-csomag Data Flow taszkja.
Mint a 14. brbl taln ltszik, a Slowly
Changing Dimension taszk elsdleges feladata, a bejv rekordok sszehasonltsa
az adattrhzban cscslkkel, s az, hogy
eldntse, melyek az j rekordok, melyek a
megvltozottak, s ha megvltoztak, akkor
sztvlassza ket: melyeket kell egy j mestersges kulccsal beszrni a dimenzitblba, s
melyeket kell csak egyszeren fellrni.
Vessen mg egy pillantst a 14. brra.
Mivel ez egy data flow taszk belseje, ezrt itt
a nyilak az adatfolyam irnyt mutatjk. A
Select doboz felszedi a lemezrl az adatokat,
majd tovbbkldi az SCD taszknak. Az SCD
taszk elkldi balra az j rekordokat, jobbra
pedig azokat, amelyek nem vltoztak az utols betlts ta. Lefel mennek azok, amelyeken valamilyen vltozs trtnt. Neknk mr
csak le kell kezelni a vltozsokat: beszrni
az jakat vagy a type-2 szerint vltozkat, frissteni a type-1 szerint historizlt attribtumokat s azokat, amelyek vltozst addig nem
akarjuk kvetni, amg meg nem trtnt az els rtkests (Inferred member g).
Ezzel feltltttk a dimenzitblinkat,
mr csak a tnytblk betltst kell megoldanunk.

Lookup
Amikor egy rekordot betltnk az adattrhz tnytbljba, akkor az abban szerepl termszetes kulcsokat ki kell cserlnnk
a dimenzitblkban tallhat mestersges
kulcsokra. Tegyk fel, hogy Gipsz Jakab vsrolt valamit, s a tranzakci sszege megjelenik a tnytblba betltend rekordok
kztt. Ebben az esetben meg kell nznnk,
hogy a vsrls idpillanatban Gipsz Jakab
mely rekordja volt rvnyes a dimenzitblban (ezt megmondjk neknk az rvnyessg
kezdete s vge oszlopok), s Gipsz Jakab termszetes kulcst ki kell cserlni az dimenzitblban tallhat mestersges kulcsra. (Ha
Gipsz Jakab hzas volt a vsrls pillanatban, akkor a tnytbla sor megkapja az 51-es
mestersges kulcsot, ha nem, akkor megkapja az 50-est.) gy az adott vsrls Gipsz Jakab
vsrlskori csaldi llapotval lesz sszekapszeptember

-oktber

csolva, lehetsget teremtve gy a ntlenek s


a hzasok forgalmnak pontos kimutatsra.
Ezt a folyamatot, amikor a tnytblk betltse sorn az azokban szerepl termszetes
kulcsokat kicserljk azok megfelel mestersges kulcsprjaikra, lookup-nak nevezzk.
Ezt a lookup-ot megvalsthatjuk adatbzisoldalon s az SSIS Lookup taszkjnak segtsgvel is. Melyiket hasznljuk?
Sokszor az adatbzis-kezel gyorsabban oldja meg ezt a problmt, mint az Integration
Services, de sokszor nem. A 2005-s Integra
tion Services hasznlatakor voltak klszablyok, hogy mikor nem rdemes SSIS-t hasznlni (pldul ha tl sok olyan elemet tartalmaznak a bejv tnytblasorok, amelyek nem
szerepelnek a dimenzitblban), de ezeket a
szablyokat a 2008 SSIS fel fogja rgni. Mg
nincs les tapasztalatom a 2008-as lookup
taszkkal, de dokumentcikbl kiderl, hogy
jelentsen megnveltk a teljestmnyt. Az
egyik ilyen teljestmnynvel fejleszts egybknt pont az emltett sok ismeretlen elemeket
tartalmaz tnytblk feldolgozsnak hatkonysgn javt. A nagygy azonban ktsg
kvl a lookup taszk gyorsttrnak tovbbfejlesztse, amelynek eredmnyekppen jelentsen felgyorsulnak majd a betltseink.
Az adattrhz elkszlt. A csillagsmink
korrektl fel vannak tltve adatokkal. Mr
csak fel kell sszegeznnk az OLAP process
taszkkal vagy egy ltalunk rt szkripttel az
Analysis Services adatkockit, idztennk
kell a betltseket, hogy azok mindennap lefuthassanak, s a felhasznlk mris elkezdhetik lekrdezni adattrhzunk mind rel
cis, mind tbbdimenzis oldalt.

Htorszg
Minden reggel, a betltsek lefutsa utn az
adattrhz-zemeltetnek r kell nznie a betlts eredmnyre, s ha az valamilyen okbl nem sikerlt (pldul megtelt a viny ),
akkor tjkoztatni kell a felhasznlkat, hogy
ma csak a tegnapeltti adatok rhetk el, a
tegnapiak mg nem. Ehhez pedig az zemeltetknek szksgk van egy olyan monitoringrendszerre, ahol az sszes adattrhzban
zajlott folyamatot nyomon tudjk kvetni.
Mely csomagok futottak le, melyek nem, melyik jelzett hibt, melyik nem indult egyltaln, melyik hny rekordot tlttt be, melyik
mennyi ideig futott, s ez mennyivel tbb,
mint a megszokott, s mg sorolhatnm.

Egy ETL-eszkztl, mint pldul az SSIS


azt is el kell vrnunk, hogy biztostsa a htorszgot az zemeltetknek. Mikzben ezerrel
darlnak a betltsek, arrl is gondoskodni
kell, hogy az adattrhz esemnyeit folyamatosan nyomon tudjuk kvetni. Br az SSISnek van beptett naplzsi funkcija, ez annyira rszletes, hogy ahhoz csak akkor kell

14. bra. Ksleltetett vltozskvets


nylnunk, ha tnyleg baj van. Ezrt clszer
ezt a naplt kiegszteni sajt magunk ltal
rt naplzssal is, amihez az SSIS minden segtsget megad.
Minden SSIS-csomagnak, taszknak van
OnError, OnFinish s mg sorolhatnm esemnye. Ezeket kiegsztve pldul az audit, a
row count taszkokkal s a beptett rendszervltozkkal olyan betltsi naplt tudunk
kszteni, ami mind a fejlesztk, mind az
zemeltetk ignyeit maximlisan ki fogjk
elgteni.
sszefoglalva: egy forrsadatnak sok-sok
lpcsn, gynevezett ETL-alrendszeren kell
keresztlmennie ahhoz, hogy eljusson vgleges helyre, az adattrhzba. Elszr t kell
esnie a ktelez szrvizsglatokon (az adat
profilozson), ahol analizljuk minsgt s
szerkezett. Ha nincs risi problma, akkor
megtervezzk a levlogats mdjt, majd betltjk ket az gynevezett staging adatbzisba. Itt bevrjuk a mg ms forrsrendszerbl
rkez adatokat, tiszttunk rajtuk egy kicsit,
elksztjk ket az adattrhzba val betltsre. Vgl j mestersges kulcsokat adva
betoljuk ket vgleges helykre, az adattrhzba.
Kvri Attila
(www.biprojekt.hu)
BI-bevezetsi tancsad, SQL Server MVP
15