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 |