Denormalizacja danych

Przekształcanie i analizowanie danych w Microsoft Fabric

Luis Silva

Solution Architect - Data & AI

Czym jest normalizacja?

  • Organizowanie danych w celu ograniczenia redundancji i zwiększenia integralności
  • Oparta na zasadach opracowanych w 1970 r. przez informatyka Tedda Codda, twórcę modelu relacyjnego
  • Trzecia Postać Normalna (3NF): atrybuty niebędące kluczem zależą wyłącznie od klucza głównego
Przekształcanie i analizowanie danych w Microsoft Fabric

Czym jest normalizacja?

  • Normalizację osiąga się poprzez klucze i nowe tabele zastępujące atrybuty, które prowadziłyby do redundancji danych.

 

Diagram ilustrujący podział tabeli na trzy w celu ograniczenia redundancji

Przekształcanie i analizowanie danych w Microsoft Fabric

Przykład normalizacji

Przykładowa tabela z tytułami gier wideo oraz ich wydawcami i gatunkami. Przykładowy wiersz: tytuł Gran Turismo, wydawca Sony, gatunek Racing

  • Wiele powtarzających się wartości tekstowych dla publisher i genre.
Przekształcanie i analizowanie danych w Microsoft Fabric

Przykład normalizacji

Przykładowa tabela z tytułami gier wideo oraz wydawcami i gatunkami. Opisy tekstowe przeniesiono do osobnych tabel, a wpisy w tabeli gier zastąpiono numerycznymi identyfikatorami odwołującymi się do tabel wydawców i gatunków

  • Wartości tekstowe publisher i genre występują teraz tylko raz.
  • Klucze numeryczne zastępujące publisher i genre w tabeli Games zajmują mniej miejsca
Przekształcanie i analizowanie danych w Microsoft Fabric

Denormalizacja

  • Denormalizacja wykorzystuje redundancję do spłaszczenia modelu danych; jest przeciwieństwem normalizacji
  • Denormalizacja prowadzi do mniejszej liczby tabel kosztem zwiększonej redundancji

Diagram ilustrujący łączenie wielu tabel w jedną

Przekształcanie i analizowanie danych w Microsoft Fabric

Kiedy stosować normalizację?

  • Systemy transakcyjne OLTP

    • Optymalizacja zapisu danych (wstawienia, aktualizacje, usunięcia)
    • Zapewnienie integralności danych
  • Tabele faktów

    • Miliony wierszy
    • Zmniejszenie zajmowanego miejsca
    • Uproszczenie modelu
    • Podstawa schematu gwiazdy

 

Diagram schematu gwiazdy z wyróżnioną tabelą faktów

Przekształcanie i analizowanie danych w Microsoft Fabric

Kiedy stosować denormalizację?

  • Tabele wymiarów
    • Zazwyczaj znacznie mniejsze niż tabele faktów
    • Redundancja = mniej złączeń = szybsze zapytania
    • Lepsza wydajność zapytań przeważa koszt przechowywania redundantnych danych
    • Schemat gwiazdy jest prostszy niż schemat płatka śniegu

 

Diagram schematu gwiazdy z wyróżnionymi tabelami wymiarów

Przekształcanie i analizowanie danych w Microsoft Fabric

Implementacja denormalizacji

 

 

Ikony trzech narzędzi: SQL, Spark i Dataflows

Przekształcanie i analizowanie danych w Microsoft Fabric

Denormalizacja w SQL

  • Instrukcja SELECT + JOIN
-- [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
Przekształcanie i analizowanie danych w Microsoft Fabric

Denormalizacja w Spark

  • Metody join( ) i select( ) DataFrame
# [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()
Przekształcanie i analizowanie danych w Microsoft Fabric

Denormalizacja w Dataflows

  • Używanie zapytań do ładowania danych
  • Używanie przekształceń Scal zapytania lub Scal zapytania jako nowe do łączenia zapytań

Zrzut ekranu przepływu danych z użyciem opcji Scal zapytania jako nowe do połączenia zapytań videogames, genres i publishers

Przekształcanie i analizowanie danych w Microsoft Fabric

Czas na ćwiczenia!

Przekształcanie i analizowanie danych w Microsoft Fabric

Preparing Video For Download...