ตัวอย่าง Power Query ใน Power Query Studio
จัดตามประเภทงาน แต่ละรายการระบุชื่อ query ในไฟล์ สิ่งที่ทำ ผลที่ได้จากข้อมูลตั้งต้น และจุดที่ต้องระวัง รายการนี้สร้างจาก manifest ชุดเดียวกับที่ใช้สร้าง workbook
ทำความสะอาดข้อมูล
-
Clean text + เลขไทย + วันที่ พ.ศ.
แก้ช่องว่างแฝง เลขไทย จำนวนเงิน และวันที่หลายรูปแบบ
ผลจากข้อมูลตั้งต้น: 366 แถวในชุดตั้งต้น ข้อผิดพลาดยังเก็บไว้ใน ParseErrors
จุดที่ต้องระวัง: วันที่ / ใช้วัน/เดือน/ปีเท่านั้น ไม่เดารูปแบบสหรัฐฯ
-
เก็บรายการล่าสุดอย่างแน่นอน
ลบซ้ำด้วย UpdatedAt และ InputRow เป็นตัวตัดสิน
ผลจากข้อมูลตั้งต้น: 360 OrderID หลังตัด 6 revision
จุดที่ต้องระวัง: เมื่อเวลาเท่ากัน แถวที่อยู่ท้ายแหล่งรวมชนะ กำหนด stable sequence ในงานจริง
-
แยกแถวผิดพลาดเพื่อแก้กลับต้นทาง
เห็นค่าดิบและสาเหตุแทนการลบทิ้งเงียบ ๆ
ผลจากข้อมูลตั้งต้น: 6 แถวต้องแก้ไข
จุดที่ต้องระวัง: แก้ใน inSales_* แล้ว Refresh ไม่แก้บนผลลัพธ์
รวมและจับคู่ข้อมูล
-
Merge master + ยอดสุทธิ + ต้นทุน
สร้างตารางขายที่นำไปทำรายงานได้
ผลจากข้อมูลตั้งต้น: 354 แถว ยอดสุทธิรวมอยู่บน Dashboard
จุดที่ต้องระวัง: Unknown product ไม่แทนต้นทุนเป็น 0 เพื่อไม่ทำให้กำไรดูดีเกินจริง
-
หาลูกค้าที่ไม่มีใน Master
Left Anti Join สำหรับรายการตกหล่น
ผลจากข้อมูลตั้งต้น: พบ C999 หนึ่งรายการ
-
กระทบยอดแบบ Full Outer
แยกรายการเฉพาะฝั่งและยอดต่าง
ผลจากข้อมูลตั้งต้น: 4 Ref: Matched / Amount differs / Ledger only / Bank only
-
Fuzzy match พร้อมคะแนนและคิวตรวจ
หาชื่อใกล้เคียงโดยยังให้คนตรวจคำตอบ
ผลจากข้อมูลตั้งต้น: Candidate และคะแนนมาจาก fuzzy engine ของ Excel ทุกครั้งที่ Refresh
จุดที่ต้องระวัง: Similarity ไม่ใช่ความน่าจะเป็น ห้ามอนุมัติหรือแทน master อัตโนมัติ
-
As-of join ราคาล่าสุด ณ วันซื้อ
ใช้ราคาเริ่มมีผลล่าสุดที่ไม่เกินวันที่รายการ
ผลจากข้อมูลตั้งต้น: 20 รายการแรก สำหรับดูหลักการ
จุดที่ต้องระวัง: การค้นรายแถวมีต้นทุนสูงกับข้อมูลใหญ่ ใช้ temporal join ในฐานข้อมูลเมื่อเหมาะสม
-
เปรียบเทียบ New / Changed / Deleted
ตรวจความต่างจาก snapshot ที่เก็บแยกไว้
ผลจากข้อมูลตั้งต้น: A unchanged, B changed, C deleted, D new
จุดที่ต้องระวัง: Refresh ไม่ได้เก็บ snapshot เก่าให้ ต้องจัดเก็บประวัตินอกผลลัพธ์ Query
-
จับ master ตามช่วงเวลาที่มีผล
EffectiveFrom รวมวันเริ่ม / EffectiveTo ไม่รวมวันจบ
จุดที่ต้องระวัง: นี่คือการใช้ SCD2 ที่มีอยู่ ไม่ใช่ระบบบันทึกประวัติลงฐานข้อมูล
สรุปและจัดอันดับ
-
Group By รายเดือนและช่องทาง
รวมยอดพร้อมจำนวนธุรกรรมและต้นทุนที่ยังขาด
ผลจากข้อมูลตั้งต้น: 27 กลุ่ม (9 เดือน × 3 ช่องทาง)
จุดที่ต้องระวัง: KnownCost เป็นเฉพาะต้นทุนที่ทราบ กำไรเป็น null หากกลุ่มนั้นมีต้นทุนขาด
-
Top N แยกตามภูมิภาค
จัดอันดับภายในกลุ่มจากพารามิเตอร์
ผลจากข้อมูลตั้งต้น: TopN สินค้าต่อภูมิภาค เปลี่ยนได้ใน Settings
-
ยอดสะสมแยกช่องทาง
เรียงก่อนสะสมและ restart ภายในแต่ละกลุ่ม
จุดที่ต้องระวัง: List.Accumulate ต่อ list เหมาะชุดเล็กถึงกลาง ใช้ฐานข้อมูลเมื่อข้อมูลใหญ่
-
ค่าเฉลี่ยเคลื่อนที่ 3 เดือน
เฉลี่ย 3 เดือนปฏิทินจริงและเติมเดือนว่างเป็น 0
จุดที่ต้องระวัง: 2 เดือนแรกใช้เฉลี่ยเท่าที่มีในช่วงที่กำหนด และสมมติเดือนไม่มียอดเป็น 0
-
Dense rank ภายในกลุ่ม
ยอดเท่ากันได้อันดับเดียวกันโดยไม่ข้ามอันดับ
ผลจากข้อมูลตั้งต้น: East: 1,1,2 และ West: 1
-
RFM ลูกค้าและกลุ่มที่ควรดูแล
สรุปวันซื้อครั้งล่าสุด ความถี่ และยอดซื้อ
จุดที่ต้องระวัง: เกณฑ์ 60 วัน/15 ครั้งเป็นสาธิต ไม่ใช่โมเดลที่เหมาะกับทุกธุรกิจ
-
Cohort retention ตามเดือนซื้อครั้งแรก
ดูจำนวนลูกค้ากลับมาซื้อเทียบ cohort เริ่มต้น
จุดที่ต้องระวัง: cohort เริ่มจากประวัติที่มีในไฟล์ ไม่อ้างว่าเป็นการซื้อครั้งแรกตลอดชีวิต; ช่องที่ไม่มีแถวยังไม่เติม 0
-
ABC / Pareto สินค้า
ดูส่วนแบ่งสะสมและความสำคัญของสินค้า
จุดที่ต้องระวัง: ใช้ส่วนแบ่งก่อนแถวปัจจุบันเพื่อให้สินค้าที่คร่อม 80% ยังอยู่ A
เปลี่ยนรูปตาราง
-
Unpivot เดือนที่เพิ่มได้อัตโนมัติ
แปลง Jan/Feb/... เป็นแถวพร้อมวันที่
ผลจากข้อมูลตั้งต้น: 9 แถวจาก 3 แผนก × 3 เดือน
-
Pivot ช่องทางด้วยคอลัมน์แบบ dynamic
ทำตารางเปรียบเทียบโดยไม่ระบุชื่อช่องทางทีละตัว
ผลจากข้อมูลตั้งต้น: 9 เดือนพร้อมคอลัมน์ช่องทาง
-
กู้รายงานที่เว้นหัวกลุ่มว่าง
Blank to null แล้ว Fill Down อย่างถูกลำดับ
ผลจากข้อมูลตั้งต้น: 4 รายการ ไม่รวม TOTAL
-
แยกหลายค่าในช่องเดียวเป็นหลายแถว
แตก tags แบบคั่นด้วย comma แล้วตัดช่องว่าง
ผลจากข้อมูลตั้งต้น: 5 tags จาก 3 tickets
-
รับไฟล์ที่ชื่อคอลัมน์ต่างกัน
mapping ชื่อ + เลือก schema กลาง + เก็บคอลัมน์ที่ขาดเป็น null
ผลจากข้อมูลตั้งต้น: A=100 B=200 Region=null
จุดที่ต้องระวัง: schema กลางเลือกละ Extra โดยตั้งใจ ห้ามละข้อมูลสำคัญในงานจริง
-
คลี่หัวตารางสองชั้น
เติมหัวกลุ่มแนวนอน สร้างชื่อคอลัมน์แล้ว Unpivot
ผลจากข้อมูลตั้งต้น: 8 แถว จาก 2 ภูมิภาค × 2 เดือน × 2 metrics
วันที่และปฏิทิน
-
ปฏิทินปีบัญชีและวันทำงาน
สร้าง Date dimension โดยไม่ต้องเตรียมไฟล์
ผลจากข้อมูลตั้งต้น: 273 วัน ในช่วง 2026-01-01 ถึงก่อน 2026-10-01
จุดที่ต้องระวัง: FiscalYear ใช้ปีสิ้นสุดงวด วันหยุดเป็นข้อมูลสมมติ
-
นับ SLA โดยข้ามเสาร์อาทิตย์และวันหยุด
ระบุขอบเขตวันเริ่ม/วันสิ้นสุดชัดเจน
ผลจากข้อมูลตั้งต้น: รวมวันเริ่มและวันสิ้นสุด เฉพาะวันทำงาน
-
กรองช่วงวันที่ด้วยพารามิเตอร์
StartDate รวม / EndDate ไม่รวม เพื่อไม่ซ้ำขอบช่วง
จุดที่ต้องระวัง: หากเปลี่ยนช่วง ข้อมูลหลัก Dashboard ยังเป็นทั้งหมด ตัวอย่าง q35 เป็นชุดกรองแยก
-
เติมวันที่ไม่มีรายการด้วย Calendar Join
แสดงวันขายเป็นศูนย์โดยยังมีแถววันที่ครบ
จุดที่ต้องระวัง: 0 หมายถึงไม่มี transaction ในไฟล์ ไม่ได้พิสูจน์ว่าแหล่งข้อมูลส่งมาครบ
เทคนิคขั้นสูง
-
คลี่สายบังคับบัญชาแบบ recursion
สร้างเส้นทางและระดับพร้อมตรวจวงจร
ผลจากข้อมูลตั้งต้น: 5 พนักงานและสายบังคับบัญชา
จุดที่ต้องระวัง: recursive function จะหยุดด้วย error หากพบ cycle หรือ parent หาย
-
ระเบิด BOM หลายระดับ
คูณจำนวนชิ้นส่วนทุกระดับและรวม leaf ซ้ำ
ผลจากข้อมูลตั้งต้น: KIT 10 ชุด ต้องใช้ชิ้นส่วนปลายทาง SCREW 140 และ PANEL 20
จุดที่ต้องระวัง: LEG เป็นชิ้นส่วนระหว่างทาง จึงไม่อยู่ในผล leaf; จำนวน 10 เป็นขนาดงานสาธิต เปลี่ยน argument ที่ fxBOM ได้
-
เลือกคอลัมน์ด้วย pattern แล้วแปลงพร้อมกัน
เปลี่ยนทุกคอลัมน์ที่ขึ้นต้น Amount_ โดยอัตโนมัติ
ผลจากข้อมูลตั้งต้น: 1250 / 40 และ 999 / -10
-
Incremental window ที่กำหนดเอง
filter ช่วงครึ่งเปิดสำหรับแบ่ง batch อ่านข้อมูล
จุดที่ต้องระวัง: Excel Query นี้ไม่สะสมประวัติและไม่ใช่ Power BI incremental refresh policy; local source ยังอ่านครบก่อน filter
JSON, XML, HTML และ API
-
คลี่ JSON ซ้อน record และ list
แปลง orders/items เป็นตารางรายละเอียด
ผลจากข้อมูลตั้งต้น: 3 order lines ยอด 850
-
API pagination แบบทดลอง offline
List.Generate เรียกหน้าถัดไปจนเจอชุดว่าง
ผลจากข้อมูลตั้งต้น: 5 records จาก 3 หน้าที่มีข้อมูล แล้วหยุดที่ page4 ว่าง
จุดที่ต้องระวัง: ตัวอย่างใช้ page number + empty sentinel; API แบบ cursor ต้องเปลี่ยน state
-
แปลง XML เป็นตาราง
อ่านข้อความ XML ที่มีโครงสร้างรายการซ้ำ
ผลจากข้อมูลตั้งต้น: 3 item ใน XML
จุดที่ต้องระวัง: XML จริงอาจมี namespace/attribute ต้องดูโครงสร้างก่อนขยาย
-
อ่านตาราง HTML ด้วย CSS selector
เลือกเฉพาะตารางเป้าหมายจาก HTML
ผลจากข้อมูลตั้งต้น: 3 สินค้า ไม่ต้องเชื่อมต่อเว็บ
ตรวจคุณภาพข้อมูล
-
Data profiling ทุกคอลัมน์
ตรวจ null / distinct / min / max ก่อนใช้งานข้อมูล
จุดที่ต้องระวัง: ผล profile ใช้กับชุดที่ query ประมวลผลครบ อาจหนักสำหรับล้านแถว
-
ตรวจ outlier ด้วย IQR
หา extreme values โดยใช้ quartile
ผลจากข้อมูลตั้งต้น: ค่า 100 เป็น outlier
จุดที่ต้องระวัง: ใช้เป็นสัญญาณตรวจ ไม่ลบข้อมูลโดยอัตโนมัติ
-
Assertions ตรวจ invariants และ edge cases
เช็กคุณภาพ logic แบบทดสอบที่ตรวจซ้ำได้
ผลจากข้อมูลตั้งต้น: 10 assertions คำนวณโดย Excel ทุกครั้งที่ Refresh
จุดที่ต้องระวัง: ผ่าน assertions ไม่เท่ากับทุก connector ผ่านหรือ master ครบ
-
แสดงเวลาและปริมาณข้อมูลรอบล่าสุด
อ่าน row counts และ runtime timestamp หลัง refresh
จุดที่ต้องระวัง: ตารางนี้เขียนทับทุกครั้ง ไม่ใช่ log สะสม และไม่รับรองว่า query อื่นทุกตัว refresh แล้ว
เชื่อมต่อแหล่งข้อมูลจริง
-
รวม CSV ทั้งโฟลเดอร์พร้อมสถานะรายไฟล์
กรองนามสกุล/ไฟล์ซ่อนและเก็บสาเหตุไฟล์เสีย
จุดที่ต้องระวัง: c01 เป็นรายงานตรวจไฟล์; ใช้ c01b เพื่อรวมข้อมูลจริง ไฟล์ schema ผิดจะหยุด c01b
-
รวม Excel Table จากหลาย workbook
เลือกตาราง Transactions จากทุก xlsx
จุดที่ต้องระวัง: ทุกไฟล์ต้องมี Table ชื่อ Transactions ไม่ใช่แค่ชื่อชีต; ไม่ชี้โฟลเดอร์ที่มี workbook นี้
-
REST แบบแบ่งหน้า + retry มีขอบเขต
ใช้ RelativePath/Query และไม่ฝัง secret ในโค้ด
จุดที่ต้องระวัง: ต้อง API รูปแบบ {data:[...]} และจบด้วยหน้าว่าง ปรับ auth/Retry-After/cursor ตามสัญญาบริการ; 401/403 ให้จัด credentials
-
SQL parameter + native query folding
ส่ง date parameters โดยไม่ต่อ string SQL
จุดที่ต้องระวัง: ตาราง dbo.Sales ต้องมีจริง ตรวจ View Native Query/แผนฝั่ง server เพราะ EnableFolding ไม่รับรองทุก step
-
PDF Table extraction
ตรวจตารางที่เครื่องอ่านเจอ ก่อนเลือกข้อมูล
จุดที่ต้องระวัง: เป็น connector blueprint; PDF สแกนต้อง OCR ก่อน และ schema อาจเปลี่ยน ต้องเลือก Data ให้ตรงตาราง
-
OData entity
เชื่อม entity และปล่อย connector ดูแล paging ตาม OData
จุดที่ต้องระวัง: ตั้ง URL ถึง entity ที่ต้องการ และกำหนด credentials ตามระบบจริง
-
HTML table จากเว็บจริง
แยก DOM selector จากการดาวน์โหลด
จุดที่ต้องระวัง: selector เป็นตัวอย่าง ต้องตรงเว็บจริง; หน้า render ด้วย JavaScript อาจไม่มีข้อมูลใน HTML ที่ดาวน์โหลด
ไฟล์และคู่มือเสร็จแล้ว ส่วนเงื่อนไขการแจกยังอยู่ระหว่างกำหนด ปุ่มดาวน์โหลดจะอยู่ในหน้านี้เมื่อเปิดให้ใช้
ดาวน์โหลดไฟล์ Excel ของรายงาน 01 และ 02
ไม่ต้องลงทะเบียนและไม่ต้องกรอกอีเมล มีทั้งฉบับภาษาไทยและอังกฤษ พร้อมค่า SHA-256 สำหรับตรวจสอบไฟล์
ไฟล์ทั้งหมดที่เปิดให้ดาวน์โหลด →

