Share via


Dimensionale modellering in Microsoft Fabric Warehouse: Feitentabellen

Van toepassing op:✅ SQL Analytics-eindpunt en -magazijn in Microsoft Fabric

Notitie

Dit artikel maakt deel uit van de dimensionale modelleringsreeks van artikelen. Deze reeks is gericht op richtlijnen en aanbevolen procedures voor ontwerpen met betrekking tot dimensionale modellering in Microsoft Fabric Warehouse.

Dit artikel bevat richtlijnen en aanbevolen procedures voor het ontwerpen van feitentabellen in een dimensional model. Het biedt praktische richtlijnen voor Warehouse in Microsoft Fabric. Dit is een ervaring die veel T-SQL-mogelijkheden ondersteunt, zoals het maken van tabellen en het beheren van gegevens in tabellen. U hebt dus volledige controle over het maken van uw dimensionale modeltabellen en het laden ervan met gegevens.

Notitie

In dit artikel verwijst de term datawarehouse naar een datawarehouse voor ondernemingen, dat een uitgebreide integratie van kritieke gegevens in de hele organisatie biedt. Het zelfstandige termenwarehouse verwijst daarentegen naar een Fabric Warehouse, een saaS-aanbieding (software as a service) voor relationele databases die u kunt gebruiken om een datawarehouse te implementeren. Voor de duidelijkheid wordt in dit artikel het laatste genoemd als Fabric Warehouse.

Tip

Als u onervaren bent met dimensionale modellering, kunt u deze reeks artikelen overwegen als eerste stap. Het is niet bedoeld om een volledige discussie te bieden over dimensionale modelleringsontwerpen. Raadpleeg voor meer informatie rechtstreeks gepubliceerde inhoud, zoals The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling (3e editie, 2013) door Ralph Kimball en anderen.

In een dimensional model slaat een feitentabel metingen op die zijn gekoppeld aan waarnemingen of gebeurtenissen. Het kan verkooporders, aandelensaldi, wisselkoersen, temperatuurmetingen en meer opslaan.

Feitentabellen omvatten metingen, die doorgaans numerieke kolommen zijn, zoals de hoeveelheid verkooporders. Analytische query's geven een overzicht van metingen (met behulp van som, aantal, gemiddelde en andere functies) binnen de context van dimensiefilters en groeperingen.

Feitentabellen bevatten ook dimensiesleutels, die de dimensionaliteit van de feiten bepalen. De dimensiesleutelwaarden bepalen de granulariteit van de feiten. Dit is het atomische niveau waarop feiten worden gedefinieerd. Met een orderdatumdimensiesleutel in een feitentabel verkoop wordt bijvoorbeeld de granulariteit van de feiten op datumniveau ingesteld, terwijl met een dimensiesleutel voor de doeldatum in een feitentabel voor verkoopdoel de granulariteit op kwartaalniveau kan worden ingesteld.

Notitie

Hoewel het mogelijk is om feiten met een hogere granulariteit op te slaan, is het niet eenvoudig om meetwaarden op te splitsen naar lagere granulariteitsniveaus (indien nodig). Gegevensvolumes, samen met analytische vereisten, kunnen geldige redenen bieden om hogere granulariteitsfeits op te slaan, maar ten koste van gedetailleerde analyse.

Als u feitentabellen gemakkelijk wilt identificeren, moet u meestal hun namen vooraf laten gaan door f_ of Fact_.

Feitentabelstructuur

Als u de structuur van een feitentabel wilt beschrijven, bekijkt u het volgende voorbeeld van een tabel met verkoopfeit met de naam f_Sales. In dit voorbeeld worden goede ontwerpprocedures toegepast. Elk van de groepen kolommen wordt beschreven in de volgende secties.

CREATE TABLE f_Sales
(
    --Dimension keys
    OrderDate_Date_FK INT NOT NULL,
    ShipDate_Date_FK INT NOT NULL,
    Product_FK INT NOT NULL,
    Salesperson_FK INT NOT NULL,
    <…>
    
    --Attributes
    SalesOrderNo INT NOT NULL,
    SalesOrderLineNo SMALLINT NOT NULL,
    
    --Measures
    Quantity INT NOT NULL,
    <…>
    
    --Audit attributes
    AuditMissing BIT NOT NULL,
    AuditCreatedDate DATE NOT NULL,
    AuditCreatedBy VARCHAR(15) NOT NULL,
    AuditLastModifiedDate DATE NOT NULL,
    AuditLastModifiedBy VARCHAR(15) NOT NULL
);

Primaire sleutel

Zoals het geval is in het voorbeeld, heeft de voorbeeld-feitentabel geen primaire sleutel. Dat komt doordat het meestal geen nuttig doel biedt en de tabelopslag onnodig vergroot. Een primaire sleutel wordt vaak geïmpliceerd door de set dimensiesleutels en kenmerken.

