Denormalisering

Transformera och analysera data med Microsoft Fabric

Luis Silva

Solution Architect - Data & AI

Vad är normalisering?

  • Organiserar data för att minska redundans och öka integritet
  • Baseras på principer som formulerades 1970 av datavetaren Ted Codd, upphovsman till den relationella modellen
  • Tredje normalform (3NF): Icke-nyckelattribut beror enbart på primärnyckeln
Transformera och analysera data med Microsoft Fabric

Vad är normalisering?

  • Normalisering uppnås genom att använda nycklar och nya tabeller för att ersätta attribut som annars leder till dataredundans.

 

Diagram som illustrerar konceptet att dela upp en tabell i tre för att minska redundans

Transformera och analysera data med Microsoft Fabric

Normaliseringsexempel

Exempeltabell med tv-spel och tillhörande utgivare och genrer. Exempelrad: Spieltitel Gran Turismo, Utgivare Sony, Genre Racing

  • Många upprepade textvärden för publisher och genre.
Transformera och analysera data med Microsoft Fabric

Normaliseringsexempel

Exempeltabell med tv-spel och tillhörande utgivare och genrer. Textbeskrivningarna för utgivare och genrer har flyttats till separata tabeller och textvärdena i speltabellen har ersatts med numeriska ID:n som refererar till separata utgivar- och genretabeller

  • Textvärden för publisher och genre förekommer nu bara en gång.
  • Numeriska nycklar som ersätter publisher och genre i tabellen Games tar mindre plats
Transformera och analysera data med Microsoft Fabric

Denormalisering

  • Denormalisering använder redundans för att platta ut datamodellen – det är motsatsen till normalisering
  • Denormalisering leder till färre tabeller på bekostnad av ökad redundans

Diagram som illustrerar konceptet att slå ihop flera tabeller till en

Transformera och analysera data med Microsoft Fabric

När bör du använda normalisering?

  • OLTP-transaktionssystem

    • Optimerar för dataskrivningar (enskilda inserts, updates och deletes)
    • Säkerställer dataintegritet
  • Faktatabeller

    • Miljontals rader
    • Minskar lagringsutrymme
    • Gör modellen enklare att förstå
    • Grund för stjärnschemat

 

Diagram över ett stjärnschema med faktatabellen markerad

Transformera och analysera data med Microsoft Fabric

När bör du använda denormalisering?

  • Dimensionstabeller
    • Generellt mycket mindre än faktatabeller
    • Redundans = Färre joins = Snabbare frågor
    • Förbättrad frågeprestanda väger tyngre än kostnaden för redundant data
    • Stjärnschema är enklare än snöflingaschema

 

Diagram över ett stjärnschema med dimensionstabellerna markerade

Transformera och analysera data med Microsoft Fabric

Implementera denormalisering

 

 

Ikoner som representerar tre verktyg: SQL, Spark och Dataflows

Transformera och analysera data med Microsoft Fabric

Implementera denormalisering med SQL

  • SELECT + JOIN-sats
-- [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
Transformera och analysera data med Microsoft Fabric

Implementera denormalisering med Spark

  • DataFrame join( ) och 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()
Transformera och analysera data med Microsoft Fabric

Implementera denormalisering med Dataflows

  • Använd frågor för att läsa in data
  • Använd transformationerna Merge queries eller Merge queries as new för att sammanfoga frågorna

Skärmdump av ett dataflöde som använder Merge queries as new för att sammanfoga frågorna videogames, genres och publishers

Transformera och analysera data med Microsoft Fabric

Nu kör vi en övning!

Transformera och analysera data med Microsoft Fabric

Preparing Video For Download...