สถาบันข้อมูลขนาดใหญ่ (องค์การมหาชน)

Logo BDI For web

พื้นฐานการใช้งาน Data Analysis Expressions (DAX)

Jan 10, 2022

ในการสร้าง Data Visualization จะต้องมีการจัดการข้อมูลเพื่อให้อยู่ในรูปแบบที่เหมาะสมสำหรับในไปใช้ในการสร้าง Dashboard สำหรับใน Power BI เรามีเครื่องมือที่ใช้ในการจัดการข้อมูลที่เรียกว่า DAX สำหรับบทความนี้ เราจะสำรวจว่า DAX คืออะไร และจัดเตรียมข้อมูลในขั้นลึกขึ้นโดยใช้เครื่องมือตัวนี้กัน

DAX คืออะไร

Data Analysis Expressions หรือที่เรียกกันโดยทั่วไปว่า DAX คือชุดฟังก์ชันเพื่อทำงานกับข้อมูลในผลิตภัณฑ์ของไมโครซอฟต์ เช่น Power Pivot, Power BI และ SQL Analysis Server ชุดฟังก์ชันของ DAX จะคล้ายกับชุดฟังก์ชันที่ใช้งานบนโปรแกรม Excel โดยชุดฟังก์ชันที่ใช้งานบน Excel จะทำงานกับข้อมูลในลักษณะที่เป็น แผ่นงาน (Worksheet), ตาราง (Table) และเซล (Cell) ในขณะที่ชุดฟังก์ชันของ DAX จะทำงานกับข้อมูลในลักษณะที่เป็น ตาราง (Table), คิวรี่ (Query), คอลัมน์ข้อมูล (Column) และแถวข้อมูล (Row) จึงทำให้การออกแบบฟังก์ชันและอากิวเมนต์ของชุดฟังก์ชันของ DAX และชุดฟังก์ชันที่ใช้งานบน Excel แตกต่างกัน ในบทความนี้เราจะพูดถึงสิ่งที่ควรทราบในการใช้งานชุดฟังก์ชันของ DAX และพื้นฐานในการใช้งานชุดฟังก์ชันของ DAX โดยอ้างอิงการใช้งานในโปรแกรม Power BI

ชนิดของข้อมูลใน DAX

ข้อมูลที่เป็นตัวเลข ข้อมูลที่ไม่ใช่ตัวเลข
เลขทศนิยม (Decimal Number)
เลขทศนิยมคงที่ (Fixed Decimal Number)
จำนวนเต็ม (Whole Number)
เปอร์เซ็นต์ (Percent)
วันที่/เวลา (Date/Time)
วันที่ (Date)
เวลา (Time)
วันที่/เวลา/โซนเวลา (Date/Time/Timezone)
ระยะเวลา (Duration)
จริง/เท็จ (True/False หรือ Boolean)
ข้อความ (Text หรือ String)
ไบนารี่ (Binary หรือ Blob)

การอ้างอิงถึงตารางข้อมูล

การอ้างอิงถึงตารางข้อมูลใน DAX จะใช้เครื่องหมาย Single Quotation Marks ‘…’ ครอบชื่อตารางข้อมูล เช่น ตารางข้อมูล FacotoryData จะถูกเขียนอ้างอิงด้วย ‘FactoryData’ (ถ้าชื่อตารางไม่มีช่องว่าง สามารถยกเว้นการใส่เครื่องหมาย Single Quotation Marks ได้)

การอ้างอิงถึงคอลัมน์ข้อมูลในตาราง

การอ้างอิงถึงคอลัมน์ข้อมูลในตาราง จะใช้เครื่องหมาย Square Brackets […] ครอบชื่อคอลัมน์ข้อมูล เช่น คอลัมน์ชื่อ Country จะถูกเขียนอ้างอิงด้วย [Country] เช่น คอลัมน์ชื่อ Country ในตาราง Province จะถูกเขียนอ้างอิงด้วย ‘Province'[Country]

คอลัมน์คำนวณ (Calculated Column)

