=SELECTEDVALUE(<columnName>[, <alternateResult>])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| columnName | Column Reference | Yes | คอลัมน์ที่ต้องการตรวจสอบ ต้องเป็นการอ้างอิงคอลัมน์โดยตรง (ไม่ใช่นิพจน์) | |
| alternateResult | Scalar Value | Optional | BLANK() | ค่าที่จะคืนกลับเมื่อมี 0 หรือหลายค่าใน Filter Context หากไม่ระบุจะคืน BLANK() |
แสดงชื่อสินค้าที่ถูกเลือกใน Slicer บนหัวรายงาน
คำนวณ Measure ที่แตกต่างกันขึ้นอยู่กับว่าผู้ใช้เลือกสินค้าหมวดหมู่เดียว หรือหลายหมวดหมู่
Selected Color = SELECTEDVALUE( Products[Color], "Multiple Colors Selected" )Selected Color =
SELECTEDVALUE(
Products[Color],
"Multiple Colors Selected"
)
เลือก Red → "Red" | เลือก Red และ Blue → "Multiple Colors Selected" | ไม่เลือก → "Multiple Colors Selected"
Selected Year = VAR SelectedYr = SELECTEDVALUE( 'Calendar'[Year], YEAR(TODAY()) ) RETURN SelectedYrSelected Year =
VAR SelectedYr = SELECTEDVALUE(
'Calendar'[Year],
YEAR(TODAY())
)
RETURN SelectedYr
เลือก 2024 → 2024 | ไม่เลือก → ปีปัจจุบัน
YoY Growth = VAR CurrentYear = SELECTEDVALUE( 'Calendar'[Year], BLANK() ) VAR PreviousYear = CurrentYear - 1 VAR CurrentSales = CALCULATE( SUM(Sales[Amount]), '…YoY Growth =
VAR CurrentYear = SELECTEDVALUE(
'Calendar'[Year],
BLANK()
)
VAR PreviousYear = CurrentYear - 1
VAR CurrentSales = CALCULATE(
SUM(Sales[Amount]),
'Calendar'[Year] = CurrentYear
)
VAR PreviousSales = CALCULATE(
SUM(Sales[Amount]),
'Calendar'[Year] = PreviousYear
)
RETURN
DIVIDE(CurrentSales - PreviousSales, PreviousSales, BLANK())
เลือก 2024 → % เปลี่ยนแปลงจาก 2023 | ไม่เลือก → BLANK()
Manual Equivalent = IF( HASONEVALUE(Products[Category]), VALUES(Products[Category]), "No Single Category" )Manual Equivalent =
IF(
HASONEVALUE(Products[Category]),
VALUES(Products[Category]),
"No Single Category"
)
ผลลัพธ์เดียวกับ SELECTEDVALUE(Products[Category], "No Single Category")
Region Filter Status = VAR RegionSelected = SELECTEDVALUE( 'Geography'[Region], "All Regions" ) RETURN "Viewing data for: " & RegionSelectedRegion Filter Status =
VAR RegionSelected = SELECTEDVALUE(
'Geography'[Region],
"All Regions"
)
RETURN
"Viewing data for: " & RegionSelected
เลือก "North" → "Viewing data for: North" | ไม่เลือก → "Viewing data for: All Regions"
VALUES() คืนตารางมี (Table) สำหรับค่าทั้งหมด ส่วน SELECTEDVALUE() คืนค่าสเกลาร์เมื่อมี 1 ค่าพอดี หากมี 0 หรือหลายค่าให้คืน alternateResult ที่คุณระบุ ทำให้ SELECTEDVALUE ปลอดภัยกว่าและอ่านง่ายกว่าครับ โดยเฉพาะเมื่อต้องการข้อความคำเตือน (alert message)
ได้เต็มที่ในโหมด Import Mode ครับ เพราะมี Row Context ที่ชัดเจน ส่วน DirectQuery Mode ไม่สนับสนุนใน Calculated Column หรือ RLS Rules ถ้าต้องใช้ ให้สร้างเป็น Measure แทน
จะคืน BLANK() ซึ่งแสดงผลว่างเปล่า ถ้าอยากให้ชัดเจนว่า “ไม่ได้เลือก” ให้ระบุ alternateResult เช่น “No selection” หรือ 0 ได้ครับ
ใน Measure ได้นะครับ แต่ Calculated Column และ RLS Rules ใน DirectQuery ไม่สนับสนุน ทั่วไปคุณจะใช้ Import Mode หรือ Dual Mode ได้นครับ
Fields Parameter เป็นคอลัมน์ Virtual ไม่ใช่คอลัมน์ที่แท้จริง SELECTEDVALUE ต้องการอ้างอิงคอลัมน์จริง ถ้าต้องใช้ให้ใช้ SELECTCOLUMNS + SUMMARIZE เป็นวิธีแก้ไขครับ
SELECTEDVALUE เป็นฟังก์ชันตรวจสอบ Filter Context ที่ช่วยเมื่อคุณต้องการให้แน่ใจว่ามีเพียงค่าเดียวถูกเลือก คืนค่าสเกลาร์เมื่อมี 1 ค่าพอดี หากมี 0 หรือหลายค่าให้คืนค่าที่กำหนด (ค่าเริ่มต้นคือ BLANK()).
ส่วนตัวผม SELECTEDVALUE คือ “สตูดิโอการตรวจสอบ” ของ DAX เลยครับ มันบอกคุณชัดเจนว่า “ฉันเห็นค่าเดียวแน่นอน” หรือ “ฉันไม่แน่ใจ” (มี 0 หรือหลายค่า) ซึ่งมีประโยชน์มากเวลาต้องการแสดงสถานะการคัดกรองของผู้ใช้ได้เลยครับ
ความเจ๋งของ SELECTEDVALUE คือการใช้ alternateResult เพื่อจัดการกับสถานการณ์ที่ไม่ได้เลือกอะไรเลย ไม่เหมือน VALUES() ที่อาจ error หรือคืนค่าแปลกๆ ทำให้ dashboard มีความเสถียรมากขึ้นครับ