การสร้าง DAX Measures ใน Power BI

การสร้าง DAX Measures ใน Power BI
Measures เป็นเรื่องสำคัญเรื่องหนึ่งที่คนเริ่มต้นกับ Power BI อาจจะยังไม่เข้าใจหลักการและการใช้งาน ในบทความนี้เราจะมาเรียนรู้การสร้าง Measures กันสำหรับการทำงานกับ Power BI, Power Pivot, SQL Analysis Service Tabular Data Model นั้น DAX (Data Analysis Expression) การคำนวณมีด้วยกัน 3 ประเภทคือ Column, Measures และ Table ซึ่งสามารถดูรายละเอียดในบทความ DAX Measures และ Calculated Columns
รู้จักกับ DAX Measures
Measures ใช้สำหรับการทำงานด้าน Data Analysis เพื่อทำการคำนวณต่าง ๆ มักจะไปใช้กับการทำ Aggregation ต่าง ๆ การคำนวณที่ซับซ้อน การหา Percentage ซึ่การทำงานจะรวดเร็ว ไม่ทำให้ไฟล์ใหญ่ขึ้น ซึ่งใน Power BI จะมีการสร้าง Automatic Measures ให้อัตโนมัติ สำหรับ Field ที่เป็นตัวเลข ก็จะมีการทำ Summarization ด้วยสูตร SUM และจะมีเครื่องหมาย ∑ นำหน้า ซึ่งจะเรียกว่า Implicit Measure แต่หากเราสร้างเองก็จะเรียกว่า Explicit Measureสัญลักษณ์ที่แสดงใน Field List จะแสดงให้เห็นสัญลักษณ์ดังนี้

ข้อแนะนำในการนำ DAX Measure ไปใช้งาน
- นำไปใช้สร้างการคำนวณกลุ่ม Aggregate เช่น SUM, COUNT, MAX, MIN หรือ SUMX, COUNTX, RANKX เป็นต้น
- การคำนวณซับซ้อน
- การคำนวณ Percentage การคำนวณ Ratio
- Time Intelligence
รูปแบบของ DAX Measure
MeasureName = DAX expression for measureตัวอย่างเช่น
Margin % = SUM(Orders[Margin])/SUM(Orders[NetSales]))
การสร้าง DAX Measure
ขั้นตอนการสร้าง Measure สามารถทำได้ดังนี้- คลิกที่มุมมอง Report View
- ป้าย Modeling
- คลิก New measure

หรือ ที่ มุมมอง Data View และ Model View จะอยู่ที่ป้าย Table tools

จากนั้นทำการใส่สูตรการคำนวณ โดยในตัวอย่างนี้ เป็นการสร้าง measures ชื่อ Total Sales เพื่อทำการคำนวณนำเอา ราคาต่อหน่วย [UnitPrice] คูณ กับ จำนวนหน่วย [Quantity] และลด ส่วนลด [Discount] โดยคูณด้วย 1-[Discount]
Total Sale = SUMX(Orders,[UnitPrice]*[Quantity]*(1-[Discount]))
Total Sale = SUMX(Orders,[UnitPrice]*[Quantity]*(1-[Discount]))

ดูรายละเอียดการคำนวณสูตร SUMX ของ DAX ที่บทความ ฟังก์ชัน SUMX ของ DAX
หาก สร้าง Measure ที่อยู่ใน Table Sales จะสามารถเขียนแบบย่อได้คือ
Total Sales = SUM([Sale Amount])
แต่หากอยู่คนละ Table จำเป็นต้องเขียนแบบเต็ม (Full Qualification) ดังนี้
Total Sales = SUM(Sales[Sale Amount])
การกำหนด Home Table ให้ Measure
Home Table เป็นเสมือนตารางที่เป็นที่เก็บของ Measures นั้น โดยหาก Measures อยู่ใน Table ใด สามารถอ้างถึง Column โดยไม่ต้องระบุชื่อ Table ได้ เช่นหาก สร้าง Measure ที่อยู่ใน Table Sales จะสามารถเขียนแบบย่อได้คือ
Total Sales = SUM([Sale Amount])
แต่หากอยู่คนละ Table จำเป็นต้องเขียนแบบเต็ม (Full Qualification) ดังนี้
Total Sales = SUM(Sales[Sale Amount])
ขั้นตอนการสร้าง Home Table

