DISTINCTCOUNT นับจำนวนค่าที่แตกต่างกันทั้งหมดในคอลัมน์ รวมถึง BLANK values ถ้าไม่มีแถวข้อมูล จะคืนค่า BLANK
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| column | Column | คอลัมน์ที่ต้องการนับค่าเอกลักษณ์ (สามารถใช้ได้กับ data type ใดก็ได้ – number, text, date, etc.) |
DISTINCTCOUNT เป็นฟังก์ชันสำหรับนับค่าเอกลักษณ์ (unique values) ในคอลัมน์ โดยนับทั้ง BLANK values ด้วย
ที่เจ๋งคือ DISTINCTCOUNT นับเฉพาะว่ามีกี่ค่าที่แตกต่างกัน ไม่ใช่นับจำนวนแถว เช่น ถ้า Products[SubCategory] มี “Electronics” 5 แถว, “Furniture” 3 แถว, BLANK 2 แถว ผลลัพธ์จะเป็น 3 (สามค่าเอกลักษณ์) ไม่ใช่ 10
ส่วนตัวผมคิดว่า DISTINCTCOUNT มีประโยชน์มากในการวิเคราะห์ Cardinality เช่น “มีกี่ลูกค้าที่ซื้อสินค้า” ซึ่ง COUNT หรือ COUNTA ทำไม่ได้ 😎
ข้อเตือน: ถ้า BLANK หลายแถวในข้อมูล DISTINCTCOUNT จะนับ BLANK ว่าเป็น 1 ค่า ถ้าต้องการไม่นับ BLANK ให้ใช้ DISTINCTCOUNTNOBLANK แทน
นับจาก CustomerID ในตาราง Sales เพื่อดูว่ามีลูกค้าไม่ซ้ำกี่คน
ดูความหลากหลายของสินค้าที่ขายออกไป
ถ้า Sales table มี 100 แถว แต่ customer ที่ต่างกันมี 15 คน DISTINCTCOUNT จะคืน 15 ไม่ใช่ 100
นับค่าเอกลักษณ์: "Electronics" (1), "Furniture" (1), BLANK (1) = รวม 3 ค่า (แม้ว่ามี BLANK 2 แถว แต่นับเป็น 1 ค่าเท่านั้น)
FILTER ตรวจเลือกเฉพาะแถว Electronics (3 แถว: C001, C002, C004) แล้ว DISTINCTCOUNT นับ customer ที่แตกต่าง = 3
DISTINCTCOUNT นับ BLANK เป็นค่า 1 ค่า แต่ DISTINCTCOUNTNOBLANK ไม่นับ BLANK เลย ใช้ DISTINCTCOUNTNOBLANK เมื่อต้องการไม่สนใจค่าว่าง
DISTINCTCOUNT นับ BLANK ว่าเป็นค่า 1 ค่า เพราะ ใน DAX ค่าว่างถือเป็นค่าเอกลักษณ์หนึ่ง ถ้าต้องการไม่นับ BLANK ให้ใช้ DISTINCTCOUNTNOBLANK แทน
COUNT นับจำนวนแถว (non-blank) แต่ DISTINCTCOUNT นับจำนวนค่าที่แตกต่าง เช่น Customer C001 มี 5 order COUNT = 5, DISTINCTCOUNT = 1
ใช่ DISTINCTCOUNT(table[column]) เทียบเท่ากับ COUNTROWS(DISTINCT(table[column])) แต่ DISTINCTCOUNT ง่ายและเร็วกว่า
ได้ แต่ระวังเรื่อง Totals ที่ double-count ได้ เช่น ถ้า Customer C001 ปรากฏในหลาย Product Category แล้วหาผลรวม total อาจไม่เท่ากับของจริง
ฟังก์ชันที่ผู้เขียนโยงไว้กับ DISTINCTCOUNT จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
APPROXIMATEDISTINCTCOUNT คืนจำนวนค่าไม่ซ้ำแบบประมาณเพื่อความเร็ว เหมาะกับข้อมูลขนาดใหญ่และงาน DirectQuery ในแหล่งข้อมูลที่รองรับ เมื่อความแม่นยำ 100% ไม่จำเป็น
COUNT นับจำนวนแถวที่คอลัมน์มีค่าไม่ว่าง (non-blank) รองรับตัวเลข วันที่ และข้อความ แต่ไม่นับ Boolean ทำงานภายใต้ filter context และเกิด context transition เมื่อใช้ใน row context เหมาะสำหรับนับรายการที่มีข้อมูลในคอลัมน์เฉพาะ แต่ควรใช้ COUNTROWS แทนเมื่อนับแถวทั้งหมด
COUNTA นับจำนวนเซลล์ที่มีค่าไม่ว่าง (non-blank) ในคอลัมน์ โดยรวมตัวเลข ข้อความ วันที่ และค่าตรรกะ ต่างจาก COUNT ที่นับเฉพาะตัวเลขเท่านั้น
COUNTROWS เป็นฟังก์ชันการรวม (Aggregation) ที่นับจำนวนแถวในตารางที่ระบุ ไม่ว่าจะเป็นตารางจริงในโมเดลหรือตารางเสมือน (Virtual Table) จากฟังก์ชันอื่นๆ เช่น FILTER, VALUES, DISTINCT นับเท่าไหร่? ผลลัพธ์ก็คือจำนวนแถวเต็ม ๆ
DISTINCTCOUNTNOBLANK นับจำนวนค่าที่ไม่ซ้ำในคอลัมน์ โดยไม่รวมค่า BLANK จึงเหมาะกับการนับรายการที่ต้องการตัดค่าว่างออกไป เช่น นับจำนวนลูกค้าที่ไม่ซ้ำโดยไม่ให้ BLANK ถูกนับ
SUM รวมค่าตัวเลขทั้งหมดจากคอลัมน์เดียวภายใต้ filter context ปัจจุบัน ข้ามค่า BLANK และข้อความ แต่รวมค่า 0 หากต้องรวมจาก expression ให้ใช้ SUMX แทน
DISTINCT คืนค่าตารางที่มีคอลัมน์เดียว ซึ่งประกอบด้วยค่าที่ไม่ซ้ำกันจากคอลัมน์ที่ระบุ โดยไม่รวม Blank Row ที่เกิดจาก Invalid Relationship ความแตกต่างหลักจาก VALUES คือ DISTINCT จะซ่อน Data Quality Issues ในขณะที่ VALUES จะเตือนให้เห็น
HASONEVALUE ตรวจสอบว่า Column ที่ผ่านการ Filter มีเพียงค่าเดียวเท่านั้น Return TRUE หากตรงตามเงื่อนไข FALSE หากไม่ใช่ ใช้หลักเพื่อสร้าง Measure ที่ "ฉลาด" ตามการเลือก Filter ของผู้ใช้
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่