คอลัมน์คำนวณ เป็นการสร้างคอลัมน์ใหม่เพิ่มเติมเข้าไปในตารางข้อมูลใน Data Model ของ Power BI (ไม่ได้เพิ่มคอลัมน์ใหม่ในไฟล์ข้อมูลต้นทาง) การประมวลผลค่าข้อมูลใน Calculated Column จะเกิดขึ้นเมื่อมีการประมวลผลข้อมูลจาก Data Model แล้วนำผลที่ได้จากการประมวลผลจัดเก็บลงในคอลัมน์ใหม่ที่สร้างขึ้น ค่าที่ได้จะปรากฏในตารางข้อมูล

คอลัมน์คำนวณจะทำงานกับแถวข้อมูลปัจจุบัน (Current Row) การคำนวณจะอยู่บนพื้นฐานของข้อมูลแถวนั้น ๆ และนำค่าที่ได้มาใส่ไว้ในคอลัมน์ใหม่ที่สร้างขึ้นบนแถวข้อมูลเดียวกัน เช่น ในรูปที่ 1 ตารางข้อมูล Order ทำการสร้างคอลัมน์ใหม่เพื่อเก็บข้อมูลยอดขาย ตั้งชื่อคอลัมน์ว่า Sales โดยคอลัมน์นี้เกิดจากการคำนวณของคอลัมน์จำนวน (Amount) และคอลัมน์ราคาต่อหน่วย (UnitPrice) บนแถวข้อมูลปัจจุบัน สามารถสร้างคอลัมน์คำนวณโดยเขียนคำสั่งดังรูป

รูปที่ 1 แสดงตัวอย่างการประมวลผลค่าข้อมูลใน Calculated Column

สูตรคำนวณ (Measure)

สูตรคำนวณ เป็นการสร้างสูตรสำหรับการคำนวณข้อมูล โดยสูตรจะอยู่ในรูปของนิพจน์ Expression ในตารางข้อมูล ส่วนใหญ่มักใช้งานร่วมกับฟังก์ชันผลรวม (Aggregate) ต่าง ๆ เช่น การหาค่าผลรวม, การหาค่าเฉลี่ย, การหาค่าต่ำสุดหรือสูงสุด ฟังก์ชันหรือสูตรจะถูกประมวลผลเมื่อมีการเรียกดูข้อมูลหรือแสดงผล ดังนั้นผลของการคำนวณ Measure จะไม่ปรากฏในตารางข้อมูล แต่จะเป็นการบันทึกสูตรเก็บไว้สำหรับการเรียกคำนวณเมื่อมีการต้องการแสดงผล เช่น ในรูปที่ 2 ตารางข้อมูล Order ต้องการคำนวณค่าผลรวมของยอดขาย ตั้งชื่อ Measure ว่า SumSales สามารถสร้างสูตรคำนวณโดยเขียนคำสั่งดังรูป

รูปที่ 2 แสดงตัวอย่างการประมวลผลค่าข้อมูลใน Measure

ตารางคำนวณ (Calculated Table)

ตารางคำนวณ คือตารางข้อมูลที่เกิดขึ้นจากการใช้ฟังก์ชันตารางใน DAX เช่น FILTER, VALUES, ALL โดยเมื่อสั่งให้ฟังก์ชันทำงานแล้ว ฟังก์ชันจะส่งค่ากลับมาเป็นตารางข้อมูล ไม่ใช่ค่าข้อมูลเพียงค่าเดียว และเมื่อได้ตารางข้อมูลแล้วอาจจะมีการนำตารางเข้าไปทำงานต่อในสูตรคำนวณหรือคอลัมน์คำนวณทันที หรืออาจจะเก็บไว้เป็นตารางในระบบเพื่อไว้ใช้งานต่อ เช่น จากตารางข้อมูล Order ทำการสร้างตารางใหม่ ตั้งชื่อว่า ItemSales โดยทำการกรองข้อมูลจากตาราง Order เลือกค่าของข้อมูลที่คอลัมน์ Amount มีค่ามากกว่า 10

รูปที่ 3 แสดงตัวอย่างการประมวลผลค่าข้อมูลใน Calculated Table

ชุดฟังก์ชันใน DAX

