Денормалізація даних

Перетворення та аналіз даних у Microsoft Fabric

Luis Silva

Solution Architect - Data & AI

Що таке нормалізація?

  • Упорядкування даних для зменшення надлишковості та підвищення цілісності
  • На основі принципів 1970 року від Теда Кодда, автора реляційної моделі
  • Третя нормальна форма (3NF): неключові атрибути залежать лише від первинного ключа
Перетворення та аналіз даних у Microsoft Fabric

Що таке нормалізація?

  • Нормалізацію досягають за допомогою ключів і нових таблиць, щоб замінити атрибути, які інакше спричинили б надлишковість даних.

 

Схема, що ілюструє поділ таблиці на три для зменшення надлишковості

Перетворення та аналіз даних у Microsoft Fabric

Приклад нормалізації

Зразок таблиці з назвами відеоігор, їх видавцями та жанрами. Приклад рядка: назва гри Gran Turismo, видавець Sony, жанр Racing

  • Багато повторюваних текстових значень у publisher і genre.
Перетворення та аналіз даних у Microsoft Fabric

Приклад нормалізації

Зразок таблиці з назвами відеоігор, видавцями та жанрами. Описові тексти для видавців і жанрів перенесено в окремі таблиці, а текст у таблиці ігор замінено числовими ідентифікаторами, що посилаються на довідники видавців і жанрів

  • Текстові значення publisher і genre тепер з'являються лише один раз.
  • Числові ключі замість publisher і genre в таблиці Games займають менше місця
Перетворення та аналіз даних у Microsoft Fabric

Денормалізація

  • Денормалізація використовує надлишковість, щоб «сплющити» модель даних; це протилежність нормалізації
  • Денормалізація зменшує кількість таблиць ціною більшої надлишковості

Схема, що ілюструє об'єднання кількох таблиць в одну

Перетворення та аналіз даних у Microsoft Fabric

Коли варто застосовувати нормалізацію?

  • Транзакційні системи OLTP

    • Оптимізація під запис даних (окремі insert, update, delete)
    • Забезпечення цілісності даних
  • Факт-таблиці

    • Мільйони рядків
    • Зменшення обсягу зберігання
    • Спрощення розуміння моделі
    • Основа зіркової схеми

 

Схема «зірки» з акцентом на факт-таблиці

Перетворення та аналіз даних у Microsoft Fabric

Коли варто застосовувати денормалізацію?

  • Вимірні таблиці (dimension)
    • Зазвичай значно менші за факт-таблиці
    • Надлишковість = Менше JOIN = Швидші запити
    • Продуктивність запитів переважає вартість зберігання зайвих даних
    • Зіркова схема простіша за «сніжинку»

 

Схема «зірки» з акцентом на вимірних таблицях

Перетворення та аналіз даних у Microsoft Fabric

Реалізація денормалізації

 

 

Піктограми трьох інструментів: SQL, Spark і Dataflows

Перетворення та аналіз даних у Microsoft Fabric

Реалізація денормалізації в SQL

  • Вираз 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
Перетворення та аналіз даних у Microsoft Fabric

Реалізація денормалізації у Spark

  • DataFrame join( ) і 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()
Перетворення та аналіз даних у Microsoft Fabric

Реалізація денормалізації в Dataflows

  • Використовуйте запити для завантаження даних
  • Застосуйте перетворення Merge queries або Merge queries as new для об'єднання запитів

Знімок екрана Dataflow, де використано Merge queries as new для об'єднання запитів videogames, genres і publishers

Перетворення та аналіз даних у Microsoft Fabric

Давайте потренуємось!

Перетворення та аналіз даних у Microsoft Fabric

Preparing Video For Download...