Thep Excel

Function Explainer

Table manipulation · DAX 34 ฟังก์ชัน

34 ฟังก์ชัน

เรียงตาม

ฟังก์ชัน ใช้ทำอะไร มีตั้งแต่ นิยม ยาก ประโยชน์
VALUES Table manipulation VALUES(<TableNameOrColumnName>)

VALUES ดึงค่าที่ไม่ซ้ำจากคอลัมน์ หรือดึงแถวทั้งหมดจากตาราง โดยรวมแถว BLANK ที่เกิดจากข้อผิดพลาดของความสัมพันธ์ (Referential Integrity Violations) ส่วน DISTINCT จะไม่รวมแถว BLANK นี้

นิยม 8 ยาก 4 ประโยชน์ 8

8 4 8
SUMMARIZE Table manipulation SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]...)

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 ดีกว่าอย่างมาก

นิยม 8 ยาก 6 ประโยชน์ 8

8 6 8
TOPN Table manipulation TOPN(<N_Value>, <Table> [, <OrderBy_Expression> [, [<Order>] [, <OrderBy_Expression> [, [<Order>]]]...]])

คืนตาราง Top N แถวจากตารางที่กำหนด โดยเรียงตามนิพจน์หนึ่งตัวหรือมากกว่า สามารถระบุทิศทางการเรียงลำดับแยกต่างหากสำหรับแต่ละเกณฑ์

นิยม 7 ยาก 4 ประโยชน์ 7

7 4 7
SUMMARIZECOLUMNS Table manipulation SUMMARIZECOLUMNS( <groupBy_columnName> [, <filterTable>] [, <name>, <expression>] )

SUMMARIZECOLUMNS เป็นฟังก์ชันหลักสำหรับสร้างตารางสรุปผล โดยจัดกลุ่มตามคอลัมน์ที่กำหนด พร้อมเพิ่มคอลัมน์คำนวณจากเมเชอร์ และสามารถใส่เงื่อนไขกรองได้ทันที

นิยม 7 ยาก 6 ประโยชน์ 7

7 6 7
DISTINCT Table manipulation DISTINCT( <column> )

DISTINCT คืนค่าตารางที่มีคอลัมน์เดียว ซึ่งประกอบด้วยค่าที่ไม่ซ้ำกันจากคอลัมน์ที่ระบุ โดยไม่รวม Blank Row ที่เกิดจาก Invalid Relationship ความแตกต่างหลักจาก VALUES คือ DISTINCT จะซ่อน Data Quality Issues ในขณะที่ VALUES จะเตือนให้เห็น

นิยม 7 ยาก 3 ประโยชน์ 7

7 3 7
ADDCOLUMNS Table manipulation ADDCOLUMNS(<table>, <name>, <expression>[, <name>, <expression>]...)

ADDCOLUMNS เป็นฟังก์ชัน table transformation ที่ใช้สำหรับเพิ่มคอลัมน์ใหม่ (Calculated Columns) เข้าไปในตารางที่มีอยู่เดิม โดยคำนวณค่าในแต่ละแถวผ่าน Row Context และส่งคืนตารางเดิมพร้อมคอลัมน์ใหม่ต่อท้าย

นิยม 7 ยาก 5 ประโยชน์ 7

7 5 7
TREATAS Table manipulation TREATAS(table_expression, column, [column])

TREATAS เป็นเสมือนการสร้าง "virtual relationship" โดยไม่ต้องแก้โมเดล ช่วยให้ส่งเงื่อนไขข้ามตารางที่ไม่เชื่อมกัน หรือเมื่อต้องการส่งหลายคีย์พร้อมกัน

นิยม 6 ยาก 6 ประโยชน์ 7

6 6 7
UNION Table manipulation UNION(<table1>, <table2>[, <table3>, ...])

UNION รวมหลายตารางให้เป็นตารางเดียวด้วยการต่อแถว โดยเก็บแถวซ้ำไว้ทั้งหมด เหมาะกับการรวมชุดข้อมูลที่มีโครงสร้างคอลัมน์สอดคล้องกัน

นิยม 6 ยาก 4 ประโยชน์ 6

6 4 6
SELECTCOLUMNS Table manipulation SELECTCOLUMNS(<Table>, [<Name>], <Expression>, [<Name>], <Expression>, ...)

สร้างตารางใหม่โดยเลือกเฉพาะคอลัมน์ที่ต้องการจากตารางต้นฉบับและเพิ่มคอลัมน์ที่คำนวณได้ ต่างจาก ADDCOLUMNS ตรงที่ SELECTCOLUMNS เริ่มจากตารางว่างแล้วเพิ่มเฉพาะคอลัมน์ที่ระบุ ทำให้สามารถปรับโครงสร้างตารางและเลือกข้อมูลที่จำเป็นได้อย่างยืดหยุ่น