Dimensiesleutels

De voorbeeldfeittabel heeft verschillende dimensiesleutels, die de dimensionaliteit van de feitentabel bepalen. Dimensiesleutels zijn verwijzingen naar de surrogaatsleutels (of kenmerken op een hoger niveau) in de gerelateerde dimensies.

Notitie

Het is een ongebruikelijke feitentabel die niet ten minste één datumdimensiesleutel bevat.

Een feitentabel kan meerdere keren verwijzen naar een dimensie. In dit geval wordt het een rolspeldimensie genoemd. In dit voorbeeld bevat de feitentabel de OrderDate_Date_FK sleutels en ShipDate_Date_FK dimensiesleutels. Elke dimensiesleutel vertegenwoordigt een afzonderlijke rol, maar er is slechts één fysieke datumdimensie.

Het is een goede gewoonte om elke dimensiesleutel in te stellen als NOT NULL. Tijdens het laden van de feitentabel kunt u speciale dimensieleden gebruiken om ontbrekende, onbekende, N/B- of foutstatussen te vertegenwoordigen (indien nodig).

Kenmerken

De voorbeeldfeittabel heeft twee kenmerken. Kenmerken bieden aanvullende informatie en stellen de granulariteit van feitengegevens in, maar ze zijn geen dimensiesleutels, noch dimensiekenmerken, noch metingen. In dit voorbeeld slaan kenmerkkolommen verkoopordergegevens op. Andere voorbeelden zijn traceringsnummers of ticketnummers. Voor analysedoeleinden kan een kenmerk een ontaarde dimensie vormen.

Metingen

De voorbeeldfeittabel bevat ook metingen, zoals de Quantity kolom. Maateenheidkolommen zijn doorgaans numeriek en vaak additief (wat betekent dat ze kunnen worden opgeteld en samengevat met behulp van andere aggregaties). Zie Meettypen verderop in dit artikel voor meer informatie.

Kenmerken controleren

De voorbeeld-feitentabel heeft ook verschillende auditkenmerken. Controlekenmerken zijn optioneel. Hiermee kunt u bijhouden wanneer en hoe feitenrecords zijn gemaakt of gewijzigd, en ze kunnen diagnostische of probleemoplossingsinformatie bevatten die wordt gegenereerd tijdens ETL-processen (Extract, Transform en Load). U wilt bijvoorbeeld bijhouden wie (of welk proces) een rij heeft bijgewerkt en wanneer. Controlekenmerken kunnen ook helpen bij het diagnosticeren van een lastig probleem, bijvoorbeeld wanneer een ETL-proces onverwacht stopt.

Grootte van feitentabel

Feitentabellen variëren in grootte. De grootte komt overeen met de dimensionaliteit, granulariteit, het aantal metingen en de hoeveelheid geschiedenis. In vergelijking met dimensietabellen zijn feitentabellen smaller (minder kolommen) maar groot of zelfs immens in termen van rijen (meer dan miljarden).

Concepten voor feitenontwerp

In deze sectie worden verschillende concepten voor feitenontwerp beschreven.

Feitentabeltypen

Er zijn drie typen feitentabellen:

  • Feitentabellen voor transacties
  • Periodieke feitentabellen voor momentopnamen
  • Feitentabellen voor momentopnamen accumuleren

Feitentabellen voor transacties

In een feitentabel voor transacties worden zakelijke gebeurtenissen of transacties opgeslagen. In elke rij worden feiten opgeslagen in termen van dimensiesleutels en metingen, en eventueel andere kenmerken. Alle gegevens zijn volledig bekend wanneer ze worden ingevoegd en worden nooit gewijzigd (behalve om fouten te corrigeren).

Transactiefeittabellen slaan doorgaans feiten op op het laagst mogelijke granulariteitsniveau en bevatten metingen die additief zijn voor alle dimensies. Een tabel met verkoopfeit waarin elke verkooporderregel wordt opgeslagen, is een goed voorbeeld van een feitentabel voor transacties.

Periodieke feitentabellen voor momentopnamen

In een periodieke momentopname-feitentabel worden metingen opgeslagen op een vooraf gedefinieerd tijdstip of specifieke intervallen. Het biedt een overzicht van belangrijke metrische gegevens of prestatie-indicatoren in de loop van de tijd. Dit is dus handig voor trendanalyse en het controleren van wijzigingen in de loop van de tijd. Metingen zijn altijd semi-additief (later beschreven).

Een feitentabel inventaris is een goed voorbeeld van een periodieke momentopnametabel. Het wordt elke dag geladen met de voorraadbalans van het einde van de dag van elk product.

Periodieke momentopnametabellen kunnen worden gebruikt in plaats van een transactie-feitentabel bij het vastleggen van grote hoeveelheden transacties is duur en biedt geen ondersteuning voor nuttige analysevereisten. Er kunnen bijvoorbeeld miljoenen aandelenbewegingen in een dag zijn (die kunnen worden opgeslagen in een transactie-feitentabel), maar uw analyse houdt zich alleen bezig met trends van voorraadniveaus voor het einde van de dag.

