ฟังก์ชันคำนวณ DAX กับตัวกรอง

ฟังก์ชันคำนวณ DAX กับตัวกรอง

ทั้งและเป็นเครื่องมือที่มีประสิทธิภาพในการจัดการและวิเคราะห์ข้อมูลในแบบสอบถาม DAX แต่มีความแตกต่างที่สำคัญบางประการซึ่งสำคัญที่ต้องทำความเข้าใจ

ในบล็อกนี้ เราจะพูดถึง ฟังก์ชัน CALCULATABLEและแผนการสืบค้นใน DAX studioและทำความเข้าใจว่าฟังก์ชันนี้แตกต่างจากฟังก์ชันFILTER อย่างไร ในตอนท้าย คุณจะเข้าใจวิธีการเลือกฟังก์ชันที่เหมาะสมสำหรับความต้องการในการวิเคราะห์ข้อมูลของคุณได้ดีขึ้น

เพื่อสาธิต เราจะใช้รหัส DAX ด้านล่าง

ฟังก์ชันคำนวณ DAX กับตัวกรอง

เมื่อคุณรันโค้ดนี้ คุณจะได้ตารางแสดงยี่ห้อและสี

ฟังก์ชันคำนวณ DAX กับตัวกรอง

ใน แท็ บQuery Plansคุณจะได้รับรหัสที่สอดคล้องกับ ตัวดำเนินการ CrossApplyในFormula Engine

ฟังก์ชันคำนวณ DAX กับตัวกรอง

ในเวลาเดียวกัน คุณจะเห็นว่าโค้ดดึงเฉพาะสีและแบรนด์ของผลิตภัณฑ์ในแท็บServer Timings เท่านั้น

ฟังก์ชันคำนวณ DAX กับตัวกรอง

สารบัญ

ผลลัพธ์ DAX Studio Server Timings สำหรับ CALCULATABLE

ตัวอย่างเช่น ลองกรองสีของผลิตภัณฑ์เพื่อแสดงเฉพาะสีแดงและ/หรือสีดำ

คุณสามารถทำได้โดยใช้ฟังก์ชัน FILTER เมื่อคุณรัน Server Timings จะแสดงว่าอาร์กิวเมนต์ FILTER ไม่ได้ใช้กับโค้ดxmSQL

ฟังก์ชันคำนวณ DAX กับตัวกรอง

แต่ถ้าคุณใช้ฟังก์ชัน CALCULATABLE ข้อความค้นหาในแท็บ Server Timings จะแสดงว่าผลลัพธ์ถูกกรองตามสีของผลิตภัณฑ์

ฟังก์ชันคำนวณ DAX กับตัวกรอง

แผนการสืบค้นที่สามารถคำนวณได้ใน DAX Studio

ลองดูที่ Query Plan สำหรับแต่ละฟังก์ชัน

ตารางคำนวณอยู่ในบรรทัดแรกของLogical Query Planเนื่องจากเป็นฟังก์ชันระดับบนสุดในโค้ด ดังนั้นจึงไม่ขึ้นอยู่กับข้อกำหนดใดๆ

ฟังก์ชันคำนวณ DAX กับตัวกรอง

เมื่อคุณอ่านแผนการสืบค้นของฟังก์ชัน CALCULATABLE คุณไม่ได้เริ่มต้นด้วยอาร์กิวเมนต์แรก คุณต้องเข้าใจบริบทตัวกรองที่ใช้ก่อน งั้นไปสาย 5 กัน

คุณจะเห็นว่า ตัวดำเนินการ VertiPaqต้องการคอลัมน์สีของผลิตภัณฑ์เนื่องจากตัวกรองที่ใช้ จากนั้นจะสแกนคอลัมน์นี้และใช้ ชุด ตัวกรอง Not IsEmptyเพื่อตรวจสอบสีของผลิตภัณฑ์เทียบกับแต่ละแถว

หลังจากเตรียมบริบทตัวกรองแล้ว อาร์กิวเมนต์ จะถูกดำเนินการ

เมื่อเข้าใจถึงปัญหาแล้ว หากคุณใช้ฟังก์ชัน FILTER คุณจะเห็นแผนการค้นหาที่แตกต่างกัน ดังนั้นอาร์กิวเมนต์ CROSSJOIN จะถูกดำเนินการก่อนที่จะระบุบริบทของตัวกรอง