ชุดฟังก์ชันใน DAX สามารถแบ่งเป็นหมวดหมู่ได้ประมาณ 11 หมวดหมู่ แยกตามลักษณะการใช้งานได้ดังต่อไปนี้

  1. ฟังก์ชันวันที่และเวลา (Date and Time Functions) เป็นชุดฟังก์ชันที่ใช้ในการประมวลผลข้อมูลเรื่องวันที่และเวลา ตัวอย่างฟังก์ชัน CALENDAR, DATE, YEAR, MONTH, DAY, WEEKDAY, WEEKNUM
  2. ฟังก์ชันการกรองข้อมูล (Filter Functions) เป็นชุดฟังก์ชันที่ใช้ในการจัดการการกรองข้อมูล เพื่อให้ได้ชุดข้อมูลตามที่ต้องการ ตัวอย่างฟังก์ชัน ALL, ALLEXCEPT, ALLSELECTED, CALCULATE, FILTER, RELATED, SELECTED VALUE
  3. ฟังก์ชันทางการเงิน (Finance Functions) เป็นชุดฟังก์ชันที่เกี่ยวข้องกับการคำนวณด้านการเงิน ตัวอย่างฟังก์ชัน
    • ฟังก์ชัน FV คำนวณค่าในอนาคตของการลงทุน ตามอัตราดอกเบี้ยคงที่
    • ฟังก์ชัน PMT คำนวณการชำระเงินสำหรับเงินกู้ตามการชำระเงินคงที่และอัตราดอกเบี้ยคงที่
    • ฟังก์ชัน PV คำนวณค่าปัจจุบันของเงินกู้หรือการลงทุน ตามอัตราดอกเบี้ยคงที่
    • ฟังก์ชัน RATE ส่งกลับอัตราดอกเบี้ยต่อรอบระยะเวลาของเงินรายปี
  4. ฟังก์ชันข้อมูล (Information Functions) เป็นชุดฟังก์ชันที่ให้ข้อมูลเกี่ยวกับคุณลักษณะของข้อมูล ตัวอย่างฟังก์ชัน CONTAINS, ISBLANK, ISERROR, ISNUMBER, ISTEXT, LOOKUPVALUE ฟังก์ชันในกลุ่มนี้จะให้ผลลัพธ์เป็นข้อมูลแบบ Boolean คือ True (1) หรือ False (0) เท่านั้น
  5. ฟังก์ชันตรรกศาสตร์ (Logical Functions) เป็นชุดฟังก์ชันที่ใช้ในการปฏิบัติการเชิงตรรกศาสตร์ ตัวอย่างฟังก์ชัน AND, OR, IN, IF, SWITCH
  6. ฟังก์ชันทางคณิตศาสตร์ (Math and Trigonometry Functions) เป็นชุดฟังก์ชันการคำนวณทางคณิตศาสตร์ และการคำนวณทางตรีโกณมิติ ตัวอย่างฟังก์ชัน
    • ABS แสดงค่าสัมบูรณ์ของตัวเลข
    • PI แสดงค่า Pi ซึ่งเท่ากับ 3.14159265358979 ความละเอียด 15 หลัก
    • POWER แสดงค่าผลลัพธ์ของเลขยกกำลัง
    • RAND แสดงจำนวนสุ่มที่มากกว่าหรือเท่ากับ 0 และน้อยกว่า 1 กระจายเสมอกัน
    • ROUND ปัดเศษตัวเลขตามจำนวนหลักที่กำหนด
    • SQRT แสดงรากที่สองของตัวเลข
  7. ฟังก์ชันความสัมพันธ์ระหว่างตาราง (Relationship Functions) เป็นชุดฟังก์ชันสำหรับจัดการและใช้งานที่เกี่ยวข้องกับความสัมพันธ์ระหว่างข้อมูล ตัวอย่างฟังก์ชัน CROSSFILTER, RELATED, RELATEDTABLE, USERELATIONSHIP
  8. ฟังก์ชันทางสถิติ (Statistical Functions) เป็นชุดฟังก์ชันสำหรับการคำนวณทางสถิติ ตัวอย่างฟังก์ชัน
    • CHISQ.DIST ส่งคืนการแจกจ่ายแบบไคสแควร์
    • MEDIAN ส่งกลับค่ามัธยฐานของตัวเลขในคอลัมน์
    • NORM.DIST ส่งกลับการแจกแจงปกติสำหรับค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานที่ระบุ
    • STDEV.P แสดงค่าเบี่ยงเบนมาตรฐานของประชากรทั้งหมด
    • VAR.P แสดงค่าความแปรปรวนของประชากรทั้งหมด
  9. ฟังก์ชันข้อความ (Text Functions) เป็นชุดฟังก์ชันสำหรับการจัดการตัวอักษรและข้อความ ตัวอย่างฟังก์ชัน
    • FIXED ปัดเศษตัวเลขตามจำนวนหลักทศนิยมที่ระบุ แล้วแสดงผลลัพธ์เป็นข้อความ
    • FORMAT แปลงค่าให้เป็นข้อความตามรูปแบบที่ระบุ
    • LEN ส่งกลับจำนวนอักขระของสตริงข้อความ
    • TRIM ลบช่องว่างทั้งหมดจากข้อความ ยกเว้นช่องว่างหนึ่งช่องระหว่างคำ
  10. ฟังก์ชันเวลาอัจฉริยะ (Time-Intelligence Functions) เป็นชุดฟังก์ชันที่ใช้จัดการข้อมูลเชิงมิติของเวลา เพื่อให้ได้ชุดข้อมูลในช่วงเวลาที่ต้องการ ตัวอย่างฟังก์ชัน DATEADD, DATESBETWEEN, ENDOFYEAR, PARALLELPERIOD, TOTALYTD
  11. ฟังก์ชันการรวม (Aggregation Functions) เป็นชุดฟังก์ชันสำหรับการคำนวณค่าตัวเลขพื้นฐาน ตัวอย่างฟังก์ชัน AVERAGE, COUNT, MAX, MIN, SUM

