อ่านในภาษาอังกฤษ

แชร์ผ่าน


CALCULATE

นําไปใช้กับ: คอลัมน์จากการคํานวณตารางจากการคํานวณMeasureการคํานวณวิชวล

ประเมินนิพจน์ในบริบท filter ที่ปรับเปลี่ยนแล้ว

หมายเหตุ

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

วากยสัมพันธ์

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

พารามิเตอร์

เทอม นิยาม
expression นิพจน์ที่จะประเมิน
filter1, filter2,… (ไม่บังคับ) นิพจน์บูลีน or นิพจน์ตารางที่กําหนด filtersorfilter ฟังก์ชันตัวปรับเปลี่ยน

โดยหลักแล้ว นิพจน์ที่ใช้เป็นพารามิเตอร์ first จะเหมือนกับ measure

Filters อาจเป็น:

  • นิพจน์ filter บูลีน
  • นิพจน์ filter ตาราง
  • ฟังก์ชันการแก้ไข Filter

เมื่อ มี filtersหลาย filtersตัวดําเนินการดังกล่าวสามารถประเมินได้โดยใช้ ตัวดําเนินการเชิงตรรกะ &&ANDซึ่งหมายความว่า เงื่อนไข all จะต้อง TRUEor โดยตัวดําเนินการเชิงตรรกะ OR (||) ซึ่งหมายความว่าเงื่อนไขอย่างใดอย่างหนึ่งสามารถ trueได้

นิพจน์ filter บูลีน

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

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

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

  • พวกเขาไม่สามารถใช้ฟังก์ชันที่สแกน or ส่งกลับตารางเว้นแต่ว่าจะถูกส่งผ่านเป็นอาร์กิวเมนต์ไปยังฟังก์ชันการรวม
  • อาจ ประกอบด้วยฟังก์ชันการรวมที่ส่งกลับ valueสเกลา เช่น
    Total sales on the last selected date =
    CALCULATE (
        SUM ( Sales[Sales Amount] ),
        'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] )
    )
    

นิพจน์ filter ตาราง

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

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

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

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

1 ฟังก์ชัน ALLand ตัวแปรทํางานเป็นตัวปรับเปลี่ยน filterand เป็นฟังก์ชันที่ส่งกลับวัตถุตาราง If เครื่องมือของคุณได้รับการสนับสนุนฟังก์ชัน REMOVEFILTERS คุณควรใช้ฟังก์ชันนี้เพื่อลบ filtersออก

value ผลลัพธ์

value ที่เป็นผลลัพธ์ของนิพจน์

หมาย เหตุ

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

    • If คอลัมน์ (ตารางor) ไม่ได้อยู่ในบริบท filter จากนั้น filters ใหม่จะถูกเพิ่มไปยังบริบท filter เพื่อ evaluate นิพจน์
    • If คอลัมน์ (or ตาราง) อยู่ในบริบท filter แล้ว filters ที่มีอยู่จะถูกเขียนทับโดย filters ใหม่เพื่อ evaluate นิพจน์ CALCULATE
  • ฟังก์ชัน CALCULATE ที่ใช้ โดยไม่มี filters บรรลุข้อกําหนดเฉพาะ ซึ่งจะเปลี่ยนบริบทแถวเป็นบริบท filter ซึ่งจําเป็นต้องมีเมื่อนิพจน์ (not แบบจําลอง measure) ที่สรุปข้อมูลแบบจําลองจําเป็นต้องได้รับการประเมินในบริบทแถว สถานการณ์นี้สามารถเกิดขึ้นได้ในสูตรคอลัมน์จากการคํานวณ or เมื่อมีการประเมินนิพจน์ในฟังก์ชันตัวทําซ้ํา โปรดทราบว่าเมื่อมีการใช้ measure แบบจําลองในบริบทแถว การเปลี่ยนบริบทจะเป็นไปโดยอัตโนมัติ

  • ฟังก์ชันนี้ not ได้รับการสนับสนุนสําหรับการใช้งานในโหมด DirectQuery เมื่อใช้ในคอลัมน์จากการคํานวณ or กฎการรักษาความปลอดภัยระดับแถว (RLS)

ตัว อย่าง เช่น

ตาราง Sales ต่อไปนี้ measure ข้อกําหนดสร้างผลลัพธ์รายได้ แต่สําหรับผลิตภัณฑ์ที่มีสีน้ําเงินเท่านั้น

ตัวอย่างในบทความนี้สามารถใช้ได้กับแบบจําลอง sample Adventure Works DW 2020 Power BI Desktop หากต้องการรับแบบจําลอง โปรดดู DAXsample แบบจําลอง

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 ประเมิน sum ของตาราง Salesคอลัมน์ Sales Amount ในบริบท filter ที่ปรับเปลี่ยนแล้ว filter ใหม่จะถูกเพิ่มลงในตาราง Productคอลัมน์สีorfilter จะเขียนทับ filter ที่นําไปใช้กับคอลัมน์อยู่แล้ว

ตาราง measureSales ต่อไปนี้สร้างอัตราส่วนของยอดขายต่อยอดขายสําหรับช่องทางการขาย all

ช่อง ปริมาณยอดขาย รายได้ % ช่องทางทั้งหมด
อินเทอร์เน็ต $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 คอลัมน์ value (ในบริบท filter) โดยใช้นิพจน์เดียวกันในบริบท filter ที่ปรับเปลี่ยนแล้ว เป็นฟังก์ชัน CALCULATE ที่ปรับเปลี่ยนบริบท filter โดยใช้ฟังก์ชัน REMOVEFILTERS ซึ่งเป็นฟังก์ชันตัวแก้ไข filter ซึ่งจะลบ ออกจากตาราง ใบสั่งซื้อ คอลัมน์ ช่องสัญญาณ

ข้อกําหนดคอลัมน์จากการคํานวณของตาราง ของลูกค้า ต่อไปนี้จะจําแนกประเภทลูกค้าเป็นระดับความภักดี นี่คือสถานการณ์ที่ง่ายมาก: เมื่อรายได้ที่เกิดจากลูกค้าน้อยกว่า $2500 พวกเขาจะถูกจัดประเภทเป็น ต่ํา มิฉะนั้น สูง

Customer Segment =
IF(
    CALCULATE(SUM(Sales[Sales Amount]), ALLEXCEPT(Customer, Customer[CustomerKey])) < 2500,
    "Low",
    "High"
)

ในตัวอย่างนี้ บริบทแถวจะถูกแปลงเป็นบริบท filter ซึ่งเรียกว่า การเปลี่ยนบริบท ฟังก์ชัน จะลบ ออกจากคอลัมน์ตาราง Customer คอลัมน์ CustomerKey

บริบท
บริบทแถว
ฟังก์ชัน
ฟังก์ชัน