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, BLANK, CALCULATE, DAY, EDATE, FILTER, GEOMEAN, HOUR, IF, CROSSJOIN, KEEPFILTERS, LASTDATE, MAXX, NEXTMONTH, OR, PREVIOUSMONTH, QUARTER, ROW, SWITCH, TREATAS, UNION, VALUES, WEEKDAY, XIRR, YEAR, SUMMARIZE
ฟังก์ชัน 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
การคืนค่า
ตารางที่มีผลคูณคาร์ทีเซียนของแถวทั้งหมดจากตารางทั้งหมดในอาร์กิวเมนต์
ฟังก์ชัน KEEPFILTERS
เปลี่ยนความหมายการกรอง ในฟังก์ชัน CALCULATE และ CALCULATABLE
รูปแบบของ Syntax
KEEPFILTERS(<expression>)
expression คือ expression ใด หรือ พวกตัวกรองต่าง ๆ
การคืนค่า
ตารางที่มีค่า ที่ต้องใช้ประกอบกับฟังก์ชัน CALCULATE หรือ CALCULATABLE
ฟังก์ชัน LASTDATE
ส่งกลับวันที่สุดท้ายในบริบทปัจจุบันสำหรับคอลัมน์ที่เป็นวันที่ที่ระบุ
รูปแบบของ Syntax
LASTDATE(<dates>)
dates คือ คอลัมน์ที่เป็นวันที่
การคืนค่า
ตารางที่มีคอลัมน์เดียวและแถวเดียวที่มีค่าวันที่
ฟังก์ชัน MAXX
ประเมิน expression สำหรับแต่ละแถวของตารางและส่งกลับค่าที่มากที่สุด
รูปแบบของ Syntax
MAXX(<table>,<expression>)
table คือ ตารางที่ให้มีการคำนวณ <expression> ในแต่ละแถวของตาราง
expression คือ expression ที่จะประเมินค่าสำหรับแต่ละแถวของตาราง
การคืนค่า
ค่าที่มากที่สุด 1 ค่า
ฟังก์ชัน NEXTMONTH
ส่งกลับตารางที่มีคอลัมน์ของวันที่ทั้งหมดในเดือนถัดไป โดยยึดตามวันแรกในคอลัมน์วันที่ในบริบทปัจจุบัน
รูปแบบของ Syntax
NEXTMONTH(<dates>)
dates คือ คอลัมน์ที่มีวันที่
การคืนค่า
ตารางที่มีค่าวันที่คอลัมน์เดียว
ฟังก์ชัน OR
ตรวจเช็คและส่งกลับค่า TRUE ถ้าอาร์กิวเมนต์ใด ๆ เป็น TRUE และส่งกลับค่า FALSE ถ้าอาร์กิวเมนต์ทั้งหมดเป็น FALSE
รูปแบบของ Syntax
OR(<logical1>,<logical2>)
logical1, logical2 คือ ค่าเชิงตรรกะที่ต้องการทดสอบ
การคืนค่า
เป็น Boolean 1 ค่า โดยค่านี้จะเป็น TRUE ถ้าอาร์กิวเมนต์ใด ๆ ในสองรายการนี้เป็น TRUE ค่านี้จะเป็น FALSE ถ้าอาร์กิวเมนต์ทั้งสองรายการเป็น FALSE
ฟังก์ชัน PREVIOUSMONTH
ส่งกลับตารางที่มีคอลัมน์ของวันที่ทั้งหมดในเดือนก่อนหน้า โดยยึดตามวันแรกในคอลัมน์วันที่ในบริบทปัจจุบัน
รูปแบบของ Syntax
PREVIOUSMONTH(<dates>)
dates คือ คอลัมน์ที่มีวันที่
การคืนค่า
ตารางที่มีค่าวันที่คอลัมน์เดียว
ฟังก์ชัน QUARTER
แสดงเลขไตรมาสเป็นตัวเลขตั้งแต่ 1 (มกราคม - มีนาคม) ถึง 4 (ตุลาคม - ธันวาคม)
รูปแบบของ Syntax
QUARTER(<date>)
date คือ ค่า วันที่
การคืนค่า
จำนวนเต็มตั้งแต่ 1 ถึง 4
ฟังก์ชัน ROW
ส่งกลับตารางที่มีแถวเดียว ที่มีค่าที่เป็นผลมาจาก expression ที่กำหนดให้แต่ละคอลัมน์
รูปแบบของ Syntax
ROW(<name>, <expression>[[,<name>, <expression>]…])
name คือ ชื่อที่กำหนดให้กับคอลัมน์ ซึ่งอยู่ใน double quotes
expression คือ 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 ด้วย
ฟังก์ชัน UNION
สร้างตาราง UNION (การรวม) จากคู่ของตาราง
รูปแบบของ Syntax
UNION(<table_expression1>, <table_expression2> [,<table_expression>[,…]])
table_expression คือ 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 และ dates
values คือ expression ที่แสดงเป็นค่ากระแสเงินสดสำหรับแต่ละแถวของตาราง
dates คือ expression ที่แสดงเป็นวันที่ของกระแสเงินสดสำหรับแต่ละแถวของตาราง
guess คือ การคาดเดาเบื้องต้นสำหรับอัตราผลตอบแทนภายใน (ค่าตั้งต้นหากไม่ได้ระบุ จะมีการใช้การคาดเดาค่าเริ่มต้นคือ 0.1)
การคืนค่า
อัตราผลตอบแทนภายใน (IRR) สำหรับข้อมูลที่มีการกำหนดใส่เข้าไป ถ้าการคำนวณไม่สามารถแสดงผลลัพธ์ที่ถูกต้อง ระบบจะแสดงข้อผิดพลาด
ฟังก์ชัน YEAR
ส่งกลับปีของวันที่เป็นจำนวนเต็มสี่หลักในช่วง 1900-9999
รูปแบบของ Syntax
YEAR(<date>)
date คือ วันที่ในรูปแบบ datetime หรือรูปแบบข้อความที่มีปีที่ต้องการค้นหา
การคืนค่า
จำนวนเต็มในช่วง 1900-9999
ฟังก์ชัน 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)