นิยม 6 ยาก 5 ประโยชน์ 6

6 5 6
GROUPBY Table manipulation GROUPBY(<Table>, [<GroupBy_ColumnName>], [<Name>], [<Expression>])

GROUPBY สร้างตารางสรุปโดยจัดกลุ่มตามคอลัมน์ที่กำหนด และเพิ่มคอลัมน์คำนวณแบบกลุ่มต่อกลุ่มได้ โดยใช้ CURRENTGROUP() เข้าถึงแถวภายในกลุ่ม เหมาะกับการคำนวณซ้อนหรือคำนวณจากคอลัมน์ชั่วคราว (local columns)

นิยม 6 ยาก 6 ประโยชน์ 6

6 6 6
GENERATESERIES Table manipulation GENERATESERIES(<StartValue>, <EndValue>[, <IncrementValue>])

GENERATESERIES สร้างตารางคอลัมน์เดียวที่เป็นลำดับตัวเลขจาก StartValue ถึง EndValue ด้วย increment ที่กำหนดได้ เหมาะกับตารางช่วย parameter table หรือสร้างชุดตัวเลขสำหรับ what-if analysis

นิยม 6 ยาก 4 ประโยชน์ 6

6 4 6
GENERATE Table manipulation GENERATE(<Table1>, <Table2>)

GENERATE วนทีละแถวใน Table1 แล้วประเมิน Table2 ในบริบทของแถวนั้น (row context) จากนั้นรวมผลทั้งหมดเป็นตารางเดียว ถ้า Table2 ว่างเปล่าในรอบไหน แถวนั้นจาก Table1 จะถูกตัดออก (ต่างจาก GENERATEALL)

นิยม 5 ยาก 6 ประโยชน์ 5

5 6 5
ROLLUP Table manipulation ROLLUP(<GroupColumn>[, <GroupColumn>]...)

ROLLUP บอก SUMMARIZE ให้สร้างแถว subtotal เพิ่มเติมตามคอลัมน์ที่กำหนด ทำให้ได้ทั้งรายละเอียดและรวมย่อยในผลลัพธ์เดียว

นิยม 5 ยาก 5 ประโยชน์ 5

5 5 5
FILTERS Table manipulation FILTERS(<column>)

FILTERS คืนค่าเป็นตาราง (table) ของค่าที่ถูกกรองโดยตรง (direct filters) บนคอลัมน์ที่ระบุ เช่น ค่าที่ผู้ใช้เลือกจากตัวแบ่งส่วนข้อมูล ต่างจาก ALL/ALLEXCEPT ที่เคลียร์ตัวกรอง FILTERS ช่วยตรวจสอบและจัดการบริบทตัวกรองอย่างชาญฉลาด

นิยม 5 ยาก 5 ประโยชน์ 5

5 5 5
TOPNSKIP Table manipulation TOPNSKIP(<Rows>, <Skip>, <Table> [, <OrderExpr> [, [<Order>] [, <OrderExpr> [, [<Order>]]]]])

ดึงแถวจากตารางโดยข้ามจำนวนแถวที่กำหนดก่อน แล้วคืนแถวถัดไปตามการเรียงลำดับที่ระบุ มีประสิทธิภาพสูงสำหรับงาน pagination

นิยม 5 ยาก 5 ประโยชน์ 5

5 5 5
NONVISUAL Table manipulation NONVISUAL(<Expression>)

NONVISUAL ใช้ทำเครื่องหมายว่า filter expression นี้เป็น non-visual ซึ่งหมายความว่ามันจะส่งผลต่อการคำนวณ measure แต่จะไม่ไปทำให้แถวที่แสดงในตารางสรุปเปลี่ยนไป มักใช้ร่วมกับ SUMMARIZECOLUMNS เพื่อควบคุมพฤติกรรมของตัวกรองอย่างละเอียด

นิยม 5 ยาก 5 ประโยชน์ 5

5 5 5
EXCEPT Table manipulation EXCEPT(<LeftTable>, <RightTable>)

EXCEPT คืนตารางของแถวที่อยู่ใน LeftTable แต่ไม่อยู่ใน RightTable เหมาะกับการหาสิ่งที่ขาดหาย เช่น สินค้าที่ไม่เคยขาย ลูกค้าที่ไม่มีธุรกรรม

นิยม 5 ยาก 4 ประโยชน์ 5

5 4 5
TOPNPERLEVEL Table manipulation TOPNPERLEVEL(<Rows>, <Table>, <LevelsDefinition>, <NodesExpanded>, <LevelsBoundaries>, <RestartIndicatorColumnName>)

