Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 1

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม

ในที่สุดก็มาถึงตอนที่เป็น Concept สำคัญอีกตอนหนึ่ง นั่นก็คือเรื่องของ Data Model นั่นเอง

ถ้าใครได้ลองทำ Visual ในตอนที่ 4 ก็จะรู้ว่า เราสามารถลาก Field ข้ามตารางมาลงใน Visual ได้ถ้าตารางนั้นได้มีการผูก Relationship กันไว้แล้ว และทิศทางของการ Filter ข้อมูลจะวิ่งตามทิศทางของลูกศรใน Relationship ด้วย

พอพูดถึงเรื่อง Data Model แล้ว การออกแบบ Data Model ที่ดี จะช่วยให้ Performance ของงานเราเร็วขึ้น และสามารถเขียนสูตร DAX ได้ง่ายขึ้นด้วย

Star Schema: Data Model ที่ Power BI ชอบที่สุด

และจากคำแนะนำของกูรูระดับโลกในเรื่อง DAX อย่าง Marco Russo และ Alberto Ferrari ได้แนะนำไว้ว่า Data Model ที่ Power BI ชอบมากที่สุดคือ Data Model ที่เรียกว่า Star Schema ซึ่งมีหน้าตาแบบนี้ครับ

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 2

Star Schema คือรูปแบบที่มีตารางหลัก (เรียกว่าตาราง Fact) อยู่ตรงกลาง แล้วล้อมรอบลากเส้นเชื่อมกับตารางอ้างอิง (เรียกว่าตาราง Dimension)

Tips : ความสัมพันธ์บนเส้นจะมีเลข 1 กับ * ซึ่งมีความหมายดังนี้
(สมมติว่าดูตาราง Product ที่มีตัวเชื่อมกับตาราง fSales เป็น ProductID)

  • 1 คือ ฝั่งที่มีค่า Field ที่เป็น Key ไม่ซ้ำกัน (มี 1 ตัว)
    • อยู่ฝั่ง Dimension เพราะฝั่งนั้น ProductID จะไม่มีทางซ้ำกัน
  • * คือ ฝั่งที่มีค่า Field ที่เป็น Key ซ้ำกันได้
    • อยู่ฝั่ง Fact เพราะ ProductID มีสิทธิ์ซ้ำกันได้ เพราะการขายของแต่ละครั้งก็ขายสินค้าเดียวกันได้จริงมะ

ทีนี้ถ้าเรามาดู Data Model ของเรา ณ ตอนนี้…

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 3

มันก็คล้ายๆ Star Schema อยู่นะ แต่กลายเป็นว่าตาราง Dimension มันซ้อนกันหลายชั้นเลย ออกมาจะคล้ายๆ แบบนี้ เค้าเรียกกันว่าเป็น Model แบบ Snowflake

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 4

ปั้นเกล็ดหิมะให้เป็นดาว

ดังนั้นสิ่งที่เราจะต้องทำคือ แก้ Data Model ของเราจาก Snowflake ให้เป็น Star Schema โดยการรวบตาราง Dimension ที่ซ้อนๆ กันอยู่ให้เหลือแค่ชั้นเดียวพอ ดังนี้

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 5

และวิธีที่จะทำแบบนั้นได้ก็คือการใช้คำสั่ง Merge ใน Power Query นั่นเองครับ ซึ่ง Merge เป็นวิธีการที่สามารถดึงข้อมูลจากอีกตารางนึงมาใส่ในอีกตารางนึงได้ (มองว่าคล้ายๆ VLOOKUP ก็ได้นะ แต่มันไม่เหมือนเป๊ะ)

ดังนั้นเราจะกด Home -> Edit Queries เพื่อเข้าไปแก้ไข Query ของเราซะ

เอาตาราง Geography ไปไว้ในตาราง Stores

เลือกที่ตารางที่ต้องการจะเอาอันอื่นมารวมด้วย นั่นคือตาราง Stores แล้วเลือก Merge Queries ดังรูป

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 6

ตอนแรกข้อมูลคอลัมน์ Geography จะออกมาเป็น Table ก่อน ให้เรากด Expand Data ออกมาว่าจะเอา Field ไหนบ้างดังรูป

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 7

จากนั้นมันจะแตกข้อมูล 3 คอลัมน์นั้นออกมา ต่อไปให้เราลบ Field ชื่อ GeographyKey ออกจากตาราง Stores ซะ เพราะไม่ต้องใช้แล้ว (ก็เราดึงข้อมูลจากตาราง Geography มาแล้วนี่ เลยไม่ต้องมีตัวเชื่อมแล้ว)

