CALCULATE
นําไปใช้กับ: คอลัมน์จากการคํานวณตารางจากการคํานวณหน่วยวัดการคํานวณวิชวล
ประเมินนิพจน์ในบริบทตัวกรองที่ปรับเปลี่ยนแล้ว
โน้ต
นอกจากนี้ยังมีฟังก์ชัน CALCULATETABLE ซึ่งทําหน้าที่เหมือนกันทุกประการ ยกเว้นว่าจะปรับเปลี่ยนบริบทตัวกรอง ที่ใช้กับนิพจน์ที่ส่งกลับออบเจ็กต์ตาราง
วากยสัมพันธ์
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
พารามิเตอร์
เทอม | นิยาม |
---|---|
expression |
นิพจน์ที่จะประเมิน |
filter1, filter2,… |
(ไม่บังคับ) นิพจน์บูลีนหรือนิพจน์ตารางที่กําหนดตัวกรอง หรือฟังก์ชันตัวแก้ไขตัวกรอง |
โดยหลักแล้ว นิพจน์ที่ใช้เป็นพารามิเตอร์แรกจะเหมือนกับหน่วยวัด
ตัวกรองสามารถเป็น:
- นิพจน์ตัวกรองบูลีน
- นิพจน์ตัวกรองตาราง
- ฟังก์ชันการปรับเปลี่ยนตัวกรอง
เมื่อมีตัวกรองหลายรายการ สามารถประเมินได้โดยใช้ตัวดําเนินการเชิงตรรกะ AND (&&
) ตัวดําเนินการเชิงตรรกะซึ่งหมายความว่าเงื่อนไขทั้งหมดจะต้อง TRUE
หรือโดยตัวดําเนินการทางตรรกะ OR (||
) ซึ่งหมายความว่าเงื่อนไขอย่างใดอย่างหนึ่งสามารถเป็นจริงได้
นิพจน์ตัวกรองบูลีน
ตัวกรองนิพจน์บูลีนคือนิพจน์ที่ประเมินเป็น TRUE
หรือ FALSE
มีกฎหลายอย่างที่พวกเขาต้องปฏิบัติตาม:
- พวกเขาสามารถอ้างอิงคอลัมน์จากตารางเดียวได้
- โดยไม่สามารถอ้างอิงหน่วยวัดได้
- ไม่สามารถใช้ฟังก์ชัน CALCULATE แบบซ้อนกันได้
เริ่มตั้งแต่การเผยแพร่เดือนกันยายน 2021 ของ Power BI Desktop จะมีการนําไปใช้ดังต่อไปนี้:
- พวกเขาไม่สามารถใช้ฟังก์ชันที่สแกนหรือส่งกลับตารางเว้นแต่จะถูกส่งผ่านเป็นอาร์กิวเมนต์ไปยังฟังก์ชันการรวม
-
สามารถ มีฟังก์ชันการรวมที่ส่งกลับค่าสเกลาได้ เช่น
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
นิพจน์ตัวกรองตาราง
ตัวกรองนิพจน์ตารางใช้วัตถุตารางเป็นตัวกรอง ซึ่งอาจเป็นการอ้างอิงไปยังตารางแบบจําลอง แต่มีแนวโน้มว่าจะเป็นฟังก์ชันที่ส่งกลับวัตถุตาราง คุณสามารถใช้ฟังก์ชัน FILTER เพื่อใช้เงื่อนไขตัวกรองที่ซับซ้อน รวมถึงเงื่อนไขที่ไม่สามารถกําหนดโดยนิพจน์ตัวกรองบูลีนได้
ฟังก์ชันตัวแก้ไขตัวกรอง
ฟังก์ชันตัวปรับเปลี่ยนตัวกรองช่วยให้คุณทําได้มากกว่าเพียงแค่เพิ่มตัวกรอง ซึ่งช่วยให้คุณสามารถควบคุมเพิ่มเติมเมื่อแก้ไขบริบทตัวกรอง
ฟังก์ชัน | วัตถุประสงค์ |
---|---|
REMOVEFILTERS | ลบตัวกรองทั้งหมด หรือตัวกรองจากหนึ่งหรือหลายคอลัมน์ของตาราง หรือจากคอลัมน์ทั้งหมดของตารางเดียว |
ALL 1, ALLEXCEPT, ALLNOBLANKROW | เอาตัวกรองออกจากหนึ่งหรือหลายคอลัมน์ หรือจากคอลัมน์ทั้งหมดของตารางเดียว |
KEEPFILTERS | เพิ่มตัวกรองโดยไม่ต้องลบตัวกรองที่มีอยู่บนคอลัมน์เดียวกัน |
USERELATIONSHIP | มีส่วนร่วมในความสัมพันธ์ที่ไม่ได้ใช้งานระหว่างคอลัมน์ที่เกี่ยวข้อง ซึ่งในกรณีนี้ความสัมพันธ์ที่ใช้งานอยู่จะกลายเป็นไม่ใช้งานโดยอัตโนมัติ |
CROSSFILTER | ปรับเปลี่ยนทิศทางตัวกรอง (จากทั้งสองเป็นเดี่ยว หรือจากเดี่ยวเป็นทั้งสอง) หรือปิดใช้งานความสัมพันธ์ |
1 ฟังก์ชัน ALL และตัวแปรจะทํางานเป็นทั้งตัวปรับเปลี่ยนตัวกรองและเป็นฟังก์ชันที่ส่งกลับวัตถุตาราง หากเครื่องมือของคุณรองรับฟังก์ชัน REMOVEFILTERS คุณควรใช้ฟังก์ชันนี้เพื่อนําตัวกรองออก
ค่าผลลัพธ์
ค่าที่เป็นผลลัพธ์ของนิพจน์
หมาย เหตุ
เมื่อมีการระบุนิพจน์ตัวกรอง ฟังก์ชัน CALCULATE จะปรับเปลี่ยนบริบทตัวกรองเพื่อประเมินนิพจน์ สําหรับแต่ละนิพจน์ตัวกรอง มีผลลัพธ์มาตรฐานที่เป็นไปได้สองประการเมื่อนิพจน์ตัวกรองไม่ได้ถูกครอบอยู่ในฟังก์ชัน KEEPFILTERS:
- ถ้าคอลัมน์ (หรือตาราง) ไม่ได้อยู่ในบริบทตัวกรอง ระบบจะเพิ่มตัวกรองใหม่ลงในบริบทตัวกรองเพื่อประเมินนิพจน์
- ถ้าคอลัมน์ (หรือตาราง) อยู่ในบริบทตัวกรองแล้ว ตัวกรองที่มีอยู่จะถูกเขียนทับโดยตัวกรองใหม่เพื่อประเมินนิพจน์ CALCULATE
ฟังก์ชัน CALCULATE ที่ใช้ โดยไม่มีตัวกรอง บรรลุข้อกําหนดเฉพาะ ซึ่งจะเปลี่ยนบริบทแถวเพื่อกรองบริบท ซึ่งจําเป็นต้องมีเมื่อนิพจน์ (ไม่ใช่หน่วยวัดแบบจําลอง) ที่สรุปข้อมูลแบบจําลองต้องได้รับการประเมินในบริบทแถว สถานการณ์นี้สามารถเกิดขึ้นได้ในสูตรคอลัมน์จากการคํานวณหรือเมื่อมีการประเมินนิพจน์ในฟังก์ชันตัวทําซ้ํา โปรดทราบว่าเมื่อมีการใช้หน่วยวัดแบบจําลองในบริบทแถว การเปลี่ยนบริบทจะเป็นไปโดยอัตโนมัติ
ฟังก์ชันนี้ไม่ได้รับการสนับสนุนสําหรับการใช้งานในโหมด DirectQuery เมื่อใช้ในคอลัมน์จากการคํานวณหรือกฎการรักษาความปลอดภัยระดับแถว (RLS)
ตัว อย่าง เช่น
ข้อกําหนดหน่วยวัดของตาราง Sales ต่อไปนี้สร้างผลลัพธ์รายได้ แต่เฉพาะผลิตภัณฑ์ที่มีสีน้ําเงินเท่านั้น
ตัวอย่างในบทความนี้สามารถใช้ได้กับตัวอย่าง Adventure Works DW 2020 Power BI Desktop แบบจําลอง หากต้องการรับแบบจําลอง โปรดดู DAX แบบจําลองตัวอย่าง
Blue Revenue =
CALCULATE(
SUM(Sales[Sales Amount]),
'Product'[Color] = "Blue"
)
ประเภท | ปริมาณยอดขาย | สีน้ําเงิน รายได้ |
---|---|---|
อุปกรณ์ เสริม | $1,272,057.89 | $165,406.62 |
จักรยาน | $94,620,526.21 | $8,374,313.88 |
เสื้อผ้า | $2,117,613.45 | $259,488.37 |
คอม โพ เนนต์ | $11,799,076.66 | $803,642.10 |
ผลรวม |
$109,809,274.20 | $9,602,850.97 |
ฟังก์ชัน CALCULATE ประเมินผลรวมของตาราง Salesคอลัมน์ Sales Amount ในบริบทตัวกรองที่ปรับเปลี่ยนแล้ว ตัวกรองใหม่จะถูกเพิ่มลงในตาราง Productคอลัมน์ Color หรือตัวกรองจะเขียนทับตัวกรองใดๆ ก็ตามที่มีการนําไปใช้กับคอลัมน์อยู่แล้ว
ข้อกําหนดหน่วยวัดของตาราง Sales ต่อไปนี้สร้างอัตราส่วนของยอดขายต่อยอดขายสําหรับช่องทางการขายทั้งหมด
ช่อง | ปริมาณยอดขาย | รายได้ % ช่องทางทั้งหมด |
---|---|---|
อินเทอร์เน็ต | $29,358,677.22 | 26.74% |
ตัว แทน จำหน่าย | $80,450,596.98 | 73.26% |
ผลรวม |
$109,809,274.20 | 100.00% |
Revenue % Total Channel =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS('Sales Order'[Channel])
)
)
ฟังก์ชัน DIVIDE หารนิพจน์ที่รวมผลรวมของตาราง SalesSales Amount ค่าคอลัมน์ (ในบริบทตัวกรอง) โดยใช้นิพจน์เดียวกันในบริบทตัวกรองที่ปรับเปลี่ยนแล้ว เป็นฟังก์ชัน CALCULATE ที่ปรับเปลี่ยนบริบทตัวกรองโดยใช้ฟังก์ชัน REMOVEFILTERS ซึ่งเป็นฟังก์ชันตัวปรับเปลี่ยนตัวกรอง ซึ่งจะลบตัวกรองออกจากตาราง ของ
ข้อกําหนดคอลัมน์จากการคํานวณของตาราง ของลูกค้า
Customer Segment =
IF(
CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
"Low",
"High"
)
ในตัวอย่างนี้ บริบทแถวจะถูกแปลงเป็นบริบทตัวกรอง ซึ่งเรียกว่า การเปลี่ยนบริบท ฟังก์ชัน
เนื้อหาที่เกี่ยวข้อง
บริบทตัวกรอง ฟังก์ชันCALCULATETABLE บริบทแถวฟังก์ชันตัวกรอง