ตัวอย่างการใช้งาน

ต่อไปเราจะมาทดลองการใช้งานฟังก์ชัน DAX ในหมวดวันที่และเวลา (Date and Time Functions) โดยใช้งานฟังก์ชันผ่านรูปแบบของคอลัมน์คำนวณ และสูตรคำนวณ โดยทดลองการใช้งานในโปรแกรม Power BI Desktop เริ่มจาก

  1. ดาวน์โหลดไฟล์ข้อมูล Date.csv
  2. เปิดโปรแกรม Power BI Desktop ที่เมนู Home เลือกคำสั่ง Get data > Text/CSV > เลือกไฟล์ที่ดาวน์โหลดไว้จากข้อที่ 1. > กดปุ่ม Load

เลือกมุมมองเป็น Data View คลิกเลือกคอลัมน์ FullDate แล้วไปที่เมนู Column tools > Format สามารถเลือกเปลี่ยนมุมมองการแสดงผลข้อมูลวันที่ได้ (เป็นการเปลี่ยนเฉพาะมุมมองในการแสดงผล ไม่ได้เปลี่ยนในไฟล์ข้อมูล) ในที่นี้ทดลองเปลี่ยนรูปแบบการแสดงผลเป็น วัน/เดือน/ปี (dd/mm/yyyy)

  1. เลือกมุมมองเป็น Data View ไปที่เมนู Table tools > New column ทำการสร้างคอลัมน์คำนวณ โดยใส่สูตรเป็น Day = DAY(‘Date'[FullDate]) แล้วกด Enter หรือสัญลักษณ์รูปเครื่องหมายถูก

ฟังกชัน DAY ใช้แสดงข้อมูลหมายเลขวันที่ (สังเกตผลลัพธ์ในคอลัมน์ที่ถูกสร้างขึ้น)

  1. เลือกมุมมองเป็น Data View ไปที่เมนู Table tools > New column ทำการสร้างคอลัมน์คำนวณ โดยใส่สูตรเป็น Month = FORMAT(‘Date'[FullDate], “mmmm”) แล้วกด Enter หรือสัญลักษณ์รูปเครื่องหมายถูก (ฟังก์ชัน FORMAT ใช้แสดงรูปแบบของวันที่ โดย “mmmm” คือแสดงข้อมูลชื่อเดือนที่เป็นคำเต็ม)
  1. เลือกมุมมองเป็น Data View ไปที่เมนู Table tools > New column ทำการสร้างคอลัมน์คำนวณ โดยใส่สูตรเป็น MonthNumber = MONTH(‘Date'[FullDate]) แล้วกด Enter หรือสัญลักษณ์รูปเครื่องหมายถูก (ฟังก์ชัน MONTH ใช้แสดงข้อมูลหมายเลขเดือน)
  1. เลือกมุมมองเป็น Data View ไปที่เมนู Table tools > New column ทำการสร้างคอลัมน์คำนวณ โดยใส่สูตรเป็น Year = YEAR(‘Date'[FullDate]) แล้วกด Enter หรือสัญลักษณ์รูปเครื่องหมายถูก (ฟังก์ชัน YEAR ใช้แสดงข้อมูลปี)

สรุปตัวอย่างการใช้งานฟังก์ชันวันที่และเวลา โดยคำนวณในรูปแบบ Calculated Column

  1. เลือกมุมมองเป็น Data View ไปที่เมนู Table tools > New measure ทำการสร้างสูตรคำนวณ โดยใส่สูตรเป็น CalDate = DATEDIFF(MIN(‘Date'[FullDate]), MAX(‘Date'[FullDate]), DAY) แล้วกด Enter หรือสัญลักษณ์รูปเครื่องหมายถูก

จะสังเกตเห็นว่า ผลของการสร้างสูตรคำนวณ (Measure) จะไม่ปรากฏในตารางข้อมูล แต่จะเป็นการบันทึกสูตรเก็บไว้สำหรับการเรียกคำนวณเมื่อมีการต้องการแสดงผล ดังนั้นเราจึงต้องนำ Measure ที่สร้างขึ้นไปทำการแสดงผล จึงจะเห็นผลลัพธ์จากการคำนวณดังกล่าว โดยเลือกมุมมองเป็น Design View ไปที่แถบ Visualizations > คลิกเลือก Visual ที่ชื่อว่า Card จากนั้นคลิกเลือก หรือ Drag and Drop คอลัมน์ CalDate มาวางที่ Fields Tool > Fields

จะปรากฏผลลัพธ์ของ Measure ที่เราสร้างขึ้น โดยฟังก์ชัน DATEDIFF ใช้คำนวณหาค่าผลต่างระหว่างวันที่ที่กำหนด จากตัวอย่างคือคำนวณค่าผลต่างระหว่างวันที่ที่น้อยที่สุด กับวันที่ที่มากที่สุด โดยแสดงผลลัพธ์เป็นจำนวนวัน

จากที่กล่าวมา เราก็จะได้ทราบถึงพื้นฐานการใช้งานชุดฟังก์ชันของ DAX กันบ้างแล้ว ซึ่งจะเห็นได้ว่าชุดฟังก์ชันของ DAX มีความสามารถในการคำนวณค่าข้อมูลที่หลากหลาย อย่างไรก็ตามชุดฟังก์ชันของ DAX ก็มีข้อจำกัดในการใช้งานเช่นเดียวกัน โดยชุดฟังก์ชันของ DAX (1) ไม่สามารถแก้ไขข้อมูลในตารางข้อมูล, (2) สามารถใส่ข้อมูลใหม่เข้าไปในตารางข้อมูล และ (3) ชุดฟังก์ชันของ DAX บางฟังก์ชันอาจจะคืนค่าผลลัพธ์เป็นตารางข้อมูล ซึ่งหลายฟังก์ชันใน DAX ต้องการตารางข้อมูลเป็นข้อมูลอินพุต เพื่อนำไปประมวลผลหาผลลัพธ์ต่อไป

อ้างอิง

เนื้อหาโดย ดวงใจ จิตคงชื่น
ตรวจทานและปรับปรุงโดย อนันต์วัฒน์ ทิพย์ภาวัต

Asst. Prof. Duangjai Jitkongchuen, PhD

Vice President, Manpower Development Division at Big Data Institute (Public Organization), BDI

© Big Data Institute | Privacy Notice