ฟังก์ชันเชิงเครื่องมือสำหรับเลือกจำนวนแถวสูงสุด (Top N) ต่อ ระดับในโครงสร้างลำดับชั้น (hierarchy) ที่มีการขยาย/ยุบโหนด

นิยม 5 ยาก 5 ประโยชน์ 5

5 5 5
NATURALJOINUSAGE Table manipulation NATURALJOINUSAGE(<Table>)

NATURALJOINUSAGE ทำให้ table expression ถูกเพิ่มเข้าไปในตัวกรอง (filter context) แบบ natural join โดยจับคู่ตามคอลัมน์ชื่อเดียวกัน เป็นฟังก์ชันที่ออกแบบสำหรับการใช้งานขั้นสูงในโมเดลแบบประกอบ (composite models) และ SUMMARIZECOLUMNS

นิยม 5 ยาก 5 ประโยชน์ 5

5 5 5
DATATABLE Table manipulation DATATABLE(<Name>, <DataType>, [<Name>, <DataType>, ...], <Data>)

DATATABLE สร้างตารางแบบ hardcode ด้วยข้อมูลคงที่ โดยระบุชื่อคอลัมน์ ชนิดข้อมูล และค่าของแต่ละแถว เหมาะสำหรับตารางอ้างอิงเล็กๆ เช่น lookup table หรือข้อมูลตัวอย่าง

นิยม 5 ยาก 4 ประโยชน์ 5

5 4 5
INTERSECT Table manipulation INTERSECT(<LeftTable>, <RightTable>)

INTERSECT คืนตารางของแถวที่อยู่ในทั้ง LeftTable และ RightTable เหมาะกับการหาสิ่งที่ซ้ำกัน/ร่วมกันระหว่างสองชุดข้อมูล โดยรักษาเอาแถวที่ซ้ำกันไว้ด้วย

นิยม 5 ยาก 4 ประโยชน์ 5

5 4 5
CROSSJOIN Table manipulation CROSSJOIN(<table1>, <table2>[, <table3>]...)

CROSSJOIN สร้างตารางใหม่โดยการรวมแถวทั้งหมดจากตารางที่ระบุ โดยสร้างทุก Combination ที่เป็นไปได้ ผลลัพธ์คือตารางที่มีจำนวนแถวเท่ากับผลคูณของจำนวนแถวของแต่ละตาราง

นิยม 5 ยาก 5 ประโยชน์ 5

5 5 5
GENERATEALL Table manipulation GENERATEALL(<table1>, <table2>)

GENERATEALL วนแถวของตาราง 1 แล้วสร้าง Cartesian product กับผลลัพธ์ของตาราง 2 โดยคงแถวที่ไม่มีข้อมูลย่อย ต่างจาก GENERATE ตรงที่ไม่ตัดแถวหลักออก

นิยม 4 ยาก 6 ประโยชน์ 4

4 6 4
NATURALLEFTOUTERJOIN Table manipulation NATURALLEFTOUTERJOIN(<LeftTable>, <RightTable>)

NATURALLEFTOUTERJOIN ทำ left outer join ระหว่าง LeftTable และ RightTable โดยใช้คอลัมน์ชื่อเดียวกันเป็นคีย์ เก็บทุกแถวของตารางซ้ายไว้ทั้งหมด และเติมคอลัมน์จากตารางขวาเมื่อจับคู่ได้ (ไม่จับคู่จะเป็น BLANK)

นิยม 4 ยาก 5 ประโยชน์ 4

4 5 4
NATURALINNERJOIN Table manipulation NATURALINNERJOIN(<LeftTable>, <RightTable>)

NATURALINNERJOIN ทำ inner join ระหว่าง LeftTable และ RightTable โดยใช้คอลัมน์ชื่อเดียวกันเป็นคีย์การจับคู่ คืนผลลัพธ์เฉพาะแถวที่จับคู่ได้ทั้งสองตาราง และมักใช้ร่วมกับ SELECTCOLUMNS เพื่อจัดชื่อคอลัมน์ให้ตรงกัน

นิยม 4 ยาก 5 ประโยชน์ 4

4 5 4
CURRENTGROUP Table manipulation CURRENTGROUP()

CURRENTGROUP คืนตารางย่อยของกลุ่มปัจจุบันและใช้ได้เฉพาะภายใน GROUPBY ช่วยให้คำนวณค่าที่อิงแถวภายในกลุ่มได้ เช่น SUMX/COUNTROWS/ MAXX ของกลุ่มนั้น

นิยม 4 ยาก 5 ประโยชน์ 4

4 5 4
ROLLUPGROUP Table manipulation ROLLUPGROUP(<GroupColumn>[, <GroupColumn>])

