DSA opdatering

af Joakim Dalby

 

Indledning

I en ledelsesinformationssystem løsning (LIS) vil Enterprise Data Warehouse (EDW) normalt opsamle, bevare og håndtere aktuelle og historiske data fra kildesystemerne ved indlæsning af data fra Data Staging Area (DSA). DSA har til formål at varetage udvalgte data fra de forskellige kildesytemer­ inden data indlæses til EDW.

 

Skema oplysninger for en levering

For hver levering til LIS fra et kildesystem, anbefales det at udarbejde et dokument som beskriver en række forhold om kildesystemet, leveringen og data indholdet samt hvad der skal »gøres« ved data, så de er klar til senere indlæsning til EDW. Når en levering består af flere filer, skal der udarbejdes et dokument for hver fil.

 

 

Kildesystem

Navn

et sigende kildesystem navn og typisk en forkortelse.

Sted

firma navn, afdeling, kontor, adresse, telefon, email.

Data indhold ansvarlig

kontaktperson med telefon og email.

Data levering og drift

kontaktperson med telefon og email.

 

 

Levering

Navn

filnavn eller tabelnavn i en database. Nogen gange indeholder et filnavn et ugenummer, månedsnummer eller et årstal, hvorved filnavnet ikke er et fast navn, hvilket ETL indlæsningsprocessen skal tage højde.

Sted

ftp, shared mappe, modtaget på email, LIS indlæser gennem en forbindelse f.eks. med Oracle eller DB2 database connection via linked servers i SQL Server

(data capture as push or pull).

Format

database backup, csv (Comma Separated Values) eller txt (kolonnenavn og komma/semi­kolon se­pa­ra­tor), xml (eXtensible Markup Language) inkl. xsd (xml Schema Definition), Access, Excel, SAS, DB2 m.fl.

Frekvens og tidspunkt

daglig, ugentlig, månedlig m.fl. Aftalt seneste klokke­slæt hvor leveringen er klar og dag i ugen/måneden.

Gyldighedsperiode

hvilken periode eller hvilken til-dato er leveringens data gældende for. Eksempelvis at leveringen om søndagen er til og med fredagen i ugen.

Forventet filstørrelse

forventes f.eks. en database backup fil på 2GB eller mere, kan ETL validere filen ved at forkaste den, når størrelsen er under 2GB, f.eks. 2MB for tom database.

Kontrol

ETL validerer filen for en forventet dato, og når LIS indlæser filen, så slettes filen bagefter, så kilde­sy­ste­met ved, at filen er indlæst, så der kan leveres en ny fil. En ekstra fil eller tabel med dato og klokke­slæt for generering af data indholdet kan være nyttig for kri­ti­ske data i LIS, fordi statistikker ofte er afhæn­gig af, hvornår data er blevet genereret og le­ve­ret. I for­bin­del­se med fejl i kildesystemet vil DSA ud fra en data generingsdato kunne vurdere, om data skal indlæses eller ej og derved give fejlmeddelelse til LIS driften. Kildesy­ste­met kan også sende en email til LIS drif­ten, så de ved, at data er blevet genereret og leveret.

Arkiv

gemmer leveret fil i en arkiv mappe, hvor filnavnet får prefix med den dato (ååååmmdd) den gemmes i ar­ki­vet, så genkørsel af ETL proces kan muliggøres bag ud i tid.

Data struktur

kolonnenavn og datatype, primærnøgle, sekundær­nøg­le, fremmednøgle d.v.s relationer mellem data i tabeller, data­sets, filer, opstillet i et ER-diagram.

Data indhold

full dump af alle data fra kildesystem eller incremen­tal update af nye data, ændret data og slettet data (statusfelt med N for new data, C for changed data og D for deleted data). Hvad gør full dump ved æn­dret tekst, og bliver data slettet i kildesystem, så de ikke mere leveres i full dump? En beskrivelse af data indholdet er vigtig for EDW indlæsningen. Se senere.

 

 

DSA

Databasenavn

database der repræsenterer DSA i LIS løsningen.

Ved flere kildesystemer anbefales en DSA database for hvert kildesystem, så der opnås uafhængig mellem dem og den databehandling der evt. skal foregå på kildedata. De LIS relevante data kan derefter over-føres til en samlet DSA database, som rummer alle de data der skal indlæses i EDW databasen for LIS.

Tabelnavn

en fil importeres til en tabel med samme struktur som filen især kolonnenavn og nærmeste datatype.

Frekvens og ETL proces

indlæsningen er enten daglig, ugentlig, månedlig m.fl. og er en del af en ETL proces.

Log

tabel der har en række for hver gang data er ble­vet indlæst med en dato og klokkeslæt samt en række andre nyttige oplysninger så som antal rækker i filen.

Data validering

kontrol af data bl.a. antal rækker i tabellen i forhold til sidste levering, tom kolonne, korrekt data i num­mer, kode, dato, beløb, antal tegn i tekst oplysning m.fl.

Data behandling

nogen gange vælges det at sætte kolonne datatype til nvarchar(255) der bagefter konver­te­res til rette datatype (int, float, date, nchar) for der­ved at kon­trol­le­re leveringen og give passende da­ta fejl­med­de­lel­se i en logfil for ETL processen til LIS driften.

Data bearbejdning

fastsættelse af primærnøgle, sekundærnøgle, fremmed­nøgle, summering af beløb, gør nummer ensartet f.eks. cprnr som ti cifret ddmmååkkkk.

Data berigelse

tilføjelse af ny kolonne som beregning af anden ko­lon­­ne f.eks. fødselsdato og alder ud fra cprnr. Sam­men­kø­ring af flere tabeller for at opstille data, så de er nemmere at indlæse til EDW.

Ny tabelnavn

data placeres i en eller flere NEW tabeller i DSA, der er klar til ind­læs­ning til EDW. Vigtigt at en tabel har en pri­mær­nøg­le for at opnå hurtig performance i ETL. Når et filnavn ikke er fast f.eks. indeholder et årstal, skal flere tabeller indlæses til samme nye tabel, som der­ved rummer indholdet fra alle relevante års­tals­fi­ler. Måske skal programmeringen tilrettes hvert år, hvilket skal være beskrevet i LIS drift­hånd­bogen.

 

 

Leveringens data indhold

Data indholdet i en levering er det vigtigste af alle forholdene, fordi LIS skal vide, hvor­dan de modtagne data i DSA skal håndteres i EDW.

 

Ved full dump forstås, at kildesystemet leverer alle data d.v.s. et øjebliksbillede af kildedata. Det betyder, at når kildesystemet ændrer en tekst, så leveres den nyeste tekst til DSA, hvis kildesystemet ikke selv har en historik håndtering og derved kan levere alle anvendte tekster med en periode angivelse. Hvad skal LIS gøre ved æn­dre­de tekster, d.v.s. skal ændringen foretages i EDW eller skal tidligere tekst be­va­res i EDW?

 

Kan data blive slettet i kildesystemet, så slettet data ikke mere er indeholdt i full dump? I så fald skal det bestemmes, om LIS skal bevare tidligere leveret data. Kil­de­sy­ste­met kunne have en regel om kun at indeholde data for en rul­len­de fem års­periode, mens LIS skal bevare alle data for at kunne udarbejde statistikker over en meget længere periode.

 

Et godt tip er at have et Identity felt i den tabel der modtager leverancens data, for med Id feltets fortløbende nummer sikres rækkefølgen af de modtagne data, når de senere skal sendes fra DSA til EDW, da det kan ske via en ORDER BY Id.