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

เสร็จสมบูรณ์เมื่อ

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

นำตัวกรองออก

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

หมายเหตุ

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

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

Revenue Total Region = CALCULATE([Revenue], REMOVEFILTERS('Sales Territory'))

ในตอนนี้ ให้เพิ่มหน่วยวัดภูมิภาคของรายได้ทั้งหมดไปยังภาพเมทริกซ์ที่พบบนหน้า 2 ของรายงาน ภาพเมทริกซ์จะจัดกลุ่มตามสามคอลัมน์จากตารางพื้นที่ยอดขายในแถว: กลุ่ม, ประเทศ, และภูมิภาค

โปรดสังเกตว่าแต่ละค่าภูมิภาคของรายได้ทั้งหมดจะเหมือนกัน ซึ่งเป็นค่าของรายได้ทั้งหมด

ในขณะที่ผลลัพธ์นี้ลำพังไม่มีประโยชน์ เมื่อใช้เป็นตัวหารในอัตราส่วนจะคำนวณเปอร์เซ็นต์ของผลรวมทั้งหมด ดังนั้นตอนนี้คุณจะเขียนทับหน่วยวัดภูมิภาคของรายได้ทั้งหมดที่มีคำจำกัดความดังต่อไปนี้ (ข้อกําหนดใหม่นี้เปลี่ยนชื่อหน่วยวัดและประกาศตัวแปรสองตัว ตรวจสอบให้แน่ใจว่าได้จัดรูปแบบหน่วยวัดเป็นเปอร์เซ็นต์ด้วยสองตําแหน่งทศนิยม)

Revenue % Total Region =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalRegionRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory')
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalRegionRevenue
    )

ตรวจสอบว่าภาพเมทริกซ์ในขณะนี้แสดงค่า% รายได้ทั้งหมดของภูมิภาค

ตอนนี้คุณจะสร้างหน่วยวัดอื่นได้ แต่ครั้งนี้คุณจะคำนวณอัตราส่วนของรายได้สำหรับภูมิภาคที่หารด้วยรายได้ของประเทศ

ก่อนที่คุณจะทำงานนี้ให้เสร็จสมบูรณ์ใ ห้สังเกตว่าค่า% รายได้ทั้งหมดของภูมิภาค สำหรับภูมิภาคตะวันตกเฉียงใต้คือ 22.95 เปอร์เซ็นต์ ตรวจสอบบริบทตัวกรองสำหรับเซลล์นี้ สลับไปยังมุมมองข้อมูล จากนั้นในบานหน้าต่างเขตข้อมูล ให้เลือกตารางพื้นที่ยอดขาย

ใช้ตัวกรองคอลัมน์ต่อไปนี้:

  • กลุ่ม - อเมริกาเหนือ
  • ประเทศ - สหรัฐอเมริกา
  • ภูมิภาค - ตะวันตกเฉียงใต้

โปรดสังเกตว่าตัวกรองจะลดตารางให้เป็นแถวเดียวเท่านั้น ในตอนนี้ ในขณะที่คิดเกี่ยวกับวัตถุประสงค์ใหม่ของคุณในการสร้างอัตราส่วนของรายได้ของภูมิภาคในรายได้ของประเทศ ให้ล้างตัวกรองจากคอลัมน์ภูมิภาค

โปรดสังเกตว่ามีห้าแถวในขณะนี้ โดยแต่ละแถวอยู่ในประเทศสหรัฐอเมริกา ดังนั้นเมื่อคุณล้างตัวกรองคอลัมน์ของภูมิภาคในขณะที่รักษาตัวกรองบนคอลัมน์ประเทศและกลุ่มคุณจะมีบริบทตัวกรองใหม่ที่อยู่สำหรับประเทศของภูมิภาค

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

Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory'[Region])
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalCountryRevenue
    )

เพิ่มหน่วยวัด % รายได้ทั้งหมดของประเทศ ลงในตาราง ยอดขาย จากนั้นจัดรูปแบบเป็นเปอร์เซ็นต์โดยมีทศนิยมสองตําแหน่ง เพิ่มหน่วยวัดใหม่ไปยังภาพเมทริกซ์

โปรดสังเกตว่าค่าทั้งหมดยกเว้นค่าเหล่านั้นสำหรับภูมิภาคของสหรัฐอเมริกาคือ 100 เปอร์เซ็นต์ เหตุผลก็เพราะว่าที่บริษัท Adventure Works สหรัฐอเมริกามีภูมิภาคในขณะที่ประเทศอื่นๆ ไม่มี