ฟังก์ชันคำนวณ DAX กับตัวกรอง

ข้อเสียของแนวทางนี้คือไม่ส่งเงื่อนไขตัวกรองไปยัง Storage Engine คุณจะไม่สามารถใช้ ส่วนคำสั่ง WHEREภายใน xmSQL ซึ่งจะสร้างภาระหนักให้กับ Formula Engine

และเมื่อคุณทำงานกับหลายตาราง ชุดตัวกรองของฟังก์ชัน CROSSJOIN จะมีขนาดใหญ่มาก ซึ่งจะทำให้ประสิทธิภาพของโค้ด DAX ช้าลง ดังนั้น ในกรณีส่วนใหญ่ ขอแนะนำให้ใช้ฟังก์ชัน CLCULATETABLE

ดังนั้นแทนที่จะดำเนินการคำนวณทั้งหมดใน Formula Engine คุณสามารถแทรกเงื่อนไขตัวกรองภายในคลาส WHERE ของรหัส XMSQL

การเปลี่ยนบริบทสำหรับฟังก์ชัน DAX ที่คล้ายกัน

กำหนดเวลาเซิร์ฟเวอร์

แนวคิดนี้ใช้กับฟังก์ชัน CALCULATE ได้เช่นกัน ลองใช้โค้ด DAX ด้านล่างเป็นตัวอย่าง

ฟังก์ชันคำนวณ DAX กับตัวกรอง

การวัดจะมีฟังก์ชันคำนวณโดยอัตโนมัติรอบๆ

เมื่อคุณรันโค้ดนี้ คุณจะได้ตารางแสดงยอดขายรวมสำหรับแต่ละสี

ฟังก์ชันคำนวณ DAX กับตัวกรอง

ในแท็บ Server Timings คุณจะเห็นว่าโค้ดกำลังดำเนินการค้นหาสองรายการ แบบสอบถามแรกกำลังคำนวณผลรวมของยอดขายจากตารางการขายที่เกี่ยวข้องกับตารางผลิตภัณฑ์

ฟังก์ชันคำนวณ DAX กับตัวกรอง

ในทางกลับกัน คิวรีที่สองจะดึงสีของผลิตภัณฑ์อีกครั้งจากตารางผลิตภัณฑ์ ซึ่งสอดคล้องกับ ฟังก์ชัน ในรหัส DAX

ฟังก์ชันคำนวณ DAX กับตัวกรอง

Formula Engine วางแคชข้อมูลของสองแบบสอบถามเคียงข้างกัน เริ่มต้นด้วยการดึงค่าจากแคชข้อมูลที่สอง จากนั้นทำการค้นหาในแคชข้อมูลแรก

แผนการค้นหา

ในแท็บ แผนการสืบค้น แผนการสืบค้นเชิงตรรกะจะสแกนสีของผลิตภัณฑ์เนื่องจากอาร์กิวเมนต์

จากนั้น VertiPaq จะสรุปยอดขายรวมโดยขึ้นอยู่กับสีของผลิตภัณฑ์ ดำเนินการเปลี่ยนบริบทที่แปลงค่าสีของผลิตภัณฑ์เป็นบริบทตัวกรองที่เทียบเท่า

ฟังก์ชันคำนวณ DAX กับตัวกรอง

ตัวกรองที่สร้างขึ้นโดยการเปลี่ยนบริบทจะถูกแปลเป็น คุณสมบัติ DependOnColsใน Query Plan หลังจาก VertiPaq สแกนคอลัมน์ที่จำเป็นในการคำนวณยอดขายรวม มันจะคูณปริมาณการขายด้วยราคาสุทธิ

ยอดขายรวมจะถูกส่งกลับเป็นผลลัพธ์ในรูปแบบของประเภทข้อมูลสกุลเงิน และสุดท้าย ADDCOLUMNS ส่งคืนตารางที่มีสองคอลัมน์ที่มีสีและยอดขายรวม

บทสรุป

แผนคิวรีอาจมีผลกระทบอย่างมากต่อประสิทธิภาพของคิวรี เนื่องจากแผนคิวรีที่แตกต่างกันอาจมีระดับประสิทธิภาพต่างกัน

