ภาพรวมของ DAX
นิพจน์การวิเคราะห์ข้อมูล (DAX) เป็นภาษาของนิพจน์สูตรที่ใช้ใน Analysis Services, Power BI และ Power Pivot ใน Excel สูตร DAX ประกอบด้วยฟังก์ชัน ตัวดําเนินการ และค่าเพื่อดําเนินการคํานวณขั้นสูงและคิวรีเกี่ยวกับข้อมูลในตารางและคอลัมน์ที่เกี่ยวข้องในแบบจําลองข้อมูลแบบตาราง
บทความนี้ให้คําแนะนําเบื้องต้นเกี่ยวกับแนวคิดที่สําคัญที่สุดใน DAX เท่านั้น ซึ่งอธิบาย DAX เนื่องจากนําไปใช้กับผลิตภัณฑ์ทั้งหมดที่ใช้งาน ฟังก์ชันการทํางานบางอย่างอาจไม่สามารถใช้ได้กับผลิตภัณฑ์หรือกรณีการใช้งานบางอย่าง โปรดดูเอกสารประกอบของผลิตภัณฑ์ของคุณที่อธิบายการใช้งาน DAX โดยเฉพาะ
การคำนวณ
สูตร DAX จะใช้ในหน่วยวัด คอลัมน์จากการคํานวณ ตารางจากการคํานวณ และการรักษาความปลอดภัยระดับแถว
การวัด
หน่วยวัดเป็นสูตรการคํานวณแบบไดนามิกที่ผลลัพธ์จะเปลี่ยนแปลงตามบริบท หน่วยวัดจะใช้ในการรายงานที่สนับสนุนการรวมและการกรองข้อมูลแบบจําลองโดยใช้แอตทริบิวต์หลายรายการ เช่น รายงาน Power BI หรือ PivotTable Excel หรือ PivotChart หน่วยวัดจะถูกสร้างขึ้นโดยใช้แถบสูตร DAX ในตัวออกแบบแบบจําลอง
สูตรในหน่วยวัดสามารถใช้ฟังก์ชันการรวมมาตรฐานที่สร้างขึ้นโดยอัตโนมัติโดยใช้คุณลักษณะ Autosum เช่น COUNT หรือ SUM หรือคุณสามารถกําหนดสูตรของคุณเองโดยใช้แถบสูตร DAX หน่วยวัดที่มีชื่อสามารถส่งผ่านเป็นอาร์กิวเมนต์ไปยังหน่วยวัดอื่น ๆ ได้
เมื่อคุณกําหนดสูตรสําหรับหน่วยวัดในแถบสูตร คุณลักษณะคําแนะนําเครื่องมือจะแสดงตัวอย่างของผลลัพธ์ที่จะใช้สําหรับผลรวมในบริบทปัจจุบัน แต่ผลลัพธ์จะไม่สามารถส่งออกได้ทันที เหตุผลที่คุณไม่สามารถดูผลลัพธ์ของการคํานวณ (ที่ถูกกรอง) ได้ทันทีเนื่องจากไม่สามารถกําหนดผลลัพธ์ของหน่วยวัดได้โดยไม่มีบริบท ในการประเมินหน่วยวัด จําเป็นต้องใช้แอปพลิเคชันไคลเอ็นต์รายงานที่สามารถระบุบริบทที่จําเป็นสําหรับดึงข้อมูลที่เกี่ยวข้องกับแต่ละเซลล์ จากนั้นจะประเมินนิพจน์สําหรับแต่ละเซลล์ ไคลเอ็นต์อาจเป็น PivotTable หรือ PivotChart ของ Excel รายงาน Power BI หรือนิพจน์ตารางในคิวรี DAX ใน SQL Server Management Studio (SSMS)
ระบบจะเรียกใช้คิวรีแยกต่างหากสําหรับแต่ละเซลล์ในผลลัพธ์ โดยไม่คํานึงถึงไคลเอ็นต์ กล่าวคือ ส่วนหัวของแถวและคอลัมน์แต่ละชุดใน PivotTable หรือตัวแบ่งส่วนข้อมูลและตัวกรองแต่ละรายการที่เลือกในรายงาน Power BI จะสร้างชุดย่อยที่แตกต่างกันของข้อมูลที่มีการคํานวณหน่วยวัด ตัวอย่างเช่น การใช้สูตรหน่วยวัดที่เรียบง่ายมากนี้:
Total Sales = SUM([Sales Amount])
เมื่อผู้ใช้วางหน่วยวัด TotalSales ในรายงาน จากนั้นวางคอลัมน์หมวดหมู่ผลิตภัณฑ์จากตารางผลิตภัณฑ์ลงในตัวกรอง ผลรวมของยอดขายจะถูกคํานวณและแสดงสําหรับแต่ละหมวดหมู่ผลิตภัณฑ์
ไวยากรณ์สําหรับหน่วยวัดจะประกอบด้วยชื่อของหน่วยวัดที่อยู่ก่อนหน้าสูตร ซึ่งแตกต่างจากคอลัมน์จากการคํานวณ ในตัวอย่างที่ให้มานี้ ชื่อ ยอดขาย รวม จะปรากฏขึ้นก่อนหน้าสูตร หลังจากที่คุณได้สร้างหน่วยวัดแล้ว ชื่อและข้อกําหนดจะปรากฏในรายการเขตข้อมูลของแอปพลิเคชันไคลเอ็นต์รายงาน และพร้อมใช้งานสําหรับผู้ใช้ทั้งหมดของแบบจําลอง โดยขึ้นอยู่กับมุมมองและบทบาท
หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่:
หน่วยวัดใน Power BI Desktop
หน่วยวัดใน Analysis Services
หน่วยวัดใน Power Pivot
คอลัมน์จากการคำนวณ
คอลัมน์จากการคํานวณคือคอลัมน์ที่คุณเพิ่มลงในตารางที่มีอยู่ (ในตัวออกแบบแบบจําลอง) แล้วสร้างสูตร DAX ที่กําหนดค่าของคอลัมน์ เมื่อคอลัมน์จากการคํานวณมีสูตร DAX ที่ถูกต้อง ระบบจะคํานวณค่าสําหรับแต่ละแถวทันทีที่มีการป้อนสูตร จากนั้นค่าจะถูกจัดเก็บไว้ในแบบจําลองข้อมูลในหน่วยความจํา ตัวอย่างเช่น ในตารางวันที่ เมื่อมีการป้อนสูตรลงในแถบสูตร:
= [Calendar Year] & " Q" & [Calendar Quarter]
ค่าสําหรับแต่ละแถวในตารางจะถูกคํานวณโดยการใช้ค่าจากคอลัมน์ปีปฏิทิน (ในตารางวันที่เดียวกัน) เพิ่มช่องว่างและตัวอักษรพิมพ์ใหญ่ Q จากนั้นเพิ่มค่าจากคอลัมน์ไตรมาสของปฏิทิน (ในตารางวันที่เดียวกัน) ผลลัพธ์สําหรับแต่ละแถวในคอลัมน์จากการคํานวณจะถูกคํานวณทันทีและปรากฏขึ้น ตัวอย่างเช่น 2017 Q1 ค่าคอลัมน์จะถูกคํานวณใหม่เฉพาะเมื่อมีการประมวลผลตารางหรือตารางใด ๆ ที่เกี่ยวข้อง (รีเฟรช) หรือแบบจําลองจะถูกยกเลิกการโหลดจากหน่วยความจําและจากนั้นจะโหลดใหม่ เช่น เมื่อปิดและเปิดไฟล์ Power BI Desktop ใหม่
หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่:
คอลัมน์จากการคํานวณใน Power BI Desktop
คอลัมน์จากการคํานวณใน Analysis Services
คอลัมน์จากการคํานวณใน Power Pivot
ตารางจากการคำนวณ
ตารางที่มีการคํานวณเป็นออบเจ็กต์ที่คํานวณตามนิพจน์สูตรที่สืบทอดมาจากตารางอื่น ๆ ทั้งหมดหรือบางส่วนในแบบจําลองเดียวกัน แทนที่จะคิวรีและโหลดค่าจากแหล่งข้อมูลลงในคอลัมน์ใหม่ในตาราง สูตร DAX จะกําหนดค่าของตาราง
ตารางจากการคํานวณจะเป็นประโยชน์ในมิติการเล่นบทบาท ตัวอย่างคือตารางวันที่เป็น OrderDate, ShipDate หรือ DueDate โดยขึ้นอยู่กับความสัมพันธ์ของ Foreign Key ด้วยการสร้างตารางที่มีการคํานวณสําหรับ ShipDate อย่างชัดเจน คุณจะได้รับตารางแบบสแตนด์อโลนที่พร้อมใช้งานสําหรับคิวรี และสามารถทํางานอย่างเต็มรูปแบบเช่นเดียวกับตารางอื่น ๆ ตารางที่มีการคํานวณยังมีประโยชน์เมื่อกําหนดค่าชุดแถวที่กรองหรือชุดย่อยหรือเซตใหญ่ของคอลัมน์จากตารางที่มีอยู่อื่น ๆ ซึ่งช่วยให้คุณสามารถเก็บตารางเดิมไว้ได้ในขณะที่สร้างการเปลี่ยนแปลงของตารางนั้นเพื่อสนับสนุนสถานการณ์เฉพาะ
ตารางที่มีการคํานวณสนับสนุนความสัมพันธ์กับตารางอื่น ๆ คอลัมน์ในตารางจากการคํานวณของคุณมีชนิดข้อมูล การจัดรูปแบบ และสามารถจัดประเภทข้อมูลได้ ตารางที่มีการคํานวณสามารถตั้งชื่อและจะปรากฏขึ้นหรือซ่อนเช่นเดียวกับตารางอื่น ๆ ตารางจากการคํานวณจะถูกคํานวณใหม่หากตารางใด ๆ ที่ดึงข้อมูลมามีการรีเฟรชหรืออัปเดต
หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่:
ตารางที่มีการคํานวณใน Power BI Desktop
ตารางที่มีการคํานวณใน Analysis Services
การรักษาความปลอดภัยระดับต่ำ
ด้วยการรักษาความปลอดภัยระดับแถว สูตร DAX จะต้องประเมินผลกับเงื่อนไข TRUE/FALSE ของบูลีน ซึ่งจะกําหนดแถวที่สามารถแสดงผลลัพธ์ของคิวรีโดยสมาชิกที่มีบทบาทเฉพาะ ตัวอย่างเช่น สําหรับสมาชิกของบทบาทยอดขาย ตารางลูกค้าที่มีสูตร DAX ต่อไปนี้:
= Customers[Country] = "USA"
สมาชิกของบทบาทการขายจะสามารถดูข้อมูลสําหรับลูกค้าในสหรัฐอเมริกาและผลรวมเท่านั้น เช่น ระบบจะแสดงผลลัพธ์ SUM เฉพาะสําหรับลูกค้าในสหรัฐอเมริกาเท่านั้น การรักษาความปลอดภัยระดับแถวไม่พร้อมใช้งานใน Power Pivot ใน Excel
เมื่อกําหนดความปลอดภัยระดับแถวโดยใช้สูตร DAX คุณกําลังสร้างชุดแถวที่อนุญาต การดําเนินการนี้จะไม่ปฏิเสธการเข้าถึงแถวอื่น แต่จะไม่แสดงค่าดังกล่าวเป็นส่วนหนึ่งของชุดแถวที่อนุญาต บทบาทอื่น ๆ สามารถอนุญาตให้เข้าถึงแถวที่ถูกแยกออกโดยสูตร DAX ได้ ถ้าผู้ใช้เป็นสมาชิกของบทบาทอื่น และการรักษาความปลอดภัยระดับแถวของบทบาทอนุญาตให้เข้าถึงชุดแถวนั้น ๆ ผู้ใช้สามารถดูข้อมูลสําหรับแถวนั้นได้
สูตรการรักษาความปลอดภัยระดับแถวใช้กับแถวที่ระบุเช่นเดียวกับแถวที่เกี่ยวข้อง เมื่อตารางมีหลายความสัมพันธ์ ตัวกรองจะใช้การรักษาความปลอดภัยสําหรับความสัมพันธ์ที่ใช้งานอยู่ สูตรการรักษาความปลอดภัยระดับแถวจะอินเทอร์เซกส์กับสูตรอื่นๆ ที่กําหนดไว้สําหรับตารางที่เกี่ยวข้อง
หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่:
การรักษาความปลอดภัยระดับแถว (RLS) ด้วย Power BI
บทบาทใน Analysis Services
คิวรี
คิวรี DAX สามารถสร้างและเรียกใช้งานใน SQL Server Management Studio (SSMS) และเครื่องมือโอเพนซอร์สต่าง ๆ อย่าง DAX Studio (daxstudio.org) ซึ่งแตกต่างจากสูตรการคํานวณ DAX ซึ่งสามารถสร้างได้เฉพาะในแบบจําลองข้อมูลแบบตารางเท่านั้น คิวรี DAX ยังสามารถเรียกใช้กับแบบจําลองหลายมิติ Analysis Services ได้ คิวรี DAX มักง่ายกว่าในการเขียนและมีประสิทธิภาพมากกว่าคิวรี Multidimensional Data Expressions (MDX)
คิวรี DAX เป็นคําสั่งที่คล้ายกับคําสั่ง SELECT ใน T-SQL คิวรี DAX ชนิดพื้นฐานที่สุดคือคําสั่งประเมินผล ตัวอย่างเช่น
EVALUATE
( FILTER ( 'DimProduct', [SafetyStockLevel] < 200 ) )
ORDER BY [EnglishProductName] ASC
แสดงใน ผลลัพธ์ ในตารางที่แสดงเฉพาะรายการผลิตภัณฑ์ที่มีตู้เซฟ TyStockLevel น้อยกว่า 200 โดยเรียงลําดับจากน้อยไปหามากตาม EnglishProductName
คุณสามารถสร้างหน่วยวัดเป็นส่วนหนึ่งของคิวรีได้ มีหน่วยวัดสําหรับระยะเวลาของคิวรีเท่านั้น เมื่อต้องการเรียนรู้เพิ่มเติม ดู คิวรี DAX
สูตร
สูตร DAX จําเป็นสําหรับการสร้างการคํานวณในคอลัมน์จากการคํานวณและหน่วยวัด และการรักษาความปลอดภัยข้อมูลของคุณโดยใช้การรักษาความปลอดภัยระดับแถว หากต้องการสร้างสูตรสําหรับคอลัมน์จากการคํานวณและหน่วยวัด ให้ใช้แถบสูตรที่อยู่ด้านบนของหน้าต่างตัวออกแบบแบบจําลองหรือตัวแก้ไข DAX เมื่อต้องการสร้างสูตรสําหรับการรักษาความปลอดภัยระดับแถว ให้ใช้ตัวจัดการบทบาทหรือกล่องโต้ตอบจัดการบทบาท ข้อมูลในส่วนนี้มีไว้เพื่อให้คุณเริ่มต้นด้วยการทําความเข้าใจพื้นฐานของสูตร DAX
ข้อมูลพื้นฐานเกี่ยวกับสูตร
สูตร DAX อาจใช้งานได้ง่ายหรือซับซ้อนมาก ตารางต่อไปนี้แสดงตัวอย่างของสูตรอย่างง่ายที่สามารถใช้ในคอลัมน์จากการคํานวณได้
สูตร | ข้อกำหนด |
---|---|
= TODAY() |
แทรกวันที่ของวันนี้ในทุกแถวของคอลัมน์จากการคํานวณ |
= 3 |
แทรกค่า 3 ในทุกแถวของคอลัมน์จากการคํานวณ |
= [Column1] + [Column2] |
เพิ่มค่าในแถวเดียวกันของ [Column1] และ [Column2] และใส่ผลลัพธ์ในคอลัมน์จากการคํานวณของแถวเดียวกัน |
ไม่ว่าสูตรที่คุณสร้างจะง่ายหรือซับซ้อน คุณสามารถใช้ขั้นตอนต่อไปนี้เมื่อสร้างสูตร:
แต่ละสูตรต้องเริ่มต้นด้วยเครื่องหมายเท่ากับ (=)
คุณสามารถพิมพ์หรือเลือกชื่อฟังก์ชัน หรือพิมพ์นิพจน์ก็ได้
เริ่มพิมพ์ตัวอักษร 2-3 ตัวแรกของฟังก์ชันหรือชื่อที่คุณต้องการ จากนั้น AutoComplete จะแสดงรายการฟังก์ชัน ตาราง และคอลัมน์ที่พร้อมใช้งาน กด TAB เพื่อเพิ่มหน่วยข้อมูลจากรายการ AutoComplete ไปยังสูตร
คุณยังสามารถคลิกปุ่ม Fx เพื่อแสดงรายการของฟังก์ชันที่พร้อมใช้งาน หากต้องการเลือกฟังก์ชันจากรายการแบบเลื่อนลง ให้ใช้ปุ่มลูกศรเพื่อไฮไลต์หน่วยข้อมูล แล้วคลิก ตกลง เพื่อเพิ่มฟังก์ชันลงในสูตร
ใส่อาร์กิวเมนต์ไปยังฟังก์ชันโดยการเลือกจากรายการแบบเลื่อนลงของตารางและคอลัมน์ที่เป็นไปได้ หรือโดยการพิมพ์ค่า
ตรวจสอบข้อผิดพลาดทางไวยากรณ์: ตรวจสอบให้แน่ใจว่าวงเล็บทั้งหมดปิดเรียบร้อย และคอลัมน์ ตาราง และค่าถูกอ้างอิงอย่างถูกต้อง
กด ENTER เพื่อยอมรับสูตร
หมายเหตุ
ในคอลัมน์จากการคํานวณ ทันทีที่คุณป้อนสูตรและสูตรได้รับการตรวจสอบแล้ว คอลัมน์จะถูกเติมด้วยค่าต่างๆ ในหน่วยวัด การกด ENTER จะบันทึกข้อกําหนดหน่วยวัดพร้อมตาราง ถ้าสูตรไม่ถูกต้อง ระบบจะแสดงข้อผิดพลาด
ในตัวอย่างนี้ มาดูสูตรในหน่วยวัดที่ชื่อว่า วันในไตรมาสปัจจุบัน:
Days in Current Quarter = COUNTROWS( DATESBETWEEN( 'Date'[Date], STARTOFQUARTER( LASTDATE('Date'[Date])), ENDOFQUARTER('Date'[Date])))
หน่วยวัดนี้ใช้ในการสร้างอัตราส่วนการเปรียบเทียบระหว่างช่วงเวลาที่ไม่สมบูรณ์และช่วงเวลาก่อนหน้า สูตรจะต้องคํานึงถึงสัดส่วนของรอบระยะเวลาที่ผ่านไป และเปรียบเทียบกับสัดส่วนเดียวกันในรอบระยะเวลาก่อนหน้านี้ ในกรณีนี้ [Days Current Quarter to Date]/[Days in Current Quarter] จะให้สัดส่วนที่ผ่านไปในรอบระยะเวลาปัจจุบัน
สูตรนี้ประกอบด้วยองค์ประกอบต่อไปนี้:
องค์ประกอบสูตร | Description |
---|---|
Days in Current Quarter |
ชื่อของหน่วยวัด |
= |
เครื่องหมายเท่ากับ (=) จะเริ่มต้นสูตร |
COUNTROWS |
COUNTROWS นับจํานวนแถวในตารางวันที่ |
() |
วงเล็บเปิดและปิดจะระบุอาร์กิวเมนต์ |
DATESBETWEEN |
ฟังก์ชัน DATESBETWEEN แสดงวันที่ระหว่างวันที่สุดท้ายสําหรับแต่ละค่าในคอลัมน์วันที่ในตารางวันที่ |
'Date' |
ระบุตารางวันที่ ตารางอยู่ในเครื่องหมายอัญประกาศเดี่ยว |
[Date] |
ระบุคอลัมน์วันที่ในตารางวันที่ คอลัมน์อยู่ในเครื่องหมายวงเล็บปีกกา |
, |
|
STARTOFQUARTER |
ฟังก์ชัน STARTOFQUARTER แสดงวันที่เริ่มต้นของไตรมาส |
LASTDATE |
ฟังก์ชัน LASTDATE แสดงวันที่สุดท้ายของไตรมาส |
'Date' |
ระบุตารางวันที่ |
[Date] |
ระบุคอลัมน์วันที่ในตารางวันที่ |
, |
|
ENDOFQUARTER |
ฟังก์ชัน ENDOFQUARTER |
'Date' |
ระบุตารางวันที่ |
[Date] |
ระบุคอลัมน์วันที่ในตารางวันที่ |
การใช้สูตร AutoComplete
AutoComplete ช่วยให้คุณใส่ไวยากรณ์สูตรที่ถูกต้องโดยให้คุณมีตัวเลือกสําหรับแต่ละองค์ประกอบในสูตร
คุณสามารถใช้สูตร AutoComplete ในช่วงกลางของสูตรที่มีอยู่กับฟังก์ชันที่ซ้อนกัน ข้อความที่ติดกับหน้าจุดแทรกจะถูกใช้เพื่อแสดงค่าในรายการดรอปดาวน์ และข้อความทั้งหมดที่อยู่หลังจุดแทรกจะยังคงไม่เปลี่ยนแปลง
AutoComplete ไม่เป็นการเพิ่มวงเล็บปิดของฟังก์ชัน หรือจับคู่วงเล็บโดยอัตโนมัติ คุณต้องตรวจสอบให้แน่ใจว่าไวยากรณ์แต่ละฟังก์ชันถูกต้องหรือไม่สามารบันทึกหรือใช้สูตรได้
การใช้ฟังก์ชันหลายรายการในสูตร
คุณสามารถซ้อนฟังก์ชันได้ หมายความว่าคุณใช้ผลลัพธ์จากฟังก์ชันหนึ่งเป็นอาร์กิวเมนต์ของฟังก์ชันอื่น คุณสามารถซ้อนฟังก์ชันต่าง ๆ ได้สูงสุด 64 ระดับในคอลัมน์จากการคํานวณ อย่างไรก็ตาม การซ้อนอาจทําให้ยากต่อการสร้างหรือแก้ไขปัญหาของสูตร ฟังก์ชันจํานวนมากถูกออกแบบมาเพื่อใช้เป็นฟังก์ชันที่ซ้อนกันเท่านั้น ฟังก์ชันเหล่านี้จะแสดงตารางซึ่งไม่สามารถบันทึกได้โดยตรงเป็นผลลัพธ์ ซึ่งจะต้องได้รับการระบุเป็นข้อมูลป้อนเข้าไปยังฟังก์ชันตาราง ตัวอย่างเช่น ฟังก์ชัน SUMX, AVERAGEX และ MINX ทั้งหมดจําเป็นต้องมีตารางเป็นอาร์กิวเมนต์แรก
ฟังก์ชัน
ฟังก์ชันเป็นสูตรที่มีชื่ออยู่ภายในนิพจน์ ฟังก์ชันส่วนใหญ่จําเป็นต้องมี และอาร์กิวเมนต์ที่เป็นตัวเลือก หรือที่เรียกว่าพารามิเตอร์เป็นข้อมูลป้อนเข้า เมื่อฟังก์ชันปฏิบัติการ ค่าจะถูกส่งกลับ DAX มีฟังก์ชันที่คุณสามารถใช้เพื่อทําการคํานวณโดยใช้วันที่และเวลา สร้างค่าแบบมีเงื่อนไข ทํางานกับสตริง ต่าง ๆ ทําการค้นหาโดยยึดตามความสัมพันธ์ และความสามารถในการทําซ้ําในตารางเพื่อทําการคํานวณแบบเรียกใช้ซ้ํา หากคุณคุ้นเคยกับสูตร Excel ฟังก์ชันเหล่านี้หลายรายการจะปรากฏคล้ายกันมาก อย่างไรก็ตาม สูตร DAX จะแตกต่างกันในลักษณะที่สําคัญดังต่อไปนี้:
ฟังก์ชัน DAX จะอ้างอิงถึงคอลัมน์หรือตารางทั้งหมดเสมอ ถ้าคุณต้องการใช้ค่าเฉพาะจากตารางหรือคอลัมน์เท่านั้น คุณสามารถเพิ่มตัวกรองลงในสูตรได้
ถ้าคุณต้องการกําหนดการคํานวณเองแบบทีละแถว DAX มีฟังก์ชันที่ช่วยให้คุณใช้ค่าแถวปัจจุบันหรือค่าที่เกี่ยวข้องเช่น ชนิดของพารามิเตอร์ เพื่อทําการคํานวณที่แตกต่างกันไปตามบริบท หากต้องการทําความเข้าใจวิธีการทํางานของฟังก์ชันเหล่านี้ โปรดดู บริบท ในบทความนี้
DAX มีฟังก์ชันต่าง ๆ ที่ส่งคืนตารางแทนที่จะเป็นค่า ตารางจะไม่แสดงในไคลเอ็นต์รายงาน แต่จะใช้เพื่อให้ข้อมูลป้อนเข้าไปยังฟังก์ชันอื่น ๆ ตัวอย่างเช่น คุณสามารถเรียกใช้ตารางแล้วนับค่าที่แตกต่างกันในนั้น หรือคํานวณผลรวมแบบไดนามิกผ่านตารางหรือคอลัมน์ที่กรองแล้ว
ฟังก์ชัน DAX หมายรวมถึงฟังก์ชันตัวแสดงเวลาต่าง ๆ ที่หลากหลาย ฟังก์ชันเหล่านี้ช่วยให้คุณสามารถกําหนดหรือเลือกช่วงวันที่ และดําเนินการคํานวณแบบไดนามิกตามช่วงวันที่เหล่านี้ ตัวอย่างเช่น คุณสามารถเปรียบเทียบผลรวมตลอดระยะเวลาแบบขนาน
ฟังก์ชันการรวม
ฟังก์ชันการรวมจะคํานวณค่า (สเกลา) เช่น จํานวนนับ ผลรวม ค่าเฉลี่ย ค่าต่ําสุด หรือสูงสุดสําหรับแถวทั้งหมดในคอลัมน์หรือตารางตามที่กําหนดโดยนิพจน์ หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันการรวม
ฟังก์ชันวันที่และเวลา
ฟังก์ชันวันที่และเวลาใน DAX จะคล้ายกับฟังก์ชันวันที่และเวลาใน Microsoft Excel อย่างไรก็ตาม ฟังก์ชัน DAX จะขึ้นอยู่กับชนิดข้อมูล datetime ที่เริ่มต้นวันที่ 1 มีนาคม 1900 หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันวันที่และเวลา
ฟังก์ชันตัวกรอง
ฟังก์ชันตัวกรองใน DAX จะแสดงชนิดข้อมูลที่เฉพาะเจาะจง ค้นหาค่าต่าง ๆ ในข้อมูลที่เกี่ยวข้อง และกรองตามค่าที่เกี่ยวข้อง ฟังก์ชัน lookup ทํางานโดยใช้ตารางและความสัมพันธ์ เช่น ฐานข้อมูล ฟังก์ชันการกรองช่วยให้คุณจัดการบริบทข้อมูลเพื่อสร้างการคํานวณแบบไดนามิก หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันตัวกรอง
ฟังก์ชันทางการเงิน
ฟังก์ชันทางการเงินใน DAX จะใช้ในสูตรที่ทําการคํานวณทางการเงิน เช่น มูลค่าปัจจุบันสุทธิและอัตราผลตอบแทน ฟังก์ชันเหล่านี้จะคล้ายกับฟังก์ชันทางการเงินที่ใช้ใน Microsoft Excel หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันทางการเงิน
ฟังก์ชันข้อมูล
ฟังก์ชันข้อมูลจะดูที่เซลล์หรือแถวที่ระบุให้เป็นอาร์กิวเมนต์ และบอกให้คุณทราบว่าค่าตรงกับชนิดที่คาดไว้หรือไม่ ตัวอย่างเช่น ฟังก์ชัน ISERROR ส่งกลับค่า TRUE ถ้าค่าที่คุณอ้างอิงมีข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันข้อมูล
ฟังก์ชันตรรกะ
ฟังก์ชันตรรกะจะดําเนินการตามนิพจน์เพื่อแสดงข้อมูลเกี่ยวกับค่าต่าง ๆ ในนิพจน์ ตัวอย่างเช่น ฟังก์ชัน TRUE ช่วยให้คุณทราบว่านิพจน์ที่คุณกําลังประเมินส่งกลับค่า TRUE หรือไม่ หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันตรรกะ
ฟังก์ชันทางคณิตศาสตร์และตรีโกณมิติ
ฟังก์ชันทางคณิตศาสตร์ใน DAX มีลักษณะคล้ายกับฟังก์ชันทางคณิตศาสตร์และตรีโกณมิติของ Excel มีความแตกต่างเล็กน้อยบางอย่างในชนิดข้อมูลตัวเลขที่ใช้โดยฟังก์ชัน DAX หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันคณิตศาสตร์และตรีโกณิต
ฟังก์ชันอื่น ๆ
ฟังก์ชันเหล่านี้ทําการดําเนินการที่ไม่ซ้ํากัน ซึ่งไม่สามารถกําหนดโดยฟังก์ชันอื่น ๆ ส่วนใหญ่ในหมวดหมู่ใด ๆ ได้ หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันอื่น ๆ
ฟังก์ชันความสัมพันธ์
ฟังก์ชันความสัมพันธ์ใน DAX ช่วยให้คุณสามารถส่งกลับค่าจากตารางอื่นที่เกี่ยวข้อง ระบุความสัมพันธ์เฉพาะเพื่อใช้ในนิพจน์ และระบุทิศทางการกรองข้าม หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันความสัมพันธ์
ฟังก์ชันทางสถิติ
ฟังก์ชันทางสถิติจะคํานวณค่าที่เกี่ยวข้องกับการแจกแจงทางสถิติและความน่าจะเป็น เช่น ค่าเบี่ยงเบนมาตรฐานและจํานวนการเรียงสับเปลี่ยน หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันทางสถิติ
ฟังก์ชันข้อความ
ฟังก์ชันข้อความใน DAX จะคล้ายกับฟังก์ชันประเภทเดียวกันใน Excel คุณสามารถแสดงส่วนของสตริง ค้นหาข้อความภายในสตริง หรือเชื่อมค่าต่าง ๆ ของสตริงเข้าด้วยกัน DAX ยังมีฟังก์ชันสําหรับการควบคุมรูปแบบสําหรับวันที่ เวลา และตัวเลข หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันข้อความ
ฟังก์ชันตัวแสดงเวลา
ฟังก์ชันตัวแสดงเวลาที่ให้ไว้ใน DAX ช่วยให้คุณสร้างการคํานวณที่ใช้ความรู้ที่มีอยู่ภายในเกี่ยวกับปฏิทินและวันที่ ด้วยการใช้ช่วงเวลาและวันที่พร้อมกับการรวมหรือการคํานวณ คุณจะสามารถสร้างการเปรียบเทียบที่มีความหมายในช่วงเวลาที่เปรียบเทียบสําหรับยอดขาย สินค้าคงคลัง และอื่น ๆ เมื่อต้องการเรียนรู้เพิ่มเติม ดู ฟังก์ชันตัวแสดงเวลา (DAX)
ฟังก์ชันการจัดการตาราง
ฟังก์ชันเหล่านี้จะแสดงตารางหรือจัดการตารางที่มีอยู่ ตัวอย่างเช่น คุณสามารถเพิ่มคอลัมน์จากการคํานวณลงในตารางที่ระบุ หรือคุณสามารถส่งกลับตารางสรุปในชุดของกลุ่มที่มีฟังก์ชัน SUMMARIZECOLUMNS ได้โดยใช้ ADDCOLUMNS หากต้องการเรียนรู้เพิ่มเติม โปรดดู ฟังก์ชันการจัดการตาราง
ตัวแปร
คุณสามารถสร้างตัวแปรภายในนิพจน์โดยใช้ VAR ในทางเทคนิคแล้ว VAR ไม่ใช่ฟังก์ชัน แต่เป็นคําสําคัญในการจัดเก็บผลลัพธ์ของนิพจน์เป็นตัวแปรที่มีชื่อ จากนั้น ตัวแปรดังกล่าวจะสามารถส่งผ่านเป็นอาร์กิวเมนต์ไปยังนิพจน์หน่วยวัดอื่น ๆ ได้ ตัวอย่างเช่น
VAR
TotalQty = SUM ( Sales[Quantity] )
Return
IF (
TotalQty > 1000,
TotalQty * 0.95,
TotalQty * 1.25
)
ในตัวอย่างนี้ TotalQty สามารถส่งผ่านเป็นตัวแปรที่มีชื่อไปยังนิพจน์อื่น ๆ ได้ ตัวแปรสามารถเป็นชนิดข้อมูลสเกลาใด ๆ รวมถึงตารางได้ การใช้ตัวแปรในสูตร DAX ของคุณสามารถมีประสิทธิภาพอย่างเหลือเชื่อได้
ชนิดข้อมูล
คุณสามารถนําเข้าข้อมูลลงในแบบจําลองจากแหล่งข้อมูลที่แตกต่างกันมากมายที่อาจสนับสนุนชนิดข้อมูลที่แตกต่างกัน เมื่อคุณนําเข้าข้อมูลไปยังแบบจําลอง ข้อมูลจะถูกแปลงเป็นหนึ่งในชนิดข้อมูลแบบจําลองตาราง เมื่อมีการใช้ข้อมูลแบบจําลองในการคํานวณ ข้อมูลจะถูกแปลงเป็นชนิดข้อมูล DAX สําหรับระยะเวลาและผลลัพธ์ของการคํานวณ เมื่อคุณสร้างสูตร DAX เงื่อนไขที่ใช้ในสูตรจะกําหนดชนิดข้อมูลค่าที่ส่งกลับโดยอัตโนมัติ
DAX สนับสนุนชนิดข้อมูลต่อไปนี้:
ชนิดข้อมูลในแบบจําลอง | ชนิดข้อมูลใน DAX | Description |
---|---|---|
จำนวนเต็ม | ค่า จํานวนเต็ม 64 บิต (แปดไบต์) 1, 2 | ตัวเลขที่ไม่มีตําแหน่งทศนิยม จํานวนเต็มอาจเป็นจํานวนบวกหรือลบก็ได้ แต่จะต้องเป็นจํานวนเต็มระหว่าง -9,223,372,036,854,775,808 (-2^63) ถึง 9,223,372,036,854,775,807 (2^63-1) |
เลขทศนิยม | จํานวน จริง 64 บิต (แปดไบต์) 1, 2 | จํานวนจริงคือตัวเลขที่สามารถมีตําแหน่งทศนิยมได้ จํานวนจริงจะครอบคลุมค่าที่หลากหลาย: ค่าลบตั้งแต่ -1.79E +308 ถึง -2.23E -308 Zero ค่าบวกตั้งแต่ 2.23E -308 ถึง 1.79E + 308 อย่างไรก็ตาม จํานวนหลักที่มีนัยสําคัญจะถูกจํากัดไว้ที่ 17 หลักทศนิยม |
Boolean | Boolean | ค่าจริงหรือเท็จ |
Text | สตริง | สตริงข้อมูลอักขระ Unicode อาจเป็นสตริง ตัวเลข หรือวันที่ที่แสดงในรูปแบบข้อความ |
Date | วันที่/เวลา | วันที่และเวลาในรูปแบบการแสดงวันที่-เวลาที่ยอมรับ วันที่ที่ถูกต้องคือวันที่ทั้งหมดหลังจากวันที่ 1 มีนาคม 1900 |
สกุลเงิน | สกุลเงิน | ชนิดข้อมูลสกุลเงินอนุญาตค่าระหว่าง -922,337,203,685,477.5808 ถึง 922,337,203,685,477.5807 ที่มีเลขทศนิยมสี่หลักซึ่งมีค่าคงที่ |
ไม่ระบุ | Blank | ช่องว่างเป็นชนิดข้อมูลใน DAX ที่แสดงและแทนที่ SQL null คุณสามารถสร้างช่องว่างโดยใช้ฟังก์ชัน BLANK และทดสอบช่องว่างโดยใช้ฟังก์ชันตรรกะ ISBLANK |
รูปแบบข้อมูลแบบตารางยังรวมถึง ชนิดข้อมูล ตาราง ในรูปแบบข้อมูลป้อนเข้าหรือผลลัพธ์ไปยังฟังก์ชัน DAX ต่าง ๆ ตัวอย่างเช่น ฟังก์ชัน FILTER จะใช้ตารางหนึ่งเป็นข้อมูลป้อนเข้าและส่งออกผลลัพธ์ไปยังตารางอื่นที่มีเฉพาะแถวที่ตรงตามเงื่อนไขตัวกรอง เมื่อรวมฟังก์ชันตารางกับฟังก์ชันการรวม คุณจะสามารถทําการคํานวณที่ซับซ้อนกว่าชุดข้อมูลที่กําหนดไว้แบบไดนามิก
โดยทั่วไป ในขณะที่ชนิดข้อมูลถูกตั้งค่าโดยอัตโนมัติ เป็นเรื่องสําคัญที่ต้องทําความเข้าใจชนิดข้อมูลและวิธีการใช้งาน โดยเฉพาะกับสูตร DAX ข้อผิดพลาดในสูตรหรือผลลัพธ์ที่ไม่คาดคิด มักจะเกิดขึ้นจากการใช้ตัวดําเนินการเฉพาะที่ไม่สามารถใช้กับชนิดข้อมูลที่ระบุในอาร์กิวเมนต์ได้ ตัวอย่างเช่น สูตร จะแสดง = 1 & 2
ผลลัพธ์สตริงของ 12 อย่างไรก็ตาม = "1" + "2"
สูตรจะแสดงผลลัพธ์จํานวนเต็มของ 3
บริบท
บริบท เป็นแนวคิดที่สําคัญในการทําความเข้าใจเมื่อสร้างสูตร DAX บริบทคือสิ่งที่ช่วยให้คุณสามารถทําการวิเคราะห์แบบไดนามิกเนื่องจากผลลัพธ์ของสูตรจะเปลี่ยนแปลงเพื่อแสดงแถวหรือการเลือกเซลล์ปัจจุบันและข้อมูลใด ๆ ที่เกี่ยวข้อง การทําความเข้าใจบริบทและการใช้บริบทอย่างมีประสิทธิภาพเป็นสิ่งสําคัญสําหรับการสร้างการวิเคราะห์แบบไดนามิกที่มีประสิทธิภาพสูงและสําหรับการแก้ไขปัญหาในสูตร
สูตรในแบบจําลองตารางสามารถประเมินได้ในบริบทที่แตกต่างกัน โดยขึ้นอยู่กับองค์ประกอบการออกแบบอื่น ๆ:
- ตัวกรองที่ใช้ใน PivotTable หรือรายงาน
- ตัวกรองที่กําหนดไว้ภายในสูตร
- ความสัมพันธ์ที่ระบุโดยใช้ฟังก์ชันพิเศษภายในสูตร
มีบริบทอยู่หลายชนิด: บริบทแถว, บริบทคิวรี และ บริบทตัวกรอง
บริบทแถว
บริบท แถวอาจเรียกว่า "แถวปัจจุบัน" ถ้าคุณสร้างสูตรในคอลัมน์จากการคํานวณ บริบทแถวสําหรับสูตรนั้นจะรวมค่าจากคอลัมน์ทั้งหมดในแถวปัจจุบัน ถ้าตารางเกี่ยวข้องกับตารางอื่น เนื้อหาจะรวมค่าทั้งหมดจากตารางอื่นที่เกี่ยวข้องกับแถวปัจจุบันด้วย
ตัวอย่างเช่น สมมติว่าคุณสร้างคอลัมน์ = [Freight] + [Tax]
จากการคํานวณ ที่เพิ่มค่ารวมกันจากสองคอลัมน์ คือ การขนส่งและภาษี จากตารางเดียวกัน สูตรนี้จะดึงข้อมูลเฉพาะค่าจากแถวปัจจุบันในคอลัมน์ที่ระบุเท่านั้น
บริบทแถวยังเป็นไปตามความสัมพันธ์ใด ๆ ที่ได้รับการกําหนดระหว่างตาราง รวมถึงความสัมพันธ์ที่กําหนดไว้ภายในคอลัมน์จากการคํานวณโดยใช้สูตร DAX เพื่อกําหนดว่าแถวใดในตารางที่เกี่ยวข้องจะเชื่อมโยงกับแถวปัจจุบัน
ตัวอย่างเช่น สูตรต่อไปนี้ใช้ฟังก์ชัน RELATED เพื่อดึงข้อมูลค่าภาษีจากตารางที่เกี่ยวข้อง ตามภูมิภาคที่มีการจัดส่งสินค้าที่สั่งซื้อ ค่าภาษีจะถูกกําหนดโดยใช้ค่าสําหรับภูมิภาคในตารางปัจจุบัน โดยค้นหาภูมิภาคในตารางที่เกี่ยวข้อง จากนั้นจะดึงข้อมูลอัตราภาษีสําหรับภูมิภาคนั้นจากตารางที่เกี่ยวข้อง
= [Freight] + RELATED('Region'[TaxRate])
สูตรนี้จะดึงข้อมูลอัตราภาษีสําหรับภูมิภาคปัจจุบันจากตารางภูมิภาคและเพิ่มไปยังค่าของคอลัมน์การขนส่ง ในสูตร DAX คุณไม่จําเป็นต้องทราบหรือระบุความสัมพันธ์เฉพาะที่เชื่อมต่อตาราง
บริบทหลายแถว
DAX มีฟังก์ชันที่ทําซ้ําการคํานวณในตาราง ฟังก์ชันเหล่านี้สามารถมีแถวปัจจุบันได้หลายแถว ซึ่งแต่ละรายการมีบริบทแถวของตนเอง สาระสําคัญคือ ฟังก์ชันเหล่านี้ช่วยให้คุณสร้างสูตรที่ทําการดําเนินการซ้ําผ่านลูปภายในและภายนอก
ตัวอย่างเช่น สมมติว่าแบบจําลองของคุณประกอบด้วยตาราง ผลิตภัณฑ์ และตาราง ยอดขาย ผู้ใช้อาจต้องการดูตารางยอดขายทั้งหมด ซึ่งเต็มไปด้วยธุรกรรมที่เกี่ยวข้องกับหลายผลิตภัณฑ์ และค้นหาจํานวนผลิตภัณฑ์ที่ใหญ่ที่สุดที่สั่งซื้อสําหรับแต่ละผลิตภัณฑ์ในหนึ่งธุรกรรม
ด้วย DAX คุณสามารถสร้างสูตรเดียวที่แสดงค่าที่ถูกต้อง และผลลัพธ์จะได้รับการอัปเดตโดยอัตโนมัติทุกครั้งที่ผู้ใช้เพิ่มข้อมูลไปยังตาราง
= MAXX(FILTER(Sales,[ProdKey] = EARLIER([ProdKey])),Sales[OrderQty])
สําหรับตัวอย่างโดยละเอียดของสูตรนี้ ให้ดู EARLIER
เพื่อสรุป ฟังก์ชัน EARLIER จะจัดเก็บบริบทแถวจากการดําเนินการที่มีก่อนหน้าการดําเนินการปัจจุบัน ตลอดเวลา ฟังก์ชันจะจัดเก็บบริบทสองชุดในหน่วยความจํา: บริบทหนึ่งชุดแสดงแถวปัจจุบันสําหรับลูปภายในของสูตร และอีกชุดหนึ่งแสดงแถวปัจจุบันสําหรับลูปภายนอกของสูตร DAX จะดึงค่าต่าง ๆ ระหว่างสองลูปโดยอัตโนมัติ เพื่อให้คุณสามารถสร้างผลรวมที่ซับซ้อนได้
บริบทคิวรี
บริบท คิวรีอ้างอิงถึงชุดย่อยของข้อมูลที่ถูกเรียกใช้สําหรับสูตรโดยนัย ตัวอย่างเช่น เมื่อผู้ใช้วางหน่วยวัดหรือเขตข้อมูลลงในรายงาน กลไกจะตรวจสอบส่วนหัวของแถวและคอลัมน์ ตัวแบ่งส่วนข้อมูล และตัวกรองรายงานเพื่อกําหนดบริบท จากนั้นคิวรีที่จําเป็นจะถูกเรียกใช้กับข้อมูลแบบจําลองเพื่อรับชุดย่อยของข้อมูลที่ถูกต้อง ทําการคํานวณที่กําหนดโดยสูตร แล้วเติมค่าในรายงาน
เนื่องจากการเปลี่ยนแปลงบริบทโดยขึ้นอยู่กับตําแหน่งที่คุณวางสูตร ผลลัพธ์ของสูตรยังสามารถเปลี่ยนแปลงได้ ตัวอย่างเช่น สมมติว่าคุณสร้างสูตรที่รวมยอดค่าในคอลัมน์ กําไร ของตาราง ยอดขาย: = SUM('Sales'[Profit])
ถ้าคุณใช้สูตรนี้ในคอลัมน์จากการคํานวณภายใน ตาราง ยอดขาย ผลลัพธ์สําหรับสูตรจะเหมือนกันทั้งตาราง เนื่องจากบริบทคิวรีสําหรับสูตรจะเป็นชุดข้อมูล ทั้งหมดของตาราง Sales เสมอ ผลลัพธ์จะมีกําไรสําหรับภูมิภาคทั้งหมด ผลิตภัณฑ์ทั้งหมด ปีทั้งหมด และอื่น ๆ
อย่างไรก็ตาม ผู้ใช้โดยทั่วไปแล้วไม่ต้องการดูผลลัพธ์เดียวกันหลายร้อยครั้ง แต่ต้องการดูกําไรสําหรับปี ประเทศ ผลิตภัณฑ์เฉพาะ หรือชุดข้อมูลดังกล่าวนี้ จากนั้นจึงเรียกดูผลรวมทั้งหมด
ในรายงาน จะมีการเปลี่ยนแปลงบริบทโดยการกรอง เพิ่ม หรือลบเขตข้อมูลออก และใช้ตัวแบ่งส่วนข้อมูล สําหรับแต่ละการเปลี่ยนแปลง บริบทคิวรีที่มีการประเมินหน่วยวัด ดังนั้น สูตรเดียวกันนี้ที่ใช้ในหน่วยวัด จะถูกประเมินผลในบริบทคิวรีที่แตกต่างกันสําหรับแต่ละเซลล์
บริบทตัวกรอง
บริบท ตัวกรองคือชุดของค่าที่ได้รับอนุญาตในแต่ละคอลัมน์หรือในค่าที่ดึงมาจากตารางที่เกี่ยวข้อง สามารถนําตัวกรองไปใช้กับคอลัมน์ในตัวออกแบบ หรือในเลเยอร์งานนําเสนอ (รายงานและ PivotTables) นอกจากนี้ ยังสามารถกําหนดตัวกรองอย่างชัดเจนด้วยนิพจน์ตัวกรองภายในสูตร
บริบทตัวกรองจะถูกเพิ่มเมื่อคุณระบุข้อจํากัดตัวกรองบนชุดของค่าที่ได้รับอนุญาตในคอลัมน์หรือตาราง โดยใช้อาร์กิวเมนต์ไปยังสูตร บริบทตัวกรองจะใช้ที่ด้านบนของบริบทอื่น ๆ เช่น บริบทแถวหรือบริบทคิวรี
ในแบบจําลองตาราง มีหลายวิธีในการสร้างบริบทตัวกรอง ภายในบริบทของไคลเอ็นต์ที่สามารถใช้แบบจําลอง เช่น รายงาน Power BI ผู้ใช้สามารถสร้างตัวกรองได้ทันทีโดยการเพิ่มตัวแบ่งส่วนข้อมูลหรือตัวกรองรายงานในส่วนหัวของแถวและคอลัมน์ คุณยังสามารถระบุนิพจน์ตัวกรองได้โดยตรงภายในสูตร เพื่อระบุค่าที่เกี่ยวข้อง เพื่อกรองตารางที่ใช้เป็นข้อมูลป้อนเข้า หรือเพื่อเรียกดูบริบทสําหรับค่าต่าง ๆ ที่ใช้ในการคํานวณแบบไดนามิก คุณยังสามารถล้างตัวกรองบนคอลัมน์เฉพาะแบบทั้งหมดหรือแบบเลือกรายการก็ได้ ซึ่งมีประโยชน์มากในการสร้างสูตรที่คํานวณผลรวมทั้งหมด
เมื่อต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการสร้างตัวกรองภายในสูตร ดูฟังก์ชัน FILTER (DAX)
สําหรับตัวอย่างของวิธีการล้างตัวกรองเพื่อสร้างผลรวมทั้งหมด ดู ฟังก์ชัน ALL (DAX)
สําหรับตัวอย่างของวิธีการล้างแบบเลือกรายการและใช้ตัวกรองภายในสูตร ให้ดู ALLEXCEPT
การกําหนดบริบทในสูตร
เมื่อคุณสร้างสูตร DAX ระบบจะทดสอบสูตรสําหรับไวยากรณ์ที่ถูกต้องก่อน จากนั้นจะทดสอบเพื่อให้แน่ใจว่าชื่อของคอลัมน์และตารางที่รวมอยู่ในสูตรสามารถพบได้ในบริบทปัจจุบัน ถ้าไม่พบคอลัมน์หรือตารางใด ๆ ที่ระบุโดยสูตร ข้อผิดพลาดจะแสดงขึ้น
บริบทระหว่างการตรวจสอบความถูกต้อง (และการดําเนินการคํานวณใหม่) จะถูกกําหนดตามที่อธิบายไว้ในส่วนก่อนหน้าโดยใช้ตารางที่มีอยู่ในแบบจําลอง ความสัมพันธ์ใด ๆ ระหว่างตารางและตัวกรองใด ๆ ที่มีการนําไปใช้
ตัวอย่างเช่น ถ้าคุณเพิ่งนําเข้าข้อมูลบางอย่างลงในตารางใหม่ และไม่เกี่ยวข้องกับตารางอื่น (และคุณไม่ได้ใช้ตัวกรองใด ๆ) บริบท ปัจจุบันจะเป็นชุดของคอลัมน์ทั้งหมดในตาราง หากตารางเชื่อมโยงโดยความสัมพันธ์กับตารางอื่น บริบทปัจจุบันจะรวมถึงตารางที่เกี่ยวข้อง ถ้าคุณเพิ่มคอลัมน์จากตารางไปยังรายงานที่มีตัวแบ่งส่วนข้อมูล และอาจมีตัวกรองรายงานบางรายการ บริบทสําหรับสูตรคือชุดย่อยของข้อมูลในแต่ละเซลล์ของรายงาน
บริบทคือแนวคิดที่ทรงพลังซึ่งยังอาจทําให้การแก้ไขปัญหาสูตรทําได้ยากด้วย เราขอแนะนําให้คุณเริ่มต้นด้วยสูตรและความสัมพันธ์อย่างง่ายเพื่อดูวิธีการทํางานของบริบท ส่วนต่อไปนี้แสดงตัวอย่างของวิธีที่สูตรใช้บริบทชนิดต่าง ๆ ในการแสดงผลลัพธ์แบบไดนามิก
ตัวดำเนินการ
ภาษา DAX ใช้ตัวดําเนินการคํานวณที่แตกต่างกันสี่ชนิดในสูตร:
- ตัวดําเนินการเปรียบเทียบเพื่อเปรียบเทียบค่าและแสดงค่า TRUE\FALSE เชิงตรรกะ
- ตัวดําเนินการทางคณิตศาสตร์เพื่อดําเนินการคํานวณทางคณิตศาสตร์ที่ส่งกลับค่าตัวเลข
- ตัวดําเนินการเรียงต่อข้อความเพื่อรวมสตริงข้อความสองรายการขึ้นไป
- ตัวดําเนินการเชิงตรรกะที่รวมนิพจน์สองรายการขึ้นไปเพื่อแสดงผลลัพธ์เดียว
สําหรับข้อมูลโดยละเอียดเกี่ยวกับตัวดําเนินการที่ใช้ในสูตร DAX โปรดดู ตัวดําเนินการ DAX
การทํางานกับตารางและคอลัมน์
ตารางในรูปแบบข้อมูลแบบตารางมีลักษณะเหมือนกับตาราง Excel แต่จะแตกต่างกันในลักษณะที่ทํางานกับข้อมูลและด้วยสูตร:
- สูตรจะทํางานกับตารางและคอลัมน์เท่านั้น ไม่ใช่กับเซลล์แบบทีละเซลล์ การอ้างอิงช่วง หรืออาร์เรย์
- สูตรสามารถใช้ความสัมพันธ์เพื่อรับค่าจากตารางที่เกี่ยวข้อง ค่าที่จะถูกเรียกใช้จะเกี่ยวข้องกับค่าแถวปัจจุบันเสมอ
- คุณไม่สามารถมีข้อมูลที่ไม่สม่ําเสมอหรือ "ไม่ครีบ" เหมือนที่คุณสามารถทําได้ในเวิร์กชีต Excel แต่ละแถวในตารางต้องมีจํานวนคอลัมน์เท่ากัน อย่างไรก็ตาม คุณสามารถมีค่าว่างได้ในบางคอลัมน์ ตารางข้อมูล Excel และตารางข้อมูลแบบจําลองตารางจะไม่สามารถเปลี่ยนได้
- เนื่องจากมีการตั้งค่าชนิดข้อมูลสําหรับแต่ละคอลัมน์ แต่ละค่าในคอลัมน์นั้นต้องเป็นชนิดเดียวกัน
การอ้างอิงถึงตารางและคอลัมน์ในสูตร
คุณสามารถอ้างอิงไปยังตารางและคอลัมน์ใด ๆ ได้โดยใช้ชื่อ ตัวอย่างเช่น สูตรต่อไปนี้แสดงวิธีการอ้างอิงถึงคอลัมน์จากสองตารางโดยใช้ ชื่อที่มี คุณสมบัติครบถ้วน:
= SUM('New Sales'[Amount]) + SUM('Past Sales'[Amount])
เมื่อมีการประเมินสูตร ตัวออกแบบแบบจําลองจะตรวจสอบไวยากรณ์ทั่วไปก่อน จากนั้นจะตรวจสอบชื่อของคอลัมน์และตารางที่คุณให้กับคอลัมน์ที่เป็นไปได้และตารางในบริบทปัจจุบัน ถ้าชื่อกํากวม หรือถ้าไม่พบคอลัมน์หรือตาราง คุณจะได้รับข้อผิดพลาดบนสูตรของคุณ (สตริง #ERROR แทนที่จะเป็นค่าข้อมูลในเซลล์ที่มีข้อผิดพลาดเกิดขึ้น) หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับข้อกําหนดในการตั้งชื่อสําหรับตาราง คอลัมน์ และออบเจ็กต์อื่น ๆ ดูข้อกําหนดการตั้งชื่อใน ไวยากรณ์ DAX
ความสัมพันธ์ของตาราง
เมื่อสร้างความสัมพันธ์ระหว่างตาราง คุณจะได้รับความสามารถสําหรับค่าที่เกี่ยวข้องในตารางอื่นที่จะใช้ในการคํานวณ ตัวอย่างเช่น คุณสามารถใช้คอลัมน์จากการคํานวณเพื่อพิจารณาเรกคอร์ดการจัดส่งทั้งหมดที่เกี่ยวข้องกับผู้จําหน่ายปัจจุบัน จากนั้นจะรวมค่าใช้จ่ายในการจัดส่งสําหรับแต่ละรายการ อย่างไรก็ตาม ในหลายกรณี อาจไม่จําเป็นต้องมีความสัมพันธ์ คุณสามารถใช้ฟังก์ชัน LOOKUPVALUE ในสูตรเพื่อแสดงค่าใน result_columnName สําหรับแถวที่มีคุณสมบัติตรงกับเกณฑ์ที่ระบุไว้ในอาร์กิวเมนต์ search_column และ search_value
ฟังก์ชัน DAX จํานวนมากบังคับให้มีความสัมพันธ์ระหว่างตารางต่าง ๆ หรือในระหว่างตารางหลายตารางเพื่อระบุคอลัมน์ที่คุณได้อ้างอิงและแสดงผลลัพธ์ที่สมเหตุสมผล ฟังก์ชันอื่น ๆ จะพยายามระบุความสัมพันธ์ อย่างไรก็ตาม เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด คุณควรสร้างความสัมพันธ์ที่เป็นไปได้เสมอ แบบจําลองข้อมูลแบบตารางสนับสนุนความสัมพันธ์หลายรายการในตาราง เพื่อหลีกเลี่ยงผลลัพธ์ที่สับสนหรือไม่ถูกต้อง ความสัมพันธ์เดียวเท่านั้นที่จะถูกกําหนดเป็นความสัมพันธ์ที่ใช้งานอยู่ แต่คุณสามารถเปลี่ยนความสัมพันธ์ที่ใช้งานอยู่ได้ตามความจําเป็นในการดําเนินการเชื่อมต่อที่แตกต่างกันในข้อมูลในการคํานวณ ฟังก์ชัน USERELATIONSHIP สามารถใช้เพื่อระบุความสัมพันธ์อย่างน้อยหนึ่งรายการที่จะใช้ในการคํานวณเฉพาะ
สิ่งสําคัญคือต้องสังเกตกฎการออกแบบสูตรเหล่านี้เมื่อใช้ความสัมพันธ์:
เมื่อตารางมีการเชื่อมโยงโดยความสัมพันธ์ คุณต้องแน่ใจว่าสองคอลัมน์ที่ใช้เป็นคีย์มีค่าที่ตรงกัน ไม่มีการบังคับใช้ Referential Integrity ดังนั้นจึงเป็นไปได้ที่จะมีค่าที่ไม่ตรงกันในคอลัมน์คีย์และยังคงสร้างความสัมพันธ์ ถ้าเหตุการณ์นี้เกิดขึ้น คุณควรทราบว่าค่าว่างหรือค่าที่ไม่ตรงกันอาจส่งผลกระทบต่อผลลัพธ์ของสูตร
เมื่อคุณเชื่อมโยงตารางในแบบจําลองของคุณโดยใช้ความสัมพันธ์ คุณจะขยายขอบเขตหรือ บริบทที่สูตรของคุณได้รับการประเมิน การเปลี่ยนแปลงในบริบทที่เป็นผลมาจากการเพิ่มตารางใหม่ ความสัมพันธ์ใหม่ หรือจากการเปลี่ยนแปลงในความสัมพันธ์ที่ใช้งานอยู่อาจทําให้ผลลัพธ์ของคุณเปลี่ยนแปลงในรูปแบบที่คุณอาจไม่ได้คาดหวัง หากต้องการเรียนรู้เพิ่มเติม โปรดดู บริบท ในบทความนี้
ประมวลผลและรีเฟรช
ประมวลผล และ การคํานวณใหม่ เป็นการดําเนินการที่แยกจากกันแต่เกี่ยวข้องกัน คุณควรทําความเข้าใจแนวคิดเหล่านี้อย่างละเอียดเมื่อออกแบบแบบจําลองที่ประกอบด้วยสูตรที่ซับซ้อน ข้อมูลจํานวนมาก หรือข้อมูลที่ได้รับจากแหล่งข้อมูลภายนอก
ประมวลผล (รีเฟรช) กําลังอัปเดตข้อมูลในแบบจําลองด้วยข้อมูลใหม่จากแหล่งข้อมูลภายนอก
การคํานวณ ใหม่คือกระบวนการในการอัปเดตผลลัพธ์ของสูตรเพื่อแสดงการเปลี่ยนแปลงใด ๆ กับสูตรด้วยตนเอง และเพื่อสะท้อนการเปลี่ยนแปลงในข้อมูลเบื้องต้น การคํานวณใหม่อาจส่งผลกระทบต่อประสิทธิภาพการทํางานในลักษณะต่อไปนี้:
ค่าในคอลัมน์จากการคํานวณจะถูกคํานวณและจัดเก็บไว้ในแบบจําลอง หากต้องการอัปเดตค่าในคอลัมน์จากการคํานวณ คุณต้องประมวลผลแบบจําลองโดยใช้หนึ่งในสามคําสั่งประมวลผล ได้แก่ Process Full, Process Data หรือ Process Recalc ผลลัพธ์ของสูตรจะต้องได้รับการคํานวณใหม่สําหรับคอลัมน์ทั้งหมดเมื่อใดก็ตามที่คุณเปลี่ยนสูตร
ค่าที่คํานวณตามหน่วยวัดจะได้รับการประเมินแบบไดนามิกเมื่อใดก็ตามที่ผู้ใช้เพิ่มหน่วยวัดไปยัง PivotTable หรือเปิดรายงาน เมื่อผู้ใช้ปรับเปลี่ยนบริบท ค่าที่ส่งกลับโดยการเปลี่ยนแปลงหน่วยวัด ผลลัพธ์ของการวัดจะแสดงข้อมูลล่าสุดในแคชในหน่วยความจําเสมอ
การประมวลผลและการคํานวณใหม่จะไม่มีผลกับสูตรการรักษาความปลอดภัยระดับแถว เว้นแต่ว่าผลลัพธ์ของการคํานวณใหม่จะแสดงผลลัพธ์เป็นค่าที่แตกต่างกัน ดังนั้น จึงทําให้แถวสามารถทําการคิวรีหรือไม่สามารถใช้ได้ตามสมาชิกบทบาท
การอัปเดต
DAX ได้รับการปรับปรุงอย่างต่อเนื่อง ฟังก์ชัน ใหม่และที่อัปเดตจะถูกปล่อยออกมาพร้อมกับการอัปเดตที่พร้อมใช้งานถัดไป ซึ่งโดยปกติจะเป็นแบบรายเดือน บริการจะได้รับการอัปเดตก่อน ตามด้วยแอปพลิเคชันที่ติดตั้ง เช่น Power BI Desktop, Excel, SQL Server Management Studio (SSMS) และส่วนขยายโครงการ Analysis Services สําหรับ Visual Studio (SSDT) มีการอัปเดต SQL Server Analysis Services ในการอัปเดตสะสมครั้งถัดไป มีการประกาศและอธิบายฟังก์ชันใหม่ก่อนเป็นอันดับแรกในการอ้างอิงฟังก์ชัน DAX ที่ตรงกับการอัปเดต Power BI Desktop
ฟังก์ชันทั้งหมดไม่ได้รับการสนับสนุนใน SQL Server Analysis Services และ Excel เวอร์ชันก่อนหน้า
การแก้ไขปัญหา
ถ้าคุณได้รับข้อผิดพลาดเมื่อกําหนดสูตร สูตรอาจประกอบด้วยข้อผิดพลาดไวยากรณ์ ข้อผิดพลาดการสื่อความหมาย หรือข้อผิดพลาดการคํานวณ
ข้อผิดพลาดไวยากรณ์เป็นข้อผิดพลาดที่ง่ายที่สุดในการแก้ไข โดยทั่วไปแล้วจะเกี่ยวข้องกับวงเล็บที่ขาดหายไปหรือเครื่องหมายจุลภาค
ข้อผิดพลาดชนิดอื่น ๆ จะเกิดขึ้นเมื่อไวยากรณ์ถูกต้อง แต่ค่าหรือคอลัมน์ที่อ้างอิงจะไม่สมเหตุสมผลในบริบทของสูตร ข้อผิดพลาดการสื่อความหมายและการคํานวณดังกล่าวอาจเกิดจากปัญหาต่อไปนี้:
- สูตรอ้างอิงไปยังคอลัมน์ ตาราง หรือฟังก์ชันที่ไม่มีอยู่
- สูตรปรากฏถูกต้อง แต่เมื่อกลไกข้อมูลรับข้อมูล จะพบชนิดที่ไม่ตรงกันและทําให้เกิดข้อผิดพลาด
- สูตรจะส่งผ่านตัวเลขหรือชนิดของอาร์กิวเมนต์ที่ไม่ถูกต้องไปยังฟังก์ชัน
- สูตรอ้างอิงไปยังคอลัมน์อื่นที่มีข้อผิดพลาด ดังนั้นค่าจึงไม่ถูกต้อง
- สูตรอ้างอิงไปยังคอลัมน์ที่ยังไม่ได้รับการประมวลผล ซึ่งหมายความว่ามีเมตาดาต้า แต่ไม่มีข้อมูลจริงที่จะใช้สําหรับการคํานวณ
ในสี่กรณีแรก DAX จะตั้งค่าสถานะคอลัมน์ทั้งหมดที่มีสูตรที่ไม่ถูกต้อง ในกรณีสุดท้าย DAX จะย้อมสีคอลัมน์เป็นสีเทาเพื่อระบุว่าคอลัมน์อยู่ในสถานะที่ยังไม่ได้ประมวลผล
แอปและเครื่องมือ
Power BI Desktop
Power BI Desktop เป็นแอปพลิเคชันการสร้างแบบจําลองข้อมูลและการรายงานฟรี ตัวออกแบบแบบจําลองมีตัวแก้ไข DAX สําหรับการสร้างสูตรการคํานวณ DAX
Power Pivot ใน Excel
ตัว ออกแบบแบบจําลอง Power Pivot ใน Excel มีตัวแก้ไข DAX สําหรับการสร้างสูตรการคํานวณ DAX
Visual Studio
Visual Studio พร้อม ส่วนขยายโครงการ Analysis Services (VSIX) ใช้เพื่อสร้างแบบจําลอง Analysis Services ตัวออกแบบแบบจําลองตารางที่ติดตั้งพร้อมส่วนขยายโครงการรวมถึงตัวแก้ไข DAX
SQL Server Management Studio
SQL Server Management Studio (SSMS) เป็นเครื่องมือที่จําเป็นสําหรับการทํางานกับ Analysis Services SSMS มีตัวแก้ไขคิวรี DAX สําหรับการคิวรีทั้งแบบตารางและหลายมิติ
DAX Studio
DAX Studio เป็นเครื่องมือไคลเอ็นต์โอเพนซอร์สสําหรับการสร้างและเรียกใช้คิวรี DAX กับ Analysis Services, Power BI Desktop และ Power Pivot ใน Excel แบบจําลอง
ตัวแก้ไขตาราง
ตัวแก้ไข ตารางเป็นเครื่องมือโอเพนซอร์สที่ให้มุมมองแบบลําดับชั้นที่ใช้งานง่ายของทุกวัตถุในเมตาดาต้าแบบจําลองตาราง ตัวแก้ไขตารางมีตัวแก้ไข DAX ที่มีการเน้นไวยากรณ์ ซึ่งเป็นวิธีที่ง่ายในการแก้ไขหน่วยวัด คอลัมน์จากการคํานวณ และนิพจน์ตารางที่มีการคํานวณ
แหล่งข้อมูลการเรียนรู้
เมื่อเรียนรู้ DAX จะเป็นการดีที่สุดที่จะใช้แอปพลิเคชันที่คุณจะใช้ในการสร้างแบบจําลองข้อมูลของคุณ Analysis Services, Power BI Desktop และ Power Pivot ใน Excel ทั้งหมดมีบทความและบทช่วยสอนที่มีบทเรียนเกี่ยวกับการสร้างหน่วยวัด คอลัมน์จากการคํานวณ และตัวกรองแถวโดยใช้ DAX ต่อไปนี้คือแหล่งข้อมูลเพิ่มเติมบางอย่าง:
ใช้ DAX ในเส้นทางการเรียนรู้ Power BI Desktop
คําแนะนํา ขั้นสุดท้ายของ DAX โดย Alberto Ferrari และ Marco Russo (Microsoft Press) ในรุ่นที่สอง คู่มือที่ครอบคลุมนี้ให้ข้อมูลพื้นฐานเกี่ยวกับเทคนิคนวัตกรรมประสิทธิภาพสูงสําหรับผู้สร้างแบบจําลองข้อมูลขั้นเริ่มต้นและผู้เชี่ยวชาญ BI
ชุมชน
DAX มีชุมชนที่มีชีวิตชีวายินดีที่จะแบ่งปันความเชี่ยวชาญของพวกเขาเสมอ Microsoft ชุมชน Power BI มีฟอรั่มการสนทนาพิเศษเฉพาะสําหรับ DAX คําสั่ง DAX และเคล็ดลับเท่านั้น