Data Denormalization

การแปลงและวิเคราะห์ข้อมูลด้วย Microsoft Fabric

Luis Silva

Solution Architect - Data & AI

Normalization คืออะไร?

  • จัดระเบียบข้อมูลเพื่อลดความซ้ำซ้อนและเพิ่มความถูกต้อง
  • อิงหลักการที่ Tedd Codd นักวิทยาการคอมพิวเตอร์ผู้คิดค้น relational model วางไว้ในปี 1970
  • Third Normal Form (3NF): แอตทริบิวต์ที่ไม่ใช่คีย์ขึ้นอยู่กับ primary key เท่านั้น
การแปลงและวิเคราะห์ข้อมูลด้วย Microsoft Fabric

Normalization คืออะไร?

  • Normalization ทำได้โดยใช้คีย์และตารางใหม่แทนแอตทริบิวต์ที่อาจก่อให้เกิดความซ้ำซ้อนของข้อมูล

 

ไดอะแกรมแสดงแนวคิดการแบ่งตารางออกเป็นสามตารางเพื่อลดความซ้ำซ้อน

การแปลงและวิเคราะห์ข้อมูลด้วย Microsoft Fabric

ตัวอย่าง Normalization

ตารางตัวอย่างที่แสดงชื่อวิดีโอเกมพร้อมผู้เผยแพร่และประเภท แถวตัวอย่าง: ชื่อเกม Gran Turismo, ผู้เผยแพร่ Sony, ประเภท Racing

  • ค่าของ publisher และ genre มีข้อความซ้ำกันจำนวนมาก
การแปลงและวิเคราะห์ข้อมูลด้วย Microsoft Fabric

ตัวอย่าง Normalization

ตารางตัวอย่างที่แสดงชื่อวิดีโอเกมพร้อมผู้เผยแพร่และประเภท โดยย้ายข้อความของผู้เผยแพร่และประเภทไปไว้ในตารางแยก และแทนที่ด้วย ID ตัวเลขที่อ้างอิงตาราง master ของผู้เผยแพร่และประเภท

  • ค่าข้อความของ publisher และ genre ปรากฏเพียงครั้งเดียว
  • คีย์ตัวเลขที่ใช้แทน publisher และ genre ในตาราง Games ใช้พื้นที่น้อยกว่า
การแปลงและวิเคราะห์ข้อมูลด้วย Microsoft Fabric

Denormalization

  • Denormalization ใช้ความซ้ำซ้อนเพื่อทำให้โมเดลข้อมูลแบนลง ซึ่งเป็นสิ่งตรงข้ามกับ Normalization
  • Denormalization ทำให้จำนวนตารางลดลง แต่แลกมาด้วยความซ้ำซ้อนที่เพิ่มขึ้น

ไดอะแกรมแสดงแนวคิดการรวมหลายตารางเข้าเป็นตารางเดียว

การแปลงและวิเคราะห์ข้อมูลด้วย Microsoft Fabric

ควรใช้ Normalization เมื่อใด?

  • ระบบ OLTP transactional

    • เพิ่มประสิทธิภาพการเขียนข้อมูล (INSERT, UPDATE และ DELETE รายการ)
    • รับประกันความถูกต้องของข้อมูล
  • Fact tables

    • ข้อมูลหลายล้านแถว
    • ลดพื้นที่จัดเก็บ
    • ทำให้โมเดลเข้าใจง่ายขึ้น
    • เป็นพื้นฐานของ star schema

 

ไดอะแกรม star schema ที่เน้น fact table

การแปลงและวิเคราะห์ข้อมูลด้วย Microsoft Fabric

ควรใช้ Denormalization เมื่อใด?

  • Dimension tables
    • โดยทั่วไปมีขนาดเล็กกว่า fact tables มาก
    • ความซ้ำซ้อน = JOIN น้อยลง = คิวรีเร็วขึ้น
    • ประสิทธิภาพคิวรีที่ดีขึ้นคุ้มค่ากว่าต้นทุนการจัดเก็บข้อมูลซ้ำซ้อน
    • Star schema ง่ายกว่า snowflake schema

 

ไดอะแกรม star schema ที่เน้น dimension tables

การแปลงและวิเคราะห์ข้อมูลด้วย Microsoft Fabric

การนำ Denormalization ไปใช้

 

 

ไอคอนแทนเครื่องมือสามอย่าง ได้แก่ SQL, Spark และ Dataflows

การแปลงและวิเคราะห์ข้อมูลด้วย Microsoft Fabric

การนำ Denormalization ไปใช้ด้วย 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

การนำ Denormalization ไปใช้ด้วย 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

การนำ Denormalization ไปใช้ด้วย Dataflows

  • ใช้คิวรีในการโหลดข้อมูล
  • ใช้การแปลง Merge queries หรือ Merge queries as new เพื่อ JOIN คิวรี

ภาพหน้าจอ Dataflow ที่ใช้ Merge queries as new เพื่อ JOIN คิวรี videogames, genres และ publishers

การแปลงและวิเคราะห์ข้อมูลด้วย Microsoft Fabric

มาฝึกกันเถอะ!

การแปลงและวิเคราะห์ข้อมูลด้วย Microsoft Fabric

Preparing Video For Download...