| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| columnName | Column Reference | คอลัมน์ที่ต้องการตรวจสอบ ต้องเป็นการอ้างอิงคอลัมน์โดยตรง (ไม่ใช่นิพจน์) | |
| [alternateResult]ไม่บังคับ | Scalar Value | BLANK() | ค่าที่จะคืนกลับเมื่อมี 0 หรือหลายค่าใน Filter Context หากไม่ระบุจะคืน BLANK() |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
SELECTEDVALUE เป็นฟังก์ชันตรวจสอบ Filter Context ที่ช่วยเมื่อคุณต้องการให้แน่ใจว่ามีเพียงค่าเดียวถูกเลือก คืนค่าสเกลาร์เมื่อมี 1 ค่าพอดี หากมี 0 หรือหลายค่าให้คืนค่าที่กำหนด (ค่าเริ่มต้นคือ BLANK()).
ส่วนตัวผม SELECTEDVALUE คือ “สตูดิโอการตรวจสอบ” ของ DAX เลยครับ มันบอกคุณชัดเจนว่า “ฉันเห็นค่าเดียวแน่นอน” หรือ “ฉันไม่แน่ใจ” (มี 0 หรือหลายค่า) ซึ่งมีประโยชน์มากเวลาต้องการแสดงสถานะการคัดกรองของผู้ใช้ได้เลยครับ
ความเจ๋งของ SELECTEDVALUE คือการใช้ alternateResult เพื่อจัดการกับสถานการณ์ที่ไม่ได้เลือกอะไรเลย ไม่เหมือน VALUES() ที่อาจ error หรือคืนค่าแปลกๆ ทำให้ dashboard มีความเสถียรมากขึ้นครับ
แสดงชื่อสินค้าที่ถูกเลือกใน Slicer บนหัวรายงาน
คำนวณ Measure ที่แตกต่างกันขึ้นอยู่กับว่าผู้ใช้เลือกสินค้าหมวดหมู่เดียว หรือหลายหมวดหมู่
ใช้ในการแสดงสีผลิตภัณฑ์ที่ผู้ใช้เลือก หากมีการเลือกมากกว่า 1 สี ให้แสดงข้อความแทน เป็นการป้องกัน BLANK() ที่ดูแปลกๆในรายงาน
ถ้าผู้ใช้ไม่เลือกปี ให้ใช้ปีปัจจุบันเป็นค่าดีฟอลต์ แล้วใช้ค่านี้ในการคำนวณอื่นๆ ช่วยให้ dashboard มีความชาญฉลาด (smart default)
โปรแกรมนี้ใช้ SELECTEDVALUE เพื่อดึงปีที่เลือก แล้วคำนวณการเปลี่ยนแปลงเมื่อเทียบกับปีก่อนหน้า เป็นตัวอย่าง Advanced ที่ SELECTEDVALUE ช่วยให้โปรแกรมมีความชัดเจนมากขึ้นครับ
นี่คือวิธีที่ SELECTEDVALUE ทำงานจริงๆด้านหลัง คือ "ถ้ามีค่าเดียว ให้คืนค่า ถ้าไม่ใช่ให้คืนค่าอื่น" – SELECTEDVALUE เพียงแค่เขียนสั้นกว่าและอ่านง่ายกว่านี่ครับ
ใช้ SELECTEDVALUE ในการสร้างข้อความคำแนะนำ (Tooltip) หรือชื่อเรื่องที่บอกผู้ใช้ว่า "คุณกำลังมองหาข้อมูลของ [Region]" เพื่อเพิ่มความเข้าใจของผู้ใช้ครับ
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 จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
CALCULATE เป็นฟังก์ชันหลักที่สำคัญที่สุดใน DAX ใช้สำหรับ evaluate expression ภายใต้ filter context ที่ถูกปรับเปลี่ยน สามารถเพิ่มตัวกรองใหม่ ลบตัวกรองเดิม หรือแทนที่ filter ที่มีอยู่ได้ รองรับทั้ง Boolean expression และ table expression เป็น filter arguments พร้อม filter modifier functions เช่น REMOVEFILTERS, ALL, ALLEXCEPT, KEEPFILTERS เพื่อควบคุมการกรองอย่างละเอียด มีพฤติกรรมพิเศษคือ context transition ที่เปลี่ยน row context เป็น filter context โดยอัตโนมัติ ทำให้เป็นเครื่องมือหลักในการสร้าง measure ที่ซับซ้อนและ calculated column ที่ต้องใช้ aggregation
LOOKUPVALUE เป็นฟังก์ชันค้นหาที่ยืดหยุ่น โดยจะดึงค่าจากคอลัมน์หนึ่งโดยการค้นหาตามเงื่อนไขหลายตัวในเวลาเดียวกัน
FIRSTNONBLANKVALUE คืนค่าแรกที่ไม่เป็น BLANK ของ Expression เมื่อประเมินตามลำดับของ Column ซึ่งมีประโยชน์ในการหาค่าเริ่มต้นหรือค่าแรกที่มีข้อมูลจริง เช่นยอดขายของวันแรกที่มีการขาย
LASTNONBLANKVALUE คืนค่าสุดท้ายที่ไม่เป็น BLANK ของ Expression เมื่อประเมินตามลำดับของ Column ในบริบทตัวกรองปัจจุบัน ใช้หา "ค่าล่าสุดที่มีข้อมูล" เช่นยอดขายของวันล่าสุดที่มีค่า
ตรวจว่าคอลัมน์ถูก filter โดยตรงให้เหลือค่าเดียวหรือไม่ เหมาะกับการควบคุมการแสดงผลตามสถานะการเลือกของผู้ใช้
HASONEVALUE ตรวจสอบว่า Column ที่ผ่านการ Filter มีเพียงค่าเดียวเท่านั้น Return TRUE หากตรงตามเงื่อนไข FALSE หากไม่ใช่ ใช้หลักเพื่อสร้าง Measure ที่ "ฉลาด" ตามการเลือก Filter ของผู้ใช้
COALESCE คืนค่าแรกที่ไม่เป็น BLANK() จากหลายอาร์กิวเมนต์ เหมาะกับการกำหนดค่าเริ่มต้น (fallback) เช่น ใช้ค่า 0 เมื่อ Measure เป็น BLANK หรือเลือกค่าจากหลายแหล่งตามลำดับความสำคัญ
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่