เมื่อใช้ฟังก์ชัน CALCULATABLE และ FILTER ในแบบสอบถาม DAX แผนการสืบค้นอาจแตกต่างกันไปขึ้นอยู่กับสถานการณ์เฉพาะและปัจจัยต่างๆ เช่น นิพจน์สูตรเฉพาะที่ใช้และความสามารถของเครื่องมือสืบค้นข้อมูล

โดยทั่วไป เป็นความคิดที่ดีที่จะทดสอบและเปรียบเทียบประสิทธิภาพของแผนการสืบค้นต่างๆ เพื่อกำหนดแนวทางที่มีประสิทธิภาพสูงสุดสำหรับสถานการณ์ที่กำหนด

สิ่งที่ดีที่สุด


ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

วิธีบันทึกและโหลดไฟล์ RDS ใน R

วิธีบันทึกและโหลดไฟล์ RDS ใน R

คุณจะได้เรียนรู้วิธีการบันทึกและโหลดวัตถุจากไฟล์ .rds ใน R บล็อกนี้จะครอบคลุมถึงวิธีการนำเข้าวัตถุจาก R ไปยัง LuckyTemplates

เยี่ยมชม N วันทำการแรก – โซลูชันภาษาการเข้ารหัส DAX

เยี่ยมชม N วันทำการแรก – โซลูชันภาษาการเข้ารหัส DAX

ในบทช่วยสอนภาษาการเข้ารหัส DAX นี้ เรียนรู้วิธีใช้ฟังก์ชัน GENERATE และวิธีเปลี่ยนชื่อหน่วยวัดแบบไดนามิก

แสดงข้อมูลเชิงลึกโดยใช้เทคนิคการแสดงภาพแบบไดนามิกแบบหลายเธรดใน LuckyTemplates

แสดงข้อมูลเชิงลึกโดยใช้เทคนิคการแสดงภาพแบบไดนามิกแบบหลายเธรดใน LuckyTemplates

บทช่วยสอนนี้จะครอบคลุมถึงวิธีการใช้เทคนิค Multi Threaded Dynamic Visuals เพื่อสร้างข้อมูลเชิงลึกจากการแสดงข้อมูลแบบไดนามิกในรายงานของคุณ

บทนำในการกรองบริบทใน LuckyTemplates

บทนำในการกรองบริบทใน LuckyTemplates

ในบทความนี้ ฉันจะเรียกใช้ผ่านบริบทตัวกรอง บริบทตัวกรองเป็นหนึ่งในหัวข้อหลักที่ผู้ใช้ LuckyTemplates ควรเรียนรู้ในขั้นต้น

เคล็ดลับที่ดีที่สุดในการใช้แอปใน LuckyTemplates Online Service

เคล็ดลับที่ดีที่สุดในการใช้แอปใน LuckyTemplates Online Service

ฉันต้องการแสดงให้เห็นว่าบริการออนไลน์ของ LuckyTemplates Apps สามารถช่วยในการจัดการรายงานและข้อมูลเชิงลึกต่างๆ ที่สร้างจากแหล่งข้อมูลต่างๆ ได้อย่างไร

วิเคราะห์การเปลี่ยนแปลงอัตรากำไรล่วงเวลา – การวิเคราะห์ด้วย LuckyTemplates และ DAX

วิเคราะห์การเปลี่ยนแปลงอัตรากำไรล่วงเวลา – การวิเคราะห์ด้วย LuckyTemplates และ DAX

เรียนรู้วิธีคำนวณการเปลี่ยนแปลงอัตรากำไรของคุณโดยใช้เทคนิคต่างๆ เช่น การแยกสาขาและการรวมสูตร DAX ใน LuckyTemplates

แนวคิด Materialization สำหรับแคชข้อมูลใน DAX Studio

แนวคิด Materialization สำหรับแคชข้อมูลใน DAX Studio

บทช่วยสอนนี้จะหารือเกี่ยวกับแนวคิดของการทำให้แคชข้อมูลเป็นรูปธรรมและวิธีที่สิ่งเหล่านี้ส่งผลต่อประสิทธิภาพของ DAX ในการให้ผลลัพธ์

การรายงานทางธุรกิจโดยใช้ LuckyTemplates

การรายงานทางธุรกิจโดยใช้ LuckyTemplates

หากคุณยังคงใช้ Excel อยู่จนถึงตอนนี้ นี่เป็นเวลาที่ดีที่สุดในการเริ่มใช้ LuckyTemplates สำหรับความต้องการในการรายงานทางธุรกิจของคุณ

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้