DAX (Data Analysis Expression) ฉบับเริ่มใช้งาน

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 ที่น่าสนใจสำหรับใช้งาน

  1. Format Number ถ้าต้องการใส่ Format ให้กับตัวเลข เช่น $ ใส่ “,” จุดทศนิยมต้องทำอย่างไร 

ต้องทำเป็น Measure ดังนี้
1.1 Click ขวาที่ Table Model และ New measure

1.2 ส่วนหมายเลข 1 แก้ไขชือ Measure
ส่วนหมายเลข 2 Function ที่ต้องการใช้ในที่นี้ใช้ Function Count
ส่วนหมายเลข 3 เลือกรูปแบบการจัด Formate ของตัวเลขตามที่ต้องการ

  1. 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”,”ไทย”,”ต่างชาติ”)

  1. การใช้ Switch ใน DAX
    SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])  
สถานะไม่ปกติ = SWITCH(student[STATUS_DESC],
“ลาออก”,”ลาออก”,
“ลาออก (พ้นสภาพฯ)”,
“ลาออก”,”ลาออก(พ้นสภาพฯ)”,
“ลาออก”,”ไม่มาลงทะเบียน”,
“ไม่มาลงทะเบียน”,”ไม่มาลงทะเบียน (พ้นสภาพฯ)”,
“ไม่มาลงทะเบียน”,”ไม่มาลงทะเบียน(พ้นสภาพฯ)”,
“ไม่มาลงทะเบียน”,””)

สังเกตุง่ายๆ เป็นการจับคู่ตัวเลขคี่เป็นค่าที่ต้องการแปลงค่า และตัวเลขคู่ที่คู่กันเป็นค่าที่ต้องการจะแปลงให้เป็น  และตัวสุดท้ายจะเป็นค่าที่ไม่ตรงกับค่าใดๆที่ได้ตรวจสอบไว้ข้างต้น

Operations 

ประกอบด้วย arithmetic, comparison, text concatenation, and logical

Operator typeSymbol 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 

อ้างอิง

https://docs.microsoft.com/en-us/dax/