การกำหนด Home Table ให้ Measure ทำได้ดังนี้
การกำหนด Display Folder ทำได้ดังนี้
ดังตัวอย่างในวิดีโอนี้
- คลิกเลือก Measures ที่ต้องการ
- ป้าย Measure tool
- เลือก Home table ไปยัง ตาราง ที่ต้องการ
การกำหนด Display Folder ให้ Measure
Display folder จะทำให้การจัดเก็บ Measure เป็นระเบียบ ไม่ปะปนกับ Field ของ ข้อมูลทำให้เรียกใช้ได้ง่าย และยังบริหารจัดการได้สะดวกการกำหนด Display Folder ทำได้ดังนี้
- ที่มุมมอง Model View
- คลิกที่ Measure ที่ต้องการกำหนด Display Folder
- กำหนด Display Folder ใน Properties Pane
ดังตัวอย่างในวิดีโอนี้

การกำหนด Formatting ให้ Measure
การกำหนดรูปแบบการแสดงผลของการคำนวณใน Measure ก็จำเป็นจะต้องกำหนดรูปแบบ (Formatting) และ Data Type ที่เหมาะสม กับข้อมูล เพื่อจะได้นำไปใช้ในการสร้างรายงาน (Report) ของ Power BI ต่อไป
การกำหนด Formatting ให้ Measure ทำได้ดังนี้
NetSale = Sales[SaleAmount]*[1-Sales[Discount])
SaleCost = Sales[CostPrice]*Sales[Quantity]
Margin = Sales[NetSale] – Sales[SaleCost]
ในกรณีนี้จะแนะนำให้สร้างด้วย Measures เพราะจะไม่ใช้ Memory และ Disk โดยเฉพาะอย่างยิ่งในกรณีที่ข้อมูลเรามีจำนวนมาก ๆ จะมีผลความแตกต่างในเรื่องของขนาดไฟล์และประสิทธิภาพได้
ในหลักสูตร Data Analysis Expression (DAX) for Power BI (2 Days)
- คลิกเลือก Measures ที่ต้องการ
- ป้าย Measure tool
- เลือก Formatting ที่ต้องการ เช่น กำหนดจำนวนทศนิยมกี่ตำแหน่ง เป็นต้น
DAX Measure จะช่วยเรื่องประสิทธิภาพได้
การคำนวณใน DAX นั้นเราอาจจะต้องเลือกว่าเราจะสร้างด้วย Calculated Column หรือ Measures ซึ่งในบางลักษณะของการคำนวณ อาจจะใช้ได้ทั้ง Calculated Column และ Measure แต่เราควรจะเลือกให้เหมาะสม ยกตัวอย่างเช่น การคำนวณ กำไร (Margin) ซึ่งก็คือ เอายอดขาย (SaleAmount) ลบกับ ต้นทุน (Cost) หากคำนวณแบบ Calculated Column เทียบกับ Measureสร้างด้วย Calculated Column
SaleAmount = Sales[UnitPrice]*Sales[Quantity]NetSale = Sales[SaleAmount]*[1-Sales[Discount])
SaleCost = Sales[CostPrice]*Sales[Quantity]
Margin = Sales[NetSale] – Sales[SaleCost]
สร้างด้วย Measure
Margin = SUMX( Sales, (( [UnitPrice]* 1-[Discount])- [CostPrice] ) * [Quantity] )ในกรณีนี้จะแนะนำให้สร้างด้วย Measures เพราะจะไม่ใช้ Memory และ Disk โดยเฉพาะอย่างยิ่งในกรณีที่ข้อมูลเรามีจำนวนมาก ๆ จะมีผลความแตกต่างในเรื่องของขนาดไฟล์และประสิทธิภาพได้
แนะนำหลักสูตรการอบรม
เรียนรู้คำสั่ง DAX เพื่อใช้งานด้าน Data Analysis, Data Analytic, BI โดยใช้ Power BIในหลักสูตร Data Analysis Expression (DAX) for Power BI (2 Days)
และมีหลักสูตรการอบรมเกี่ยวกับ Power BI เพิ่มเติมดังนี้ :
- Power BI Desktop for Business Analytics (2 Days)
- Power BI Advanced Visualization and AI (2 Days)
- Power BI Advanced Power Query (2 Days)
- Data Model for Power BI (2 Days)
หรือรูปแบบ Online ที่
Microsoft Power BI for Business Analytics (64 บทเรียน)