ETL-verktyg för datavaruhus
Examensarbete vid institutionen för datavetenskap
Umeå Universitet
Författare:
Johan Unger <[email protected]>
Handledare:
Tommy Jakobsen (ABB Power Technology Products AB)
Johan Karlsson (Umeå Universitet)
Datum
måndag den 21 januari 2002
Sammanfattning
Detta examensarbete har huvudsakligen bestått av tre delar:
1. Studie av datavaruhus med fokusering på ETL (Extraction, Transformation &
Loading).
2. Teoretisk jämförelse, analys och val av ETL-verktyg (PowerMart eller DTS).
3. Design och implementation av datavaruhus och ETL-processer, samt framtagande av
gränssnitt för rapporter och analyser.
Arbetet inleddes med en teoretisk studie av datavaruhus och ETL. Från de kunskaper
som inhämtades under denna studie och de direkta behov som identifierades på ABB,
utvecklades en metod för analysera ETL-verktyg. Metoden bestod av ett antal
mätparametrar, som beskrev behoven för laddningen av datavaruhuset, vilka
möjliggjorde en analys av verktygen. Valet av ETL-verktyg stod mellan Informatica
PowerMart och Microsoft DTS och efter jämförelsen valdes DTS.
Efter detta val satte utvecklingen av datavaruhus och ETL igång. Datavaruhuset
utvecklades i Microsoft SQL Server 2000 och när datavaruhuset stod färdigt användes
Crytsal Report för rapportgenering och Excel 2000 som analysverktyg mot
datavaruhuset.
Idag finns en testmiljö för datavaruhuset uppe på ABB. Användare kan via ABBs
intranät erhålla rapporter och med hjälp av Excel 2000 utföra analyser på data från
datavaruhuset.
Abstract
This master thesis consists of three major parts.
1. Study of data warehouse and ETL (Extraction, Transformation and Loading)
2. Theoretical comparison, analysis and selection of one ETL-tool (PowerMart or
DTS).
3. Design and implementation of a data warehouse and ETL-processes, with
development of interfaces for reports and analysis.
The work started with a theoretical study of data warehouses and ETL. From the
knowledge acquired from the study and the direct requirements identified on ABB, a
method to analyse ETL-tools was developed. The method contained a number of
parameters that described the requirements for the loading of the data warehouse, which
made it possible to examine the tools. The choice of ETL-tool stood between
Informatica PowerMart and Microsoft DTS and when the analysis was finished the
choice fell on DTS.
When the choice was made the development of the data warehouse and ETL started.
The data warehouse was implemented with Microsoft SQL Server 2000 and when the
data warehouse was up, Crystal Report was used to make reports out of the data and
Microsoft Excel 2000 was used to analyse the data in the data warehouse.
Today there’s a working test environment on ABB. Users can through ABB’s Intranet
obtain reports and with Excel 2000 analyse data from the data warehouse.
1 INLEDNING
3
1.1
1.2
1.3
1.4
3
3
4
4
BAKGRUND
PROBLEMBESKRIVNING
SYFTE OCH MÅL
AVGRÄNSNINGAR
2 METOD
2.1
2.2
2.2.1
2.2.2
2.2.3
2.2.4
2.3
2.3.1
2.3.2
2.3.3
2.4
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
2.4.7
INLEDNING
DATAVARUHUS
VARFÖR BEHÖVS DATAVARUHUS?
DIMENSIONELLA DATABASER
STJÄRNMODELLEN
DATAFLÖDET
ETL
ETLS UPPGIFTER
FAKTORER SOM PÅVERKAR ETL
ANGREPPSSÄTT FÖR ETL
JÄMFÖRELSEMETOD
IDENTIFIERA BEHOV
DEFINIERA OCH VIKTA PARAMETRAR
GRUPPERING AV PARAMETER
BETYGSSYSTEM
BERÄKNING AV PARAMETERGRUPPS BETYG
ANALYS AV JÄMFÖRELSEMETODEN
RISKER MED JÄMFÖRELSEMETODEN
5
5
5
5
7
9
11
12
12
13
15
16
17
17
18
18
19
19
21
3 ANALYS AV ETL-VERKTYG
22
3.1
3.2
3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3.3
3.3.1
3.3.2
3.4
3.4.1
3.4.2
3.5
3.6
22
22
23
24
26
27
28
29
29
30
36
36
36
43
44
NULÄGESANALYS FÖR ABB
VAL AV PARAMETRAR
ANSLUTNINGSMÖJLIGHETER (GRUPP 1)
LADDNINGSFUNKTIONALITET (GRUPP 2)
ANVÄNDARVÄNLIGHET (GRUPP 3)
ADMINISTRATION OCH DRIFT (GRUPP 4)
KOSTNADER (GRUPP 5)
POWERMART
ÖVERBLICK
PARAMETRAR
DTS
ÖVERBLICK
PARAMETRAR
SAMMANFATTNING AV JÄMFÖRELSEN
SLUTSATS
ETL-verktyg för datavaruhus
4 GENOMFÖRANDE
45
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
46
46
48
49
52
53
54
54
BASLAGRET
LADDNING AV BASLAGER
ANALYSLAGRET
LADDNING AV ANALYSLAGRET
KONFIGURATION AV DTS
OLAP-KUBER
ANVÄNDARGRÄNSSNITT FÖR OLAP-KUBER
ANVÄNDARGRÄNSSNITT FÖR RAPPORTER
5 RESULTAT OCH FRAMTID
55
6 TACK
56
7 ORDLISTA
57
8 KÄLLFÖRTECKNING
58
2
ETL-verktyg för datavaruhus
1 Inledning
1.1 Bakgrund
Det här examensarbetet utförs på ABB Power Technology Products AB under
Business Area Unit (BAU) Transformers i Ludvika. ABB PTP tillverkar
högspänningsprodukter och ingår i den globala teknikkoncernen ABB.
Huvudkontoret för ABB ligger i Zürich, Schweiz och antal anställda är ca 165
000 personer i över 100 länder. Antal anställda i Sverige är strax under 20 000
och på BAU-enheten Transformers arbetar ca 500 personer. Transformers
ansvarar för försäljning och tillverkning av krafttransformatorer och
shuntreaktorer.
Vi lever idag i ett informationssamhälle där information samlas och
distribueras i snabb takt. Företag är i ständigt behov av analyser och rapporter
som bygger på data och information som företaget på olika sätt har tillgång till.
Informationen ligger ofta i företagets affärssystem och kan ibland vara spridd
över flera heterogena system. Ett behov finns alltså att sammanföra
informationen i företaget och strukturera den, för att senare kunna utföra
analyser på det insamlade materialet. Det är detta behov som har skapat
begreppet Data Warehousing. Ett datavaruhus (Data Warehouse) är ett system som
kan hämta data från olika källor, sammanföra det på ett strukturerat sätt som
möjliggör att analyser av den insamlade information kan utföras med enkelhet.
För att ladda ett datavaruhus behövs ett verktyg som samlar in, bearbetar och
slutligen laddar datan till datavaruhuset. ETL-verktyg (Extraction,
Transformation, Loading) är ett samlingsbegrepp för dessa verktyg.
1.2 Problembeskrivning
ABB PTP Transformer (PTTFO) lagrar idag det mesta av sin information i
affärssystemet BaaN. BaaN är ett ERP-system (Enterprise Resource Planning)
som används genom hela produktionen, från beställning av råvaror till
försäljning till kund. En sak som kännetecknar ett ERP-system är att det är
avsett för att lagra information, det är inte direkt anpassat för att visa och
analysera sitt data. Det är pga denna begränsning som behovet av ett nytt
system föddes, ett system från vilket man kan producera rapporter och
genomföra analyser. Det man eftersöker är alltså ett datavaruhus.
1999 inleddes ett datavaruhusprojekt kallat Business Intelligence System (BIS)
– Data Warehouse på ABB. Man beslutade sig för att använda Microsoft SQL
Server 7.0 (MS SQL 7.0) för själva datavaruhuset och en produkt av BaaN som
heter Broadbase som ETL-verktyg. På grund av omprioriteringar och att
kompetensen på Broadbase försvann från ABB lades projektet på is hösten
2000. Under sommaren 2001 fick projektet ny vind i seglen, men nu visste man
inte vilket ETL-verktyg som skulle användas. Två kandidater kom upp,
Microsofts Data Transformation Service (DTS) och Informaticas PowerMart.
3
ETL-verktyg för datavaruhus
1.3 Syfte och mål
Syftet med detta examensarbete är att få klarhet i vilket av ETL-verktygen
Microsoft DTS och Informatica PowerMart som är lämpligast att använda i
ABBs datavaruhuslösning. När ett val av verktygen kan göras ska
datavaruhuset designas och implementeras i Microsoft SQL Server 2000. Även
prototyper av användargränssnitt för rapporter och analyser ska tas fram.
Det som skall uppnås med detta examensarbete är alltså följande:
•
•
•
Ett val av ETL-verktygen DTS och PowerMart skall göras efter en
jämförelse av hur de lämpar sig för ABBs situation.
Datavaruhuset med tillhörande laddningsrutiner skall designas och
utvecklas så att det passar för rapportering och analysering av data.
Ett förslag på användargränssnitt skall tas fram, där användare från sin
arbetsstation kan ta fram rapporter och analysera datan.
1.4 Avgränsningar
Även fast detta datavaruhus ska kunna hantera data från flera olika avdelningar
kommer endast inköpsdata att tas med i detta projekt. Denna avgränsning görs
för att datamängden inte ska bli för stor och för att se att lösningen håller hela
vägen, från BaaN till slutanvändare. Dock måste hänsyn tas till att data från
andra avdelningar ska kunna tillföras senare.
4
ETL-verktyg för datavaruhus
2 Metod
2.1 Inledning
Eftersom detta examensarbete inleddes med en teoretisk jämförelse började jag
med att söka litteratur som behandlar datavaruhus och ETL-verktyg. Jag
bestämde mig för några böcker som jag tyckte gav ett seriöst intryck och där
författaren har god erfarenhet av datavaruhus. För övrigt har Internet varit den
stora källan för information och jag har försökt hålla mig till sidor som jag
bedömt som trovärdiga. Förutom dessa två källor har jag dessutom haft tillgång
till muntliga källor på ABB och produktdokumentation om ETL-verktygen från
tillverkarna.
För att genomföra en jämförelse av två ETL-verktyg måste man först förstå
den miljö där de arbetar. Därför börjar jag i detta kapitel med att beskriva
datavaruhus och du som läsare får lära dig vad de används till och de begrepp
som används inom detta område. Efter det beskriver jag laddningen av
datavaruhus och krav som av olika anledningar ställs på den. Kapitlet avslutas
med en beskrivning av den jämförelsemetod jag utvecklat och använt för att
jämföra de båda verktygen.
2.2 Datavaruhus
2.2.1 Varför behövs datavaruhus?
Företag är i ständigt behov av olika rapporter, sammanställningar och analyser.
Det kan handla om lönsamhetsrapporter, sammanställningar av resultat och
analyser av kundbeteende. Som tidigare nämnts så är ett datavaruhus en slags
samlingsplats för företagsdata, från vilken analyser av datan kan göras på ett
enkelt sätt. När datavaruhusen började dyka upp i början av 1990-talet menade
man att ett datavaruhus skulle innehålla statisk historisk data samlad under en
lång. Gupta [Gupta 1997] ger följande långa definition, fritt översatt:
”ett datavaruhus är en strukturerad utbyggbar miljö avsedd för analyser av ickeföränderlig data, logiskt och fysiskt transformerad från flera källor för att passa
företagsstrukturen, uppdaterad och underhållen under en lång tid, uttryckt i
enkla företagstermer och summerad för analyser”.
Varför behövs nu ett datavaruhus för att analysera data? Datan finns ju redan i
företagets olika system, går den inte att analyser därifrån direkt? För att svara
på den frågan varför datavaruhus behövs så måste vi titta lite närmare på de
system där data ofta ligger lagrat, sk affärssystem. Typiskt för affärssystem är
att de är designade för registrering av data med bra stöd för transaktioner,
såsom orderbehandling, inventarieföränderingar, och inmatning av data om
personal. Flera transaktioner kan utföras samtidigt då dessa system ofta
används av flera användare samtidigt. Vanligt är också att data i dessa system
ligger lagrat i någon relationsdatabas som är normaliserad till någon nivå. Det
som görs med en databas som normaliseras är i grova drag att data delas upp i
flera tabeller i stället för att all data ligger i en och samma tabell. Mellan
tabellerna finns referenser som gör det möjligt att slå samman tabellerna för att
5
ETL-verktyg för datavaruhus
utläsa data. Normalisering av databaser görs för att minska utrymmet för att
lagra data och få konsistens i systemet [Elmasri 2000]. Affärssystemen rensas
regelbundet på data när transaktioner inte längre är aktuella, för att hålla
datavolymerna nere vilket i sin tur höjer prestanda.
Vi kan sammanfatta de karaktäristiska dragen för ett affärssystem med följande
punkter:
•
•
•
•
•
•
Data är ofta lagrat i en relationsdatabas.
Normalisering utnyttjas i någon grad för utrymmesbesparing och
konsistens.
Transaktioner utförs snabbt och över en liten datamängd.
Flera transaktioner utförs samtidigt från olika terminaler.
Lagrar dynamisk data som uppdateras dagligen.
Gammal data töms regelbundet.
Kort sagt kan man säga att affärssystem är avsedda för inmatning av data
rörande företagets produktion på en detaljerad nivå, men för analyser ska vi nu
se att det behövs ett annat system.
Ett företag har sällan all sin data lagrad i ett enda system, utan ofta används
flera olika system för olika uppgifter. Det kan handla om allt från stora
affärssystem till mindre specifika databaser för lokala lösningar. För att utföra
analyser av data från flera heterogena system måste datan sammanföras till en
homogen plats. Om man dessutom vill analysera trender över flera år så måste
data finnas lagrad för flera år, vilket det vanligtvis inte finns i affärssystem.
Detta medför att stora datamängder måste lagras i systemet vilket i sin tur
medför att man måste tänka på prestanda när det gäller svarstider. En person
som arbetar med en analys tappar lätt bort sig om han eller hon måste vänta
länge på att få fram resultaten. Normaliserade databaser kan innebära längre
svarstider eftersom sammanslagning av tabeller kan behövas. För att få ner
svarstiderna kan det bli aktuellt att denormalisera datastrukturen, alltså minska
antalet tabeller. På detta sätt kan antalet sammanslagningar av tabeller minska
vilket ger bättre prestanda på svarstider.
De karaktäristiska dragen för ett system avsett för analyser är:
•
•
•
•
•
Flexibel datamodell för flexibla analyser.
Denormaliserat för optimering av frågor.
Innehåller stora datamängder, data som sträcker över flera år.
Sammanför heterogen data till en plats vilket möjliggör analyser av den.
Statisk data som ej ändras av användaren.
Detta system är kort sagt ett system där data är anpassat för att presenteras och
analyseras, jämfört med ett affärssystemet där informationen registreras. På
grund av dessa skillnader mellan de behov som finns av analyser och den
datastruktur där data ligger lagrat så behövs datavaruhusen. En ytterligare
anledning till att placera data för analyser i ett annat system är för att minska
påfrestningarna på affärssystemen. En analys av data över flera år skapar en
fråga mot databasen som kan ta lång tid att beräkna och detta kan göra att
affärssystemens prestanda sänks, vilket i de flesta fall inte är önskvärt.
6
ETL-verktyg för datavaruhus
Under de senaste åren har idéerna kring datavaruhus förändrats. I den
ursprungliga idén menade man att data i ett datavaruhus var statisk och inte
gick att ändra när den väl var där. Gupta [Gupta 1997] menar att det är näst
intill omöjligt att underhålla dynamisk data i ett datavaruhus och att alla data
måste vara statisk. Detta är något man frångått på senare år och flera bl a
Kimball [Kimball 1998] menar att ett datavaruhus måste kunna uppdateras.
Om en leverantör t ex byter adress så måste denna förändring även slå igenom
i datavaruhuset, vilket kan te sig ganska naturligt.
2.2.2 Dimensionella databaser
Dimensionella databaserna, även kallade OLAP-databaser (On-line Analysis
Processing), har med tiden blivit populär för att lagra data i ett datavaruhus.
OLAP definierades i tolv punkter av E.F Codd 1993, och 1995 kompletterade
han dem med ytterligare sex punkter [Pendse 2001]. Anledningen till OLAPdatabasens popularitet är att den ger användaren en intuitiv bild av hur data är
organiserat, vilket underlättar analyser av data. Databasen ger även god
prestanda när det gäller svarstider för frågor mot datan jämfört med en
normaliserad relationsdatabas.
Logiskt brukar OLAP-databaser representeras med hjälp av sk OLAP-kuber.
En geometrisk kub har tre dimensioner, men en OLAP-kub kan ha fler. Nedan
ser vi ett exempel på en OLAP-kub för ett bilföretag med tre dimensioner som
p g a att den just består av tre dimensioner kan representeras med en
geometrisk kub.
Bild 1: Exempel på OLAP-kub.
7
ETL-verktyg för datavaruhus
Dimensioner och fakta är två viktiga begrepp när vi talar om OLAP-kuber.
Fakta är själva datan vi vill analysera och dimensionerna, axlarna i kuben, är de
sätt vi vill analysera datan på. OLAP-kuben är indelad i celler där datan (fakta)
ligger lagrad, som i detta fall är antal sålda bilar. Dimensionerna i kuben
motsvarar de olika grupperingssätten som datan kan grupperas och summeras
efter. Kuben ovan är tänkt att analysera bilförsäljningen i antal bilar över
tidsperioden januari till mars 2001. Bilföretaget säljer tre bilmodeller (A, B och
C) i tre affärer (Stockholm, Göteborg och Umeå). Bilmodeller och
försäljningsort (affär) anses som lämpliga grupperingar och passar därför som
dimensioner. En tredje dimension som är med i denna kub är tid. Tiden anger
när bilarna såldes och ger möjlighet att gruppera bilförsäljningen tidsmässigt.
Dessa tre dimensioner ger möjlighet att gruppera och summera datan i cellerna
och de kan kombineras för önskad analys.
Det totala antalet bilar som sålts under det första kvartalet 2001 är summan av
alla celler vilket är 315 st (80+50+100+75+10). Utifrån denna totalsumma kan
vi arbeta oss ner till en mer detaljerad nivå genom att gruppera kuben med
hjälp av de olika dimensioner. Man kan se det som att man skär ut ett snitt ur
kuben och får på det viset informationen grupperad efter dimensionen. Om vi
t ex analyserar datan med hjälp av modelldimensionen ser vi att för modell B,
som är en medlem i modelldimensionen, är summan av cellerna i det snittet
205 st (80+50+75). Modell B har alltså sålts i 205 exemplar under det första
kvartalet 2001. Om vi fortsätter att skära ut delar ur kuben kan vi erhålla ännu
mer detaljerad information. Vi lägger till affärsdimensionen och tittar bara på
värden tillhörande dimensionsmedlemmen Umeå, alltså bilar av modell B som
sålts i Umeå under det första kvartalet 2001, och ser att antalet blir 125 st
(50+75). På detta sätt kan vi ställa komplicerade frågor till databasen och
samtidigt ha en enkel och lättförståelig bild av databasen.
Antalet celler som ingår i OLAP-kuben beror på hur dimensionerna är
uppbyggda. Detta styr med vilken detaljrikedom fakta i kuben är lagrad. En
dimension kan vara uppbyggd enligt en hierarki vars lägsta nivå bestämmer
detaljrikedomen. En typisk dimension med hierarki är tidsdimensionen.
Bild 2: Exempel på dimension för tid med hierarki.
8
ETL-verktyg för datavaruhus
Ett exempel på en tidsdimension med hierarki ses på bild 2 (denna hierarki
syns ej i OLAP-kuben på bild 1). Hierarkin i denna dimension är i fallande
ordning, alla, år, kvartal, och månad, vilket gör att den mest detaljerade nivån av
fakta i kuben är månadsvis. För varje nivå kan datan summeras och beräknas i
förhand vilket minskar svarstider för databasen. Dessa delsummeringar kallas
för aggregat [Lupin 2001]. Den översta nivån, alla, består av en medlem som
summerar all data i kuben. Analyseras kuben med tidsdimensionen på nivå alla
erhålls en summa av all data i kuben. Nästa nivå, år, består av tre medlemmar,
vilka representerar tre olika år. Datan i kuben kan högst tillhöra en medlem (år)
och detta medför att fakta i kuben delas upp på dessa tre medlemmar. Ett
exempel på tre medlemmar för nivån år kan vara 1999, 2000 och 2001, och
väljer vi 1999 får vi de värden i kuben som tillhör 1999 summerade. Genom att
gå ner genom en hierarki på detta sätt får vi mer och mer detaljerad
information om datan i kuben. Att röra sig ner i en dimensionshierarki och på
det sättet få mer detaljerad information kallas för att göra ”drill-down”.
Hierarkier i dimensioner kan byggas upp på olika sätt. En hierarki kan ha en
eller flera rötter och kan vara balanserad eller obalanserad [Thomsen 1999].
Valet av struktur på hierarkin avgörs av hur dimensionen är uppbyggd i
”verkligheten”.
2.2.3 Stjärnmodellen
Det fysiska lagringssättet för en OLAP-databas håller fast vid
relationsdatabaser, men med restriktionen att fakta organiseras och grupperas
med hjälp av olika dimensioner. Fakta lagras i faktatabeller medan dimensioner
definieras med dimensionstabeller och de samordnas i vad man brukar kalla en
stjärnmodell. En stjärnmodell består av en faktatabell och en mängd
dimensionstabeller.
Bild 3: Stjärnmodell
I faktatabellen ligger förutom själva värdet (fakta) också referenser till de
dimensionstabeller som definierar värdet. De dimensionstabeller som refereras
9
ETL-verktyg för datavaruhus
från faktatabellen ger tillsammans varje värde en betydelse och dessa referenser
utgör även den unika nyckeln för varje värde. Referenserna till
dimensionstabellerna utgör alltså tillsammans primärnyckeln i faktatabellen.
Primärnyckeln är det eller de attribut som unikt identifierar en tupel i
databastabell. De värden som är lämpligast som fakta i en faktatabell är
numeriska värden eftersom de går att addera. Det gör det möjligt att gruppera
värden efter dimensionerna och på det sättet beräkna summor och
medelvärden etc. Textdata lämpar sig inte eftersom det saknar denna egenskap.
En dimensionstabell innehåller information om dimensionen och har en
primärnyckel som unikt identifierar varje dimensionsmedlem (tupel). Övriga
attribut i dimensionstabellen innehåller information om dimensionen och kan
användas för att bygga upp hierarkier i dimensionen.
Bild 4: Stjärnmodell för försäljningen för bilföretag.
Bild 4 visar hur en stjärnmodell för OLAP-kuben på bild 1 skulle kunna se ut.
Fakta, antal sålda bilar, ligger lagrat i faktatabellens attribut ’Antal’ och för varje
värde finns referenser till tillhörande dimensionstabeller. Dimensionstabellerna
innehåller, utöver primärnyckel, attribut som gör det möjligt att bygga upp
hierarkier. Affärsdimensionsen innehåller fem attribut som gör det möjligt att
geografiskt placera försäljningen på olika nivåer.
En variant på stjärnmodellen är den så kallade snöflingemodellen (engelska:
snowflake model). Denna modell bygger på stjärnmodellen, men minst en
dimension har en tillhörande yttre dimension. Genom att använda sig av denna
modell minskas dubbellagringen som uppkommer med hierarkier, men antalet
sammanslagningar av tabeller ökar vid frågor med denna dimension [Kimball
1998].
10
ETL-verktyg för datavaruhus
2.2.4 Dataflödet
Nu när vi vet vad ett datavaruhus är och hur data är lagrat där så är det dags att
titta på den miljö där datavaruhuset finns och hur data flödar från källa till
slutanvändare. Nedan ser vi en enkel bild över hur data flödar genom ett
system.
Bild 5: Dataflöde från källor till datavaruhus och användarprogram.
Informationen vi vill analyser finns lagrad i en eller flera datakällor. Dessa
datakällor kan vara allt från enkla textfiler till mer komplicerade affärssystem.
En typ av affärssystem som blir allt vanligare är sk ERP-system (Enterprise
Resource Planning). ERP-system är affärssystem som bygger på en klientserver-lösning [Cox III, 1995] och de kan innehålla tusentals databastabeller.
Exempel på ERP-system är SAP och BaaN. Andra typer av källor där
informationen kan vara lagrad är databaser, kalkylark, e-post och Internetsidor.
För att kunna sammanföra informationen från alla källor måste den ofta
bearbetas. Den måste först extraheras ur källorna och sedan rensas och tvättas
på olika sätt för att enkelt gå att analysera. Ett mellansteg där datan ligger efter
extrahering kallas behandlingsarea (engelska: Staging Area). Det är här det
mesta av transformeringen äger rum. Innan den laddas till datavaruhuset måste
den omstruktureras så att den passar den struktur som används där, t ex en
OLAP-databas. Denna process brukar delas in i tre steg och kallas för ETL
(Extraction, Transformation, Loading) och program som sköter denna process
kallas för ETL-verktyg. ETL behandlas i nästa kapitel ETL.
När data är färdigbehandlat hamnar det så småningom i datavaruhuset.
Datavaruhus brukar vara logiskt strukturerade efter de olika affärsområden
som ingår i datavaruhuset. Ett sådan logiskt affärsområde kallas i datavaruhuset
för ett data mart och kan t ex innehålla data från ekonomi- eller
försäljningsavdelningen [Kimball 1998]. Viss data kan dock ingå i flera olika
logiska affärsområden, det kan handla om information som är generell för hela
företaget såsom personalinformation.
Det sista steget i dataflödet är när informationen görs tillgänglig för användare.
Användarna är personer som skall analysera informationen i datavaruhuset och
de kan vara chefer och beslutsfattare. Dessa personer använder sig av olika
program för att titta på och analysera informationen i datavaruhuset. Det finns
en mängd olika applikationer för dessa ändamål, bl a rapportgeneratorer,
OLAP-verktyg och data mining-verktyg.
11
ETL-verktyg för datavaruhus
2.3 ETL
ETL är den processen som innefattar flyttning av data från källor till
datavaruhus. Oftast är detta ingen enkel kopiering, utan omstrukturering och
justering av data måste göras vilket gör att detta inte är någon liten och enkel
uppgift. Upptill 70 procent av tiden i ett datavaruhusprojekt kan gå åt till ETL
[Meyer 2001], och det är vanligt att företag avsätter mellan 40 till 70 procent av
projektbudgeten till ETL [Allison 2001]. Dessa siffror säger en del om hur stor
och viktig del ETL är i ett datavaruhusprojekt.
I detta kapitel beskrivs ETL-processen, laddningen av datavaruhuset. Vilket
ansvar har ETL, vad utförs av ETL och hur kan en ETL-lösning se ut? Detta
är frågor som kommer att besvaras i kapitlet.
2.3.1 ETLs uppgifter
ETL, som är en förkortning för de engelska orden Extraction, Transformation,
Loading, kan sägas ha tre huvuduppgifter. Dessa går, inte helt oväntat, att utläsa
ur själva förkortning ETL.
•
•
•
Läsning av data (Extraction)
Omvandling av data (Transformation)
Laddning av data (Loading)
Dessa punkter är de tre faser eller steg som datan måste gå igenom för att
införas i datavaruhuset. Det första steget är läsning av data från källorna där
datan finns lagrad. Data kopieras i detta steg från källorna till en
behandlingsarea. Behandlingsarean kan vara någon typ av databas eller en enkel
textfil. När källdatan finns samlad i denna behandlingsarea kan nästa steg
påbörjas, transformering av data. Under denna transformering tvättas, rensas
och omstruktureras data på ett sätt att det senare kan laddas in i datavaruhuset.
Exempel på tvättning är avrundning av tal och exempel på rensning är att man
helt enkelt plockar bort data som inte är intressant för någon analys.
Omstrukturering av data behövs när strukturen på data skiljer sig mellan källan
och datavaruhuset. Detta förekommer t ex när källan är en relationsdatabas
och datavaruhuset bygger på en OLAP-databas. När transformeringen är
avklarad kan det sista steget inledas, själva laddningen av data till
datavaruhuset.
12
ETL-verktyg för datavaruhus
Bild 6: ETL-processens tre steg.
Denna modell av laddningen av ett datavaruhus används av bl a Kimball
[Kimball 1998] och Scott [Scott 2000]. Det är viktigt att förstå att dessa tre steg
inte alltid är distinkta från varandra. Kimball [Kimball 1998] understryker att
transformeringen av data kan ske i processens alla tre steg. Redan under
extraheringen av källdata kan data omvandlas under extraktrutinerna och detta
gäller även för laddningsrutinerna.
2.3.2 Faktorer som påverkar ETL
Den miljö där ETL arbetar påverkar utformningen av ETL-processen [Scott
2000]. De faktorer som påverkar ETL-processen kan delas in i fyra
huvudkategorier:
•
•
•
•
Data och datastruktur
Applikationer
Arkitektur
Personal
2.3.2.1 Data och datastrukturer
Det första man kanske kommer att tänka på som påverkar laddningen av ett
datavaruhus är själv datan som skall laddas och hur dess struktur ser ut.
Kvaliteten på datan bestämmer vad som måste göras med den under
transformeringen. Idealet är att datan i datakällorna är så pass bra att den bara
är att ladda in, men så är sällan fallet. Om t ex inmatningen av textsträngar görs
manuellt i ett affärssystem kan detta medföra problem vid tolkningen av dessa.
Två olika strängar kan egentligen betyda samma sak, som t ex ”I.B.M” är
samma företag som ”IBM”, och detta måste ETL-processen klara av att
hantera. ETL ansvarar alltså för att höja kvaliteten på datan så att analyser blir
möjliga. Andra typer av dataomvandlingar är datatypskonvertering och
tolkning av förkortningar och nullvärden. Förkortningar som används i
datakällan för att spara utrymme lämpar sig inte för analyser. Om t ex en bit
används för att representera ja och nej för ett attribut i datakällan, är det bättre
att använda sig av textsträngen ”ja” eller ”nej” för detta attribut i datavaruhuset
för att öka förståelsen vid analyser. ETL-processen ansvarar för att detta görs.
13
ETL-verktyg för datavaruhus
I de fall där källdata och datavaruhusets datastruktur skiljer sig måste data
omstruktueras. Detta blir aktuellt när data ligger lagrat enligt en relationsmodell
och datavaruhuset använder sig av en OLAP-databas. Generellt kan man säga
att ju mer datastrukturerna skiljer sig från varandra desto mer krävs av ETL för
att anpassa datan innan den kan laddas.
När data laddas från flera olika datakällor kan problem uppkomma med
primärnycklarna som finns i dessa källor. Primärnycklarna i de olika källorna
kan stå i konflikt med varandra vilket medför att datan inte kan sammanföras i
datavaruhuset. Spänner laddningen över lång tid finns det risk att
återanvändning av primärnycklar sker i datakällorna. Eftersom affärssystem i
vissa fall rensas så finns risk att primärnycklar återanvänds, och detta skapar
ytterligare problem för datavaruhuset. En lösning som bl a förordas av Kimball
[Kimball 1998] och Navarro [Navarro 2000] är att istället för datakällornas
primärnycklar använda en annan nyckel i datavaruhuset. Denna nyckel kallas
för surrogatnyckel och kan vara uppbyggd på olika sätt. Det som
rekommenderas är att använda ett löpnummer (heltal) för varje tupel och detta
är även fördelaktigt för utrymmesbesparingar. Ett heltal tar fyra byte jämfört
med en textsträng som kan ta betydligt mer utrymme. Fördelen med att
använda surrogatnycklar istället för källsystemens primärnycklar kan
sammanfattas med följande punkter:
•
•
•
•
Förenklar sammanföring av data från olika system som använder olika
typer av primärnycklar.
Förebygger problem med återanvändning av primärnycklar i datakällorna.
Förenklar eventuellt byte av källa, då källans primärnycklarna inte påverkar
datavaruhuset.
Kräver mindre lagringsutrymme.
Nackdelen med att använda surrogatnycklar i datavaruhus är att det blir mer
kompilicerat att införa och uppdatera data. När dessa operationer ska utföras
måste källdatans primärnyckel samman kopplas med datavaruhusets
motsvarande surrogatnyckel innan operationen kan verkställas. Hanteringen av
dessa surrogatnycklar faller på ETL-processens ansvar.
2.3.2.2 Applikationer
Utöver de tre huvudsakliga uppgifterna som ETL-processen har tillkommer
andra uppgifter, såsom loggning av felaktigt data och underrättelse av fel. Om
dessa uppgifter ska skötas av redan befintliga program måste ETL-processen
klara av att kommunicera med dessa. ETL-processen måste passa in bland de
applikationer som företaget redan använder sig av och dessa faktorer påverkar
givetvis utformningen av ETL-processen.
2.3.2.3 Arkitektur
Även faktorer som kommer från den dataarkitektur företaget använder sig av
påverkar ETL. Det kan handla om kommunikation och överföring av data
över ett nätverk mellan två olika typer av plattformar, t ex Windows och
UNIX. Ligger data utspritt på flera olika plattformar måste ETL-processen
klara av att kommunicera och hämta data från dessa. Andra faktorer som
påverkar ETL kan vara vilken tillgång på lagringsutrymme ETL-processen har,
för exempelvis behandlingsarean.
14
ETL-verktyg för datavaruhus
2.3.2.4 Personal
Personalens kunskap och bakgrund påverkar utformningen av ETL. Utvecklas
ETL-processen av en grupp programmerare som är experter på ett
programmeringsspråk väljer de nog det språket även fast det kanske inte är den
optimala lösningen. Samtidigt är det bra om kompetensen för lösningen av
ETL-processen finns i företaget. Personalen som ska administrera ETLprocessen har förmodligen också en del att säga om hur driften i form av
loggning och felhantering ska ske.
2.3.3 Angreppssätt för ETL
Hur kan man nu praktiskt lösa denna ETL-process? Vi har ett problem vi vill
lösa med hjälp av en dator och ställs då inför två alternativ, skriva ett program
eller köpa ett program som löser detta problem. Scott [Scott 2000] menar att
det finns fyra olika angreppsätt för dataomvandling och dataöverföring. Dessa
är att programmera en egen lösningen, köpa en kompilator för meta data, köpa
ett ETL-verktyg eller välja en blandning av de tre. Jag vill dock ge följande bild
av de alternativ som finns:
1. Programmera en egen lösning.
2. Köpa ett ETL-verktyg.
3. Välja en blandning av de två ovannämnda.
Anledningen till att jag väljer denna indelning istället för Scotts är att jag anser
att hans kategorier ”går in i varandra”. Jag nöjer mig med att säga att det går att
programmera en lösning (program, kompilator), köpa ett ETL-verktyg
(program, kompilator) eller kombinera dessa två.
2.3.3.1 Programmera en egen lösning
Att programmera en egen lösning kan göras på olika abstraktionsnivåer. Man
kan använda sig av SQL, skriva ett program i något programmeringsspråk
(C++, Java, etc), eller skriva en egen kompilator som utifrån Meta Data från
källor och datavaruhus skapar ETL-processer. Eftersom denna typ av ETLlösning ligger relativt nära hårdvaran har man goda möjligheter att optimera
den efter sin situation, men samtidigt så medför den en risk. Risken är att
kompetensen för programmet ligger hos en eller ett fåtal personer, de personer
som var med och utvecklade programmet. Försvinner de från företaget så
försvinner även kompetensen för programmet. Risk finns även för att
vidareutveckling och underhåll av egenutvecklade lösningar är svårt och
kostsamt.
2.3.3.2 Köpa ett ETL-verktyg
Istället för att skriva en egen lösning kan man köpa en ETL-lösning. Program
som jobbar med laddning av datavaruhus brukar kallas för ETL-verktyg och de
finns enligt Meyer [Meyer 2001] över 75 produkter som påstår sig ha någon
slags ETL-funktion. Fördelen med denna lösning är att man får en produkt
som troligen har flera användare vilket ökar möjligheten till externt kunnande
om produkten. Några av nackdelarna är att man får en produkt som är generell
och inte optimerad för sin situation, och att produktens funktionalitet och
möjligheter styr strukturen på data i datavaruhuset [Kimball 1998].
15
ETL-verktyg för datavaruhus
2.3.3.3 Välja en blandning av de två ovannämnda alternativen
Ett alternativ är att välja en lösning som innehåller de två ovannämnda
angreppssätten. Det kan t ex finnas situationer där ett köpt verktyg inte klarar
av en viss typ av omvandling och denna funktion måste implementeras i en
egen delapplikation. Detta gör då att man kompletterar det köpta ETLverktyget med ett eget program. Ställs man inför detta problem ofta med ett
köpt ETL-verktyg bör man nog fundera på om ETL-verktyget är värt att ha
eller om man ska programmera en egen lösning.
Det angreppsätt som är aktuellt i detta examensarbete är förstås att köpa ett
ETL-verktyg, eftersom arbetet består av en jämförelse av två sådana produkter.
Anledning till att ABB väljer att köpa ett ETL-verktyg är för att man
eftersträvar en allmän lösning där extern support kan erhållas. Att köpa en
produkt anses också vara mer lätthanterligt och enklare att underhålla än en
unikt tillverkad lösning.
2.4 Jämförelsemetod
Hur jämför man två ETL-verktyg? Ett sätt kan ju vara att gå igenom varje
produkt i detalj och se vilka funktioner och möjligheter varje produkt besitter.
Problemet med denna metod är att den tar mycket tid, särskilt om produkten
är stor. Ett annat problem med denna metod är att den ger information om
produkten som inte är relevant för att lösa problemet. Resultat man får från en
sådan undersökning täcker förmodligen områden som inte är aktuella för det
datavaruhus man utvecklar. Dessutom finns ju denna information redan i
tillverkarnas dokumentation av produkterna och kan alltså hämtas där.
Jag letade ett tag efter en metod för att göra jämförelser av ETL-verktyg, men
hittade inget konkret tillvägagångssätt. Det jag dock hittade var andras
jämförelser av ETL-verktyg, problemet med dessa var att få tillgång till
resultaten kostade mycket pengar. Tillslut bestämde jag mig för att utveckla en
egen jämförelsemetod. Varför gjorde jag nu detta? Jo, tittar man på de fyra
faktorer som påverkar utformningen av ETL, data, arkitektur, personal, och
applikationer, så är de unika för varje datavaruhus. Data som laddas kommer
från företagets egna källor, arkitekturen och applikationer har företaget byggt
upp själv och de behov som personalen har är också olika från fall till fall. Jag
har därför byggt upp min jämförelsemetod av ETL-verktyg efter de behov och
förutsättningar som finns på ABB. Ett problem med denna metod är att den
fokuserar på nuet. Den ser inte till framtida behov som kan finnas på
datavaruhuset och ETL-verktyget. För att ta hänsyn till tänkbara framtid
behov, så har jag utgått från andras erfarenheter av val och behov av ETLverktyg. Jag har främst studerat skrifter av Kimball [Kimball 1998] och Meyer
[Meyer 2001] som belyser viktiga egenskaper hos ETL-verktyg. Det är viktigt
att komma ihåg att detta inte är någon jämförelse mellan verktygen som ger
svar på vilket verktyg som passar bäst i ett generellt fall. Jämförelsen syftat till
att avgöra vilket verktyg som är mest lämpligt för ABBs situation och
förutsättningar.
Nedan följer en beskrivning av tillvägagångssättet för jämförelsen av ETLverktygen.
1. Identifiera behov, direkt eller allmänt behov.
2. Definiera parametrar som gör det möjligt att mäta hur produkten uppfyller
behoven.
16
ETL-verktyg för datavaruhus
3. Vikta parametrar.
4. Gruppera parametrarna i huvudgrupper. Alla parametrar som tillhör en
huvudgrupp kommer att påverka gruppens resultat beroende på dess vikt.
En parameter med låg vikt påverkar gruppens sammanlagda resultat lite,
medan en parameter med hög vikt påverkar resultatet mycket.
5. Skapa ett betygssystem där det är enkelt att betygsätta varje parameter.
6. Studera varje produkt och betygsätt varje parameter
7. Summera varje grupp av parametrar och normalisera värdet.
8. Jämför produkternas resultat.
2.4.1 Identifiera behov
Det första steget är ganska naturligt och det är att identifiera vilka behov och
krav som finns på ETL-verktyget. Det är dels krav som ställs direkt på ETLverktyget, såsom datastrukturer i källorna och administrering, och dels kravs
som ställs på rapport- och analysmöjligheter som i sin tur påverkar ETLverktyget. De krav som ställs direkt på ETL-verktyget kommer från ABBs ITavdelning, de som ska sköta och utveckla laddningarna. Kraven härifrån var
ganska konkreta. Inköpsavdelningen, som är kunden i detta projekt, hade några
önskningar om vad rapporter skulle innehålla och klara av, men kraven på
analysmöjligheter var inte lika klara.
Vidareutveckling av datavaruhuset kan medföra andra behov och krav på ETLverktyget än de som kan identifieras enligt ovan. Därför har jag inkluderat
behov som med hög sannolikhet kan tänkas uppkomma i framtida versioner av
datavaruhuset. Dessa behov grundas på mina studier av datavaruhus och ETLverktyg.
De olika typerna av behoven jag har identifierat efter detta resonemang är
följande.
•
•
Direkta behov. Dessa behov kan direkt utläsas från de krav och behov som
kommer från IT- och inköpsavdelningen. Dessa behov finns idag.
Allmänna behov. Dessa behov kan ej utläsas från de krav och behov som
identifierats, men bör ändå tillgodoses av ETL-verktyget. Härkomsten av
dessa behov kommer ifrån mina studier av datavaruhus och ETL-verktyg.
2.4.2 Definiera och vikta parametrar
Utifrån de behov som identifierats skapas parametrar som möjliggör en
jämförelse av verktygen. En parameter kan innefatta ett eller flera behov och
varje parameter viktas mellan ett till tre, där ett innebär att behoven parametern
innefattar är av mindre betydelse och tre innebär att behoven parametern
innefattar är av högre betydelse. Viktningsnivåerna beskrivs enligt följande:
1. Låg. De behov som en parameter med denna vikt beskriver uppskattas om
de uppfylls av ETL-verktyget. Behov av detta slag finns troligen inte idag,
men kan tänkas uppkomma i framtida versioner av datavaruhuset.
2. Medel. De behov som en parameter med denna vikt beskriver bör
uppfyllas av ETL-verktyget. Behov av detta slag finns troligen idag eller
kommer med hög sannolikhet att uppkomma vid en vidareutveckling av
datavaruhuset.
3. Hög. De behov som en parameter med denna vikt beskriver måste
uppfyllas av ETL-verktyget. Behov av detta slag finns idag.
17
ETL-verktyg för datavaruhus
Alla direkt behov får automatiskt vikten tre, dessa behov måste ju uppfyllas.
Allmänna behov får däremot vikten två eller vikten ett. Skillnaden mellan vikt
två och ett är att en parameter med vikt två beskriver ett behov som kan
uppkomma med hög sannolikhet, medan vikt ett beskriver ett behov vars
sannolika uppkomst anses vara låg.
Behov
Direkta behov
Viktning
3. Måste
2. Bör
Allmänna
behov
1. Uppskattas
Bild 7: Samband mellan behov och viktning av parametrar.
2.4.3 Gruppering av parameter
För att enklare jämföra verktygen valde jag att gruppera parametrarna efter
olika behovsområden. Få grupperade jämförelsevärden är lättare att överblicka
än många, men det är samtidigt viktigt att komma ihåg att lyfta fram stora
avvikelser som kan styra resultatet i en någon riktning.
2.4.4 Betygssystem
När det som ska mätas hos verktygen är definierat gäller det att utveckla något
sätt att bedöma hur väl verktyget uppfyller behovet. Jag bestämde mig för en
fyragradig betygsskala som jag tillämpade på parametrarna för varje verktyg.
Betyg 3 är högsta betyg och betyg 0 är sämsta.
•
•
•
•
3 Bra. Verktyget har den funktionalitet eller egenskap som efterfrågas.
2 Mindre bra. Verktyget har den funktionalitet eller egenskap som
efterfrågas, men verktygets sätt att bemöta behovet komplicerar lösningen.
Funktionaliteten eller egenskapen ligger dock fortfarande inom ETLverktyget.
1 Dåligt. Verktyget saknar efterfrågad funktionalitet eller egenskap.
Avsaknaden medför att en lösning måste göras med hjälp av extern
programmering, programmering som ligger utanför ETL-verktyget.
0 Saknas. Verktyget saknar efterfrågad funktionalitet eller egenskap.
Hur mycket en parameter påverkar resultat för ETL-verktyget beror på
parameterns vikt och verktygets betyg för denna parameter. Parameterns vikt
multipliceras med verktygets betyg och produkten blir verktygets resultat för
denna parameter.
För vissa parametrar passar inte beskrivningen av betygen ovan. Detta gäller
parametrar som inte bedömer verktygets funktionalitet, såsom dokumentation
och support. Om t ex dokumentationen av ett verktyg uppfattas som dålig får
18
ETL-verktyg för datavaruhus
den således betyg ett, utan att det innebär att det går att lösa med extern
programmering.
2.4.5 Beräkning av parametergrupps betyg
Varje parametergrupps gemensamma betyg baseras på de ingående
parametrarnas betyg. För att underlätta jämförelsen och göra resultat
oberoende av antal ingående parametrar så normaliserade jag
parametergruppens betyg enligt följande formel:
Gruppbetyg =
(b1 * v1) + (b 2 * v 2) + ... + (bn * vn)
3 * (v1 + v 2 + ... + vn)
där bi är betyget verktyget fått för parameter i, 1 ≤ i ≤ n, n är antal parametrar
som ingår i gruppen och vikten på parameter i är vi.
2.4.6 Analys av jämförelsemetoden
Hur förhåller sig parametrar med olika vikt mellan varandra och hur mycket
påverkar de gruppens resultat där de ingår? Procentuellt sätt förhåller sig
parametrarna till varandra enligt tabell 1.
Vikt
3
2
1
Procentuell ökning från
underliggande vikt
50 %
100 %
-
Tabell 1: Procentuell ökning i betydelse mellan vikter.
Vi ser i tabell 1 att betyg tre och två ligger procentuellt sett närmare varandra
än betyg två och ett. En parameter med vikt två påverkar resultat för
parametergruppen dubbelt så mycket (100%) än vad en parameter med vikt ett
gör, medan en parameter med vikt tre påverkar resultat endast hälften (50%) så
mycket som vad en parameter med vikt två gör. Detta medför att skillnaden i
betydelse mellan parametrar med vikt tre och två är mindre än skillnaden
mellan parametrar med vikt två och ett. Anledningen till att skillnaden mellan
parametrar med vikt tre och två är mindre är för att parametrar med vikt två
representerar ett behov som förmodligen redan finns idag och därför bör ha
hög betydelse. Alltså blir parametrar med vikt två 100% mer betydelsefulla än
parametrar med vikt ett, men parametrar med vikt tre blir bara 50% mer
betydelsefulla än parametrar med vikt två.
19
ETL-verktyg för datavaruhus
Beräkning av betyg
10
8
vikt 1
6
vikt 2
4
vikt 3
2
0
noll
ett
två
tre
betyg
Bild 8: Förhållande mellan viktning och betyg.
Hur många parametrar som ingår i en grupp påverkar gruppens resultat. Ju fler
parametrar man har i en och samma grupp desto mindre påverkar varje enskild
parameter gruppens totala betyg. Därför är det viktigt att tänka på att balansera
grupperna så att styrkor och svagheter hos produkten kommer fram. Skapar
man en parametergrupp med många parametrar kan det vara idé att dela på
denna för att kritiska parametrar ska påverka mer. Parametergrupperna bör för
övrigt innehålla parametrar som mäter funktioner och egenskaper inom samma
problemområde, t ex laddningsrutiner och administration, för att ge ett
användbart mätvärde.
Hur slår nu denna jämförelse mellan olika ETL-verktyg? Kan man efter att ha
beräknat fram de olika gruppbetygen välja det verktyg som har högst betyg?
Svaret på den frågan är nej. Anledningen till detta beskrivs enklast med ett
exempel.
Antag att vi har gjort en jämförelse mellan tre ETL-verktyg (A, B och C) och
använt oss av metoden ovan. Vi nöjer oss med att ha en parametergrupp med
tre parametrar (a, b och c) för enkelhetens skull. Så här kan resultat tänkas se ut
efter studien av verktygen är avklarad:
Betyg för ETL-verktyg
Parameter vikt A
B
C
a
b
c
Grupp
resultat
3
2
1
1
2
1
0
3
3
2
1
0
0,44
0,50
0,44
Tabell 2: Exempel på parametergrupp
Använder vi formeln för att beräkna gruppresultatet ser vi att B får 0,50, som
är bästa resultat och A och C ligger på delad andra plats på vardera 0,44. Skulle
vi nu bara titta på dessa siffror och därmed välja verktyg B, så väljer vi ett
20
ETL-verktyg för datavaruhus
verktyg som inte kan möta de aktuella behov som finns. Parameter a har
nämligen vikt tre, vilket är ett direkt behov för lösningen, men verktyg B har
fått betyg noll för den parametern. Verktyg B uppfyller alltså inte behoven som
parameter a beskriver och vi kan därför inte använda verktyg B för att lösa de
laddningsbehov som finns. Verktyg som får betyg noll på en parameter med
vikt tre måste därför tas bort eftersom de inte kan uppfylla de direkta behov
som finns.
Verktyg A och C som fått samma resultat, men de skiljer sig åt. Det man kan
säga om verktyg A är att det är en bred produkt med stöd för troliga behov
eftersom verktyget har fått bra betyg på parametrar för allmänna behov.
Verktyget A uppfyller dock inte de direkta behoven i sig självt, men det gör
verktyg C som fått betyg två på denna parameter. Verktyg C är dock sämre på
allmänna behov som kan tänkas uppkomma senare. Vilken produkt man väljer
av dessa beror på om man tänker långsiktigt och då väljer verktyg A, eller
kortsiktigt och då väljer verktyg C.
2.4.7 Risker med jämförelsemetoden
Vilka risker och svagheter finns det nu med denna jämförelsemetod? De risker
jag har identifierat är:
1. Val av felaktiga parametrar. En risk är att man väljer fel mätparametrar och
helt enkelt undersöker fel egenskaper i verktygen. Detta medför att valet av
verktyget görs på felaktiga grunder.
2. Felaktig viktning av parametrar. Ytterligare en risk med jämförelsemetoden är
att vikten av parametrar uppskattas felaktig vilket leder till att parametern
påverkar resultatet för mycket eller för lite. Saknar man kunskap om den
aktuella situationen där datavaruhuset ska implementeras eller kunskap om
hur källdata ser ut kan parametrarnas vikt bli fel.
3. Felaktig bedömning av parametrar. Eftersom verktygen jämförs teoretiskt finns
det risk att de källor som används för att erhålla informationen ej är korrekt
och därför ger en felaktig bedömning. Det bästa sättet att jämföra två saker
är förstås att ha tillgång till och använda det man jämför, men det var inte
möjligt i detta fall. Det som stämmer i teorin kanske inte fungerar i
praktiken.
Hur undviker man dessa risker när man utför jämförelsen? Det hela handlar
om att vara väl insatt i problemet och ämnesområdet. Är man inte det finns
risk att man väljer fel parametrar och inte inser vikten av de parametrar man
väljer. För att minska risken för detta så inledde jag examensarbetet med att
studera datavaruhus, ETL och de behov som fanns lokalt på ABB. Risken för
felbedömning av verktygen vid en teoretisk studie kan vara svår att undvika,
men jag har försökt undersöka verktygen så korrekt som möjligt utifrån
tillverkarnas dokumentation. Detta är en risk man får leva med vid en teoretisk
jämförelse.
Denna jämförelsemetod är generell och valet av parametrar gör den specifik
för produkter och behov. Det är alltså tänkbart att metoden kan användas
inom andra områden än jämförelser av ETL-verktyg.
21
ETL-verktyg för datavaruhus
3 Analys av ETL-verktyg
I detta kapitel går vi ner på den faktiska nivån i jämförelsen. Jag börjar med att
titta på vilka förutsättningar som finns på ABB, den miljö där ETL-verktyget
ska arbeta. Efter denna nulägesanalys, så är det dags att presentera vilka
parametrar som skall användas för jämförelsen och varför de valdes. När valen
av parametrarna är gjorda så beskriver jag hur ETL-verktygen svara på dessa
parametrar. Avslutningsvis sammanfattas verktygens resultat och en slutsats
om vilket verktyg som ska väljas kan dras.
3.1 Nulägesanalys för ABB
Sedan 1994 har ABB använts sig av ERP-systemet BaaN IV. BaaN används i
många delar av verksamheten, bl a order, projektstyrning och finans. I nuläget
är det tänkt att datavaruhuset ska hämta all sin data från BaaN. BaaN lagrar sin
data i en underliggande Oracle-databas.
Det finns även andra system som i en framtid kan tänkas leverera data till
datavaruhuset. ABB har tre egenutvecklade system, MSS, COSY, och OSM,
som alla tre innehåller data som kan vara intressant för analys. MSS är ett
offertsystem innehållande försäljningsinformation. Datan i detta system ligger
lagrat i en Oracle-databas. COSY är ett kostnadskalkyleringsprogram som
innehåller kalkyler. Här används en kombination av Microsoft Access och
Oracle för att lagra data. Det tredje systemet, OSM, är ett
huvudplaneringssystem vilket använder sig av Microsoft SQL Server 2000 för
att lagra data. Utöver dessa system finns även data lagrat i Microsoft Excelfiler.
Enligt tidigare beslut ska Microsoft SQL Server 2000 användas för att utveckla
datavaruhuset. Microsoft SQL Server 2000 är i grunden en databashanterare
som även innehåller en analysserver med OLAP-möjligheter.
3.2 Val av parametrar
Vilka funktioner och egenskaper är intressant att titta på när man ska jämföra
ETL-verktyg? Meyer [Meyer 2001] och Kimball [Kimball 1998] radar upp en
mängd saker man bör undersöka vid ett val av ETL-verktyg och de tar i stort
sätt upp samma saker.
Meyer fokuserar på fem huvudkriterier som han anser är viktiga:
•
•
•
•
•
Komplexitet. Innefattar datakällors format och struktur och hur detta
påverkar ETL.
Samtidiga processer. Innefattar hur många samtidiga aktiviteter verktyget
klarar av, såsom laddningar och utveckling av laddningar.
Kontinuitet. Innefattar frågor om hur pass bra verktyget skalar och klarar
oväntade händelser.
Kostnad. De olika kostnader som uppkommer med verktyget.
Överensstämmelse. Undersöker hur pass bra verktyget passar in i
företagets nuvarande miljö.
22
ETL-verktyg för datavaruhus
Kimball koncentrerar sig mer på transformationsrutiner för tvättning och
omstrukturering av data.
De kriterier jag valde kommer främst från dessa två källor, men även från
intervjuer med min handledare (Tommy Jakobsen). Parametrar jag anser vara
lämpliga i denna jämförelse har jag placerat in i fem huvudgrupper,
parametergrupper. De fem parametergrupperna är följande:
•
•
•
•
•
Anslutningsmöjligheter
Laddningsfunktionalitet
Användarvänlighet
Administration och drift
Kostnader
Totalt ingår 28 parametrar i dessa fem grupper. En sjätte grupp, referenser,
som skulle belysa andras användande av produkterna var med från början.
Tyvärr lyckades jag inte få tillgång till användbar information för denna grupp
och därför uteblev den.
Nedan beskrivs varje parameter och det behov som ligger till grund för
parametern. Detta fungerar därför också som en kravspecifikation för ETLverktyget. Parameterns betydelse i ABBs datavaruhus framkommer av
parameterns vikt och denna vikt har bestämts vid samtal med min handledare
(Tommy Jakobsen). Varje parameter har ett nummer för att lättare referera till
parametern. Den första siffran i numret säger vilken parametergrupp
parametern tillhör och den andra siffran särskiljer parametrar inom samma
grupp.
3.2.1 Anslutningsmöjligheter (grupp 1)
Denna grupp av parametrar har tagits med för att undersöka vilket stöd
verktyget har för anslutningar mot olika datakällor och datavaruhus. Ett stöd
för anslutningar mot de aktuella enheterna är naturligtvis ett måste, men
generellt sätt bör verktyget ha många anslutningsmöjligheter. Anledningen till
detta är att täcka framtida behov av extraktion av data från system som inte
används idag. Dessutom är det positivt om anslutningsmöjligheterna går att
utöka i verktyget efterhand. Nya system och format på data utvecklas hela
tiden, klarar då verktyget att möta dessa behov? De parametrar som ingår i
denna grupp är följande:
Aktuella enheter (1.1)
Beskrivning: Denna parameter mäter verktygets sätt att bemöta de direkta behov
av anslutningar som måste finnas för att ladda datavaruhuset. De enheter som i
nuläget är aktuella är textfiler (ASCII) och MS SQL Server 2000. Direkta
anslutningar mot BaaN har ej tagits med eftersom extraktskript skall användas
för att erhålla data ur BaaN och dessa skript genererar textfiler. Dessa textfiler
(extraktfiler) laddas sedan in i datavaruhuset och kan lätt laddas om vid fel.
Vikt: Tre.
Framtida enheter (1.2)
Beskrivning: Här belyses verktygets möjlighet att ansluta sig till andra enheter än
de som är av direkt behov. Ju fler enheter som kan anslutas desto bättre, men
23
ETL-verktyg för datavaruhus
fokus ligger på de system som i dagsläget finns på ABB. Det handlar om
Oracle, MS Access och MS Excel
Vikt: Två.
Utveckling (1.3)
Beskrivning: Egen utveckling av fler anslutningsmöjligheter ökar flexibiliteten
hos verktyget. Finns möjlighet till detta måste man inte förlita sig på att
tillverkaren utvecklar och levererar de gränssnitt man är i behov av, utan ges
möjligheten att själv utveckla gränssnitt mot data och applikationer. Denna
parameter mäter de möjligheter som finns i verktyget att utveckla egna
gränssnitt av denna typ.
Vikt: Ett
3.2.2 Laddningsfunktionalitet (grupp 2)
Verktygs funktionalitet för dataladdning är viktig eftersom den styr utformning
av ett datavaruhus. Hög funktionalitet och flexibilitet i laddningsverktyget gör
att laddning av data kan göras oavsett hur designen av datavaruhuset ser ut.
Inbyggda funktioner som underlättar utvecklingen av ETL-verktyget är bra,
men vikten av dessa inbyggda funktioner måste uppskattas. Ett dyrt verktyg
med många inbyggda funktioner kan vara ett onödigt dyrt verktyg om dessa
funktioner varken behövs eller används. Det som eftersträvas i denna grupp är
att verktyget har lättanvända inbyggda funktioner som kan användas med en
minimal programmeringsinsats. Nedan följer de nio parametrar som placerats i
denna grupp.
Sammanslagning av data (2.1)
Beskrivning: För att data ska ge en meningsfull analys måste datan vara
samstämmig, datan måste ligga på samma abstraktionsnivå, och inte vara
summerad på olika nivåer. Det kan hända att data från två olika system ligger
summerad på olika nivåer och för att möjliggöra en meningsfull analys måste
datan summeras till samma nivå. I en sådan situation krävs att ETL-verktyget
klarar av sammanslagning och summering av data. De funktioner som utför
denna typ av databehandling brukar kallas för aggregat. Aggregat kan också
användas för att höja prestanda på svarstiderna i datavaruhuset. Stora
datamängder med hög detaljrikedom kan summeras för att minska
datamängden och på så vis minska svarstiden på frågor. Det som eftersöks
med denna parameter är att verktyget har en tydlig och enkel hantering av
dessa aggregat.
Vikt: Två.
Surrogatnycklar (2.2)
Beskrivning: Lagras datan enligt den dimensionella modellen i datavaruhuset är
det också troligt att surrogatnycklar behövs. Hur bra ETL-verktyget hanterar
dessa nycklar är därför viktigt. När en ny datapost laddas så tilldelas den en ny
surrogatnyckel och när en datapost ska uppdateras måste kopplingen mellan
källans primärnyckel och datavaruhusets surrogatnyckel kontrolleras. Hantering
omfattas alltså av skapande och kontroller av surrogatnycklar. Kontroll av
nycklar kan göras med hjälp av kontroller mot datakällor (se punkt 2.3 nedan).
Vikt: Tre.
Kontroll mot datakällor (2.3)
Beskrivning: Denna parameter mäter verktygets funktionalitet att utföra kontroll
av data (engelska: look-ups) mot andra lagringsplatser. Det kan handla om
24
ETL-verktyg för datavaruhus
villkorssatser som styrs av om data finns i en databas eller inte, eller metoder
för att erhålla värden från en extern datakälla. Behov av detta finns i hantering
av surrogatnycklar för att kontrollera vilka surrogatnycklar som är använda och
dessutom måste kontroll av inkommande data göras för att se om datan redan
finns lagrad i datavaruhuset.
Vikt: Tre.
Stränghantering (2.4)
Beskrivning: Hantering av textsträngar kan behövas för att få samstämmighet i
textdata. Det kan vara så att formatet på samma textdata skiljer sig i systemet
där data lagras och då måste verktyget kunna formatera om texten så att den
överensstämmer och går att sammanfoga. Exempel på stränghantering är
sammanlänkning av textsträngar och funktioner att plock ut delar av en
textsträng. Exakt vilken typ av stränghantering som behövs är svårt att säga i
förväg, men en grov uppskattning av vad verktyget klarar av kan ändå vägleda
vid betygsättningen.
Vikt: Två
Tilldelning av grundvärden (2.5)
Beskrivning: Om den extraherade datan som läses av verktyget inte är fullständig
så kan det vara viktigt att fylla dessa luckor med lämpliga beskrivande värden.
Anledningen till detta är att undvika att data går förlorad i analyser. Saknas
referens till en dimensionstabell för en tupel i faktatabellen förloras detta fakta
om datan analyseras med den dimension. Grundvärden kan också användas för
att påvisa att luckor finns i datakällorna. ETL-verktyget bör kunna hantera
tilldelning av grundvärden till felaktig eller saknad data.
Vikt: Två
Verifiering och dirigering av indata (2.6)
Beskrivning: Att ha möjlighet att kontrollera rimligheten av indata innan
laddningen är viktigt för att hålla god datakvalitet i datavaruhuset. Felaktig data
beroende på den mänskliga faktorn förekommer i källdatan och dessa fel bör
upptäckas av ETL-verktyget. Det kan t ex handla om orimliga leveransdatum
eller orimliga valutakurser. Denna parameter avser att mäta verktygets
funktionalitet för att bygga upp kontrollverk enligt affärsregler och efter dessa
dirigera data. Speciella funktioner som förenklar denna verifiering och
dirigering uppskattas.
Vikt: Två.
Konvertering av datatyper (2.7)
Beskrivning: För att analyser av data ska vara möjliga krävs att data är lagrat med
samma datatyp. Om data tankas från flera olika system kan data vara lagrat i
olika datatyper och i dessa fall är det viktigt att möjlighet att konvertera data
finns i ETL-verktyget för att kunna analysera informationen.
Vikt: Två.
Pre- och postanrop (2.8)
Beskrivning: Denna funktionalitet syftar till att ge möjlighet att före och efter
vissa steg i laddning och omvandling av data ge möjlighet till externa
funktionsanrop. Anledningen till att denna parameter tas med är att denna
funktion ökar flexibiliteten hos verktyget. Exempel på när detta kan vara
användbart är om man behöver bygga upp en egen loggningsprocedur för
laddningen. Då kan man med hjälp av denna funktion skriva ut händelser som
25
ETL-verktyg för datavaruhus
inträffar vid olika tillfällen under laddning, före laddning börjar, för varje tupel
och efter avslutad laddning.
Vikt: Ett
Skötsel av långsamt föränderliga dimensioner (2.9)
Beskrivning: Om dimensionstabellerna i datavaruhuset uppdateras måste ETLverktyget klara av att hantera denna uppdatering. Dimensionstabeller som
förändras sällan är en vanlig typ av dimensionstabell och de brukar kallas för
långsamt föränderliga dimensioner. Hur uppdatering sker beror på om man är
intresserad av att behålla tidigare värden eller om endast det nya värdet är
intressant. Långsamt föränderliga dimensioner brukar indelas efter detta i tre
olika kategorier, typer:
1. Den data som förändrats skrivs över och den gamla datan går förlorad.
2. Den nya datan lagras i en ny tupel med en ny surrogatnyckel. Den gamla
datan förblir orörd och historiken sparas.
3. Skapa ett ”gammal” fält i tabellen som innehåller det senaste värdet på
datan innan förändringen. Det gör att det föregående värdet lagras tills
nästa förändring.
Vad som finns inbyggt i verktyget för att underlätta skötsel för dessa
dimensioner är intressant att undersöka.
Vikt: Tre.
3.2.3 Användarvänlighet (grupp 3)
Användarvänligheten är naturligtvis viktig för de som kommer att utveckla
ETL-processer och sköta ETL-verktyget. Inbyggda grafiska verktyg för
utveckling och skötsel av ETL-processen underlättar användandet och även
god tillgång på bra dokumentation påverkar användarvänligheten positivt.
Nedan följer en beskrivning av de parametrar som tagits med för att bedöma
verktygets användarvänlighet.
Inbyggda grafiska utvecklingsverktyg (3.1)
Beskrivning: Denna parameter syftar till att bedöma ETL-verktygets inbyggda
grafiska utvecklingsverktyg. De grafiska verktygen bör på ett visuellt sätt
åskådliggör dataflödet och transformationen av data och ge användaren
möjlighet att enkelt utveckla, förändra och påverka ETL-processer. Genom de
grafiska verktygen ska användaren komma åt den funktionalitet som ETLverktyget erbjuder och användaren behöver.
Vikt: Tre.
”Steg för steg”–verktyg (3.2)
Beskrivning: I många typer av datorprogram finns ”steg för steg”-verktyg
(engelska: wizard), och sådana förekommer även i ETL-verktyg. Dessa verktyg
ska tjäna till att underlätta för användaren att skapa något ofta återkommande
genom att höja abstraktionsnivån för utvecklingen. Användaren lotsas genom
utvecklingsprocessen steg för steg och kan skapa en laddningsprocess utan att
behöva bekymra sig om vissa detaljer. Med hjälp av detta kan utvecklingsarbete
komma igång snabbt.
Vikt: Två.
26
ETL-verktyg för datavaruhus
Mallar (3.3)
Beskrivning: Mallar för olika laddningssituationer kan också vara till hjälp för att
snabbt komma igång med utvecklingsarbete av ETL-processer. Dessa mallar
kan vara vanligt förekommande laddningsscenarion och personen som
utvecklar laddningsrutiner kan utifrån dessa mallar skapa sin ETL-process.
Vikt: Två.
Dokumentation (3.4)
Beskrivning: Den hjälp användare kan få av dokumentation om ETL-verktyget
bidrar också till hur pass användarvänligt ett ETL-verktyg är. I denna
parameter ingår bedömning av inbyggd hjälp, böcker som behandlar ETLverktyget, och åtkomst av hjälp från andra källor, framför allt Internet.
Vikt: Tre.
Beskrivning av laddningen (3.5)
Beskrivning: Liksom kod bör vara väl kommenterad så bör även ETL-processer
vara väl kommenterade och lätta att logiskt följa. ETL-verktyget bör alltså
erbjuda användaren sätt på vilken den kan följa dataflöden och
dataomvandlingen i ETL-processen.
Vikt: Två.
3.2.4 Administration och drift (grupp 4)
I denna grupp ingår nio parametrar som ska fånga de behov och krav som
finns på ETL-verktyget under dess livstid. Eftersom verktyget förhoppningsvis
används flera år så är utfallet av gruppen mycket viktigt.
Versionshantering (4.1)
Beskrivning: Denna parameter har tagits med för att undersöka verktygets stöd
för versionshantering av ETL-processer. Versionshantering bör finnas för
ETL-processerna för att ge möjlighet att följa utveckling av dem och även ge
möjlighet att gå tillbaka till en tidigare version om en ändring blev felaktig.
Vikt: Två.
Schemaläggning (4.2)
Beskrivning: Ett datavaruhus behöver med tiden uppdateras för att innehålla
aktuell information. Denna uppdatering sker enklast med automatik för att
minska arbetsinsatsen. Därför bör ETL-verktygets arbete gå att schemalägga så
att uppdateringen sker automatiskt, gärna på en tid då systemåtkomsten är låg.
Anledningen till att köra laddningen när systemen används lite är för att inte
försämra prestandan på exempelvis viktiga transaktionssystem.
Vikt: Tre.
Felsökning (4.3)
Beskrivning: Möjligheten att felsöka (engelska: debugging) dataflödet i
laddningen ökar möjligheten att hitta eventuella fel. Detta förenklar underhållet
av ETL-processer, men även utveckling av nya processer.
Vikt: Två
Felhantering och loggning (4.4)
Beskrivning: När fel uppkommer i ETL-processen är det viktigt att det finns
möjlighet till hantering av dessa. Felhantering innefattar upptäckt av fel och val
av åtgärder. Fel bör också komma tillkännedom för ansvarig och verktyget bör
även ha bra stöd för denna kommunikation. Det kan handla om att skicka
27
ETL-verktyg för datavaruhus
meddelande till administratören eller att logga de fel som inträffar. Utifrån
denna kommunikation ska det vara möjligt att spåra orsaken till felets
uppkomst och exakt vilken data som förorsakade felet.
Vikt: Tre.
Hårdvarukrav (4.5)
Beskrivning: De krav ETL-verktyget har på hårdvaran ingår i denna parameter.
Finns den hårdvara som behövs för att köra ETL-verktyget eller måste ny
hårdvara införskaffas? Klarar hårdvaran av laddningen inom de tidsramar som
finns? I nuläget ska laddningen ske en gång i månaden och utföras över en
natt.
Vikt: Tre.
Programmering (4.6)
Beskrvning: Även fast ETL-verktyget helst ska klara sig utan externa program är
det viktigt att undersöka om och vilka programmeringsspråk som verktyget
stödjer för utveckling av programtillägg. ETL-verktyg som inte stödjer något
programmeringsspråk är låsta vi de inbyggda funktioner som finns i verktyget,
medan ett verktyg som stödjer någon form av extern programmering däremot
ger flexibilitet och möjlighet till utveckling av egna procedurer. De språk som i
första hand eftersöks är Visual Basic och C++ eftersom kompetens inom
dessa språk finns på PTTFO.
Vikt: Två
Prestanda (4.7)
Beskrivning: De prestandahöjande aktiviteter som finns i ETL-verktyget är av
intresse för att minska laddningstiderna. Detta är särskilt viktigt när
laddningsfönstret, den tid då laddningen är möjlig, är litet och laddningen sker
ofta. Parallellisering av laddningsprocesserna (ETL-processerna) är en typ av
prestanda höjande aktivitet. Det är idag svårt att säga hur stort
laddningsfönstret kommer att vara, men det är viktigt att undersöka att det i
verktyget finns möjlighet att påverkar laddningsprestanda.
Vikt: Två
Transaktionshantering (4.8)
Beskrivning: När data laddas till en databas med transaktionshantering är det
viktigt att undersöka hur ETL-verktyget sköter detta. Det kan t ex vara idé att
dela upp datan i delar om datamängden är stor, för att minska mängden data
som återställs (engelska: rollback) om något fel inträffar.
Vikt: Två.
Support (4.9)
Beskrivning: För framtida problem som kan tänkas uppkomma med ETLverktyget är det viktigt att tillverkaren har god support för sitt verktyg. Även
extern support från andra än tillverkaren är viktig. Denna parameter mäter
åtkomsten av support.
Vikt: Tre.
3.2.5 Kostnader (grupp 5)
Kostnaderna för verktyget är förstås av intresse för den som ska betala för det.
Två typer av kostnader ingår i denna jämförelse. Denna parametergrupp skiljer
sig från de övriga genom att den saknar viktning och betygssättning. Om
28
ETL-verktyg för datavaruhus
verktyget är prisvärt kan avgöras genom att titta på priset och jämföra det med
verktygets betyg i tidigare parametergrupper.
Licenskostnader (5.1)
Beskrivning: Med denna parameter avses den fasta licenskostnad som
uppkommer vid användning av ETL-verktyget. Kostnaden är beräknad
månadsvis.
Driftskostnader (5.2)
Beskrivning: Dessa kostnader är de som uppkommer för administreringen av
verktyget. Det handlar om kostnader uppkommer för att kontrollera loggar
och se till att laddningar har lyckats etc. Denna kostnad är också beräknad
månadsvis.
Med hjälp av dessa parametrar bedömdes ETL-verktygen PowerMart och
DTS. I nästa kapitel beskrivs hur PowerMart uppfyller de behov som
parametrarna beskriver och i efterföljande kapitel beskrivs DTS.
3.3 PowerMart
PowerMart 4.6.1 är en produkt som enligt den amerikanska tillverkaren
Informatica ska innefatta alla delar i ett datavaruhus, från laddning till analys.
Informatica är ett företag som inriktar sig på analysprodukter för beslutsstöd.
1993 grundades Informatica grundades och företaget har idag knappt 900
anställda [Informatica 2001].
ABB Group Services Center AB, Business Systems (BUS) äger en licens på
PowerMart 4.6.1 som kan delas på fem användare. Skulle valet av ETL-verktyg
efter jämförelsen falla på PowerMart så skulle BUS administrera och
vidareutveckla ETL-processer för detta projekt.
Informationen om PowerMart är hämtad från medföljande dokumentation till
produkten [Informatica Guide 2001].
3.3.1 Överblick
Innan jag går in på hur PowerMart uppfyller de behov som finns så ges här en
kort överblick av hur PowerMart är uppbyggt.
PowerMart består av tre enheter, Informatica Server, Informatica Repository och
Informatica Client.
•
•
•
Informatica Server extraherar, transformerar och laddar data. Denna enhet
är motorn i PowerMart som utför själva arbetet i ETL-processen.
Informatica Repository är en relationsdatabas som innehåller information,
sk metadata, om datakällors och datavaruhus struktur som behövs av ETLprocessen. Repository innehåller även användarnamn och lösenord för
åtkomst av data.
Informatica Client är applikationen som utvecklaren använder för att
definiera och utveckla ETL-processerna. Informatica Client består av tre
delprogram, Repository Manager, Designer och Server Manager och de beskrivs
nedan.
29
ETL-verktyg för datavaruhus
Med programmet Repository Manager kan användare sköta metadata,
informationen om datakällors och datavaruhus datastruktur. Härifrån kan en
databasen skapas för att lagra denna information. När detta är gjort kan en
lagringsplats innehållande information för en datakälla eller datavaruhus skapas
i databasen. Med Repository Manager kan man skapa, kopiera och radera
lagringsplatser. Det finns även möjlighet att påverka prestanda på databasen
för Repository i detta program.
Designer är det program som används för att utveckla ETL-processer, som i
PowerMart definieras som mappings. I detta program kan användaren definiera
källor och mål för datan och skapa transformeringen av datan däremellan. För
att skapa transformeringar av data används Transformation Developer som har ett
flertal verktyg för specifik funktionalitet. Exempel på funktionalitet i dessa
verktyg är sammanslagning av data, filtering av data, och sammanslagning av
tabeller. I verktygen specificeras hur omvandlingen av data ska ske och i vissa
av verktygen har man tillgång till ett transformationsspråk (engelska:
Transformation language) för att definiera omvandlingslogik. Språket
innehåller över 60 SQL-likanade funktioner, operatorer, konstanter och
variabler. I Designer kan man visuellt se hur arbets- och dataflödet löper.
Källor, mål och transformationer representeras av ikoner och flödet
representeras med pilar mellan dessa ikoner.
I Server Manager skapas sk sessioner för ETL-processerna (mapping).
Sessionen styr när ETL-processen ska köras. Här finns även möjlighet att
skapa loggfiler och felsöka sessioner. Programmet ger även möjlighet att
stoppa en pågående ETL-process.
3.3.2 Parametrar
Nedan följer en beskrivning av hur jag uppfattat och bedömt PowerMarts sätt
att bemöta de parametrar som ingick i den teoretiska jämförelsen. En
summering av resultat återfinns i kapitlet Sammanfattning av jämförelsen.
3.3.2.1 Anslutningsmöjligheter
För att läsa data i PowerMart måste dataformatet för datakällan först definieras
med hjälp av metadata i Repository. Därefter kan ETL-processer skapas som
läser och transformerar datan. PowerMart använder sig av ODBC som i sin tur
använder datakällans egna anslutningsrutiner för att ansluta sig till datakällan
och de källor som PowerMart kan läsa och skriva till är:
•
•
•
Relationsdatabaser: Oracle, Sybase, Informix, IMB DB2, MS SQL Server
och Teradata.
Filer: textfiler, COBOL(endast källa), och XML
Övrigt: MS Excel (endast källa) och MS Access.
Från denna lista ser vi att PowerMart har fullt stöd för de aktuella och framtida
behoven som finns i denna parametergrupp och får därför betyg tre för dessa
parametrar. Dock har jag inte hittat något som tyder på att egna gränssnitt kan
utvecklas.
30
ETL-verktyg för datavaruhus
3.3.2.2 Laddningsfunktionalitet
Sammanslagning av data (2.1)
I PowerMarts Designer finns ett speciellt verktyg för att göra
sammanslagningar av data och det kallas för Aggregator Transformation. Detta
verktyg innehåller flera funktioner och villkorslogik kan även byggas upp. I
verktyget kan användaren skriva kod för sammanslagningen i
transformationsspråket, och några exempel på användbara funktioner är
medelvärde (AVG), räknare (COUNT), sista värde (LAST) och högsta värde
(MAX). Hanteringen av dessa aggregat är tydlig och enkel vilket ger den betyg
tre.
Surrogatnycklar (2.2)
Stöd för att skapa surrogatnycklar finns även i PowerMart Designer. En
speciell sekvensgenerator kan användas för att skapa surrogatnycklar för
dimensionstabeller i datavaruhuset. Denna generator genererar heltal från ett
utgångsvärde som kan anges och genererar sedan heltal med ett angivet
intervall. Generatorn lagrar senast använda heltal i Repository och kan därifrån
läsa vilket nästa heltal är som ska genereras vid nästa laddning. Stödet för
generering av surrogatnycklar bedöms som bra i PowerMart och ges därför
betyg tre.
Kontroll mot datakällor (2.3)
Ett verktyg för att kontrollera värden mot datakällor finns även i Designern.
Detta verktyg kallas för Lookup Transformation och kan användas för hämtning
av relaterade värden och kontroll av existerande data. PowerMarts hantering av
kontroll mot data källor uppskattas som god och ges betyg tre.
Stränghantering (2.4)
Stränghanteringen i PowerMart sköts av verktyget Expression Transformation som
finns tillgänglig i Designern. De transformationsmöjligheter som finns i detta
verktyg är de som finns tillgängliga i transformationsspråket, exempelvis
sammanlänkning av textsträngar, konvertering till heltal och växling mellan
versaler och gemener. Stränghanteringen uppfyller de behov som troligen finns
idag och får betyg tre.
Tilldelning av grundvärden (2.5)
Även tilldelning av grundvärden görs i PowerMart med Expression
Transformation. Detta verktyg är ett mångsidigt verktyg för att manipulera data
på radnivå och tilldelning av grundvärden kan göras med
transformationsspråket. Betyget blir tre.
Verifiering och dirigering av indata (2.6)
Verifiering och urgallring kan göras på olika sätt i PowerMart. För att
kontrollera indata mot en annan datakälla kan Lookup Transformation användas.
För att gallra ur felaktig data kan ett annat verktyg, Filter Transformation,
användas. I detta verktyg definieras kriterier för vilka värden som ska
godkännas och släppas igenom. Värden som inte uppfyller kriteriet släpps inte
igenom och laddas därför ej in i datavaruhuset. Enkla kriterierna skapas i
31
ETL-verktyg för datavaruhus
verktyg genom att skriva villkorssatser för varje attribut och mer avancerade
kriterier kan skapas med hjälp av transformationsspråket. Som ett alternativ till
filtreringen kan verktyget Router Transformation användas. Detta verktyg
fungerar som Filter Transformation, men data kan istället för att slängas dirigeras
om i dataflödet. Detta ger möjlighet att hantera datan som ej uppfyller vissa
kriterier. PowerMart bedöms ha goda möjligheterna till verifiering och
dirigering av data p g a dessa verktyg och ges betyg tre.
Konvertering av datatyper (2.7)
De explicita datatypskonverteringar som kan göras i PowerMart är de som
ingår i transformationsspråket. För att konvertera datatyper används lämpligast
verktyget Expression Transformation och de konverteringar som är möjliga är bl a
textsträng till datum (TO_DATE), datavärde till heltal (TO_INTEGER) och
datavärde till flyttal (TO_FLOAT). Konvertering av datatyper i PowerMart ges
betyg tre, eftersom stöd finns för de vanligaste datatyperna.
Pre- och postanrop (2.8)
Att göra externa anrop under ETL-processen är möjligt i PowerMart. För varje
session kan externa anrop göras före och efter sessionen. Under sessionen kan
externa anrop göras i mappning med hjälp av verktyget Stored Procedure
Transformation eller External Procedure Transformation. Verktyget Stored Procedure
Transformation anropar som namnet antyder en SQL-procedur (engelska:
stored procedure) i en databas och verktyg External Procedure Transformation
anropar ett programtillägg. PowerMart stödjer COM-objekt (Component
Object Model) och Informaticas egna gränssnitt Informatica External
Procedures för anrop av programtillägg. Anrop mellan varje datarad går ej att
göra och betyg PowerMart erhåller för denna funktionalitet blir därför två.
Skötsel av långsamt föränderliga dimensioner (2.9)
Genom att bygga upp en kombination av verktygen Filter-, Lookup-, Expression-,
och Update Transformation kan långsamt föränderliga dimensioner hanteras på
ett bra sätt. Alla tre typer av dessa dimensioner kan hanteras och ett ”steg för
steg”-verktyg finns även för att snabbt komma igång. PowerMart tilldelas betyg
tre för denna funktionalitet.
3.3.2.3 Användarvänlighet
Inbyggda grafiska utvecklingsverktyg (3.1)
Designern som ingår i Informatica Client är PowerMarts svar på ett grafiskt
utvecklingsverktyg. I Designern har användare tillgång till flera verktyg som
utför specifika uppgifter. Flera av dessa har nämnts under parametergruppen
laddningsfunktionalitet. Verktygen representeras som ikoner på en arbetsyta
och arbets- och dataflöde representeras med hjälp av pilar mellan
verktygsikonerna. PowerMarts grafiska utvecklingsverktyg är mycket tydligt
och får betyg tre.
”Steg för steg”-verktyg (3.2)
I PowerMart har användaren tillgång till två typer av ”steg för steg”-verktyg.
Båda verktygen är avsedda för att generera ETL-processer för underhåll av
tabeller i en stjärnmodell, var av det första är ett ”komma igång”-verktyg och
det andra är ett verktyg för att skapa laddningar av långsamt föränderliga
dimensioner. ”Komma igång”-verktyget är avsett för statiska eller sakta
växande dimensions- och faktatabeller. Verktyget för att skapa långsamt
32
ETL-verktyg för datavaruhus
föränderliga dimensioner stödjer alla tre typer av dessa dimensioner. Verktygen
ger PowerMart betyg tre för denna parameter.
Mallar (3.3)
Mallar är något som saknas i PowerMart och gör att betyget blir noll.
Dokumentation (3.4)
Den inbyggda hjälpen i PowerMart är i form av kompilerade HTML-sidor.
Hjälpen är tydlig och användaren kan klicka sig fram och söka efter det
han/hon letar efter. Hjälp finns även att tillgå på Informaticas hemsida, men
det kräver registrering. Information om PowerMart från andra håll är däremot
begränsad. Jag har inte hittat någon dokumentation på Internet eller i tryckt
form. Detta drar ner betyget till en tvåa.
Beskrivning av laddningen (3.5)
Den hjälp man har till att logiskt följa laddningen är den visuella bild Designern
ger av flödet, men möjlighet till kommentarer saknas. Denna är dock bra
eftersom den både visar arbetsflödet och dataflödet. Betyget blir två.
3.3.2.4 Administration och drift
Versionshantering (4.1)
I Designern lagras ETL-processerna i kataloger. I katalogerna finns förutom
transformeringarna även källdefinitioner och datavaruhusdefinitioner. För varje
ny version man skapar av sin laddning så skapas en ny katalog. I Designern kan
olika versioner av samma laddning förekomma, men bara en version är aktiv.
Den version som är aktiv är den som exekveras när laddningen körs av
schemaläggaren (se nedan). Versions hanteringen i PowerMart uppfattas som
tydlig och ges betyg tre.
Schemaläggning (4.2)
När ETL-processerna ska köras går att schemalägga i PowerMarts Server
Manager. För varje ETL-process (mapping) går det att skapa en sk session.
Varje session kan schemaläggas genom att bestämma mellan vilka tidsintervall
sessionen ska köras. Det går även att ställa in sessionen så att den startar ETLprocessen om en viss fil finns på ett visst ställe. PowerMart tar sedan bort
denna ”initieringsfil”. PowerMart uppfyller det som förväntas av verktyget och
betyget blir tre.
Felsökning (4.3)
ETL-processer kan i PowerMart köras i ett sk felsökningsläge. När man kör en
ETL-process i detta läge kan man studera måldata, tranformationsutdata och
loggfiler. Exekveringen kan styras med hjälp av stoppunkter (engelska:
breakpoints) där exekveringen stoppas och läget kan utvärderas. Indata kan
också ändras för att se hur utdata blir efter transformationen. Stegfunktion
som gör det möjligt att stega sig igenom laddingen saknas dock. Betyget för
felsökning av dataladdningar blir två.
Felhantering och loggning (4.4)
För varje session skapas en loggfil vars detaljrikedom kan ställas av
användaren. Nivån på loggningen kan ställas för varje ingående transformation
eller för hela sessionen. Om en nivå sätts för hela sessionen så gäller den för
33
ETL-verktyg för datavaruhus
alla ingående transformationer oavsett vad de har för inställningar. Den
information som lagras i loggfilen är väl strukturerat och i slutet av loggfilen
redovisas en summering av laddningen, som bl a innehåller hur många tupler
som lyckades och misslyckades vid laddningen. Det finns även möjlighet att
arkivera gamla loggfiler.
Under en session skapas även en fil för varje mål (tabeller i datavaruhuset) dit
data laddas. Denna fil innehåller de tupler som nekades laddning till
måldatabasen och filen kan efter laddning öppnas och ge information om
vilken data som ej nådde målet. I filen specificeras anledningen till felet och för
varje tupel går det att utläsa vilken operation som misslyckades (INSERT,
UPDATE, DELETE) och vilka kolumner det berodde på.
När en session har körts klart finns möjlighet att underrätta någon, exempelvis
en administratör, om detta via e-post. Det finns två olika typer av meddelande
som kan skickas, ett för lyckad session och ett för misslyckad session.
Hanteringen och loggningen av fel i PowerMart är bra och ger verktyget betyg
tre.
Hårdvarukrav (4.5)
Hårdvarukraven för PowerMart är följande:
•
•
•
Informatica Client: 170 MB, 128 MB RAM
Informatica Repository: 70 MB, 128 MB RAM
Informatica Server: 100 MB, 256 MB RAM
Client körs på Windows (95/98/NT4/2000) och Repository och Server körs
på Windows(NT4/2000) eller Unix.
PowerMart är idag installerat på en Compaq 7000 med två processorer av
modell Pentium 200 MHz och 1 GB internminne. Operativsystemet som
används är Windows NT 4.0 Server.
BUS äger, som tidigare sagt, en licens på PowerMart som får delas upp på fem
användare. Fyra av dessa är upptagna och den sista kan alltså bli aktuell för
PTTFO. Ett problem med den nuvarande hårdvaran är att de laddningar som
redan körs på PowerMart tar hela nätterna och det finns ingen plats för fler
laddningar nattetid. Dock kommer BUS att uppgradera både version av
PowerMart och datorn under hösten 2001. PowerMart kommer att
uppgraderas till version 5.1 och datorn kommer att bli en fyraprocessormaskin
med Windows 2000 som operativsystem. Osäkerheten för laddningsutrymme
nattetid gör att betyget blir två.
Programmering (4.6)
I PowerMart ges det utrymme för externa programtillägg som kan utföra
omvandlingar av data. Dessa programtillägg anropas för enklare omvandlingar
med hjälp av verktyget External Procedure Transformation och för mer avancerade
omvandlingar med verktyget Advanced External Procedure Transformation. För att
skapa programtillägg för anrop av External Procedure Transformation kan COMobjekt användas. Dessa kan skapas med hjälp av C, C++, Visual C++, Visual
Basic, Visual Java och Perl. Behöver man använda sig av de mer avancerade
Advanced External Procedure Transformation måste man ska ett programtillägg
34
ETL-verktyg för datavaruhus
enligt Informaticas egena gränssnitt. Dessa programtillägg måste skrivas i C++.
Möjligheterna till extern programmering uppskattas till goda och ges betyg tre.
Prestanda (4.7)
I PowerMart finns en mängd olika aktiviteter som kan användas för att höja
prestanda på dataladdningar.
I Server Manager kan sessioner behandlas buntvis. Sessionerna paketeras in i
buntar (engelska: batch) och dessa buntar kan sedan schemaläggas. För varje
bunt kan man välja att exekvera ingående sessioner seriellt eller parallellt.
Sessioner med små datamängder vars källor och mål är oberoende av varandra
kan med fördel köras parallellt för att minska laddningstiden. Detta ställer dock
krav på fler processorer.
Prestandan kan även höjas på andra sätt, t ex genom att sänka felkänsligheten i
transformationen, ändra storlek på buffertar och cache, och justering av
Commit-intervall (se parameter 4.8). Inställningarna för dessa måste enligt
Informatica testas från fall till fall.
De prestanda höjande åtgärder som finns i PowerMart betygssätts till tre.
Transaktionshantering (4.8)
När data har transformerats hamnar det i en skrivbuffert och kan ifrån denna
buffert laddas till målet (datavaruhuset). Det finns två olika sätt för hur
laddningen av data kan ske, med målbaserad commit (engelska: target-based
commit) eller med källbaserad commit (engelska: source-based commit).
Skillnaden mellan dessa är att målbaserad commit styrs efter storleken på
skrivbufferten och det angivna commitintervallet, medan källbaserad commit
styrs endast av commitintervallet. Commitintervallet anger hur många tupler
som ska ha behandlats innan de laddas in. Transaktionshanteringen uppskattas
som god och ges betyg tre.
Support (4.8)
Eftersom BUS äger PowerMart licensen skulle de vid ett val av PowerMart
även sköta support av verktyget. BUS säger att de har nio personer som jobbar
med PowerMart och att de har resurser för underhåll av en lösning med
PowerMart. Risken med detta är att en lösning med blir beroende av BUS.
Minskar BUS sina resurser på PowerMart så försämrar det PTTFOs situation,
vilket kan leda till att support uteblir. Detta medför att supporten får betyg två.
3.3.2.5 Kostnader
Den sista parametergruppen redovisas nedan. Som tidigare nämnts så kan
licensen på PowerMart delas på fem användare och skulle valet av ETLverktyg falla på PowerMart blir PTTFO den femte användaren av produkten.
Kostnaderna nedan baseras på att licensen delas av fem användare. Skulle
användarantalet minska finns det risk att de övriga användarnas kostnader
ökar.
Det bud PTTFO har fått för en lösning med PowerMart är följande:
• Licens kostnad: 14 000 kr/månad
• Driftkostnad: 12 000 kr/månad
Detta skulle innebära en totalkostnad på 26 000 kr i månaden.
35
ETL-verktyg för datavaruhus
3.4 DTS
DTS (Data Transformation Services) är ett ETL-verktyg som ingår i Microsoft
SQL Server 2000 (MS SQL 2000) tillverkat av Microsoft. Microsoft som
grundades 1975 är förmodligen det största och mest välkända
mjukvarutillverkaren i världen och har nära 50 000 anställda i över 60 länder
[Microsoft 2001]. I MS SQL 2000 ingår en hel mängd av produkter som härrör
lagring och presentation av data, såsom databashanterare, verktyg för
integrering mot Internet och analytiska OLAP-funktioner.
Informationen om DTS är hämtad från den inbyggda hjälp i MS SQL Server
2000 [SQL OnLine 2000].
3.4.1 Överblick
För att som användare sköta MS SQL 2000 Server används flera olika
klientapplikationer. Några av klient applikationerna är, SQL Server Enterprice
Manager som är ett administrativt program för att bl a sköta och skapa.
relationsdatabaser, Analysis Manager som används för att sköta OLAP och Query
Analyser som används för att exekvera SQL-kommandon mot
relationsdatabaser.
I DTS definieras ETL-processer med ett eller flera sk paket (engelska: DTS
Package). Ett paket består av anslutningar mot datakällor och datavaruhus, och
olika datatransformationer och uppgifter som utförs under ETL-processen. I
paketet definieras även arbetsordningen för de olika uppgifterna som utförs.
Det finns två grundläggande sätt att utveckla dessa paket.
•
Programmera DTS-paket. DTS är uppbyggt på en objektmodell som består
av COM-objekt. Dessa objekt kan används i egna program om man
använder sig av ett programmeringsspråk som stödjer COM-objekt (ex MS
Visual Basic, C++).
•
Utveckla paket i DTS Designer som ingår i Server Enterprice Manager.
Det andra alternativet är att använda MS SQL 2000 grafiska
utvecklingsverktyg, DTS Designer, för att skapa DTS-paket.
I denna utvärdering av DTS är det senare alternativet av intresse då ett mål är
att minimera programmeringsinsatsen och därför kommer jag endast att
undersöka de utvecklingsmöjligheter som finns i detta verktyg. I DTS Designer
har man tillgång till en mängd olika deluppgifter (DTS Task) som innehåller
viss funktionalitet. För att importera, exportera och transformera data finns två
deluppgifter att tillgå i DTS Designer, Data Transformation Task och Data Driven
Query. För att definiera omvandlingslogik i dessa används ActiveX Script. Två
skriptspråk medföljer installationen av MS SQL Server 2000 och det är
Microsoft Visual Basic Scripting (VBScript) och Microsoft Jscript.
3.4.2 Parametrar
Nedan följer en beskrivning av hur jag uppfattat och bedömt DTSs sätt att
bemöta de parametrar som ingick i den teoretiska jämförelsen. En summering
av resultatet återfinns i kapitlet Sammanfattning av jämförelsen
36
ETL-verktyg för datavaruhus
3.4.2.1 Anslutningsmöjligheter
Anslutningsmöjligheterna i DTS styrs av det underliggande gränssnittet OLE
DB som DTS använder sig av för att kommunicera med andra enheter. OLE
DB ingår i ett middleware, Universal Data Access (UDA), som har utvecklats
av Microsoft och Merant med flera [OLEDB 2001]. Tanken bakom UDA är
att utveckla ett standardiserat gränssnitt mot all typ av data, såsom data från
relationsdatabaser, data från andra strukturerade format och även icke
strukturerade dataformat. Det finns även möjlighet att själv utveckla OLE DB
anslutningar mot egna dataformat, men det kräver extern programmering.
De anslutningsmöjligheter som finns att tillgå i DTS är:
•
MS SQL Server 2000, Oracle, DBase, Paradox
•
MS Access och MS Excel
•
Övrigt: Textfiler, HTML, och andra OLE DB källor
De anslutningsmöjligheter som eftersöks i denna jämförelse finns alltså i DTS
och även möjlighet att utveckla egna gränssnitt för OLE DB finns. Därför får
DTS betyg tre för aktuella och troliga framtida anslutningarna. Betyget blir ett
för utveckling av nya gränssnitt då det kräver programmering.
3.4.2.2 Laddningsfunktionalitet
Sammanslagning av data (2.1)
I DTS Designer finns inget speciellt verktyg för att skapa sammanslagningar av
data. Det man får göra för att slå samman data är att använda SQL. Det går att
i verktygen Data Transformation Task och Data Driven Query använda SQL för att
plocka ut det data man vill använda sig av och med hjälp av exempelvis AVG,
SUM och GROUP BY summera datan. P g a detta får DTS betyg två för
denna parameter.
Surrogatnycklar (2.2)
DTS saknar inbyggt stöd för generering av surrogatnycklar, men detta går att
lösa med hjälp av skriptprogrammering (ActiveX Script). Det Microsoft själva
använder sig av i sina exempel är att låta datavaruhusets tabeller sköta
genereringen av surrogatnycklar. Attributet i tabellen för surrogatnyckeln är i
dessa exempel av typen identity field som automatiskt genererar efterföljande
heltal. Väljer man denna lösning slipper man programmering, men nackdelen
är att ingen återanvändning av nycklar är möjlig. Det begränsade stödet för
surrogatnycklar gör att DTS får betyg två.
Kontroll mot datakällor (2.3)
Kontroll mot datakällor kan i DTS Designer göras i deluppgifterna Data
Transformation Task och Data Driven Query. Kontrollrutinen definieras i SQL,
vilket gör att kontroll endast kan göras mot relationsdatabaser som stödjer
SQL. För att använda kontrollrutinen görs ActiveX anrop till SQLkommandot. Detta kräver alltså en del skriptprogrammering i DTS vilket gör
att betygen blir två.
37
ETL-verktyg för datavaruhus
Stränghantering (2.4)
I deluppgifterna Data Transformation Task och Data Driven Query finns tillgång
till stränghantering för att manipulera textdata. Dessa är:
•
Datetime string. Konverterar källans datumtyp till destinationens format.
•
Upper/Lower Case. Konvertering mellan stora och små bokstäver.
•
Middle of string. Plockar ut en del av en sträng, positionsstyrd.
•
Trim string. Tar bort mellanslag ur strängen.
Utöver dessa finns även möjlighet att skriva skript (ActiveX Script) som kan
utföra stränghantering, såsom funktioner som plockar ut vänseter eller höger
del av textsträngen. Detta ger goda möjligheter till stränghantering vilket gör
att DTS ges betyg tre.
Tilldelning av grundvärden (2.5)
Radvis tilldelning av grundvärden måste i DTS göras med
skriptprogrammering i Data Transformation Task eller Data Driven Query. Inget
speciellt verktyg finns för detta vilket minskar tydligheten och betyget blir två.
Verifiering och dirigering data (2.6)
I DTS verifieras indata med hjälp av kontroller mot datakällor (som tidigare
beskrivits för parameter 2.3) och skriptprogrammering. För att styra och
filtrera data är dock möjligheterna begränsade. Filtrering kan göras med
skriptprogrammering eller med SQL i Data Transformation Task och Data Driven
Query. Dirigering av data kan göras med Data Driven Query, men data kan endast
styras till fyra olika tabeller och därifrån får datan sedan behandlas vidare.
Detta göra att betyget blir två.
Konvertering av datatyper (2.7)
Den implicita konverteringen av datatyper går att styra i Data Transformation
Task och Data Driven Qurey. Antingen tillåter man all konvertering vilket
medför att det finns risk för att data går förlorad eller blir felaktig, eller så kan
man kräva att datatyperna måste vara exakt lika för att tillåta dataöverföring.
Ett tredje alternativ som finns går att definiera på eget sätt. De val som finns
för detta är, att tillåta utvidgning av datatyp (heltal från två till fyra byte), att
tillåta förminskning av datatyp (heltal från fyra byte till två byte), och att tillåta
överföring från NULL till NOT NULL kolumner.
Utöver denna implicita konvertering finns det även möjlighet till att explicit
datatypskonvering via skriptprogrammering. Betyg blir tre.
Pre- och Postanrop (2.8)
I DTS går det på ett enkelt sätt att göra pre- och postanrop med hjälp av
skriptprogrammering. I DTS Designer kan man placera in skriptkod (ActiveX
Script Task) i arbetsflödet där man vill att de ska utföras. På detta sätt slipper
man blanda in externprogrammering i form av programtillägg som måste
skrivas och kompileras utanför DTS.
38
ETL-verktyg för datavaruhus
För att ha möjlighet till dessa anrop rad för rad under laddningen kan det sk
Multi Phase Data Pump verktyget användas. Detta verktyg ger möjlighet att göra
anrop under flera faser av laddningen, bl a före laddning börjar, under laddning
(rad för rad) och efter avslutad laddning. Möjligheterna till detta är bra i DTS
och därför blir betyget tre.
Skötsel av långsamt föränderliga dimensioner (2.9)
Det inbyggda stödet för skötsel av dessa dimensioner finns i verktyget Data
Driven Query. Hanteringen av data styrs med hjälp av kontroller mot måltabellen
dit datan ska laddas och val av åtgärd styrs med hjälp av logik uppbyggd av
skriptprogrammering. Fyra olika åtgärder i form av SQL-kommandon kan
sedan exekveras exempelvis, en för ny data, en för uppdatering av data, en för
radering av data och en för övrig databehandling. Betyget blir två efter som
viss skriptprogrammering krävs.
3.4.2.3 Användarvänlighet
Inbyggda grafiska utvecklingsverktyg (3.1)
För att utveckla DTS-paket finns det, som tidigare sagt, ett grafiskt
utvecklingsverktyg (DTS Designer) att tillgå i MS SQL 2000. I detta verktyg
kan man som utvecklare definiera sin ETL-process genom att lägga till olika
deluppgifter (DTS Tasks), som utför har en speciell funktion, till en arbetsyta.
Exempel på deluppgifter är datatransformationer (Data Transformation Task,
Data Driven Query), skriptprogram (ActiveX Script Task) och skickande av epost
(Send Mail Task). Dessa deluppgifter placeras ut på arbetsytan i form av ikoner
och arbetsordningen definieras med pilar mellan ikonerna. Det finns olika
typer av pilar som definierar arbetsflödet beroende på utfallet av föregående
deluppgift, om deluppgiften lyckades eller misslyckades. DTS grafiska
utvecklingsverktyg är tydligt och lätt att förstå, men dataflödet kan ej utläsas
och DTS får därför betyg två.
”Steg för steg”-verkyg (3.2)
I MS SQL Server 2000 finns även ett ”steg för steg”-verktyg för att snabbt
skapa DTS-paket. Verktyget heter Import/Export Wizard. Detta verktyg kan
användas för att snabbt skapa en enkel ETL-process. Endast en datakällan kan
användas och transformeringen av data är mycket enkel. ”Steg för steg”verktyget är bra för enkla rutiner, men för mer avancerade omvandlingar räcker
det inte till och får därför betyg två.
Mallar (3.3)
För DTS Designer finns det mallar (DTS Package Templates) som angriper
vanlig ETL-situationer. Utifrån en mall kan man skapa sitt DTS-paket och
slipper alltså börja från början när man utvecklar ett paket. Det går även att
skapa egna mallar för senare behov. Denna funktion ger DTS betyg två för
denna parameter.
Dokumentation (3.4)
I den inbyggda hjälpen för MS SQL Server 2000 ingår dokumentation för
DTS. Denna dokumentation är består av kompilerade HTML-sidor och kan
39
ETL-verktyg för datavaruhus
även läsas från Microsofts hemsida [msdn 2001]. Jag har även hittat flera sidor
på Internet som behandlar DTS och även böcker som handlar om utveckling
av ETL-processer med DTS. Detta gör att DTS får betyg tre för
dokumentation.
Beskrivning av laddning (3.5)
I DTS finns ingen direkt möjlighet att beskriva sin laddning. På DTS
Designerns arbetsyta kan man visuellt se arbetsflödet, men ej dataflödet. I
skriptprogrammen kan koden kommenteras, men det ger ingen övergripande
bild av ETL-processen. Dessa begränsningar gör att DTS får betyget ett.
3.4.2.4 Administration och drift
Versionshantering (4.1)
Varje gång ett DTS-paket sparas så sparas en ny version av paketet, dvs den
gamla raderas inte utan kan återfås om så önskas. Versionsinformationen lagras
i MS SQL Server och om flera versioner finns för ett DTS-paket kan man välja
att öppna den version man vill använda. Versionshanteringen i DTS får betyg
tre.
Schemaläggning (4.2)
I Enterprise Manager kan man schemalägga när DTS-paket ska exekvera. Detta
görs enkelt genom att ställa in tidsintervallen då paketet ska köras och detta
kan göras för varje paket. Det finns dock ingen möjlighet att ställa in någon
händelsesstyrd körning av paketen, som t ex existens av fil. Detta gör att
betyget blir två.
Felsökning (4.3)
Felsökning saknas i DTS och därför blir betyget noll.
Felhantering och loggning (4.4)
Microsoft skiljer på olika typer av fel och delar in dem i två kategorier:
•
Transformationsfel. Dessa fel kan uppstå när DTS försöker transformera
data på ett felaktigt sätt. Detta kan bero på att indata ej passar
behandlingen.
•
Insättningsfel. Detta är fel som uppkommer när transformerad data
försöks sättas in i datavaruhuset och datan står i konflikt med befintligt
data i datavaruhuset. Exempel på detta är brott mot primärnycklar och
referensfel.
DTS loggar dessa fel på två olika nivåer. För varje paket loggas varje körning
och utfallet av varje ingående deluppgift (DTS Task) i paketet. Denna
information sparas i en logfil som är en vanlig textfil. Den andra nivån av
loggning i DTS är loggning som sker på deluppgiftsnivå. Denna loggningen
innehåller information om exekveringen på radnivå och är möjlig i deluppgifter
som utför någon typ av datatransformation. Här finns det även möjlighet att
40
ETL-verktyg för datavaruhus
dirigera felaktigt data till speciella textfiler. Detta är bra om man vill se och
behandla de tupler som ej kunde laddas.
DTS funktionalitet för felhantering och loggning ges betyg tre.
Hårdvarukrav (4.5)
Hårdvarukraven för Microsoft SQL Server 2000 och således DTS är följande:
•
Pentium 166MHz, 64 MB
•
Ca 250 MB hårddisk
Microsoft SQL Server 2000 körs på Windows NT eller Windows 2000.
Faller valet på DTS kommer verktyget att exekvera på samma dator som
datavaruhuset, eftersom DTS ingår i MS SQL Server 2000. PTTFO har idag ett
avtal med ABB Group Services Center AB, IT Partner (ITP) på en dator med
MS SQL Server 2000 installerat där datavaruhuset ska implementeras. ITP
ansvarar för skötsel av denna server, såsom säkerhetskopiering och övrig
tillsyn. Denna maskin består av en Intel Pentium processor 866 MHz och ett
internminne på 512 MB. Hårddiskutrymmet uppgår till ca 70 GB och
operativssystemet är Windows 2000.
Idag finns endast en annan databas på denna server och det är PTTFOs egna
projektplaneringssystem (OSM) och inga laddningar sker mot den nattetid.
Därför finns det i nuläget gott om tid för laddning av datavaruhuset och
betyget för lösningen blir tre.
Programmering (4.6)
Som tidtagare sagts kan DTS-paket utvecklas utanför det grafiska verktyget
DTS Designer. DTS-paketet utvecklas i dessa fall i något programmeringsspråk
som stödjer COM-objekt. Exempel på sådana språk är Visual Basic och Visual
C++. Detta gör det möjligt att skapa egna deluppgifter (DTS tasks) vars
funktionalitet inte finns representerade i de inbyggda deluppgifterna i DTS
Designer. Progammeringsspråken som stödjer denna utveckling ligger i linje med
de eftersökta i denna utvärdering och betyget blir tre.
Prestanda (4.7)
I DTS finns flera möjligheter att påverka prestanda på laddningarna och få ner
laddningstiden. Används Microsoft SQL Server för att lagra datavaruhuset så
kan en speciell laddningsrutin, Bulk Load, användas. Denna laddningsrutin är
avsedd för att ladda textfiler in till datavaruhuset. Ingen omvandling av data
kan göras och ingen loggning av fel förekommer i denna laddningsrutin vilket
gör den snabb. En annan möjlighet för att minska laddningstiden är att stänga
av felkontroller och loggning i Data Transformation Task. Vilka kontroller som
kan stängas av kan i viss mån väljas, men loggning av insättningsfel går ej att
koppla ifrån. Deluppgifter (DTS Task) i DTS-paketen kan även exekveras
parallellt för att minska laddningstiderna
Den funktionalitet som finns för att påverka prestanda uppskattas som bra och
ger DTS betyg tre.
41
ETL-verktyg för datavaruhus
Transaktionshantering (4.8)
För laddningen av data till datavaruhus går det i DTS att dela upp datavolymen
buntvis i olika delar, sk batcher. Dessa batcher körs som egna transaktioner och
skulle något gå fel i någon tupel så påverkar det endast den batchen där tupeln
ingår. Hur batchen påverkas beror på felets typ. Om felet är ett
transformationsfel läses nästa tupel tills batchen är full, data tar slut, eller
antalet fel överskrider angiven nivå. Om däremot felet har hamnat i batchen
och förorsakar ett fel vid insättningen, återställs all data från batchen som
lyckats sättas in. Transaktionshanteringen i DTS betygsätts med tre.
Support (4.9)
Om valet av ETL-verktyg faller på DTS kommer PTTFO själva ansvara för att
verktyget fungerar. Den support man då får förlita sig på är den externa
supporten man kan direkt erhålla från Microsoft.
Förutom att direkt kontakta Microsoft för support tillhandahåller Microsoft en
stor mängd artiklar för support på deras hemsida [msdn 2001]. Utöver detta
finns även andra Internetsidor som erbjuder support på DTS, bl a
http://www.developersdex.com och http://www.sqlmag.com/.
Dessa alternativ för support av DTS ger verktyget betyg tre.
3.4.2.5 Kostnader
Licenskostnader
Eftersom PTTFO idag redan har ett avtal med ABB ITP för drift av en SQL
Server där DTS ingår så tillkommer inga kostnader om DTS skulle väljas som
ETL-verktyg. De fasta kostnaderna blir därför 0 kr per månad.
Driftskostnader
De arbetsuppgifter som uppkommer p g a DTS skall vid ett val av DTS utföras
av PTTFO själv. Denna kostnad uppskattas till ca 1 000 kr per månad för en
timmes arbetsinsats.
42
ETL-verktyg för datavaruhus
3.5 Sammanfattning av jämförelsen
Nu har samtliga parametrar gåtts igenom för respektive verktyg och resultatet
kan sammanfattas med tabellen nedan. Parametergruppernas betyg är beräknat
enligt formeln beskriven på sidan 18.
Parameter
MS DTS PowerMart Vikt
1
1.1
1.2
1.3
Anslutningsmöjligheter
aktuella enheter
framtida enheter
utveckling
0,89
3
3
1
0,83
3
3
0
3
2
1
2
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
Laddningsfunktionalitet
aggregat
surrogatnycklar
look-up
stränghantering
tilldelning av grundvärden
verfiering och dirigering
datatypskonvertering
pre- & post anrop
långsamma dimensioner
0,75
2
2
2
3
2
2
3
3
2
0,93
3
3
3
3
2
2
3
2
3
2
3
3
2
1
2
2
1
3
3
3.1
3.2
3.3
3.4
3.5
Användarvänlighet
grafiska verktyg
steg för steg (Wizards)
mallar (Templates)
dokumentation
beskrivning av ETL
0,69
2
2
2
3
1
0,69
3
3
0
2
2
3
2
2
3
2
4
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
Administration & drift
versionshantering
schemaläggning
felsökning (debugg)
felhantering & loggning(mail)
hårdvarukrav
programmering
prestanda
transaktionshantering
support
0,85
3
2
0
3
3
3
3
3
3
0,90
3
3
2
3
2
3
3
3
2
2
3
2
3
1
2
2
2
3
5
5.1
5.2
Kostnader
licenskostnader
driftskostnader
0 kr
1 000 kr
14 000 kr
12 000 kr
Tabell 3: Sammanfattning av jämförelse av DTS och PowerMart.
Anslutningsmöjligheterna i verktygen är likvärdiga. Båda verktygen stödjer de
anslutningar som efterfrågas i projektet och i DTS har man även möjlighet att
utöka möjligheterna till anslutningar.
43
ETL-verktyg för datavaruhus
Laddningsfunktionaliteten är bättre i PowerMart än DTS. PowerMart har fler
olika verktyg för specifika uppgifter medan DTS använder sig av färre verktyg
som utför flera uppgifter. Detta gör att tydligheten i DTS är sämre än i
PowerMart. Det finns dock viss funktionalitet i DTS som är bättre än i
PowerMart, t ex pre- och postanrop.
Användarvänligheten i verktygen är också likvärdig. PowerMart förlitar sig mer
på ”steg för steg”-verktyg och DTS mer på mallar. De grafiska verktyget i
PowerMart är ett strå vassare än motsvarande verktyg i DTS, då man i
PowerMart förutom arbetsflödet även kan se dataflödet. Det är dock lättare att
få fram information om DTS i jämförelse med PowerMart, vilket är mycket
viktigt.
Verktygens egenskaper för administration och drift är också de likvärdiga.
Skillnaderna rent funktionsmässigt är små och man kan säga att PowerMart har
något bättre möjligheter till schemaläggning.
Kostnadsskillnaden mellan verktygen är dock stor. PowerMart kostar 26 000
kronor per månad, medan DTS uppskattas kosta ungefär 1 000 kronor per
månad.
3.6 Slutsats
Efter denna summering har jag kommit fram till att DTS är det mest prisvärda
och lämpliga verktyget för detta projekt. Laddningsfunktionaliteten har sina
brister i DTS, men den innebär inte att funktionalitet saknas. Det som ofta
krävs för att skapa de rutiner är kunskap i ActiveX programmering och SQL
och denna kunskap finns inom PTTFO. Därför ses inte detta som någon stor
begränsning.
Den stora tillgången på dokumentation från olika håll om produkten har
dessutom gjort att jag ser DTS som ett bättre alternativ än PowerMart. Detta
är mycket viktigt för vidareutveckling och stöd av ETL-processer utvecklade i
verktyget.
44
ETL-verktyg för datavaruhus
4 Genomförande
Detta kapitel beskriver kortfattat uppbyggnaden av datavaruhuset och ETLprocesserna som jag efter valet av ETL-verktyg utvecklade.
Bild 9: Systembild av datakälla, datavaruhus och distribution av data.
Systemet på bild 8 består av fyra servrar, BaaN (datakällan), MS SQL Server
2000 (datavaruhuset), MS Analysis Server (OLAP) och Crystal Enterprise
(distribution av rapporter). Data tankas från BaaN-servern som innehåller all
data som denna första version av datavaruhuset använder. Det första steget i
dataflödet är att befintliga skript i BaaN extraherar data ur den underliggande
Oracledatabasen. I dessa skript sker en viss tvättning och urgallring av data och
tillslut hamnar datan i olika extraktfiler (ASCII), en fil per databastabell. Dessa
extraktfiler kan ses som behandlingsarean i detta system, men ingen behandling
sker just när datan ligger i filerna.
Datavaruhuset består av två datalager (bas- och analyslager) och en server för
OLAP-kuber. Nedan beskrivs dessa och laddningarna mellan dem. I slutet
beskriver jag även hur önskemålen om användargränssnitten för rapporter och
analyser löstes.
45
ETL-verktyg för datavaruhus
4.1 Baslagret
Baslagret är det lägsta datalagret i datavaruhuset och det är hit datan från
extraktfilerna kommer först. Baslagret är uppbyggd som en relationsdatabas
och strukturen av denna påminner mycket om BaaNs underliggande Oracledatabas. Relationer mellan tabellerna är de samma, men vissa attribut i tabeller
som inte är intressanta för rapporter och analyser har tagits bort.
Bild 10: Fysisk uppbyggnad av Baslager
Baslagret ska användas av rapportgeneratorer för att skapa rapporter. Utifrån
baslagret skapas även stjärnmodeller som lagras i nästa datalager, analyslagret.
Tabellerna i baslagret beskrivs i bilaga C.
4.2 Laddning av baslager
Laddningen av baslagret sköts av DTS och jag har utvecklat laddningarna i
DTS Designer. Jag har försökt minimera programmeringsinsatsen och använt
de inbyggda verktygen så mycket som möjligt. Den programmering som
förekommit har gjorts med Visual Basic Script och SQL. Alternativet till att
använda Visual Basic Script skulle ha varit att använda Jscript, men Jscript visar
sig dock ha sämre prestanda än Visual Basic i DTS. I en undersökning utförd
av Vieira [Vieira 2000] laddades 15 174 dataposter med 30 kolumner med båda
alternativen. Överföringen av data tog med Visual Basic 13 sekunder och med
Jscript 19 sekunder. Det verkar som att undersökningen endast omfattar en
laddning och resultaten är kanske därför inte så överförbara till verkligheten.
Microsoft menar dock också att Visual Basic är snabbare än Jscript. Detta i
kombination med den breda kunskap i Visual Basic som finns på PTTFO
gjorde att valet föll på detta språk.
För varje extraktfil har jag utvecklat ett tillhörande DTS-paket som laddar
extraktfilens data till baslagret. Man kan säga att det finns två typer av
extraktfiler, filer som innehåller information om behandlingen av dess data och
filer som inte gör det. Skillnaden mellan dessa gör att DTS-paket för laddning
av den första typen av extraktfiler inte behöver kontrollera om datan finns sen
tidigare i baslagret, eftersom fil innehåller informationen om behandlingen.
46
ETL-verktyg för datavaruhus
Detta måste dock DTS-paket för den andra typen av extraktfiler göra för att
veta hur datan ska behandlas.
För att logga fel används DTS inbyggda loggningsfunktion för de deluppgifter
som utför laddning. Felaktig data som av någon anledning inte kan sättas in i
datavaruhuset lagras av
DTS i en fil med filändelsen Source.
Rimlighetskontroller förekommer i vissa paket och data som ligger utanför
rimlighetsramarna lagras i en särskild fil med filändelse Verify. För att en
administratör lätt skall kunna gå igenom den data som ej laddades sammanförs
båda dessa filer till ett Excelark. Datan kan sedan behandlas och rättas i Excel
och sedan sparas som en nya extraktfil för att laddas på nytt.
Algoritm för DTS-paket för laddning av baslagertabell:
1. Initiering av DTS-paket, bl a sätts namn på extrakt- och loggfiler
2. Laddar extraktfil till baslager, rad för rad:
2.1. Verifiering av indata. Om data ligger utanför rimlighetsgränser:
2.1.1. Lagra indata i fil för orimligt data (Verify) och ange orsak till fel.
2.1.2. Fortsätt med nästa datarad.
2.2. Annars:
2.2.1. Om primärnyckeln inte finns i baslagertabell:
2.2.1.1. Utför INSERT
2.2.2. Annars:
2.2.2.1. Utför UPDATE
3. Ladda DTS fil med felaktig data till Excelark för rättning
4. Ladda fil innehållande orimlig data till Excelark för rättning.
5. Filhantering
5.1. Flytta behandlad extraktfil till plats för behandlat data.
5.2. Radera filer innehållande felaktig (Source) och orimlig data (Verify).
Om information om databehandlingen finns i extraktfilen styr denna valet av
åtgärd i punkt 2.2.1, istället för kontroll av primärnyckeln i måltabellen.
Nedan följer ett exempel på ett DTS-paket för laddning av extraktfil till
baslagret som bygger på denna algoritmen.
47
ETL-verktyg för datavaruhus
Bild 11: Exempel på DTS-paket för laddning av baslagertabell.
De tre övre ikonerna (Extraktfil, Lookup, Baslager) på arbetsytan definierar de
anslutningar som behövs av DTS-paketet.
Den första deluppgiften som utförs är av typ ActiveX Script Task och kallas för
Initiering. Denna deluppgift utför preanrop, såsom initiering av datakällor och
skapande av loggfiler före laddningen påbörjas. Denna deluppgift motsvarar
algoritmens första steg (se bilaga A1 för kodexempel).
När initieringen är klar fortsätter exekveringen till deluppgiften Laddning till
baslager som är en Data Driven Query (se bilaga A2 för kodexempel). Denna
deluppgift motsvarar steg två i algoritmen och utför kontroller och laddning av
data. Anslutning Lookup används för att kontrollera om data finns sen tidigare i
baslagret och denna används när extraktfilen saknar information om
behandlingen.
Efter detta laddas filerna för felaktigt data till Excel för vidare behandling, steg
tre och fyra i algoritmen. Först laddas DTS egna fil för felaktigt data (Source)
och sedan filen innehållande data utanför rimlighetsramarna (Verify). Denna
laddning utförs av två Data Transformation Task som representeras med
heldragna pilar på arbetsytan. Avslutningsvis exekveras deluppgiften Filhantering
som är ett ActiveX Script Task (se bilaga A3 för kod exempel) som utför
algoritmens sista steg, steg fem. Detta är en form av postanrop.
Totalt har jag skapat nio DTS-paket som sköter laddningen av baslagret.
4.3 Analyslagret
Analyslagret är det andra datalagret i datavaruhuset. Här är datan lagrad i faktaoch dimensionstabeller och dessa är strukturerad i stjärnmodeller. Analyslagret
utgör grunden för de OLAP-kuber som genereras senare i Analysis Server,
men kan även användas av rapportverktyg för generering av rapporter..
48
ETL-verktyg för datavaruhus
Nedan följer stjärnmodellen jag utvecklade för beställd köpvolym (inköpsdata).
Bild 12: Stjärnmodell för beställd köpvolym i analyslager
Denna stjärnmodell består av en faktatabell och sex dimensionstabeller.
Faktatabellen innehåller köpvolymen uppdelad på orderradsnivå, dvs varje
datarad i faktatabellen kommer från en beställning av en vara eller tjänst.
Dimensionstabellerna i stjärnmodellen är inköpsorder, personalregister,
artiklar, leverantörer, enheter och orderpositioner (orderrader). Med dessa kan
faktat i faktatabellen senare analyseras i OLAP-verktyg. Tabellerna i
analyslagret beskrivs i bilaga D.
4.4 Laddning av analyslagret
Denna laddning, liksom laddning av baslagret, sköts av DTS. Laddningen av
analyslagret innebär en omstrukturering av data, eftersom datan i baslagrets
ligger lagrat enligt en relationsmodell och analyslagret är strukturerat med
stjärnmodeller. Vad innebär detta för laddningen av fakta- och
dimensionstabellerna?
För att utnyttja de fördelar som finns i samband med användande av
surrogatnycklar bestämde jag mig för att använda sådana för
dimensionstabellerna i analyslagret. Datatypen för surrogatnycklarna är heltal
och dessa tilldelas löpande till inkommande data från baslagret. Detta innebär
att laddningen av analyslagret måste hantera tilldelning och kontroll av
surrogatnycklar. I min första version av analyslagret utvecklade jag dock sk
triggers för att sköta tilldelningen av surrogatnycklar (se bilaga B1). Med denna
lösning skulle varje dimensionstabell själv sköta tilldelning och återanvändning
av surrgatnycklar och på så vis skulle DTS-paketen slippa detta. Denna lösning
fungerade bra på tabeller som bestod av upptill 20 000 poster, men efter det
tog laddningen lång tid. Anledningen till detta berodde på att triggern för varje
ny datapost undersökte om det fanns några nycklar som kunde återanvändas
innan den satte in den nya dataposten. Jag övergav denna lösning och
49
ETL-verktyg för datavaruhus
implementerade istället en lösning i DTS med Visual Basic, där återanvändning
av nycklar automatiskt kopplades bort om det inte fanns några nycklar att
återanvända (se bilaga A4).
Det tyngsta arbetet i omorganisering av data mellan baslagret och analyslagret
är att skapa faktatabellen. Den består av referenser till flera dimensionstabeller
och dessa referenser måste för varje faktarad hämtas från
dimensionstabellerna. Jag valde att använda SQL (se bilaga B2) för denna
operation, mycket p g a att Microsoft själva rekommenderade denna lösning
och för att jag själv märkte att den var snabb.
Algoritm för laddning av dimensionstabell:
1. Initiera laddningen, aktivera återanvändning av surrogatnycklar.
2. Läs data rad för rad från baslagret:
2.1. Om återanvändning av surrogatnycklar aktiverad:
2.1.1. Om oanvända surrogatnycklar finns i måltabell:
2.1.1.1. Använd högsta oanvända surrogatnyckel.
2.1.2. Annars:
2.1.2.1. Avaktivera återanvändning
2.1.2.2. Välj nästföljande surrogatnyckel
2.2. Annars:
2.2.1.Välj nästföljande surrogatnyckel
2.3. Sätt in data i dimensionstabellen med surrogatnyckel.
3. För datarader i baslagret som är markerade för uppdatering:
3.1. Uppdatera dessa datarader i analyslagret
4. För datarader som finns i analyslagret, men ej i baslagret
4.1. Radera dessa datarader i analyslagret.
Bild 13: DTS-paket för laddning av dimensionstabell
Bild 13 visar ett DTS-paket som implementerar algoritmen för laddningen av
dimensionstabeller. Uppkopplingar mot källor och mål (baslager, lookup,
analyslager) ses överest på arbetsytan. Exekeringen börjar med ActiveX Script
minCheck=True, vilken ser till att återanvändning av surrogatnycklar från början
är aktiverad (punkt 1 i algoritmen). Efter detta följer tre Data Driven Query, var
50
ETL-verktyg för datavaruhus
av den första, INSERT utför insättning av nya datarader till analyslagret och
den andra, UPDATE, utför uppdatering av befintligt data i analyslagret. Den
tredje radera data i analyslagret som inte finns i baslagret och data i bas- och
analyslagret blir på detta sätt samstämmigt. Dessa tre deluppgifter motsvarar
punkt 2 till 4 i algoritmen.
Algoritm för laddning av faktatabell:
1. Plocka ut primärnycklar för de dataposter som finns i analyslagret, men ej i
baslagret
1.1. Radera dessa dataposter från faktatabellen
2. Plocka ut referenser och fakta för dataposter som finns i baslagret, men ej i
analyslagret
2.1. Sätt in dessa dataposter i faktatabellen.
3. Plocka ut primärnycklar för de dataposter som finns i analyslagret, men ej i
baslagret och som dessutom är markerade för uppdatering:
3.1. Uppdatera dessa dataposter i faktatabellen.
Bild 14: DTS-paket för laddning av faktatabell i analyslagret.
Även i detta DTS-paket ses anslutningarna (baslager och analyslager) överst på
arbetsytan. Någon kontroll av data (Lookup) behövs inte eftersom SQL
används i deluppgifterna för att välja ut datarader för behandling.
Laddningen består av tre Data Driven Query var av den första, DELETE,
plockar ut de datarader som finns i analyslagret, men inte i baslagret. Dessa
datarader raderas från analyslagret, se punkt 1 i algoritmen. Nästa deluppgift,
INSERT, sköter insättning av nya faktarader (datarader) i faktatabellen.
Deluppgiften ser till att referenser för fakta till dimensionstabellerna blir rätt
(se bilaga B2). När referenserna har kopplats sätts dataraden in i faktatabellen.
När alla nya rader har satts in uppdateras data i analyslagret som är markerat
för uppdatering i baslagret. Detta medför att data i bas- och analyslager blir
samstämmigt.
Laddning och uppdatering av analyslagret sköts av sju DTS-paket, ett för varje
tabell.
51
ETL-verktyg för datavaruhus
4.5 Konfiguration av DTS
Totalt har jag skapat 17 DTS-paket för uppdatering och laddning av
datavaruhuset. Laddningen har jag ordnat så att laddningen av bas- och
analyslager sker först och därefter uppdateras OLAP-kuber (se kapitel OLAPkuber). Laddningsprocessen körs igång av ett DTS-paket kallat MAIN. Detta
DTS-paket körs på SQL Servern en gång i timmen och drar igång laddningen
om en startfil, som genereras av extrakskripten i BaaN, har skapats. Denna
kontroll är skriven i Visual Basic och om filen finns startar MAIN de andra
DTS-pakten som utför laddningen.
Laddningen är indelad i fem steg (grupper):
1. Data som är gemensamt för flera avdelningar laddas till baslager
(BAS_COM).
2. Data som är tillhör en specifik avdelning laddas till baslager (ex BAS_PUR
för inköpsdata).
3. Överföring av data mellan baslager och analyslager för gemensam data
(ANL_COM)
4. Överföring av data mellan baslager och analyslager för specifik
avdelningsdata (ex ANL_PUR för inköpsdata).
5. Uppdatering av OLAP-kuber.
Bild 15: Exekvering av DTS-paket.
För att lättare överblicka laddningen av datavaruhuset har jag sammanfört
loggfilerna som genereras av deluppgifterna i den grupp av laddning som de
ingår. På det sättet får man fem loggfiler att gå igenom efter en laddning, en för
varje grupp.
52
ETL-verktyg för datavaruhus
Bild 16: DTS-paket som exekverar underliggande paket.
DTS-paketet på bild 16 exekverar DTS-paketen för laddningen av gemensam
data till baslagret (BAS_COM). I slutet av paketet sammanförs loggfilerna från
de olika paketen som exekverats till en gemensam loggfil.
4.6 OLAP-kuber
För att möjliggör OLAP-analyser av köpvolymen för leverantörer skapade jag
en OLAP-kub som lagras på Analysis Server. Datan som kuben bygger på måste
vara strukturerat i en stjärn- eller snöflingemodell, så data läsas därför från
analyslagret. I verktyget Microsoft Analysis Manager, som ingår i MS SQL Server
2000, kan man definiera hur OLAP-kuben ska se ut., här väljer man vilka
tabeller man vill använda för fakta och dimensioner. Dimensionstabellernas
attribut kan ordnas i hierarkier för dimensionerna och även attribut i en
faktatabell kan plockas ut till en dimension. Detta är t ex lämpligt för att skapa
tidsdimensioner som kan baseras på ett datumattribut i faktatabellen.
Den OLAP-kub som jag definierade bygger på en faktatabell och fem
dimensionstabeller i analyslagret. Ytterligare en dimension, tidsdimensionen,
skapas utifrån faktatabellens datumattribut, vilket gör att sex dimensioner kan
användas för att analysera fakta i faktatabellen. När OLAP-kuben genereras
skapas automatiskt aggregat, summering av data, efter hur dimensionerna är
strukurerade.
För varje OLAP-kub finns tre olika lagringssätt.
•
MOLAP, data lagras i kuben.
•
ROLAP, data refereras till underliggande datalager (analyslagret).
•
HOLAP, aggregat lagras i kuben, men övrigt data refereras till
underliggande datalager.
Jag valde att använda mig av MOLAP eftersom det ger snabbast svarstider mot
OLAP-kuben.
53
ETL-verktyg för datavaruhus
4.7 Användargränssnitt för OLAP-kuber
Det gränssnitt som användarna använder för att analysera datan i OLAPkuberna är Excel 2000. Anledningen till att jag valde detta program som
gränssnitt är att programmet redan fanns på ABB och att användarna är vana
vid det. Det finns flera verktyg för att analysera OLAP-kuber på marknaden
och säkert sådana som är bättre än Excel, men att analysera detta ingick inte i
detta examensarbete.
I Excel 2000 använder man sig av Excels pivottabeller för att arbete med
analysen. Genom att koppla upp programmet med HTTP mot Analysis Server
kan användaren se datan i sitt Excelark. Dimensioner kan flyttas för att studera
datan ur olika synvinklar och det går också att göra ”drill-down” i dimensioner
med hierarkier.
Bild 17: Pivottabell i Excel för analys av OLAP-kub.
4.8 Användargränssnitt för rapporter
Önskemålet för rapporterna var att de skulle vara åtkomliga från ABB intranät,
så att ingen installation skulle krävas på varje användares arbetsstation. Jag
bestämde mig för att använda Seagate Softwares lösning för utveckling och
distribution av rapporter, eftersom deras produkter redan fanns på ABB. För
att skapa rapporter använde jag Crystal Report (som är en Seagate produkt)
och kopplade upp mig mot baslagret i datavaruhuset för att hämta data till
rapporterna. Uppkopplingen mot databasen gjordes i Crystal Report med
ODBC.
För att distribuera rapporterna installerade jag Crystal Enterprise (Seagate
produkt) på en webserver på ABB. Denna produkt möjliggör distribution av
rapporter skapade med Crystal Report. Användarna kan via sin webbrowser
(Internet Explorer) komma åt rapporterna och skriva ut dem eller spara dem
på sin dator.
54
ETL-verktyg för datavaruhus
5 Resultat och framtid
Vad kan man säga när detta examensarbete nu är utfört? Fick användaren
tillgång till rapporter och analyser? Var DTS det riktiga valet av ETL-verktyg,
fungerade det vid laddningen av datavaruhuset och vad kan man säga om
jämförelsemetoden?
Om vi börjar att titta på hur jämförelsen föll ut och viktningen av parametrar.
Jag hade när jag började med detta examensarbete ingen erfarenhet av
datavaruhus och laddningen av dessa. Nu efter att jag har satt upp ett
datavaruhus och skapat laddningsrutiner för detta så har jag lärt mig en hel del
saker som är viktiga att tänka på. Vissa av de parametrar som jag hade med i
jämförelsen skulle t ex ha fått en annan vikt. Detta gäller bl a parameter 2.8
(pre- och postanrop) som hade fått en högre viktning, eftersom jag använde
sådana ofta och bl a parameter 3.2 (”steg för steg”-verktyg) och 3.3 (mallar),
eftersom dessa har jag inte använt alls i utvecklingen av ETL.
Var nu DTS det rätta valet? Intrycket jag fick av DTS under utvärderingen var
att verktyget var lättarbetat, trots att det saknade viss funktionalitet som jag då
trodde skulle försvåra utveckling av ETL-processer. Efter att nu ha utvecklat
ETL-processer med DTS så tycker jag fortfarande att verktyget är lätt att
arbeta med. Det går fort att utveckla en laddningsprocess och
dokumentationen om DTS var inte överdriven till det positiva. Visst hade det
varit bra med felsökning av DTS-paketen, det hade sparat tid vid utvecklingen
och visst hade det varit bra med PowerMarts surrogatnyckelgenerator för att
lättare generera surrogatnycklar, men dessa saker gick att lösa i DTS. Och
kanske ändå viktigare, de gick att lösa i DTS till en mycket lägre kostnad. En av
de bättre sakerna med DTS som jag nu ser det i efterhand är möjligheten till
skriptprogrammeringen. Målet var i och för sig att minimera programmeringen
vid utvecklingen av ETL-processer, men viss programmering kommer man
nog aldrig ifrån, som t ex filhantering. Att DTS hade möjlighet att till denna
programmering direkt i verktyget underlättade mycket. Man slipper skriva
externa program som anropas av DTS för att utföra sådana uppgifter. DTS
fungerar bra för laddningen av datavaruhuset och jag tycker i efterhand att
valet var riktigt.
Personalen på inköpsavdelning kan idag arbeta med rapporter och analyser i en
testmiljö på ABB. Rapporter kan användare med behörighet komma åt via
intranätet och analyser kan utföras med ett verktyg de känner igen, Excel. Det
som nu står för dörren i detta projekt är att bredda datavaruhuset, dvs plocka
in data från fler avdelningar, och även att göra en utredning på lämpliga
rapport- och analysverktyg.
55
ETL-verktyg för datavaruhus
6 Tack
Först vill jag tacka mina handledare jag haft för detta examensarbete.
Tommy Jakobsen
ABB Power Technology Products AB
Johan Karlsson
Umeå Universitet
Sedan vill jag tacka följande personerna för att de på ett eller annat sätt har
hjälpt mig under detta examensarbete.
Curt Karlsson
ABB Power Technology Products AB
Fredrik Fritzon
ABB Group Services Center AB, IT Partner
Erling Nääs
ABB Power Technology Products AB
Torbjörn Sjödin
ABB Group Services Center AB, Business Systetems
Thomas Söderberg
ABB Group Services Center AB, IT Partner
Carl-Henrik Wigert
ABB Power Technology Products AB
56
ETL-verktyg för datavaruhus
7 Ordlista
ABB
Asea Brown Boveri
Behandlingsarea
(engelska: Staging Area). Lagringsplats för data innan
den laddas till datavaruhuset. Här kan tvättning,
justering och omstrukutering av data ske. Formatet på
behandlingsarean kan t ex vara enkla filer eller
databaser.
BUS
ABB Group Services Center AB, Business Systems
COM
(engelska: Component Object Model). Objektmodell
för programmering utvecklad av Microsoft.
Data Mart
Logisk del av datavaruhuset. Uppdelningen kan vara
avdelningar som ingår i ett företag, såsom
inköpsavdelning och finans.
Datavaruhus
Samlingsplats för data avsedd för rapporter, analys och
beslutstöd.
DTS
Data Transformation Services. Ett ETL-verktyg från
Microsoft.
ERP
Enterprise Resource Planning. Affärssystem som är
uppbyggt som en klient/server lösning.
ETL
Extraction, Transformation , Loading. Processer som
sköter införandet av data till datavaruhuset.
ITP
ABB Group Services Center AB, Business Systems
OLAP
On-Line Analysis Services. Dimensionell analys av data.
PowerMart
Ett ETL-verktyg från Informatica.
PTTFO
ABB Power Technology Products AB, Transformers
57
ETL-verktyg för datavaruhus
8 Källförteckning
[Kimball 1998] Kimball, Ralph & Reeves, Laura & Ross, Margy &
Thornthwaite. (1998) The Data Warehouse Lifecycle Toolkit. Wiley
[Elmasri 2000] Elmasri, Ramez & Navathe, Shamkant B. (2000). Fundamentals of
Database Systems. (3rd ed) Addison-Wesley
[Thomsen 1999] Thomsen, Erik & Spofford, Geroge & Chase, Dick (1999).
Microsoft OLAP Solutions. Wiley
[Vieira 2000] Vieira, Robert (2000). Professional SQL Server 2000 Programming.
Wrox
[Cox III 1995] Cox III, James F. & Blackstone, John H. & Spencer, Michael S.
(1995). Apics Dictionary. (8th ed)
[SQL OnLine 2000] SQL Server Books OnLine, hjälpfiler från Microsoft SQL
Server 2000. (2000)
[Informatica Guide 2001] Informatica Guide, hjälpfiler från Informatica
PowerMart. (2001)
[Gupta 1997] Gupta, Vivek R. An Introduction to Data Warehousing. (1997)
http://www.sserve.com/dwintro.asp 2001-09-13
[Scott 2000] Scott, Van. Extraction, Transformation, and Load issues and approaches.
(2000)
http://www.tdan/com/i011hy04.htm 2001-09-13
[Meyer 2001] Meyer, Steven R. Which ETL Tool is Right for You? (2001)
http://www.dmreview.com/master.cfm?NavID=193&EdID=3084 2001-1217
[Allison 2001] Allison Bryan. Targeting ETL Success (2001)
http://www.dmreview.com/editorial/dmreview/print_action.cfm?EdID=333
4 2001-12-17
[Navarro 2000] Navarro, Robert. Solving the Surrogate Key Problem For Business
Intelligence Implementations. (2000)
http://datawarehouse.ittoolbox.com/browse.asp?c=DWPeerPublishing&r=%
2Fpub%2FBN101901%2Epdf 2001-12-12
[Pendse 2001] Pendse, Nigel, What is OLAP! (2001)
http://www.olapreport.com/fasmi.htm 2001-12-13
[Lupin 2001] Bernard Lupin, Try OLAP! (2001)
http://perso.wanadoo.fr/bernard.lupin/english/ 2001-12-13
[olde db 2001] ole db (2001)
http://www.oledb.com/ 2001-09-17
58
ETL-verktyg för datavaruhus
[Informatica 2001] Informatica
http://www.informatica.com 2001-12-13
[msdn 2001] msdn
http://msdn.microsoft.com 2001-09-19
[Microsoft 2001] Microsoft
http://www.microsoft.com 2001-12-12
59
Bilagor
Bilaga A – Visual Basic skript
A1 – Exempel på skript för att initiera DTS-paket
' Syfte:
' 1. Initierar paket med globala variabler.
' 2. Skapar logfil för .Source (DTS fil för icke godkänd data) om denna ej redan
finns.
Function Main()
Dim fs, file
Err.Clear
On Error Resume Next
' 1. Initiering av paket
DTSGlobalVariables.Parent.Connections("Extraktfil").DataSource = _
DTSGlobalVariables("extractFile")
DTSGlobalVariables.Parent.Tasks("DTSTask_DTSDataDrivenQueryTask_1").CustomTask.
ExceptionFileName = DTSGlobalVariables("logFile")
DTSGlobalVariables.Parent.Connections(".Source File").DataSource = _
DTSGlobalVariables("logFile") & ".Source"
DTSGlobalVariables.Parent.Connections("BAS_COM_MAIN").DataSource = _
DTSGlobalVariables("excelFile")
' 2. Skapar logfil .Source
Set fs = CreateObject("Scripting.FileSystemObject")
Set file = fs.OpenTextFile(DTSGlobalVariables("logFile") & ".Source", 8,true)
file.WriteLine "enhet;X;X;X"
file.Close
' Felkontroll
if Err.Number = 0 Then
Main = DTSTaskExecResult_Success
Else
Main = DTSTaskExecResult_Failure
End if
End Function
A2 – Exempel på skript för transformering av data i Data Driven Query
' Syfte: Kopiera över data från källa till mål
Function Main()
DTSDestination("enhet") = DTSSource("Col001")
DTSDestination("benämning") = DTSSource("Col002")
DTSDestination("fys_kvantitet") = DTSSource("Col003")
DTSDestination("avrundningsfaktor") = DTSSource("Col004")
' Kontroll av primärnyckel och val av åtgärd.
If IsNull(DTSSource("Col001")) Then
Main = DTSTransformStat_Error
Else
If IsEmpty( DTSLookups("lookup").Execute(DTSSource("Col001")) ) Then
Main = DTSTransformStat_InsertQuery
Else
Main = DTSTransformStat_UpdateQuery
End If
End if
End Function
A3 – Exempel på skript för filhantering i DTS-paket
' Syfte:
' 1. Flyttar extraktfil till old-katalog
' 2. Raderar Source-fil.
Function Main()
Dim fs, file, pos, filename
Err.Clear
On Error Resume Next
Set fs = CreateObject("Scripting.FileSystemObject")
' 1. Flytta extraktfil till old-katalog, efter att först ha tagit bort
föregående extraktfil
pos = InStrRev(DTSGlobalVariables("extractFile") , "\" , -1, 1)
filename = Right(DTSGlobalVariables("extractFile"), _
len (DTSGlobalVariables("extractFile")) - pos)
if fs.FileExists(DTSGlobalVariables("oldDir") & filename) Then
Set file = fs.GetFile(DTSGlobalVariables("oldDir") & filename)
file.delete
'Radera gammal extraktfil
End if
Set file = fs.GetFile(DTSGlobelVariables("extractFile"))
' Flytt ny extraktfil
fs.MoveFile DTSGlobelVariables("extractFile"), DTSGlobelVariables("oldDir")
' 2. Raderar .Source-fil
if fs.FileExists(DTSGlobalVariables("extractFile") & ".Source") Then
Set file = fs.GetFile(DTSGlobelVariables("extractFile") & ".Source")
file.delete
' Raderar .Source-fil
End if
If Err.number = 0 Then
' Felkontroll
Main = DTSTaskExecResult_Success
Else
Main = DTSTaskExecResult_Failure
End If
End Function
A4 – Exempel på skript tilldelning av surrogatnycklar
' Syfte: Tlldelar värden för målel. Återanvändning av surrogatnycklar vid behov.
Function Main()
Dim minSurrogate, maxSurrogate
DTSDestination("posnummer") = DTSSource("posnummer")
DTSDestination("ordernummer") = DTSSource("ordernummer")
' Återanvändning av nycklar
if DTSGlobalVariables("mincheck").Value = True Then
minSurrogate = DTSLookups("minLookup").Execute – 1
if IsNull(minSurrogate) Then
Else
DTSGlobalVariables("mincheck").Value = False
maxSurrogate = DTSLookups("maxLookup").Execute
if IsNull(maxSurrogate) Then
DTSDestination("orderpos_nyckel") = 1
Else
DTSDestination("orderpos_nyckel") = maxSurrogate +1
End if
DTSDestination("orderpos_nyckel") = minSurrogate
End if
Else
Main = DTSTransformstat_InsertQuery
' Slut på återanvändning
maxSurrogate = DTSLookups("maxLookup").Execute
if IsNull(maxSurrogate) Then ' Tom tabell
maxSurrogate = 1
Else
' Ej tom tabell
maxSurrogate = maxSurrogate +1
End if
DTSDestination("orderpos_nyckel") = maxSurrogate
Main = DTSTransformstat_InsertQuery
End if
End Function
Bilaga B – SQL
B1 – Trigger för tilldelning av surrogatnycklar
CREATE TRIGGER SurrogatTrigger ON ANL_COM_ENHETER
INSTEAD OF INSERT
AS
BEGIN
DECLARE @key int
-- Denna trigger skäter val av surrogatnyckel för nya datarader.
-- Tilldelar @key lägsta lediga surrogatnyckel i måltabellen
SELECT @key = MIN(enhet_nyckel) –1
FROM ANL_COM_ENHETER
WHERE (enhet_nyckel-1) > 0 AND (enhet_nyckel-1) NOT IN (SELECT enhet_nyckel FROM
ANL_COM_ENHETER)
-- Sätt in rad i tabell, surrogatnyckel (@key) först
INSERT INTO ANL_COM_ENHETER
SELECT ISNULL(@key, ISNULL((SELECT MAX(enhet_nyckel) FROM ANL_COM_ENHETER)+1, 1),
enhet, benämning, fys_kvantitet, avrundningsfaktor
FROM INSERTED
END
B2 – SQL-sats för skapande av faktarad för insättning i faktatabell
SELECT ORD.order_nyckel, LEV.lev_nyckel, ENH.enhet_nyckel, PER.pers_nyckel,
ART.art_nyckel, POS.orderpos_nyckel, RAD.behovsdatum, RAD.ak_antal,
RAD.inköpspris, RAD.valuta, RAD.ak_volym_ov, RAD.ak_volym_lv
FROM (SELECT *
FROM BAS_PUR_ORDERRADSDATA AS BAS
WHERE NOT EXISTS ( SELECT *
FROM ANL_PUR_BESTVOL AS VOL INNER JOIN ANL_PUR_ORDERPOS AS
POS ON VOL.orderpos_nyckel=pos.orderpos_nyckel
WHERE POS.ordernummer=BAS.ordernummer AND
POS.posnummer=BAS.posnummer))
AS RAD INNER JOIN ANL_PUR_INKÖPSORDER AS ORD ON
RAD.ordernummer=ORD.ordernummer
INNER JOIN ANL_COM_LEVERANTÖRER AS LEV ON
ORD.leverantör=LEV.leverantör
INNER JOIN ANL_COM_PERSONALREGISTER AS PER ON
LEV.kontaktperson=PER.anställningsnummer
INNER JOIN ANL_COM_ENHETER AS ENH ON
RAD.inköpsenhet=ENH.enhet
INNER JOIN ANL_PUR_ARTIKLAR AS ART ON
(RAD.artikelnummer=ART.artikelnummer AND RAD.artikeltyp=ART.typ)
INNER JOIN ANL_PUR_ORDERPOS AS POS ON
(RAD.ordernummer=POS.ordernummer AND RAD.posnummer=POS.posnummer)