DAX Functions A to Z รวมสูตร 26 สูตร ที่น่าสนใจ พร้อมวิธีใช้งาน

DAX Functions
DAX Functions A to Z ที่น่าสนใจ พร้อมวิธีใช้งาน ทั้งหมด 26 สูตรสิ่งสำคัญของการใช้งาน Power BI ที่ขาดไม่ได้และเป็นเรื่องสำคัญมาก ๆ อย่างหนึ่งนั้นคือ DAX (Data Analysis Expressions) ซึ่งจะมาช่วยคำนวณสรุปผลข้อมูลที่มี โดย DAX จะถูกไปใช้ในการคำนวณ 3 ส่วนหลัก ๆ ได้แก่
- Measures - คำนวณแล้วได้ผลลัพธ์คำตอบ 1 ค่า
- Calculated columns - สร้างการคำนวณให้เกิดคอลัมน์ใหม่
- Calculated table - สร้างการคำนวณให้เกิดตารางใหม่
ฉะนั้นวันนี้ทางทีมงาน 9Expert นำเสนอ ฟังก์ชัน DAX A to Z จำนวน 26 สูตร ดังนี้
ฟังก์ชัน ALL
ส่งกลับค่าแถวทั้งหมดในตาราง table หรือค่าทั้งหมดในคอลัมน์ column โดยไม่คำนึงถึงตัวกรองใด ๆ ที่อาจใช้อยู่
รูปแบบของ Syntax
ALL([<table> | <column>[, <column>[, <column>[,…]]]])
table คือ ตารางที่ต้องการล้างตัวกรองcolumn คือ คอลัมน์ที่ต้องการล้างตัวกรอง
การคืนค่า
ตารางหรือคอลัมน์ที่ตัวกรองถูกลบออก

ฟังก์ชัน BLANK
ส่งคืนค่าว่าง
รูปแบบของ Syntax
BLANK()
การคืนค่า
ว่าง

ฟังก์ชัน CALCULATE
ประเมินค่าจาก expression หรือสูตร ภายใต้ชุดของ filter ที่กำหนด
รูปแบบของ Syntax
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
expression คือ เป็นชื่อ measure ที่มีสร้างอยู่แล้ว หรือสูตรที่เหมาะสม สำหรับการประเมินfilter1, filter2 คือ Boolean expression หรือ ตัวกรองในรูปแบบตาราง หรือฟังก์ชันสำหรับปรับเปลี่ยนตัวกรอง (ไม่บังคับเป็นทางเลือก)
การคืนค่า
ค่าที่เป็นผลลัพธ์ของ expression

ฟังก์ชัน DAY
แสดงค่าเลขวันที่ของเดือน (1 – 31) จากวันที่กำหนด
รูปแบบของ Syntax
DAY(<date>)
date คือ วันที่ในรูปแบบ วันที่เวลา หรือข้อความที่แสดงแทนของวันที่การคืนค่า
จำนวนเต็มที่ระบุวันของเดือน

ฟังก์ชัน EDATE
แสดงวันที่ซึ่งเป็นจำนวนเดือนที่ระบุก่อนหรือหลังวันที่เริ่มต้น เหมาะกับการคำนวณวันที่ถึงกำหนดหรือวันที่ครบกำหนดซึ่งเป็นวันเดียวกันของเดือนในวันที่ระบุ
รูปแบบของ Syntax
EDATE(<start_date>, <months>)
start_date คือ วันที่ในรูปแบบ วันที่เวลา หรือ ข้อความ ที่แสดงถึงวันที่เริ่มต้นmonths คือ จำนวนเต็มที่แสดงถึงจำนวนเดือนก่อนหรือหลัง start_date
การคืนค่า
วันที่ (วันที่เวลา)