หมายเหตุ

แบบจำลองตารางไม่รองรับลำดับชั้นที่ไม่สมบูรณ์ซึ่งเป็นลำดับชั้นที่มีความลึกตัวแปร ดังนั้น จึงเป็นแนวทางการออกแบบทั่วไปในการทำซ้ำค่าพาเรนต์ (หรือตระกูลอื่นๆ ) ที่ระดับล่างของลำดับชั้น ตัวอย่างเช่น ออสเตรเลียไม่มีภูมิภาค ดังนั้นค่าประเทศ/ภูมิภาคจึงซ้ํากันเป็นชื่อภูมิภาค การจัดเก็บค่าที่มีความหมายแทน BLANK จะดีกว่าเสมอ

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

Revenue % Total Group =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalGroupRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS(
            'Sales Territory'[Region],
            'Sales Territory'[Country]
        )
    )
RETURN
    DIVIDE(
        CurrentRegionRevenue,
        TotalGroupRevenue
    )

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

รักษาตัวกรอง

คุณสามารถใช้ KEEPFILTERS ฟังก์ชัน DAX เป็นนิพจน์ตัวกรองใน CALCULATE ฟังก์ชันเพื่อรักษาตัวกรองได้

หากต้องการดูวิธีการทำงานนี้ให้สำเร็จ ให้สลับไปที่หน้า 1 ของรายงาน จากนั้นแก้ไขข้อกําหนดหน่วยวัด รายได้สีแดง เพื่อใช้ KEEPFILTERS ฟังก์ชัน

Revenue Red =
CALCULATE(
    [Revenue],
    KEEPFILTERS('Product'[Color] = "Red")
)

ในภาพตาราง โปรดสังเกตว่ามีค่ารายได้สีแดงอยู่เท่านั้น เหตุผลคือเนื่องจากนิพจน์ตัวกรองบูลีนรักษาตัวกรองที่มีอยู่บนคอลัมน์สีในตารางผลิตภัณฑ์ เหตุผลที่ทำให้สีอื่นนอกเหนือจากสีแดงเป็นค่าว่างเนื่องจากบริบทตัวกรองและนิพจน์ตัวกรองจะถูกรวมสำหรับตัวกรองทั้งสองนี้ สีดําและสีแดงตัดกันและเนื่องจากทั้งสองไม่สามารถ TRUE ในเวลาเดียวกันได้ นิพจน์จะถูกกรองโดยไม่มีแถวผลิตภัณฑ์ อาจเป็นไปได้ว่าตัวกรองสีแดงทั้งสองตัวสามารถ TRUE อยู่ในเวลาเดียวกันได้ ซึ่งจะอธิบายว่าทําไมมีการแสดงค่า รายได้สีแดง หนึ่งค่า

ใช้ความสัมพันธ์ที่ไม่ได้ทำงานอยู่

ความสัมพันธ์แบบจําลองที่ไม่ได้ใช้งานสามารถเผยแพร่เฉพาะตัวกรองเมื่อมีการ USERELATIONSHIP ส่งผ่านฟังก์ชัน DAX เป็นนิพจน์ตัวกรองไปยัง CALCULATE ฟังก์ชันเท่านั้น เมื่อคุณใช้ฟังก์ชันนี้เพื่อมีส่วนร่วมในความสัมพันธ์ที่ไม่ได้ใช้งาน

ตรวจทานตัวอย่างของข้อกำหนดหน่วยวัดที่ใช้ความสัมพันธ์ที่ไม่ได้ทำงานเพื่อคำนวณหน่วยวัดรายได้ตามวันที่จัดส่ง:

Revenue Shipped =
CALCULATE (
    [Revenue],
    USERELATIONSHIP('Date'[DateKey], Sales[ShipDateKey])
)

ปรับเปลี่ยนลักษณะการทำงานของความสัมพันธ์

คุณสามารถปรับเปลี่ยนลักษณะการทํางานของความสัมพันธ์แบบจําลองได้เมื่อมีการประเมินนิพจน์โดยผ่าน CROSSFILTER ฟังก์ชัน DAX เป็นนิพจน์ตัวกรองไปยัง CALCULATE ฟังก์ชัน นี่คือความสามารถขั้นสูง

ฟังก์ชัน CROSSFILTER สามารถปรับเปลี่ยนทิศทางตัวกรอง (จากทั้งสองเป็นเดี่ยวหรือจากเดี่ยวเป็นทั้งสอง) และแม้แต่ปิดใช้งานความสัมพันธ์