Fact tables vormen de basis van het Data warehouse. Ze bevatten de fundamentele metingen van de onderneming, en ze zijn het uiteindelijke doel van de meeste Data warehouse queries. Het heeft geen zin om de fact tables op de vlaggenmast te tillen, tenzij ze zijn gekozen om de dringende bedrijfsprioriteiten te weerspiegelen, zorgvuldig zijn verzekerd van kwaliteit en zijn omgeven door dimensies die een schat aan toegangspunten bieden om te beperken en te groeperen. Nu dat we de weg hebben vrijgemaakt voor feiten tabellen, laten we eens kijken hoe ze te bouwen en te gebruiken.
blijf trouw aan de korrel
de eerste en belangrijkste ontwerpstap is het declareren van de fact table korrel. De korrel is de zakelijke definitie van wat een enkele feiten tabel record vertegenwoordigt. De graandeclaratie is geen lijst van dimensionale vreemde sleutels die een primaire sleutel voor de fact table implementeren. In plaats daarvan is de korrel de beschrijving van de meetgebeurtenis in de fysieke wereld die aanleiding geeft tot een meting. Wanneer de supermarkt scanner meet de hoeveelheid en de aangerekende prijs van een product wordt gekocht, het graan is letterlijk de piep van de scanner. Dat is een geweldige graan definitie!
direct na het declareren van de korrel is het mogelijk om de dimensionale vreemde sleutels op te sommen die bij die korrel bestaan. Door het graan eerst te verklaren, blijft de discussie over buitenlandse sleutels gegrond en nauwkeurig.
het werkelijke doel van de fact table is de repository van de numerieke feiten die tijdens de meetgebeurtenis worden waargenomen. Het is van cruciaal belang dat deze feiten trouw zijn aan het graan. De supermarkt “piep” meet de hoeveelheid en de verlengde prijs van het product dat wordt gescand. We hebben nooit andere numerieke metingen die het graan schenden, zoals de totale categorie verkoop of de verkoop van dit product vorige maand. Hoewel deze andere metingen eng nuttig kunnen zijn voor geselecteerde berekeningen, kunnen ze niet worden gecombineerd tussen fact records en ze introduceren vreemde asymmetrieën in het ontwerp van toepassingen. We laten onze business intelligence (BI) tools berekenen deze off-topic waarden op query tijd in plaats van hard coderen ze in onze fact tabellen.
we streven er altijd naar om de feiten additief te maken over de afmetingen en precies consistent te maken met de korrel. Merk op dat we de prijs van het product dat wordt gescand niet opslaan omdat de prijs niet additief is. In plaats daarvan slaan we de uitgebreide prijs op, die vrij kan worden toegevoegd over producten, winkels, tijden en alle andere dimensies.
opbouwen van de laagst mogelijke korrel
het datawarehouse moet altijd worden gebouwd op facttabellen die worden uitgedrukt met de laagst mogelijke korrel. In het voorbeeld, de piep van de supermarkt kassa is de laagst mogelijke graan omdat het niet verder kan worden verdeeld. Fact tabellen op de laagste korrel zijn de meest expressieve omdat ze de meest complete set van mogelijke dimensies voor dat bedrijfsproces. De beep grain fact table Kan Datum, winkel, Product, kassier, Manager, klant, promotie, concurrentie, mand en zelfs weer hebben als al deze gegevensbronnen kunnen worden marshaled wanneer de fact records worden gemaakt. Hogere graangeaggregeerde tabellen, zoals categorie verkoop per district kunnen niet al deze dimensies ondersteunen en zijn daarom veel minder expressief. Het is een fundamentele fout om alleen geaggregeerde tabellen te publiceren aan de eindgebruikers zonder het maken van de laagste graan fact tabellen soepel toegankelijk door het boren naar beneden. De meeste van de valse noties dat dimensionale tabellen veronderstellen de zakelijke vraag komen uit het maken van deze fundamentele fout.
drie soorten feiten tabellen
als u trouw blijft aan de korrel, dan kunnen al uw feiten tabellen worden gegroepeerd in slechts drie soorten: transactie korrel, periodieke snapshot korrel en accumulerende snapshot korrel (de drie soorten worden getoond in Figuur 1). In Figuur 1 worden de dimensies aangeduid met FK (foreign key) en worden de numerieke feiten cursief weergegeven.
De transactiekorrel komt overeen met een meting op een enkel moment. De supermarkt piep is een transactie graan. De gemeten feiten zijn alleen geldig voor dat moment en voor die gebeurtenis. De volgende meting kan een milliseconde later of volgende maand of nooit gebeuren. Zo zijn transaction grain fact tables onvoorspelbaar schaars of dicht. We hebben geen garantie dat alle mogelijke buitenlandse sleutels zullen worden vertegenwoordigd. Transaction grain fact tabellen kunnen enorm zijn, met de grootste met vele miljarden records.
De periodieke snapshot korrel komt overeen met een vooraf bepaalde tijdspanne, vaak een financiële rapportageperiode. Figuur 1 illustreert een maandelijkse periodieke momentopname. De gemeten feiten vatten activiteit tijdens of aan het einde van de periode samen. De periodieke snapshot grain biedt een krachtige garantie dat alle rapporterende entiteiten (zoals de bankrekening in Figuur 1) in elke snapshot zullen verschijnen, zelfs als er geen activiteit is. De periodieke snapshot is voorspelbaar dicht, en toepassingen kunnen erop vertrouwen dat combinaties van sleutels altijd aanwezig zijn. Periodieke snapshot fact tables kunnen ook groot worden. Een bank met 20 miljoen rekeningen en een 10-jarige geschiedenis zou hebben 2.4 miljard records in de maandelijkse rekening periodieke snapshot!
de accumulerende snapshot fact table komt overeen met een voorspelbaar proces dat een goed gedefinieerd begin en einde heeft. Orderverwerking, schadeverwerking, service call resolution en college opnames zijn typische kandidaten. De korrel van een accumulerende snapshot voor orderverwerking, bijvoorbeeld, is meestal het regelitem op de bestelling. Merk in Figuur 1 op dat er meerdere datums zijn die het standaardscenario weergeven dat een bestelling ondergaat. Accumulerende snapshot-records worden opnieuw bekeken en overschreven naarmate het proces vordert door de stappen van begin tot eind. Accumulerende snapshot fact tabellen zijn over het algemeen veel kleiner dan de andere twee types als gevolg van deze overschrijvingsstrategie.