CONTAINSSTRING ตรวจสอบว่าข้อความหนึ่งมีข้อความอื่นเป็นส่วนหนึ่งหรือไม่ แล้วคืนค่า TRUE หรือ FALSE ตัวเลือกนี้ไม่สนใจตัวพิมพ์ใหญ่เล็ก
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| within_text | Text/String | ข้อความที่ต้องการค้นหาภายใน (สามารถเป็นคอลัมน์ข้อมูลหรือข้อความค่าคงที่) |
| find_text | Text/String | ข้อความที่ต้องการค้นหา รองรับ ? (ตัวอักษรเดียว) และ * (หลายตัวอักษร) ใช้ ~? และ ~* เพื่อจับตัวพิมพ์หลายเหลี่ยมตามตัวอักษร |
ในโลกแห่งข้อมูล บางครั้งเราต้องการรู้ว่าข้อความหนึ่งซ่อนข้อความอีกข้อความอยู่ข้างในหรือเปล่า เช่น กำหนดลูกค้าที่มีคำว่า “ส่วนลด” ในความคิดเห็น หรือหาสินค้าที่มีคำว่า “organic” ในรายละเอียด นั่นคือจุดมุ่งหมายของ CONTAINSSTRING
ที่เจ๋งของฟังก์ชันนี้คือมันไม่สนใจตัวพิมพ์ใหญ่เล็ก ตัวอักษรอื่นๆ หรือความกว้างของตัวอักษร ดังนั้น “RED” “red” “rED” ทั้งหมดถูกมองว่าเหมือนกัน นอกจากนี้ยังรองรับ wildcard อีกด้วย ใช้ ? เพื่อจับตัวอักษรตัวเดียว และ * เพื่อจับหลายตัวอักษร
ส่วนตัวผม CONTAINSSTRING เหมาะที่สุดสำหรับการกรองข้อมูลแบบ dynamic ใช้กับ CALCULATE หรือ FILTER เพื่อสร้างการวิเคราะห์ที่ตอบสนองต่อข้อเสนอแนะลูกค้าหรือคุณลักษณะสินค้า
สร้างคอลัมน์ที่ตรวจสอบว่าคำอธิบายสินค้าแต่ละชิ้นมีคำว่า "organic" เป็นส่วนหนึ่งหรือไม่ ค่าตอบสนองจะเป็น TRUE หรือ FALSE ตัวอักษรตัวพิมพ์ใหญ่เล็กไม่ส่งผลต่อผลลัพธ์
รวมยอดขายเฉพาะลูกค้าที่ความคิดเห็นของพวกเขามีคำว่า "discount" ใช้ FILTER เพื่อตรวจสอบเงื่อนไขในแต่ละแถว แล้ว CALCULATE จะ aggregate ผลลัพธ์
ใช้ wildcard * เพื่อจับ SKU ที่เริ่มต้นด้วย "PROD" แล้วตามด้วยตัวอักษรหรือตัวเลขใดๆ COUNTROWS นับจำนวนผลลัพธ์
CONTAINSSTRING ไม่สนใจตัวพิมพ์ใหญ่เล็ก (case-insensitive) ส่วน CONTAINSSTRINGEXACT จะสนใจตัวพิมพ์และเป็นการค้นหาแบบแน่นอน "Red" ≠ "red" ใน CONTAINSSTRINGEXACT แต่เท่ากันใน CONTAINSSTRING
ใช้ ? สำหรับตัวอักษรเดียว (เช่น "r?d" จับ "red" "rad") และ * สำหรับหลายตัวอักษร (เช่น "r*d" จับ "red" "road" "rained") ถ้าต้องการค้นหา ? หรือ * อักษรตัวจริง ให้ใช้ ~? และ ~*
CONTAINSSTRING ทำงานในทั้งสองบริบท ถ้าใช้ในคอลัมน์ที่คำนวณแล้ว มันจะประเมินแต่ละแถว (row context) ถ้าใช้ใน CALCULATE ให้ modifier filter context
ถ้า within_text หรือ find_text เป็น NULL ผลลัพธ์จะเป็น NULL ต้องใช้ IF หรือ IFERROR เพื่อจัดการค่า NULL เช่น IFERROR( CONTAINSSTRING( …), FALSE )
ฟังก์ชันที่ผู้เขียนโยงไว้กับ CONTAINSSTRING จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
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 โดยตรงแทน
FIND คืนค่าตำแหน่งเริ่มต้นของ FindText ภายใน WithinText (เริ่มนับที่ 1) โดยค้นหาแบบแยกตัวพิมพ์ใหญ่/เล็ก และสามารถระบุ StartNum/NotFoundValue เพื่อควบคุมจุดเริ่มค้นหาและผลลัพธ์เมื่อไม่พบได้
SEARCH คืนค่าตำแหน่งเริ่มต้นของข้อความที่ค้นหา (ค้นหาแบบไม่สนตัวพิมพ์) หากไม่พบจะเกิดข้อผิดพลาด สามารถใช้กับ IFERROR หรือ COALESCE เพื่อจัดการกรณีไม่พบ
CONTAINSSTRINGEXACT ใช้สำหรับการวิเคราะห์ข้อมูล DAX
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่