| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| expression | any | นิพจน์ที่จะประเมินหรือคำนวณจากเซลล์ที่ตรงกับเงื่อนไขการกรอง เช่น SUM([Sales Amount]) หรือ [Price] |
| [colref]ไม่บังคับ | column reference | คอลัมน์ที่ต้องการตรวจสอบเงื่อนไข (สามารถระบุได้หลายคอลัมน์) |
| [expression]ไม่บังคับ | any | ค่าที่ต้องการให้ colref ตรงกัน (ตามหลัง colref แต่ละครั้ง) |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
LOOKUP เป็นฟังก์ชันที่ออกแบบมาเฉพาะสำหรับการคำนวณภาพ (visual calculations) ในเมทริกซ์ที่แสดงในรายงาน Power BI มันค้นหาเซลล์ที่ตรงกับเงื่อนไขการกรองที่ระบุ แล้วคืนค่า หรือประเมินนิพจน์จากเซลล์นั้น
ที่เจ๋งคือ LOOKUP ใช้ประโยชน์จากการสืบทอด filter context จากเมทริกซ์ภาพ ถ้าคุณไม่ระบุเงื่อนไขบางอย่าง มันจะดึงมาจาก row context หรือ column context ของตำแหน่งปัจจุบัน ช่วยให้คุณสามารถทำการค้นหาแบบไขว้ (cross-filter) ได้อย่างมีประสิทธิภาพในตารางและเมทริกซ์ข้อมูล
ส่วนตัวผมถือว่า LOOKUP เป็นฟังก์ชันพิเศษที่ต้องใช้มาตรการระมัดระวัง เพราะใช้ได้ในการคำนวณภาพเท่านั้น ไม่ใช้ได้ใน calculated columns, calculated tables หรือ measures ถ้าต้องการค้นหาค่าจากตารางปกติ ผมแนะนำให้ใช้ LOOKUPVALUE หรือ RELATED แทน
ใช้ LOOKUP กับรายการที่จัดเรียงเพื่อตอบค่าตามลำดับ เช่น มูลค่าล่าสุดหรือเก่าสุด
ใช้เซตจาก FILTER/VALUES เพื่อค้นหาและดึงค่าที่ตรงเงื่อนไขโดยไม่ต้องสร้างความสัมพันธ์
เมื่อผลลัพธ์หลายแถว แต่ต้องคืนค่าเดียวตามกฎลำดับ (เช่น ตัวแรกหรือสุดท้าย)
LOOKUP ค้นหาเซลล์ที่ [Product Category] เท่ากับ "Bikes" แล้วคำนวณ SUM([Sales Amount]) สำหรับเซลล์นั้น ตัวแปร colref คือ [Product Category] และค่าที่ค้นหาคือ "Bikes"
LOOKUP ค้นหา [Sales Amount] โดยระบุ [Fiscal Year] = "FY2024" เท่านั้น เงื่อนไขอื่นๆ เช่น [Quarter] จะสืบทอดมาจาก row context ของเมทริกซ์ปัจจุบัน
LOOKUP ระบุ colref สองอัน: [Fiscal Year] = "FY2024" และ [Fiscal Quarter] = "Q1" มันไม่สืบทอด quarter จาก row context แต่ใช้ค่าที่ระบุแล้วเท่านั้น
LOOKUP ค้นหาเซลล์ที่ [Category] = "Electronics" แล้วประเมินนิพจน์ AVERAGE([Price]) บน data ที่ถูกกรองแล้ว
LOOKUP ใช้ได้เฉพาะในการคำนวณภาพ (visual calculations) ใน Power BI เท่านั้น ไม่ใช้ได้ใน calculated columns, calculated tables หรือ measures ถ้าต้องการค้นหาค่าในสถานการณ์อื่น ให้ใช้ LOOKUPVALUE แทน
LOOKUP ใช้เฉพาะในการคำนวณภาพและสืบทอด filter context จากเมทริกซ์ ส่วน LOOKUPVALUE ใช้ได้ทั่วไปในการคำนวณ (measures, columns ฯลฯ) และไม่ต้องสอดคล้องกับเมทริกซ์ LOOKUPVALUE ค้นหาค่าจากตารางโดยระบุเงื่อนไข ส่วน LOOKUP ค้นหาจากตำแหน่งในเมทริกซ์
ถ้าไม่ระบุ colref บางอัน LOOKUP จะสืบทอด filter context จากเมทริกซ์ปัจจุบัน เช่น ถ้าคุณอยู่แถว Q1 แต่ LOOKUP ค้นหาเฉพาะ [Year] เท่านั้น มันจะใช้ Q1 จาก row context ด้วย
LOOKUP จะส่งคืนข้อผิดพลาด (error) ถ้ามีหลายแถวตรงกับเงื่อนไขการกรอง คุณต้องระบุเงื่อนไขให้ครบถ้วนจนกระทั่งมีเพียงเซลล์เดียว
LOOKUP จะส่งคืนข้อผิดพลาด (error) ค่าการกรองต้องจับคู่กับข้อมูลที่มีในเมทริกซ์
ฟังก์ชันที่ผู้เขียนโยงไว้กับ LOOKUP จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
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
FILTER ใช้กรองแถวในตารางตามเงื่อนไขที่ซับซ้อน โดยวนลูปทุกแถวและประเมินเงื่อนไข เหมาะกับการกรองด้วย Measure หรือ Expression ซึ่ง Boolean Expression ทำไม่ได้ แต่ต้องระวังเรื่อง Performance เพราะเป็น Iterator Function ที่ช้ากว่า Boolean Expression ดังนั้นควรใช้เฉพาะเมื่อจำเป็น และอย่าใช้ FILTER กับ RELATED เพื่อกรองข้ามตาราง ให้กรองที่ Dimension Table โดยตรงแทน
LOOKUPVALUE เป็นฟังก์ชันค้นหาที่ยืดหยุ่น โดยจะดึงค่าจากคอลัมน์หนึ่งโดยการค้นหาตามเงื่อนไขหลายตัวในเวลาเดียวกัน
LOOKUPWITHTOTALS ค้นหาตำแหน่งที่ตรงเงื่อนไขในตารางสรุป/กริด แล้วคืนค่าเดี่ยวจากคอลัมน์ผลลัพธ์หรือคำนวณนิพจน์จากชุดที่ตรงเงื่อนไข โดยถือว่าคอลัมน์ที่ไม่ระบุในเงื่อนไขอยู่ในสถานะรวม (total) ซึ่งต่างจาก LOOKUP
MATCHBY ระบุคอลัมน์ที่ใช้จับคู่และระบุแถวปัจจุบันใน window functions เพื่อให้การเลื่อน/เลือกตำแหน่งแถวทำงานถูกต้องเมื่อมีค่า ORDERBY ซ้ำ หรือเมื่อจำเป็นต้องกำหนดเอกลักษณ์ของแถว
ORDERBY ระบุลำดับการเรียงลำดับ (ASC/DESC) และการจัดการค่าว่าง สำหรับ window functions เช่น INDEX, OFFSET, WINDOW เพื่อกำหนดลำดับของแถวภายในกลุ่ม
RELATED คืนค่า scalar value (ค่าเดี่ยว) จากคอลัมน์ในตารางที่มีความสัมพันธ์แบบ many-to-one โดยอาศัย relationship ที่กำหนดไว้ในโมเดล ฟังก์ชันนี้ต้องการ row context และสามารถ traverse relationship chain ข้ามหลายขั้นได้ตราบใดที่ทุก relationship อยู่ในทิศทางเดียวกัน
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่