DAX (Data Analysis Expression) ใช้เพื่อการคำนวณใน Data Model
โดย DAX ประกอบด้วย Functions Operation และConstants เพื่อคำนวณและ/หรือแปลงข้อมูลเพื่อสร้าง Measure, Column, Table
ใช้งานได้ในผลิตภัณฑ์ของ Microsoft ดังนี้ Power BI, Excel (Power Pivot), SQL Server
โดยมีสูตรต่าง ๆ มากมาย มีประโยชน์มากในการทำงานเกี่ยวกับ Time Intelligence การสร้าง Date Dimension การคำนวณโดยใช้ Relationships เพื่อเตรียมการคำนวณให้ไปใช้ในการสร้าง Visualization ต่อไป
Column หรือ Measure สร้างอะไรดี
- New Column จะมีการสร้างขึ้นมาจริงใน Data Model โดยการคำนวณขึ้นตอน Refresh Data ซึ่งต้องใช้พื้นที่จัดเก็บจริง ใน Chart ต่างๆใน Report สามารถใช้ในฐานะ Category ได้
- New Measure จะถูกคำนวณใน Report และค่าจะเปลี่ยนไปจามการ Filter ที่เปลี่ยนไป เมื่อ Filter เปลี่ยนจะมีการคำนวณใหม่ตลอด
Functions ที่น่าสนใจสำหรับใช้งาน
- Format Number ถ้าต้องการใส่ Format ให้กับตัวเลข เช่น $ ใส่ “,” จุดทศนิยมต้องทำอย่างไร
ต้องทำเป็น Measure ดังนี้
1.1 Click ขวาที่ Table Model และ New measure
1.2 ส่วนหมายเลข 1 แก้ไขชือ Measure
ส่วนหมายเลข 2 Function ที่ต้องการใช้ในที่นี้ใช้ Function Count
ส่วนหมายเลข 3 เลือกรูปแบบการจัด Formate ของตัวเลขตามที่ต้องการ
- RELATED วิธีการดึงข้อมูลจากตารางอื่นๆมาเป็น Column ในตารางที่กำลังทำงานอยู่ โดยการสร้างNew Column แล้วใช้ Function RELATED ดึงข้อมูลจากอีกตารางที่ต้องสร้าง Relationship ไว้แล้วและต้องเป็น Relation ที่ active แบบ One:one หรือ One:Many แต่ความสัมพันธ์แบบ Many:Many จะไม่สามารถทำได้
2.1 สร้าง Column ใหม่
2.2 ใส่ชื่อ Column Name และ Function RELATE(TABLE_NAME[COLUMN NAME]) แล้ว Enter หรือ Click เครื่องหมายถูกด้านหน้า ชื่อ column ในตารางที่เราต้องการก็จะมี Column เพิ่มขึ้นมาอีก 1 Column ตามที่ต้องการ
3. การใช้ IF ใน DAX
IF(<logical_test>, <value_if_true>[, <value_if_false>])
ตัวอย่าง
สัญชาติ = IF(student[Nationality]==”T”,”ไทย”,”ต่างชาติ”)
- การใช้ Switch ใน DAX
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
สถานะไม่ปกติ = SWITCH(student[STATUS_DESC], “ลาออก”,”ลาออก”, “ลาออก (พ้นสภาพฯ)”, “ลาออก”,”ลาออก(พ้นสภาพฯ)”, “ลาออก”,”ไม่มาลงทะเบียน”, “ไม่มาลงทะเบียน”,”ไม่มาลงทะเบียน (พ้นสภาพฯ)”, “ไม่มาลงทะเบียน”,”ไม่มาลงทะเบียน(พ้นสภาพฯ)”, “ไม่มาลงทะเบียน”,””) |
สังเกตุง่ายๆ เป็นการจับคู่ตัวเลขคี่เป็นค่าที่ต้องการแปลงค่า และตัวเลขคู่ที่คู่กันเป็นค่าที่ต้องการจะแปลงให้เป็น และตัวสุดท้ายจะเป็นค่าที่ไม่ตรงกับค่าใดๆที่ได้ตรวจสอบไว้ข้างต้น
Operations
ประกอบด้วย arithmetic, comparison, text concatenation, and logical
Operator type | Symbol and use |
Parenthesis operator | + (addition) – (subtraction/ sign) * (multiplication) / (division) ^ (exponentiation) |
Comparison operators | = (equal to) > (greater than) < (less than) >= (greater than or equal to) <= (less than or equal to) <> (not equal to) |
Text concatenation operator | & (concatenation) |
Logic operators | && (and) || (or) |
DAX Programming
การเขียน Code แบบพื้นฐานดังนี้
- ตัวแปร VAR <name> = <expression>
เป็นการกำหนดตัวแปรที่จะใช้งาน
VAR Number of students = DISTINCTCOUNT(students[student_id]) |
- Return
ส่งค่าออกมาเมื่อมีการคำนวณในการค่า Measure
total Student and Faculty = VAR Number of students = DISTINCTCOUNT(students[student_id]) VAR Number of faculty = DISTINCTCOUNT(students[fac_id]) VAR total = “มีนักศึกษาทั้งหมด” & Number of students & “คน ใน ” & Number of faculty & “ คณะ” RETURN total |
อ้างอิง