การสร้าง 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]))

ดูรายละเอียดการคำนวณสูตร SUMX ของ DAX ที่บทความ ฟังก์ชัน SUMX ของ DAX
การกำหนด 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 ทำได้ดังนี้
คลิกเลือก 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 ทำได้ดังนี้
คลิกเลือก Measures ที่ต้องการ
ป้าย Measure tool
เลือก Formatting ที่ต้องการ เช่น กำหนดจำนวนทศนิยมกี่ตำแหน่ง เป็นต้น
ซึ่งรูปแบบดังกล่าวจะเป็นค่าตั้งต้นในการแสดงผลในการแสดง Report ของ Power BI ต่อไป
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 โดยเฉพาะอย่างยิ่งในกรณีที่ข้อมูลเรามีจำนวนมาก ๆ จะมีผลความแตกต่างในเรื่องของขนาดไฟล์และประสิทธิภาพได้











