Denormalisatie van data

Gegevens transformeren en analyseren met Microsoft Fabric

Luis Silva

Solution Architect - Data & AI

Wat is normalisatie?

  • Organiseer data om redundantie te verminderen en integriteit te verhogen
  • Gebaseerd op principes uit 1970 van informaticus Tedd Codd, de bedenker van het relationele model
  • Derde normaalvorm (3NF): Niet-sleutelattributen hangen alleen af van de primaire sleutel
Gegevens transformeren en analyseren met Microsoft Fabric

Wat is normalisatie?

  • Normalisatie gebeurt door keys en nieuwe tabellen te gebruiken om attributen te vervangen die anders tot redundantie leiden.

 

Diagram dat laat zien hoe één tabel in drie wordt opgesplitst om redundantie te verminderen

Gegevens transformeren en analyseren met Microsoft Fabric

Voorbeeld normalisatie

Voorbeeldtabel met videogametitels en hun uitgevers en genres. Voorbeeldrij: Speltitel Gran Turismo, uitgever Sony, genre Racing

  • Veel herhaalde tekstwaarden voor publisher en genre.
Gegevens transformeren en analyseren met Microsoft Fabric

Voorbeeld normalisatie

Voorbeeldtabel met videogametitels en hun uitgevers en genres. De tekstomschrijvingen voor uitgevers en genres zijn verplaatst naar aparte tabellen en in de gamestabel vervangen door numerieke ID’s die naar de aparte hoofdtabellen verwijzen

  • Tekstwaarden voor publisher en genre komen nu maar één keer voor.
  • Numerieke keys ter vervanging van publisher en genre in de tabel Games nemen minder ruimte in
Gegevens transformeren en analyseren met Microsoft Fabric

Denormalisatie

  • Denormalisatie gebruikt redundantie om het datamodel te flatten; het is het tegenovergestelde van normalisatie
  • Denormalisatie leidt tot minder tabellen, met meer redundantie als trade-off

Diagram dat laat zien hoe meerdere tabellen in één worden samengevoegd

Gegevens transformeren en analyseren met Microsoft Fabric

Wanneer normaliseren?

  • OLTP-transactionsystemen

    • Geoptimaliseerd voor writes (individuele inserts, updates, deletes)
    • Waarborgen van dataintegriteit
  • Feittabellen

    • Miljoenen rijen
    • Opslagruimte verminderen
    • Model eenvoudiger te begrijpen
    • Basis voor het stermodel

 

Diagram van een stermodel met de feittabel gemarkeerd

Gegevens transformeren en analyseren met Microsoft Fabric

Wanneer denormaliseren?

  • Dimensietabellen
    • Meestal veel kleiner dan feittabellen
    • Redundantie = Minder joins = Snellere queries
    • Betere queryprestaties wegen zwaarder dan opslag van redundante data
    • Stermodel is simpeler dan sneeuwvlokmodel

 

Diagram van een stermodel met de dimensietabellen gemarkeerd

Gegevens transformeren en analyseren met Microsoft Fabric

Denormalisatie implementeren

 

 

Pictogrammen van drie tools: SQL, Spark en Dataflows

Gegevens transformeren en analyseren met Microsoft Fabric

Denormalisatie met SQL

  • SELECT + JOIN-statement
-- [dim_videogames]: Videogames table
-- [dim_genres]: Genres table
-- [dim_publishers]: Publishers table

SELECT game_id, title, gen.genre, pub.publisher
FROM dim_videogames_norm vidg
JOIN dim_genres gen
  ON vidg.genre_id = gen.genre_id
JOIN dim_publishers pub
  ON vidg.publisher_id = pub.publisher_id
Gegevens transformeren en analyseren met Microsoft Fabric

Denormalisatie met Spark

  • DataFrame join( ) en select( )
# [videogamesDF]: Videogames DataFrame
# [genresDF]: Genres DataFrame
# [publishersDF]: Publishers DataFrame

videogames1DF = videogamesDF.join(genresDF, ["genre_id"])
videogamesdenormDF = videogames1DF.join(publishersDF, ["publisher_id"])
videogamesdenormDF.select("game_id", "title", "genre_id", "publisher_id").show()
Gegevens transformeren en analyseren met Microsoft Fabric

Denormalisatie met Dataflows

  • Gebruik queries om data te laden
  • Gebruik transformaties Merge queries of Merge queries as new om queries te joinen

Screenshot van een Dataflow die ‘Merge queries as new’ gebruikt om de queries videogames, genres en publishers te joinen

Gegevens transformeren en analyseren met Microsoft Fabric

Laten we oefenen!

Gegevens transformeren en analyseren met Microsoft Fabric

Preparing Video For Download...