ฟังก์ชัน FILTER
ส่งคืนตาราง table ที่ถูกกรอง filterexpression
รูปแบบของ Syntax
FILTER(<table>, <filterexpression>)
table คือ ตารางที่ต้องการกรองfilterexpression คือ Boolean (True/False) expression สำหรับประเมินแต่ละแถวของตาราง
การคืนค่า
ตารางที่มีเฉพาะแถวที่กรองแล้วเท่านั้น

ฟังก์ชัน GEOMEAN
แสดงค่าเฉลี่ยเรขาคณิตของตัวเลขในคอลัมน์ ซึ่งจะเหมาะกับการใช้แทนค่าเฉลี่ยเลขคณิตแบบปกติ สำหรับข้อมูลที่มีการกระจายค่าที่แตกต่างกันมาก
รูปแบบของ Syntax
GEOMEAN(<column>)
column คือ คอลัมน์ที่เป็นตัวเลขที่จะใช้คำนวณหาค่าเฉลี่ยเรขาคณิตการคืนค่า
เลขทศนิยม 1 ค่า

ฟังก์ชัน HOUR
แสดงชั่วโมงเป็นตัวเลขตั้งแต่ 0 (12:00 A.M.) ถึง 23 (11:00 P.M.)
รูปแบบของ Syntax
HOUR(<datetime>)
datetime คือ ค่า วันที่เวลา เช่น 16:48:00 หรือ 4:48 PMการคืนค่า
จำนวนเต็มจาก 0 ถึง 23

ฟังก์ชัน IF
ตรวจสอบว่าตรงตามเงื่อนไขหรือไม่ และส่งคืนค่าหนึ่งค่าหากเป็น TRUE และอีกค่าหนึ่งหากเป็น FALSE
รูปแบบของ Syntax
IF(<logical_test>, <value_if_true>[, <value_if_false>])
logical_test คือ ค่าใด ๆ หรือ expression ที่สามารถประเมินค่าเป็น TRUE หรือ FALSE ได้value_if_true คือ ค่าที่ส่งกลับถ้า logical_test เป็น TRUE
value_if_false คือ ค่าที่ส่งกลับถ้า logical_test เป็น FALSE ถ้าไม่ระบุ จะส่งกลับค่า BLANK (ไม่บังคับเป็นทางเลือก)
การคืนค่า
ค่าหนึ่งค่า อย่างใดอย่างหนึ่งระหว่าง value_if_true, value_if_false หรือ BLANK

ฟังก์ชัน CROSSJOIN
ส่งกลับตารางที่มีผลคูณคาร์ทีเซียนของแถวทั้งหมดจากตารางทั้งหมดในอาร์กิวเมนต์ คอลัมน์ในตารางใหม่คือคอลัมน์ทั้งหมดในตารางอาร์กิวเมนต์ทั้งหมด
รูปแบบของ Syntax
CROSSJOIN(<table>, <table>[, <table>]…)
table คือ ตาราง หรือ DAX expression ใด ๆ ที่แสดงผลเป็นตาราง ที่จะมาทำ CROSSJOINการคืนค่า
ตารางที่มีผลคูณคาร์ทีเซียนของแถวทั้งหมดจากตารางทั้งหมดในอาร์กิวเมนต์





ฟังก์ชัน OR
ตรวจเช็คและส่งกลับค่า TRUE ถ้าอาร์กิวเมนต์ใด ๆ เป็น TRUE และส่งกลับค่า FALSE ถ้าอาร์กิวเมนต์ทั้งหมดเป็น FALSE
รูปแบบของ Syntax
OR(<logical1>,<logical2>)
logical1, logical2 คือ ค่าเชิงตรรกะที่ต้องการทดสอบการคืนค่า
เป็น Boolean 1 ค่า โดยค่านี้จะเป็น TRUE ถ้าอาร์กิวเมนต์ใด ๆ ในสองรายการนี้เป็น TRUE ค่านี้จะเป็น FALSE ถ้าอาร์กิวเมนต์ทั้งสองรายการเป็น FALSE