Feitentabellen voor momentopnamen accumuleren

In een momentopnametabel worden metingen opgeslagen die zich verzamelen over een goed gedefinieerde periode of werkstroom. Het registreert vaak de status van een bedrijfsproces in verschillende fasen of mijlpalen, wat dagen, weken of zelfs maanden kan duren.

Een feitenrij wordt kort na de eerste gebeurtenis in een proces geladen en vervolgens wordt de rij in een voorspelbare volgorde bijgewerkt telkens wanneer een mijlpaalgebeurtenis plaatsvindt. Updates worden voortgezet totdat het proces is voltooid.

De feitentabel voor momentopnamen accumuleren heeft meerdere datumdimensiesleutels, die elk een mijlpaal gebeurtenis vertegenwoordigen. Bij sommige dimensiesleutels kan een N/B-status worden vastgelegd totdat het proces op een bepaalde mijlpaal aankomt. Metingen registreren doorgaans duur. Duur tussen mijlpalen kan waardevol inzicht bieden in een zakelijke werkstroom of assemblyproces.

Maateenheidtypen

Metingen zijn doorgaans numeriek en vaak additief. Sommige metingen kunnen echter niet altijd worden toegevoegd. Deze metingen worden gecategoriseerd als semi-additief of niet-additief.

Additieve metingen

Een additieve meting kan worden opgeteld in elke dimensie. Orderhoeveelheid en omzetomzet zijn bijvoorbeeld additieve maatregelen (mits de omzet wordt geregistreerd voor één valuta).

Semi-additieve metingen

Een semi-additieve meting kan alleen worden opgeteld voor bepaalde dimensies.

Hier volgen enkele voorbeelden van semi-additieve metingen.

  • Elke meting in een periodieke feitentabel voor momentopnamen kan niet worden opgeteld voor andere perioden. U moet bijvoorbeeld niet de leeftijd optellen van een inventarisitem dat 's nachts wordt genomen, maar u kunt de leeftijd van alle voorraaditems op een plank optellen, elke nacht.
  • Een voorraadsaldometing in een feitentabel voor voorraad kan niet worden opgeteld voor andere producten.
  • Verkoopopbrengsten in een feitentabel met een valutadimensiesleutel kunnen niet worden opgeteld in verschillende valuta's.

Niet-additieve metingen

Een niet-additieve meting kan niet worden opgeteld in een dimensie. Een voorbeeld is een temperatuurleesfunctie, die volgens de aard niet zinvol is om aan andere metingen toe te voegen.

Andere voorbeelden zijn tarieven, zoals eenheidsprijzen en verhoudingen. Het wordt echter beschouwd als een betere procedure om de waarden op te slaan die worden gebruikt om de verhouding te berekenen, waardoor de verhouding indien nodig kan worden berekend. Een kortingspercentage van een verkoopfeit kan bijvoorbeeld worden opgeslagen als een maateenheid voor het kortingsbedrag (te delen door de verkoopomzetmeting). Of de leeftijd van een voorraaditem op de plank mag niet in de loop van de tijd worden opgeteld, maar u ziet mogelijk een trend in de gemiddelde leeftijd van voorraaditems.

Hoewel sommige metingen niet kunnen worden opgeteld, zijn ze nog steeds geldige metingen. Ze kunnen worden geaggregeerd met behulp van aantallen, afzonderlijke aantallen, minimum, maximum, gemiddelde en andere. Bovendien kunnen niet-additieve metingen additief worden wanneer ze worden gebruikt in berekeningen. Zo produceert de eenheidsprijs vermenigvuldigd met orderhoeveelheid omzet, wat additief is.

Feitentabellen zonder feiten

Wanneer een feitentabel geen metingkolommen bevat, wordt deze een feitloze feitentabel genoemd. Een feitentabel registreert meestal gebeurtenissen of gebeurtenissen, zoals leerlingen/studenten die les bijwonen. Vanuit analyseperspectief kan een meting worden bereikt door feitenrijen te tellen.

Feitentabellen aggregeren

Een statistische feitentabel vertegenwoordigt een samenteling van een basisfeittabel naar een lagere dimensionaliteit en/of hogere granulariteit. Het doel hiervan is om de queryprestaties voor veelgebruikte querydimensies te versnellen.

Notitie

Een semantisch Power BI-model kan door de gebruiker gedefinieerde aggregaties genereren om hetzelfde resultaat te bereiken of de feitentabel van het datawarehouse gebruiken met behulp van de DirectQuery-opslagmodus.

In het volgende artikel in deze reeks vindt u informatie over richtlijnen en aanbevolen procedures voor het ontwerpen van dimensionale modeltabellen.