CALCULATETABLE

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

หมายเหตุ

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

ไวยากรณ์

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

พารามิเตอร์

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

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

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

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

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

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

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

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

เริ่มตั้งแต่การเผยแพร่เดือนกันยายน 2021 ของ Power BI Desktop จะมีการนําไปใช้ดังต่อไปนี้:

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

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

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

ฟังก์ชันตัวแก้ไขตัวกรอง

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

Function วัตถุประสงค์
ลบตัวกรอง ลบตัวกรองทั้งหมด หรือตัวกรองจากหนึ่งหรือหลายคอลัมน์ของตาราง หรือจากคอลัมน์ทั้งหมดของตารางเดียว
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]
)  

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

ป้ายชื่อแถว 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