สร้างตารางใหม่โดยเลือกเฉพาะคอลัมน์ที่ต้องการจากตารางต้นฉบับและเพิ่มคอลัมน์ที่คำนวณได้ ต่างจาก ADDCOLUMNS ตรงที่ SELECTCOLUMNS เริ่มจากตารางว่างแล้วเพิ่มเฉพาะคอลัมน์ที่ระบุ ทำให้สามารถปรับโครงสร้างตารางและเลือกข้อมูลที่จำเป็นได้อย่างยืดหยุ่น
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| table | table | ตารางต้นฉบับที่ต้องการเลือกข้อมูล สามารถเป็นนิพจน์ DAX ใดก็ได้ที่คืนค่าเป็นตาราง |
| name | text | ชื่อของคอลัมน์ใหม่ ต้องอยู่ในเครื่องหมายคำพูดคู่ |
| expression | expression | นิพจน์ DAX ที่คืนค่าเป็น scalar value เช่น การอ้างอิงคอลัมน์ ตัวเลข หรือข้อความ นิพจน์จะถูกประเมินในบริบทของแต่ละแถวจากตารางต้นฉบับ |
ฟังก์ชัน SELECTCOLUMNS ใช้สำหรับสร้างตารางใหม่โดยเลือกเฉพาะคอลัมน์ที่ต้องการจากตารางต้นฉบับ และสามารถเพิ่มคอลัมน์ใหม่ที่คำนวณจากนิพจน์ DAX ได้ ต่างจาก ADDCOLUMNS ที่เริ่มต้นจากตารางเดิมและเพิ่มคอลัมน์เข้าไป SELECTCOLUMNS จะเริ่มจากตารางว่างแล้วค่อยเพิ่มเฉพาะคอลัมน์ที่กำหนด ทำให้เหมาะสำหรับการปรับโครงสร้างข้อมูลและเลือกเฉพาะข้อมูลที่จำเป็น
ฟังก์ชันนี้มักใช้ร่วมกับ ADDCOLUMNS, SUMMARIZE, CALCULATETABLE และ FILTER เพื่อจัดการและปรับแต่งตารางข้อมูล รวมถึงสร้าง calculated tables ที่มีโครงสร้างตามที่ต้องการ
สร้างตารางใหม่จากตารางใหญ่โดยเลือกเฉพาะคอลัมน์หลัก เพื่อลดความซับซ้อนของโมเดลและเร่งประสิทธิภาพ
ต่อข้อความจากหลายคอลัมน์ (เช่นชื่อ-สกุล หรือที่อยู่) เป็นคอลัมน์เดียวด้วยนิพจน์ใน SELECTCOLUMNS
เลือกและคำนวณคอลัมน์ใหม่เพื่อสร้างตารางวิเคราะห์เฉพาะ เช่น ตารางสรุปหรือ lookup พิเศษ
สร้างตาราง CustomerNames ที่มีเฉพาะคอลัมน์ชื่อลูกค้าจากตาราง Customer ผลลัพธ์จะเป็นตารางที่มีคอลัมน์เดียวชื่อ Name ซึ่งแตกต่างจาก ADDCOLUMNS ที่จะรักษาคอลัมน์เดิมทั้งหมดไว้
สร้างตาราง LocationTable โดยรวมคอลัมน์ Country และ State เป็นคอลัมน์เดียวชื่อ Location ด้วยการต่อข้อความ ผลลัพธ์จะเป็น 'USA, CA' หรือ 'IND, MH' เป็นต้น
สร้างตาราง SalesAnalysis ที่มี 3 คอลัมน์ โดยเลือกชื่อสินค้า คำนวณรายได้จากจำนวนคูณราคา และดึงปีจากวันที่สั่งซื้อ ตัวอย่างนี้แสดงให้เห็นการใช้ SELECTCOLUMNS ร่วมกับการคำนวณและฟังก์ชันอื่นๆ เช่น YEAR
สร้างตาราง TopCustomers โดยใช้ FILTER เพื่อกรองเฉพาะลูกค้าที่มียอดซื้อเกิน 10,000 จากนั้นใช้ SELECTCOLUMNS เพื่อเลือกคอลัมน์ชื่อและยอดซื้อ พร้อมเพิ่มคอลัมน์ Tier ที่มีค่าคงที่ 'Premium' ตัวอย่างนี้แสดงการใช้ SELECTCOLUMNS ร่วมกับ FILTER และ CALCULATETABLE เพื่อสร้างตารางที่มีข้อมูลเฉพาะกลุ่มที่ต้องการ
สร้างตาราง RegionSummary โดยใช้ SUMMARIZE จัดกลุ่มข้อมูลตามภูมิภาคและหมวดหมู่ จากนั้นใช้ SELECTCOLUMNS เพื่อเลือกคอลัมน์และคำนวณยอดขายรวมในแต่ละกลุ่ม ตัวอย่างนี้แสดงการใช้งานร่วมกับ SUMMARIZE และ CALCULATE อย่างมีประสิทธิภาพในการวิเคราะห์ข้อมูล
SELECTCOLUMNS เริ่มจากตารางว่างแล้วเพิ่มเฉพาะคอลัมน์ที่ระบุ ในขณะที่ ADDCOLUMNS จะเริ่มจากตารางต้นฉบับที่มีคอลัมน์ทั้งหมดแล้วเพิ่มคอลัมน์ใหม่เข้าไป ใช้ SELECTCOLUMNS เมื่อต้องการควบคุมโครงสร้างตารางผลลัพธ์ และใช้ ADDCOLUMNS เมื่อต้องการเก็บคอลัมน์เดิมทั้งหมด
ไม่ได้ SELECTCOLUMNS ไม่รองรับการใช้งานใน DirectQuery mode เมื่อใช้ใน calculated columns หรือ row-level security (RLS) rules ควรใช้วิธีอื่นในกรณีที่จำเป็นต้องใช้ DirectQuery
ใช้ SUMMARIZE สำหรับการจัดกลุ่มข้อมูล (grouping) โดยเฉพาะ และใช้ SELECTCOLUMNS เมื่อต้องการเลือกหรือแปลงคอลัมน์โดยไม่จัดกลุ่ม อย่างไรก็ตาม สามารถใช้ทั้งสองฟังก์ชันร่วมกันได้ เช่น ใช้ SUMMARIZE จัดกลุ่มก่อน แล้วใช้ SELECTCOLUMNS เลือกคอลัมน์จากผลลัพธ์
ฟังก์ชันที่ผู้เขียนโยงไว้กับ SELECTCOLUMNS จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
ADDCOLUMNS เป็นฟังก์ชัน table transformation ที่ใช้สำหรับเพิ่มคอลัมน์ใหม่ (Calculated Columns) เข้าไปในตารางที่มีอยู่เดิม โดยคำนวณค่าในแต่ละแถวผ่าน Row Context และส่งคืนตารางเดิมพร้อมคอลัมน์ใหม่ต่อท้าย
DATATABLE สร้างตารางแบบ hardcode ด้วยข้อมูลคงที่ โดยระบุชื่อคอลัมน์ ชนิดข้อมูล และค่าของแต่ละแถว เหมาะสำหรับตารางอ้างอิงเล็กๆ เช่น lookup table หรือข้อมูลตัวอย่าง
DISTINCT คืนค่าตารางที่มีคอลัมน์เดียว ซึ่งประกอบด้วยค่าที่ไม่ซ้ำกันจากคอลัมน์ที่ระบุ โดยไม่รวม Blank Row ที่เกิดจาก Invalid Relationship ความแตกต่างหลักจาก VALUES คือ DISTINCT จะซ่อน Data Quality Issues ในขณะที่ VALUES จะเตือนให้เห็น
EXCEPT คืนตารางของแถวที่อยู่ใน LeftTable แต่ไม่อยู่ใน RightTable เหมาะกับการหาสิ่งที่ขาดหาย เช่น สินค้าที่ไม่เคยขาย ลูกค้าที่ไม่มีธุรกรรม
GENERATESERIES สร้างตารางคอลัมน์เดียวที่เป็นลำดับตัวเลขจาก StartValue ถึง EndValue ด้วย increment ที่กำหนดได้ เหมาะกับตารางช่วย parameter table หรือสร้างชุดตัวเลขสำหรับ what-if analysis
GROUPBY สร้างตารางสรุปโดยจัดกลุ่มตามคอลัมน์ที่กำหนด และเพิ่มคอลัมน์คำนวณแบบกลุ่มต่อกลุ่มได้ โดยใช้ CURRENTGROUP() เข้าถึงแถวภายในกลุ่ม เหมาะกับการคำนวณซ้อนหรือคำนวณจากคอลัมน์ชั่วคราว (local columns)
IGNORE ใช้ภายใน SUMMARIZECOLUMNS เพื่อบอกว่า expression/measure นี้ต้องถูก “ละเว้น” ตอนตัดสินว่าแถวไหนเป็น non-blank ทำให้แถวในผลลัพธ์ไม่ถูกตัดทิ้งเพียงเพราะ measure ที่เลือกละเว้นเป็น BLANK
INTERSECT คืนตารางของแถวที่อยู่ในทั้ง LeftTable และ RightTable เหมาะกับการหาสิ่งที่ซ้ำกัน/ร่วมกันระหว่างสองชุดข้อมูล โดยรักษาเอาแถวที่ซ้ำกันไว้ด้วย
NATURALINNERJOIN ทำ inner join ระหว่าง LeftTable และ RightTable โดยใช้คอลัมน์ชื่อเดียวกันเป็นคีย์การจับคู่ คืนผลลัพธ์เฉพาะแถวที่จับคู่ได้ทั้งสองตาราง และมักใช้ร่วมกับ SELECTCOLUMNS เพื่อจัดชื่อคอลัมน์ให้ตรงกัน
NATURALJOINUSAGE ทำให้ table expression ถูกเพิ่มเข้าไปในตัวกรอง (filter context) แบบ natural join โดยจับคู่ตามคอลัมน์ชื่อเดียวกัน เป็นฟังก์ชันที่ออกแบบสำหรับการใช้งานขั้นสูงในโมเดลแบบประกอบ (composite models) และ SUMMARIZECOLUMNS
NATURALLEFTOUTERJOIN ทำ left outer join ระหว่าง LeftTable และ RightTable โดยใช้คอลัมน์ชื่อเดียวกันเป็นคีย์ เก็บทุกแถวของตารางซ้ายไว้ทั้งหมด และเติมคอลัมน์จากตารางขวาเมื่อจับคู่ได้ (ไม่จับคู่จะเป็น BLANK)
คืนตารางที่เป็นผลแบบ semi-join ระหว่าง 2 ตาราง พร้อมแทนคอลัมน์ร่วมด้วยดัชนี 0-based ซึ่งคำนวณจากลำดับแถวของตารางอ้างอิงหลังจัดเรียง
SUMMARIZE สร้างตารางสรุปโดยจัดกลุ่มข้อมูลตามคอลัมน์ที่กำหนด คล้าย GROUP BY ใน SQL หรือ Pivot Table ใน Excel คืนค่าตารางที่มีหนึ่งแถวต่อหนึ่ง unique combination ของคอลัมน์ที่เลือก สามารถอ้างถึงคอลัมน์จาก related table ได้โดยตรงโดยไม่ต้องใช้ RELATED มักใช้สร้าง virtual table ใน measure เพื่อทำ intermediate calculations ก่อนใช้ iterator functions อย่าง SUMX, AVERAGEX คำนวณต่อ ⚠️ Best Practice: ใช้ ADDCOLUMNS ครอบ SUMMARIZE แทนการใส่ extension columns ตรงๆ เพื่อ performance และ filter context control ที่ดีกว่า สำหรับ calculated table แนะนำใช้ SUMMARIZECOLUMNS แทนเนื่องจากมี performance ดีกว่าอย่างมาก
SUMMARIZECOLUMNS เป็นฟังก์ชันหลักสำหรับสร้างตารางสรุปผล โดยจัดกลุ่มตามคอลัมน์ที่กำหนด พร้อมเพิ่มคอลัมน์คำนวณจากเมเชอร์ และสามารถใส่เงื่อนไขกรองได้ทันที
UNION รวมหลายตารางให้เป็นตารางเดียวด้วยการต่อแถว โดยเก็บแถวซ้ำไว้ทั้งหมด เหมาะกับการรวมชุดข้อมูลที่มีโครงสร้างคอลัมน์สอดคล้องกัน
CALCULATETABLE evaluate table expression ภายใต้ filter context ที่ถูกปรับเปลี่ยน แล้วคืนค่าเป็น table (ตาราง) ซึ่งแตกต่างจาก CALCULATE ที่คืนค่าเป็น scalar value รองรับ filter arguments 3 รูปแบบ: Boolean expression, table expression, และ filter modifier functions (REMOVEFILTERS, ALL, KEEPFILTERS, USERELATIONSHIP, CROSSFILTER) มีพฤติกรรมเหมือน CALCULATE ในทุกแง่มุมของการจัดการ filter context รวมถึง context transition แต่เหมาะสำหรับการสร้าง intermediate table ที่ถูกกรองแล้วส่งต่อให้ iterator functions หรือใช้ใน calculated table มักมี performance ดีกว่า FILTER ใน simple filtering scenarios เพราะ DAX engine สามารถทำ cardinality estimation และ optimization ได้ดีกว่า
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่