Dataprofilering – Så får du koll på verksamhetens data

Efter informationsmodell och kartlagda dataflöden behöver vi undersöka vad våra databaser faktiskt innehåller. Dataprofilering ger skillnaden mellan antagande och verklighet. Så här gör du!
/Peter Tallungs, IRM, 2025-06-05
Vad gör du när du informationsmodellerat och kartlagt dataflöden? Vad är nästa steg?
Säg att du vill få ett tydligt grepp om vilka data din verksamhet hanterar. För enkelhetens skull, låt oss säga att du har tagit dig an att få ordning på kunddata. Och låt oss säga att du gjort ett gediget arbete så här långt. Du har tagit fram en informationsmodell genom att studera strukturen i den centrala kunddatabasen, och förmodligen även omkringliggande datastrukturer som rör kunder.
Om du har gjort som jag brukar göra, är informationsmodellen i sin grund konceptuell och normerande. Det betyder att den visar de termer och definitioner som ni kommit fram till som korrekta, och som verksamheten behöver för kundbegrepp och kundinformation. På så sätt representerar modellen er gemensamma förståelse och ert nu gemensamma språk för allt runt kunder. Man kan således se modellen som en domänmodell, det vill säga att den gestaltar allt det som verksamheten hanterar, vad gäller kunder.
Samtidigt har modellen kopplingar till fysiska modeller i olika informationssystem. Den visar var och i vilka fält eller kolumner kunduppgifterna hanteras och lagras i databaser, filer och programkod. Modellen beskriver också, där så behövs, verksamhetsregler med hjälp av text och diagram, till exempel tillståndsdiagram. På så sätt kan man säga att modellen både är en domänmodell och konceptuell informationsmodell, men med tydliga kopplingar till de fysiska datastrukturerna, även om den i grunden inte är en fysisk datamodell. Den fyller också en roll som begreppsmodell, i och med att den definierar och beskriver alla begrepp som rör kund.
En modell som samlar alla dessa perspektiv i en och samma vy – begrepp, konceptuell och fysisk datastruktur samt verksamhetsregler blir riktigt användbar.
Du har lagt ner möda för att modellen ska vara effektivt gestaltad både vad gäller grafik och text, så att den förmedlar det den ska så effektivt som möjligt.
Du har också försett den med versionshistorik och plats för löpande noteringar, så att den kan fungera som en gemensam plattform för fortsatt forskande och lärande.
Utöver detta har du, med hjälp av den verksamhetskarta du tagit fram, kartlagt var, hur och av vem kunddata skapas, hanteras, distribueras och används.
Grattis. Du har kommit långt i arbetet med att få koll på kunddata. Det ni nu har, beskriver datastrukturer, vad de står för, var de kommer från, hur de hanteras och används. Ni har nu kraftfulla verktyg i utvecklingen av verksamhet och it i en och samma dialog.
Men…det är ännu något som fattas. För ni har ännu inte riktigt fått grepp om era kunddata i sig, hur själva dataförekomsterna egentligen ser ut.
Du vet inte säkert vad databaser och filer egentligen innehåller. Du har säkert ett någorlunda hum, men bara på en översiktlig nivå. Det är vanligt att data har brister och avvikelser av alla slag. Det händer att datainnehåll är delvis ett annat än vad som är känt och beskrivet. Till exempel att det som vi kallar kundtabell i själva verket innehåller både kunder, leverantörer och partners. Eller att det skulle vara privatkunder också omfattar företagskunder. Eller att adressfälten är fyllda med utländska adresser trots att systemet inte riktigt är byggt för det. Det är ingen hejd på alla överraskningar man kan få när man skärskådar data.
Nästa steg bör därför vara att profilera kunddata. Det vill säga att i detalj gå igenom, inventera, undersöka och dokumentera tabell- och filinnehåll.
Varför ska man profilera data?
Det finns två skäl:
1. Kvalitetsrapport
Du behöver få en lista på identifierade kvalitetsbrister. Det blir en del av underlaget för en åtgärdsplan, dels för att rätta bristerna i befintligt data, dels för att förebygga att samma brister inte ska uppstå igen.
2. Förfining av informationsmodellen
När du går igenom dataförekomsterna så kommer du att få en djupare förståelse för vad som informationen egentligen betyder. Ofta subtila skillnader, och ibland betydande avvikelser. Det leder nästan alltid till att du behöver uppdatera och komplettera informationsmodellen. Fram till nu har modellen varit en hypotes, baserat på vad ni trott er veta. Nu visar sig verkligheten vara lite annorlunda.
Vad är dataprofilering
Dataprofilering kan definieras så här:
Dataprofilering är den systematiska analysen av data för att förstå dess innehåll, struktur och kvalitet. Det innebär att bedöma egenskaper som fullständighet, konsekvens och noggrannhet.
Det är viktigt att förstå vad dataprofilering inte är. Den säger inget om hur väl data stämmer överens med den verklighet de ska beskriva. Den talar heller inte om ifall data är relevanta eller meningsfulla för en viss användare.
Vad dataprofilering däremot gör är att säkerställa konsistensen i data – om värden hänger ihop internt, om de är möjliga, rimliga, fria från motsägelser, och i linje med den informationsmodell vi byggt upp.
Så även om dataprofilering inte säger allt, är det ändå ett avgörande steg. För om vi inte har koll på vad våra databaser faktiskt innehåller, hur ska vi då kunna bygga upp en stabil och meningsfull informationsförsörjning?
Automatisk eller manuell profilering
Lite förenklat finns det två sätt att gå till väga. Det första sättet är att använda särskilda, mer eller mindre automatiserade, dataprofileringsverktyg. Det snabbt och enkelt, men ger endast ett mycket översiktligt resultat. Och därmed är värdet vanligen högst begränsat.
Det andra sättet är att profilera mera manuellt, med hjälp av vanliga frågeverktyg som SQL, Qlick, Microsoft Excel eller liknande. Då ställer du en serie frågor mot dataförrådet, steg för steg. Det kan låta mödosamt, men det går snabbare än man tror. Och det är egentligen den enda vägen om du verkligen vill veta vad ni har. Det är här du lämnar gissningarna och får koll på riktigt.
Det är den här metoden jag föredrar, och det är den jag beskriver i resten av artikeln. Jag brukar spara det jag gör för att steg för steg bygga ett rapportskript som jag sedan kan köra närhelst jag vill förnya kontrollen.
Manuell profilering – så här gör du
Se till att få tillgång till databas och filer som du behöver.
Det behöver vara verkliga produktionsdata. Kan du inte få behörighet till produktionsdata, får testdata med maskade personuppgifter duga. Inventeringen begränsas då till det du har tillgång till.
Installera lämpliga verktyg för dataåtkomst.
Jag använder något databasverktyg med SQL.
Skaffa en kompis i databasgänget.
Någon du kan terrorisera med frågor om både databasinnehåll och klurigheter i den speciella databashanterare och SQL-version som används.
Jobba metodiskt med SQL-frågor
Ställ frågor mot tabellerna. Först mot enskilda tabeller, och då först mot varje kolumn för sig, sedan mot en kombination av kolumner och till sist en kombination av tabeller.
Dokumentera
Anteckna både frågor (både på svenska och själva SQL-frågan) och sammanfattat svar i ett protokoll.
Exempel på frågor vid manuell dataprofilering
Börja med den eller de centrala kundtabellerna, sedan de mer perifera tabellerna. I det följande ger jag exempel på inledande frågor.
För tabellen som helhet:
- Hur många poster har tabellen?
För en textkolumn, till exempel kundnamn:
- Finns det kunder som saknar namn?
- Vad är det kortaste namnet?
- Vad är det längsta namnet?
- Finns det namn som förekommer mer än en gång?
- Verkar vissa namn vara avhuggna på grund av begränsad fältlängd?
- Finns det namn med blandade versaler och gemener – eller uteslutande versaler?
- Går det att hitta orimliga namn – till exempel med bara en bokstav eller tecken?
För identitetsnummer, till exempel kundnummer:
- Finns det dubbletter?
- Finns det kunder som saknar kundnummer?
- Vad är det lägsta numret?
- Vad är det högsta numret?
- Verkar det finnas någon nummerserie?
- Finns det nummer som bryter mot gällande regler – till exempel ogiltiga personnummer eller felaktiga kontrollsiffror? (Här dyker det ofta upp samordningsnummer eller organisationsnummer.)
För koder, till exempel kundnummer:
- Vilka värden finns?
- Hur många förekomster finns det av varje värde?
- Finns det kunder som saknar värde för kundstatus?
- Förekommer värden som inte finns definierade i något värdeförråd?
För belopp, till exempel kreditgräns:
- Vad är det lägsta beloppet?
- Vad är det högsta beloppet?
- Vilka belopp förekommer? Finns det standardbelopp som återkommer?
- Förekommer negativa belopp?
- Finns de kunder utan angiven kreditgräns?
- Finns det uppenbart orimliga belopp?
För datumfält:
- Har alla datum giltigt format?
- Vad är det tidigaste respektive senaste datumet?
- Är de datum som finns rimliga?
- Förekommer det slutdatum som ligger före startdatum i samma post?
För fritextfält, till exempel noteringar
- Vad innehåller dessa fält?
- Förekommer återkommande uppgifter som egentligen borde formaliseras i egna fält?
För referensdata, till exempel postnummer:
- Vilka postnummer finns?
- Är det enbart svenska postnummer?
- Stämmer postnummer med kommun eller ort?
Ofta märker man att många fel är koncentrerade till ett fåtal poster, ofta skräpposter, till exempel kvarglömt testdata som bör tas bort.
Andra avvikelser beror på att vissa fält med tiden använts till olika saker.
Och sedan…
Den rapport du får ut av dataprofileringen blir ett av de underlag ni behöver för att säkra datakvaliteten. Men inte det enda. Det andra viktiga underlaget är en rapport baserad på intervjuer med de olika användarna. För det är inte säkert att de brister som profileringen hittar är de som värker och brådskar mest, just nu.
Vi behöver få reda på: Vad fungerar bra? Vad saknar de? Vilka problem upplever användarna med tillgängligt data? Men det är svårt att möta dessa behov om vi inte först vet vad vi faktiskt har för data, och hur de ser ut. På riktigt.
PS: Om du inte känner dig hemma med frågeverktyg som SQL eller liknande så vill jag starkt rekommendera att du ändå lär dig ett sådant. Om man ska jobba med data så finns det inget som slår att själv kunna ha tillgång till och kunna undersöka data på olika sätt. Det man ska hantera behöver man kunna se och undersöka.