ฟังก์ชัน ROW
ส่งกลับตารางที่มีแถวเดียว ที่มีค่าที่เป็นผลมาจาก expression ที่กำหนดให้แต่ละคอลัมน์
รูปแบบของ Syntax
ROW(<name>, <expression>[[,<name>, <expression>]…])
name คือ ชื่อที่กำหนดให้กับคอลัมน์ ซึ่งอยู่ใน double quotesexpression คือ DAX expression ใด ๆ ที่ส่งกลับค่าเพียงค่าเดียว
การคืนค่า
ตารางแถวเดียว

ฟังก์ชัน SWITCH
ประเมิน expression แล้วเทียบกับรายการ value และส่งกลับ result ที่เป็นไปได้หนึ่งในหลายรายการ
รูปแบบของ Syntax
SWITCH(<expression>, <value>, <result>[, <value>, <result>]…[, <else>])
expression คือ DAX expression ใด ๆ ที่แสดงเป็นค่าเดียว โดยจะมีการประเมิน expression หลายครั้ง (สำหรับแต่ละแถวหรือค่าคงที่)value คือ ค่าคงที่ที่จะตรงกับผลลัพธ์ของ expression
result คือ ค่าหรือ expression ใด ๆ ที่จะได้ผลออกมา ถ้าผลลัพธ์ของ expression ตรงกับ value ที่สอดคล้องกัน
else คือ ค่าหรือ expression ใด ๆ ที่จะได้ผลออกมา ถ้าผลลัพธ์ของ expression ไม่ตรงกับอาร์กิวเมนต์ของ value
การคืนค่า
ค่าที่มาจากหนึ่งใน expression result ถ้าตรงกับ value หรือจาก expression else ถ้าไม่ตรงกับ value ใด ๆ

ฟังก์ชัน TREATAS
ใช้ผลลัพธ์ของ table_expression เป็นตัวกรองคอลัมน์จากตารางที่ไม่เชื่อมโยง (ไม่มี Relationship ระหว่างกัน)
รูปแบบของ Syntax
TREATAS(table_expression, <column>[, <column>[, <column>[,…]]])
table_expression คือ expression ที่ให้ผลลัพธ์เป็นตารางcolumn คือ คอลัมน์ที่มีอยู่อย่างน้อยหนึ่งคอลัมน์ ที่ไม่ใช่รูปแบบ expression
การคืนค่า
ตารางที่มีแถวทั้งหมดในคอลัมน์ซึ่งยังอยู่ใน table_expression ด้วย


ฟังก์ชัน VALUES
เมื่อพารามิเตอร์ข้อมูลป้อนเข้าเป็นชื่อคอลัมน์ สร้างตารางแบบหนึ่งคอลัมน์ที่มีค่าไม่ซ้ำกันจากคอลัมน์ที่ระบุ ค่าที่ซ้ำจะถูกลบออกและแสดงเป็นค่าเฉพาะค่าเดียวเท่านั้น (พิจารณาค่า BLANK ด้วย) เมื่อพารามิเตอร์ข้อมูลป้อนเข้าเป็นชื่อตาราง ระบบจะแสดงแถวจากตารางที่ระบุ แถวที่ซ้ำกันจะถูกรักษาไว้ (รวมถึงแถวที่ BLANK ด้วย)
รูปแบบของ Syntax
VALUES(<TableNameOrColumnName>)
TableNameOrColumnName คือ ชื่อคอลัมน์ หรือชื่อตารางการคืนค่า
เมื่อพารามิเตอร์อินพุตเป็นชื่อคอลัมน์ จะเป็นตารางคอลัมน์เดียวที่ไม่ซ้ำกัน เมื่อพารามิเตอร์ข้อมูลป้อนเข้าเป็นชื่อตาราง ระบบจะแสดงตารางคอลัมน์ที่มีค่าในแถวแบบเดียวกันไม่ซ้ำกัน