ROLLUPGROUP ระบุชุดคอลัมน์ที่จะถูกพิจารณาเป็น “กลุ่มเดียว” สำหรับการสร้าง subtotal/roll-up ช่วยลด subtotal บางระดับ และมักใช้ร่วมกับ ROLLUP ใน SUMMARIZE

นิยม 3 ยาก 5 ประโยชน์ 3

3 5 3
ROLLUPADDISSUBTOTAL Table manipulation ROLLUPADDISSUBTOTAL([<GrandtotalFilter>], <GroupColumn>, <Name>[, [<GroupLevelFilter>], <GroupColumn>, <Name>])

ROLLUPADDISSUBTOTAL ใช้ใน SUMMARIZECOLUMNS เพื่อเพิ่มแถว roll-up/subtotal และเพิ่มคอลัมน์ IsSubtotal สำหรับแต่ละระดับที่กำหนด ทำให้แยกแถว subtotal ออกจากรายละเอียดได้ง่าย

นิยม 3 ยาก 5 ประโยชน์ 3

3 5 3
DETAILROWS Table manipulation DETAILROWS(<Measure>)

DETAILROWS คืนตารางแถวรายละเอียดของ measure ภายใต้บริบทปัจจุบัน เหมาะกับการดูรายละเอียด/ตรวจสอบการคำนวณของ measure

นิยม 3 ยาก 4 ประโยชน์ 3

3 4 3
ADDMISSINGITEMS Table manipulation ADDMISSINGITEMS(<Table>)

ADDMISSINGITEMS เติมสมาชิกที่หายไปในผลลัพธ์สรุปแบบกลุ่ม เพื่อให้แสดงครบทุกสมาชิกของคอลัมน์ที่ระบุ เหมาะกับรายงานที่ต้องการเห็นรายการที่ไม่มีข้อมูลด้วย

นิยม 3 ยาก 5 ประโยชน์ 3

3 5 3
IGNORE Table manipulation IGNORE(<Expression>)

IGNORE ใช้ภายใน SUMMARIZECOLUMNS เพื่อบอกว่า expression/measure นี้ต้องถูก “ละเว้น” ตอนตัดสินว่าแถวไหนเป็น non-blank ทำให้แถวในผลลัพธ์ไม่ถูกตัดทิ้งเพียงเพราะ measure ที่เลือกละเว้นเป็น BLANK

นิยม 3 ยาก 5 ประโยชน์ 3

3 5 3
ROLLUPISSUBTOTAL Table manipulation ROLLUPISSUBTOTAL([<GrandtotalFilter>], <GroupColumn>, <IsSubtotal_Column>[, [<GroupLevelFilter>], <GroupColumn>, <IsSubtotal_Column>])

ROLLUPISSUBTOTAL ใช้ใน ADDMISSINGITEMS เพื่อจับคู่กลุ่ม roll-up กับคอลัมน์ IsSubtotal ที่สร้างจาก ROLLUPADDISSUBTOTAL ทำให้การเติมรายการที่ขาดหายทำงานได้ถูกต้องเมื่อมี roll-up/subtotal rows

นิยม 3 ยาก 5 ประโยชน์ 3

3 5 3
SUBSTITUTEWITHINDEX Table manipulation SUBSTITUTEWITHINDEX(<Table>, <Name>, <SemiJoinIndexTable>, <Expression> [, [<Order>] [, <Expression> [, [<Order>]]]])

คืนตารางที่เป็นผลแบบ semi-join ระหว่าง 2 ตาราง พร้อมแทนคอลัมน์ร่วมด้วยดัชนี 0-based ซึ่งคำนวณจากลำดับแถวของตารางอ้างอิงหลังจัดเรียง

นิยม 2 ยาก 5 ประโยชน์ 2

2 5 2
SAMPLEAXISWITHLOCALMINMAX Table manipulation SAMPLEAXISWITHLOCALMINMAX(<Size>, <Table>, <Axis>, <Measure> [, <Measure>], <MinResolution> [, <DynamicSeries> [, <DynamicSeries>]] [, <DynamicSeriesSelectionCriteria>] [, <DynamicSeriesSelectionOrder>] [, <MaxResolution>] [, <MaxDynamicSeries>] [, <MaxIterations>])

คืนตารางย่อยจากตารางต้นทางโดยแบ่งแกน X เป็นช่วงเท่า ๆ กัน และคงแถวที่ให้ค่า Measure ต่ำสุด/สูงสุดในแต่ละช่วง (ต่อซีรีส์) เพื่อช่วยลดจำนวนจุดสำหรับการแสดงผล

นิยม 2 ยาก 6 ประโยชน์ 2

2 6 2