ตรวจสอบบริบทตัวกรอง

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

ฟังก์ชัน VALUES DAX ช่วยให้สูตรของคุณกําหนดค่าที่อยู่ในบริบทตัวกรอง

ไวยากรณ์ของ VALUES ฟังก์ชันมีดังนี้:

VALUES(<TableNameOrColumnName>)

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

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

ฟังก์ชัน HASONEVALUE จะแสดง TRUE เมื่อมีการกรองการอ้างอิงคอลัมน์ที่ระบุให้เป็นค่าเดียว

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

ในตัวอย่างต่อไปนี้ คุณจะใช้ HASONEVALUE ฟังก์ชัน เพิ่มหน่วยวัดต่อไปนี้ซึ่งจะคํานวณค่าคอมมิชชันยอดขายลงในตารางยอดขาย โปรดทราบว่าที่ Adventure Works อัตราค่าคอมมิชชันคือ 10 เปอร์เซ็นต์ของรายได้สําหรับทุกประเทศ/ภูมิภาคยกเว้นสหรัฐอเมริกา ในสหรัฐอเมริกา พนักงานขายได้รับค่าคอมมิชชัน15เปอร์เซ็นต์ จัดรูปแบบหน่วยวัดเป็นสกุลเงินด้วยตำแหน่งทศนิยมสองจุด จากนั้นเพิ่มลงในตารางที่พบในหน้า 3 ของรายงาน

Sales Commission =
[Revenue]
    * IF(
        HASONEVALUE('Sales Territory'[Country]),
        IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )

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

สามฟังก์ชันอื่นๆ ที่คุณสามารถใช้ได้เพื่อทดสอบสถานะตัวกรองได้แก่:

  • ISFILTERED- ส่งกลับ TRUE เมื่อการอ้างอิงคอลัมน์ที่ส่งผ่านถูกกรองโดยตรง
  • ISCROSSFILTERED- ส่งกลับTRUEเมื่อการอ้างอิงคอลัมน์ที่ส่งผ่านถูกกรองทางอ้อม คอลัมน์จะถูกกรองแบบไขว้เมื่อตัวกรองที่ใช้กับคอลัมน์อื่นในตารางเดียวกันหรือในตารางที่เกี่ยวข้องมีผลต่อคอลัมน์อ้างอิงโดยการกรอง
  • ISINSCOPE - ส่งกลับ TRUE เมื่อการอ้างอิงคอลัมน์ที่ส่งผ่านคือระดับในลําดับชั้นของระดับ

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

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

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