คืนตารางย่อยจากตารางต้นทางโดยแบ่งแกน X เป็นช่วงเท่า ๆ กัน และคงแถวที่ให้ค่า Measure ต่ำสุด/สูงสุดในแต่ละช่วง (ต่อซีรีส์) เพื่อช่วยลดจำนวนจุดสำหรับการแสดงผล
=SAMPLEAXISWITHLOCALMINMAX(<Size>, <Table>, <Axis>, <Measure> [, <Measure>], <MinResolution> [, <DynamicSeries> [, <DynamicSeries>]] [, <DynamicSeriesSelectionCriteria>] [, <DynamicSeriesSelectionOrder>] [, <MaxResolution>] [, <MaxDynamicSeries>] [, <MaxIterations>])
=SAMPLEAXISWITHLOCALMINMAX(<Size>, <Table>, <Axis>, <Measure> [, <Measure>], <MinResolution> [, <DynamicSeries> [, <DynamicSeries>]] [, <DynamicSeriesSelectionCriteria>] [, <DynamicSeriesSelectionOrder>] [, <MaxResolution>] [, <MaxDynamicSeries>] [, <MaxIterations>])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| Size | number | Yes | จำนวนแถว “เป้าหมาย” ที่ต้องการให้ผลลัพธ์พยายามคืนมา (อาจได้ไม่ครบตามนี้ขึ้นกับข้อมูลและพารามิเตอร์ความละเอียด) | |
| Table | table | Yes | ตารางต้นทาง (table expression) ที่ต้องการสุ่มตัวอย่าง; ผลลัพธ์จะคงคอลัมน์เดิมตามตารางนี้ | |
| Axis | column | Yes | คอลัมน์ตัวเลขหรือวันที่ที่ใช้เป็นแกน X สำหรับแบ่งเป็นช่วง (bin) | |
| Measure | expression | Yes | นิพจน์/เมเชอร์ที่ใช้หา local min/max ภายในแต่ละช่วงของแกน X (สามารถใส่ได้มากกว่า 1 ตัว) | |
| MinResolution | number | Yes | ค่าความละเอียดขั้นต่ำของการแบ่งช่วง/การวนหา (ใช้ควบคุมว่าจะแบ่งช่วงถี่แค่ไหน) | |
| DynamicSeries | column | Optional | ไม่ระบุ | คอลัมน์ที่ใช้แยกซีรีส์ (เช่น ประเภทสินค้า/สาขา) เพื่อคง local min/max แยกตามซีรีส์; ระบุได้หลายคอลัมน์ |
| DynamicSeriesSelectionCriteria | expression | Optional | ไม่ระบุ | เกณฑ์คัดเลือกซีรีส์แบบไดนามิก (ใช้เมื่อจำนวนซีรีส์เยอะและต้องเลือกบางส่วน) |
| DynamicSeriesSelectionOrder | expression | Optional | ไม่ระบุ | นิพจน์สำหรับจัดลำดับซีรีส์ก่อนคัดเลือก |
| MaxResolution | number | Optional | ไม่ระบุ | ค่าความละเอียดสูงสุดที่อนุญาตให้เพิ่มได้ (ช่วยจำกัดการแบ่งช่วงให้ไม่ถี่เกินไป) |
| MaxDynamicSeries | number | Optional | ไม่ระบุ | จำนวนซีรีส์สูงสุดที่จะนำมาพิจารณา |
| MaxIterations | number | Optional | ไม่ระบุ | จำนวนรอบการทำซ้ำสูงสุดเพื่อให้เข้าใกล้จำนวนแถวเป้าหมาย |
เมื่อข้อมูลมีหลายแสนจุด การสุ่มตัวอย่างช่วยให้แสดงผลเร็วขึ้น โดยยังรักษายอด/จุดต่ำสุด-สูงสุดในแต่ละช่วง
กำหนด DynamicSeries เพื่อให้การคง min/max ทำแยกตามซีรีส์ ไม่ทำให้รูปทรงบางซีรีส์เพี้ยน
จุดตัวอย่าง (แนวคิด) = VAR Base = ADDCOLUMNS( VALUES('Date'[Date]), "ยอดขาย", [Sales Amount] ) RETURN SAMPLEAXISWITHLOCALMINMAX( 200, Base, 'Date'[Date], [Sales…=จุดตัวอย่าง (แนวคิด) =
VAR Base =
ADDCOLUMNS(
VALUES('Date'[Date]),
"ยอดขาย", [Sales Amount]
)
RETURN
SAMPLEAXISWITHLOCALMINMAX(
200,
Base,
'Date'[Date],
[Sales Amount],
16
)
ได้ตารางจุดตัวอย่างจำนวนจำกัดตามแกนวันที่ โดยคงจุดที่ทำให้ยอดขายต่ำสุด/สูงสุดในแต่ละช่วง
จุดตัวอย่างแยกซีรีส์ (แนวคิด) = VAR Base = SUMMARIZECOLUMNS( 'Date'[Date], 'Product'[Category], "ยอดขาย", [Sales Amount] ) RETURN SAMPLEAXISWITHLOCALMINMAX( 500…=จุดตัวอย่างแยกซีรีส์ (แนวคิด) =
VAR Base =
SUMMARIZECOLUMNS(
'Date'[Date],
'Product'[Category],
"ยอดขาย", [Sales Amount]
)
RETURN
SAMPLEAXISWITHLOCALMINMAX(
500,
Base,
'Date'[Date],
[Sales Amount],
16,
'Product'[Category]
)
ได้จุดตัวอย่างที่ยังคงจุดสูง/ต่ำในแต่ละช่วงแยกตาม Category
แนวคิด: ใช้ MaxDynamicSeries เมื่อมีซีรีส์เยอะมาก SAMPLEAXISWITHLOCALMINMAX( 500, <Table>, <Axis>, <Measure>, 16, <DynamicSeries>, , , ,…=แนวคิด: ใช้ MaxDynamicSeries เมื่อมีซีรีส์เยอะมาก
SAMPLEAXISWITHLOCALMINMAX(
500,
<Table>,
<Axis>,
<Measure>,
16,
<DynamicSeries>,
,
,
,
25
)
ช่วยจำกัดภาระการคำนวณ/การสุ่มตัวอย่างเมื่อจำนวนซีรีส์มากเกินไป
เหมาะกับงานลดจำนวนจุดเพื่อการแสดงผล (visual downsampling) โดยยังรักษาลักษณะกราฟผ่านจุดต่ำสุด/สูงสุดในแต่ละช่วง
ผลลัพธ์คืนตารางที่มีคอลัมน์เหมือนกับตารางอินพุต (Table) ดังนั้นควรเตรียมคอลัมน์แกน X และคอลัมน์/เมเชอร์ที่ต้องใช้ก่อน
SAMPLEAXISWITHLOCALMINMAX ใช้ “ลดจำนวนแถว/จุดข้อมูล” จากตารางต้นทางเพื่อการแสดงผล (เช่น กราฟเส้นที่มีจุดหนาแน่นมาก) โดยจะแบ่งแกน X หลักออกเป็นช่วง (bin) ขนาดเท่ากัน แล้วเลือกแถวที่ทำให้ค่า Measure ในช่วงนั้นเป็นค่าต่ำสุด/สูงสุด (local min/max) ต่อแต่ละซีรีส์ เพื่อให้รูปทรงกราฟยังใกล้เคียงของจริงแม้จำนวนจุดลดลง