ฟังก์ชัน WEEKDAY
แสดงตัวเลขตั้งแต่ 1 ถึง 7 หรือ 0 ถึง 6 ที่แสดงถึงวันของสัปดาห์ของวันที่ใด ๆ โดยค่าเริ่มต้น วันจะเริ่มต้นตั้งแต่ 1 (วันอาทิตย์) ถึง 7 (วันเสาร์)
รูปแบบของ Syntax
WEEKDAY(<date> [, <return_type>])
date คือ วันที่ในรูปแบบ วันที่เวลาreturn_type คือ ตัวเลขกำหนดค่าที่แสดง
การคืนค่า
เลขจำนวนเต็มช่วงจาก 1 ถึง 7 หรือ 0 ถึง 6 ตามตัวเลือกพารามิเตอร์ return_type

ฟังก์ชัน XIRR
แสดงอัตราผลตอบแทนภายใน (IRR) สำหรับตารางกระแสเงินสดที่ไม่จำเป็นต้องเป็นงวด
รูปแบบของ Syntax
XIRR(<table>, <values>, <dates> [, <guess>])
table คือ ตารางที่มีข้อมูลเป็นแถวเพื่อประเมิน values และ datesvalues คือ expression ที่แสดงเป็นค่ากระแสเงินสดสำหรับแต่ละแถวของตาราง
dates คือ expression ที่แสดงเป็นวันที่ของกระแสเงินสดสำหรับแต่ละแถวของตาราง
guess คือ การคาดเดาเบื้องต้นสำหรับอัตราผลตอบแทนภายใน (ค่าตั้งต้นหากไม่ได้ระบุ จะมีการใช้การคาดเดาค่าเริ่มต้นคือ 0.1)
การคืนค่า
อัตราผลตอบแทนภายใน (IRR) สำหรับข้อมูลที่มีการกำหนดใส่เข้าไป ถ้าการคำนวณไม่สามารถแสดงผลลัพธ์ที่ถูกต้อง ระบบจะแสดงข้อผิดพลาด


ฟังก์ชัน SUMMARIZE
สร้างตารางสรุปผลที่จัดกลุ่มตามคอลัมน์ที่ระบุ
รูปแบบของ Syntax
SUMMARIZE(<table> [, <groupBy_columnName>][, <groupBy_columnName>]…[, <name>, <expression>]…)
table คือ expression DAX ใด ๆ ก็ตามที่คืนค่าเป็นตารางของข้อมูลgroupBy_columnName คือ ชื่อคอลัมน์ที่จะจัดกลุ่มที่ต้องการสรุปผล โดยไม่สามารถเป็น expression ได้ แต่สามารถเรียกใช้ฟังก์ชัน ROLLUP เพื่อระบุรายการคอลัมน์ที่จะจัดกลุ่มโดยให้มีผลรวมย่อยได้
name คือ ชื่อที่กำหนดให้กับคอลัมน์ผลรวมหรือข้อมูลสรุป ซึ่งอยู่ในในเครื่องหมาย double quotes " "
expression คือ expression DAX ใด ๆ ของคอลัมน์ใหม่ ที่แสดงผลค่าเดียว ซึ่งจะมีการประเมิน expression หลายครั้ง (ดำเนินการทั้งในบริบทแบบแถว และบริบทตัวกรอง)
การคืนค่า
ตารางที่มีคอลัมน์ที่เลือกสำหรับอาร์กิวเมนต์ groupBy_columnName และคอลัมน์สรุปที่ออกแบบโดยอาร์กิวเมนต์ name

ข้อมูลอ้างอิงจากเว็บไซต์
แนะนำหลักสูตรการอบรม
เรียนรู้คำสั่ง DAX เพื่อใช้งานด้าน Data Analysis, Data Analytic, BI โดยใช้ Power BIในหลักสูตร Data Analysis Expression (DAX) for Power BI (2 Days)
- 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)