แล้วก็เปลี่ยนชื่อ Query ให้เป็น dStores ซะ (ใส่ตัว d นำหน้าจะได้เห็นว่าเป็น Dimension)

จากนั้นสิ่งที่เราต้องทำต่อคือ ตั้งค่าว่าไม่ต้องเอาตาราง Geography ออกไปใน Model แล้วโดยการคลิ๊กขวาแล้วเลือกให้เครื่องหมายถูกหน้า Enable Load หายไปซะ (แปลว่าไม่ต้องโหลด)

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 8

ถ้าเราเคยโหลดข้อมูลออกไปใน Data Model แล้วมาเอา Enable Load ออก มันจะขึ้นข้อความมาเตือนว่าข้อมูลจะหายไปนะ

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 9

ซึ่งก็ให้กด continue ไป เพราะเราต้องการให้ตารางนั้นหายไปนี่แหละ ถูกแล้ว

เอาตาราง ProductSubcategory ไปไว้ในตาราง Product

ต่อไปเราก็จะทำคล้ายๆ เดิม คือ เลือกตาราง Product ก่อน แล้วไปที่ Merge Query กับ ProductSubcategory ก่อน โดยตัวเชื่อมคือ ProductSubcategoryKey

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 10

จากนั้น Expand Data ออกมา เหมือนเดิมจะพบว่าชื่อ Field ProductSubcategory ดันมี .1 ติดมา เป็นเพราะเดิมทีชื่อมันซ้ำกับชื่อตาราง มันเลยงง ดังนั้นให้ดับเบิ้ลคลิ๊กเปลี่ยนชื่อ Field เอา .1 ออกไปด้วยนะ เดี๋ยวไม่สวย

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 11

พอเรามีข้อมล ProductCategoryKey แล้ว เราก็พร้อมที่จะเอาตาราง ProductCategory ไปไว้ในตาราง Product ซะที

เอาตาราง ProductCategory ไปไว้ในตาราง Product

เลือกที่ตาราง Product แล้ว Merge Query เหมือนเดิม โดยตัวเชื่อมคือ ProductCategoryKey

พอ Expand ข้อมูลออกมาแล้ว อย่าลืมเปลี่ยนชื่อ Field ให้เรียบร้อย และลบ Key ที่ไม่ใช้แล้วออกไปซะ เช่น ProductSubcategoryKey และ ProductCategoryKey

จากนั้นเปลี่ยนชื่อ Query นี้เป็น dProduct และเอา Enable Load ของ ProductCategory และ ProductSubcategory ออกไปซะ

สรุปก่อนจะ Close & Apply

  • เราจะไม่โหลด Geography, ProductCategory, ProductSubcategory แล้ว
  • และมีการเปลี่ยนชื่อตาราง Dimension ทั้งหมดให้ขึ้นต้นด้วยตัว d (จะได้เห็นชัดๆ)
  • และชื่อตารางหลักที่เป็น Fact ให้ขึ้นต้นด้วยตัว f
Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 12

จากนั้นกด Close & Apply

จะเห็นว่าตอนนี้เราได้ Data Model แบบ Star Schema เรียบร้อยแล้ววว

Power BI ตอนที่ 08: สร้าง Data Model ที่เหมาะสม 13

แล้ว Data Model มีกี่แบบ?

ในความเป็นจริงแล้ว Data Model ที่จะใช้ใน Power BI ไม่ได้มีแค่ Star Schema นะครับ มันสามารถมีได้อีกหลายอย่างเลย เช่น

  • กรณีที่ต้องมี Fact Table มากกว่า 1 ตัว (เพราะเป็น Fact คนละเรื่องกัน) เราจะพยายามทำให้ใช้ตาราง Dimension ร่วมกัน (เช่น Actual vs Budget หรือ การ Order vs การการขายของ)
  • กรณีที่ตาราง Date อันเดียว เชื่อมกับ Field วันที่หลาย Field ที่อยู่ในตารางเดียวกันก็มีอีก…

แต่สำหรับพื้นฐานสุดๆ ผมแนะนำให้หักใช้ Power BI กับ Model Star Schema ง่ายๆ นี้ก่อนครับ ใครที่สนใจแบบ advance ขึ้นลองดูคลิปของ SQLBI อันนี้ก่อนได้ (ฟรี)

ตอนนี้จบเท่านี้

เดี๋ยวตอนถัดไป เราจะมาสร้างตารางวันที่ด้วยสูตร DAX กันล่ะ!

สารบัญ Series Power BI

ใครสนใจอยากเรียนเป็นคลิปวีดีโอ ผมมี

อบรม In-House Training

Feedback การใช้งาน AI Chatbot