CALCULATETABLE

ประเมินนิพจน์ตารางในบริบทตัวกรองที่ปรับเปลี่ยนแล้ว

หมายเหตุ

นอกจากนี้ยังมีฟังก์ชัน CALCULATE ซึ่งทำหน้าที่เหมือนกันทุกประการยกเว้นว่าจะปรับเปลี่ยน บริบทตัวกรอง ที่นำไปใช้กับนิพจน์ที่ส่งกลับ ค่าสเกลา

ไวยากรณ์

CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])

พารามิเตอร์

เงื่อนไข ข้อกำหนด
นิพจน์ นิพจน์ตารางที่จะประเมิน
filter1, filter2,… (เป็นทางเลือก) นิพจน์บูลีนหรือนิพจน์ตารางที่กำหนดตัวกรอง หรือฟังก์ชันตัวปรับเปลี่ยนตัวกรอง

นิพจน์ที่ใช้เป็นพารามิเตอร์แรกต้องเป็นตารางแบบจำลองหรือฟังก์ชันที่ส่งกลับตาราง

ตัวกรองสามารถเป็น:

  • นิพจน์ตัวกรองบูลีน
  • นิพจน์ตัวกรองตาราง
  • ฟังก์ชันการปรับเปลี่ยนตัวกรอง

เมื่อมีตัวกรองหลายรายการ ระบบจะประเมินโดยใช้ตัวดำเนินการเชิงตรรกะ AND ซึ่งหมายความว่าเงื่อนไขทั้งหมดต้องเป็น TRUE ในเวลาเดียวกัน

นิพจน์ตัวกรองบูลีน

ตัวกรองนิพจน์บูลีนคือนิพจน์ที่ประเมินเป็น TRUE หรือ FALSE มีกฎหลายอย่างที่พวกเขาต้องปฏิบัติตาม:

  • พวกเขาสามารถอ้างอิงได้เพียงคอลัมน์เดียวเท่านั้น
  • พวกเขาไม่สามารถอ้างอิงหน่วยวัดได้
  • พวกเขาไม่สามารถใช้ฟังก์ชัน CALCULATE แบบซ้อนกันได้

เริ่มตั้งแต่การเผยแพร่เดือนกันยายน 2021 Power BI Desktop ต่อไปนี้มีผลบังคับ:

  • พวกเขาไม่สามารถใช้ฟังก์ชันที่สแกนหรือส่งกลับตารางเว้นแต่ว่าจะส่งผ่านเป็นอาร์กิวเมนต์ไปยังฟังก์ชันการรวม
  • ซึ่งสามารถประกอบด้วยฟังก์ชันการรวมที่ส่งกลับค่าสเกลา

นิพจน์ตัวกรองตาราง

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

ฟังก์ชันตัวปรับเปลี่ยนตัวกรอง

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

ฟังก์ชัน วัตถุประสงค์
REMOVEFILTERS เอาตัวกรองทั้งหมด หรือตัวกรองจากหนึ่งหรือหลายคอลัมน์ของตาราง หรือจากคอลัมน์ทั้งหมดของตารางเดียวออก
ALL1, ALLEXCEPT, ALLNOBLANKROW เอาตัวกรองจากหนึ่งหรือหลายคอลัมน์ หรือจากคอลัมน์ทั้งหมดของตารางเดียวออก
KEEPFILTERS เพิ่มตัวกรองโดยไม่เอาตัวกรองที่มีอยู่ในคอลัมน์เดียวกันออก
USERELATIONSHIP สร้างความสัมพันธ์ที่ไม่ใช้งานระหว่างคอลัมน์ที่เกี่ยวข้อง ซึ่งในกรณีนี้ความสัมพันธ์ที่ใช้งานอยู่จะกลายเป็นไม่ใช้งานโดยอัตโนมัติ
CROSSFILTER ปรับเปลี่ยนทิศทางตัวกรอง (จากทั้งสองเป็นเดี่ยว หรือจากเดียวเป็นทั้งสอง) หรือปิดใช้งานความสัมพันธ์

1 ฟังก์ชัน ALL และตัวแปรจะทำงานเป็นทั้งตัวปรับเปลี่ยนตัวกรองและเป็นฟังก์ชันที่ส่งกลับออบเจ็กต์ตาราง หากเครื่องมือของคุณรองรับฟังก์ชัน REMOVEFILTERS คุณควรใช้ฟังก์ชันนี้เพื่อเอาตัวกรองออก

ค่าผลลัพธ์

ตารางของค่า

หมายเหตุ

  • เมื่อมีการระบุนิพจน์ตัวกรอง ฟังก์ชัน CALCULATETABLE จะปรับเปลี่ยนบริบทตัวกรองเพื่อประเมินนิพจน์ สำหรับแต่ละนิพจน์ตัวกรอง มีผลลัพธ์มาตรฐานที่เป็นไปได้สองประการเมื่อนิพจน์ตัวกรองไม่ได้ถูกครอบอยู่ในฟังก์ชัน KEEPFILTERS:

    • ถ้าคอลัมน์ (หรือตาราง) ไม่อยู่ในบริบทตัวกรอง ระบบจะเพิ่มตัวกรองใหม่ในบริบทตัวกรองเพื่อประเมินนิพจน์
    • ถ้าคอลัมน์ (หรือตาราง) อยู่ในบริบทตัวกรองแล้ว ตัวกรองที่มีอยู่จะถูกเขียนทับโดยตัวกรองใหม่เพื่อประเมินนิพจน์ CALCULATETABLE
  • ฟังก์ชันนี้ไม่ได้รับการสนับสนุนสำหรับการใช้งานในโหมด DirectQuery เมื่อใช้ในคอลัมน์จากการคำนวณหรือกฎการรักษาความปลอดภัยระดับแถว (RLS)

ตัวอย่าง

ตัวอย่างต่อไปนี้ใช้ฟังก์ชัน CALCULATETABLE เพื่อรับผลรวมยอดขายทางอินเทอร์เน็ตสำหรับปี 2006 ค่านี้จะใช้ในการคำนวณอัตราส่วนของยอดขายทางอินเทอร์เน็ตเมื่อเปรียบเทียบกับยอดขายทั้งหมดสำหรับปี 2006

สูตรต่อไปนี้:

= SUMX(
    CALCULATETABLE(
        'InternetSales_USD',
        'DateTime'[CalendarYear] = 2006
    ),
    [SalesAmount_USD]
)  

ผลลัพธ์แสดงในตารางต่อไปนี้:

ป้ายชื่อแถว Internet SalesAmount_USD CalculateTable 2006 Internet Sales Internet Sales to 2006 ratio
2005 $2,627,031.40 $5,681,440.58 0.46
2006 $5,681,440.58 $5,681,440.58 1.00
2007 $8,705,066.67 $5,681,440.58 1.53
2008 $9,041,288.80 $5,681,440.58 1.59
ผลรวมทั้งหมด $26,054,827.45 $5,681,440.58 4.59

นอกจากนี้ โปรดดู