แม่แบบ Power Query

ตัวอย่าง Power Query ใน Power Query Studio

จัดตามประเภทงาน แต่ละรายการระบุชื่อ query ในไฟล์ สิ่งที่ทำ ผลที่ได้จากข้อมูลตั้งต้น และจุดที่ต้องระวัง รายการนี้สร้างจาก manifest ชุดเดียวกับที่ใช้สร้าง workbook

ทำความสะอาดข้อมูล

  • Clean text + เลขไทย + วันที่ พ.ศ.

    q01_Clean · พื้นฐาน

    แก้ช่องว่างแฝง เลขไทย จำนวนเงิน และวันที่หลายรูปแบบ

    ผลจากข้อมูลตั้งต้น: 366 แถวในชุดตั้งต้น ข้อผิดพลาดยังเก็บไว้ใน ParseErrors

    จุดที่ต้องระวัง: วันที่ / ใช้วัน/เดือน/ปีเท่านั้น ไม่เดารูปแบบสหรัฐฯ

  • เก็บรายการล่าสุดอย่างแน่นอน

    q02_Deduplicate · กลาง

    ลบซ้ำด้วย UpdatedAt และ InputRow เป็นตัวตัดสิน

    ผลจากข้อมูลตั้งต้น: 360 OrderID หลังตัด 6 revision

    จุดที่ต้องระวัง: เมื่อเวลาเท่ากัน แถวที่อยู่ท้ายแหล่งรวมชนะ กำหนด stable sequence ในงานจริง

  • แยกแถวผิดพลาดเพื่อแก้กลับต้นทาง

    q03_Exceptions · พื้นฐาน

    เห็นค่าดิบและสาเหตุแทนการลบทิ้งเงียบ ๆ

    ผลจากข้อมูลตั้งต้น: 6 แถวต้องแก้ไข

    จุดที่ต้องระวัง: แก้ใน inSales_* แล้ว Refresh ไม่แก้บนผลลัพธ์

รวมและจับคู่ข้อมูล

  • Merge master + ยอดสุทธิ + ต้นทุน

    q04_SalesModel · กลาง

    สร้างตารางขายที่นำไปทำรายงานได้

    ผลจากข้อมูลตั้งต้น: 354 แถว ยอดสุทธิรวมอยู่บน Dashboard

    จุดที่ต้องระวัง: Unknown product ไม่แทนต้นทุนเป็น 0 เพื่อไม่ทำให้กำไรดูดีเกินจริง

  • หาลูกค้าที่ไม่มีใน Master

    q05_AntiJoin · พื้นฐาน

    Left Anti Join สำหรับรายการตกหล่น

    ผลจากข้อมูลตั้งต้น: พบ C999 หนึ่งรายการ

  • กระทบยอดแบบ Full Outer

    q06_Reconcile · กลาง

    แยกรายการเฉพาะฝั่งและยอดต่าง

    ผลจากข้อมูลตั้งต้น: 4 Ref: Matched / Amount differs / Ledger only / Bank only

  • Fuzzy match พร้อมคะแนนและคิวตรวจ

    q18_FuzzyMatch · ขั้นสูง

    หาชื่อใกล้เคียงโดยยังให้คนตรวจคำตอบ

    ผลจากข้อมูลตั้งต้น: Candidate และคะแนนมาจาก fuzzy engine ของ Excel ทุกครั้งที่ Refresh

    จุดที่ต้องระวัง: Similarity ไม่ใช่ความน่าจะเป็น ห้ามอนุมัติหรือแทน master อัตโนมัติ

  • As-of join ราคาล่าสุด ณ วันซื้อ

    q22_AsOfPrice · ขั้นสูง

    ใช้ราคาเริ่มมีผลล่าสุดที่ไม่เกินวันที่รายการ

    ผลจากข้อมูลตั้งต้น: 20 รายการแรก สำหรับดูหลักการ

    จุดที่ต้องระวัง: การค้นรายแถวมีต้นทุนสูงกับข้อมูลใหญ่ ใช้ temporal join ในฐานข้อมูลเมื่อเหมาะสม

  • เปรียบเทียบ New / Changed / Deleted

    q23_Changes · ขั้นสูง

    ตรวจความต่างจาก snapshot ที่เก็บแยกไว้

    ผลจากข้อมูลตั้งต้น: A unchanged, B changed, C deleted, D new

    จุดที่ต้องระวัง: Refresh ไม่ได้เก็บ snapshot เก่าให้ ต้องจัดเก็บประวัตินอกผลลัพธ์ Query

  • จับ master ตามช่วงเวลาที่มีผล

    q24_SCD2 · ขั้นสูง

    EffectiveFrom รวมวันเริ่ม / EffectiveTo ไม่รวมวันจบ

    จุดที่ต้องระวัง: นี่คือการใช้ SCD2 ที่มีอยู่ ไม่ใช่ระบบบันทึกประวัติลงฐานข้อมูล

สรุปและจัดอันดับ

  • Group By รายเดือนและช่องทาง

    q07_Monthly · พื้นฐาน

    รวมยอดพร้อมจำนวนธุรกรรมและต้นทุนที่ยังขาด

    ผลจากข้อมูลตั้งต้น: 27 กลุ่ม (9 เดือน × 3 ช่องทาง)

    จุดที่ต้องระวัง: KnownCost เป็นเฉพาะต้นทุนที่ทราบ กำไรเป็น null หากกลุ่มนั้นมีต้นทุนขาด

  • Top N แยกตามภูมิภาค

    q08_TopN · กลาง

    จัดอันดับภายในกลุ่มจากพารามิเตอร์

    ผลจากข้อมูลตั้งต้น: TopN สินค้าต่อภูมิภาค เปลี่ยนได้ใน Settings

  • ยอดสะสมแยกช่องทาง

    q15_RunningTotal · ขั้นสูง

    เรียงก่อนสะสมและ restart ภายในแต่ละกลุ่ม

    จุดที่ต้องระวัง: List.Accumulate ต่อ list เหมาะชุดเล็กถึงกลาง ใช้ฐานข้อมูลเมื่อข้อมูลใหญ่

  • ค่าเฉลี่ยเคลื่อนที่ 3 เดือน

    q16_RollingAverage · ขั้นสูง

    เฉลี่ย 3 เดือนปฏิทินจริงและเติมเดือนว่างเป็น 0

    จุดที่ต้องระวัง: 2 เดือนแรกใช้เฉลี่ยเท่าที่มีในช่วงที่กำหนด และสมมติเดือนไม่มียอดเป็น 0

  • Dense rank ภายในกลุ่ม

    q17_DenseRank · ขั้นสูง

    ยอดเท่ากันได้อันดับเดียวกันโดยไม่ข้ามอันดับ

    ผลจากข้อมูลตั้งต้น: East: 1,1,2 และ West: 1

  • RFM ลูกค้าและกลุ่มที่ควรดูแล

    q19_Customer360 · ขั้นสูง

    สรุปวันซื้อครั้งล่าสุด ความถี่ และยอดซื้อ

    จุดที่ต้องระวัง: เกณฑ์ 60 วัน/15 ครั้งเป็นสาธิต ไม่ใช่โมเดลที่เหมาะกับทุกธุรกิจ

  • Cohort retention ตามเดือนซื้อครั้งแรก

    q20_Cohort · ขั้นสูง

    ดูจำนวนลูกค้ากลับมาซื้อเทียบ cohort เริ่มต้น

    จุดที่ต้องระวัง: cohort เริ่มจากประวัติที่มีในไฟล์ ไม่อ้างว่าเป็นการซื้อครั้งแรกตลอดชีวิต; ช่องที่ไม่มีแถวยังไม่เติม 0

  • ABC / Pareto สินค้า

    q21_ABC · ขั้นสูง

    ดูส่วนแบ่งสะสมและความสำคัญของสินค้า

    จุดที่ต้องระวัง: ใช้ส่วนแบ่งก่อนแถวปัจจุบันเพื่อให้สินค้าที่คร่อม 80% ยังอยู่ A

เปลี่ยนรูปตาราง

  • Unpivot เดือนที่เพิ่มได้อัตโนมัติ

    q09_Unpivot · พื้นฐาน

    แปลง Jan/Feb/... เป็นแถวพร้อมวันที่

    ผลจากข้อมูลตั้งต้น: 9 แถวจาก 3 แผนก × 3 เดือน

  • Pivot ช่องทางด้วยคอลัมน์แบบ dynamic

    q10_Pivot · กลาง

    ทำตารางเปรียบเทียบโดยไม่ระบุชื่อช่องทางทีละตัว

    ผลจากข้อมูลตั้งต้น: 9 เดือนพร้อมคอลัมน์ช่องทาง

  • กู้รายงานที่เว้นหัวกลุ่มว่าง

    q11_FillDown · พื้นฐาน

    Blank to null แล้ว Fill Down อย่างถูกลำดับ

    ผลจากข้อมูลตั้งต้น: 4 รายการ ไม่รวม TOTAL

  • แยกหลายค่าในช่องเดียวเป็นหลายแถว

    q12_SplitRows · พื้นฐาน

    แตก tags แบบคั่นด้วย comma แล้วตัดช่องว่าง

    ผลจากข้อมูลตั้งต้น: 5 tags จาก 3 tickets

  • รับไฟล์ที่ชื่อคอลัมน์ต่างกัน

    q31_SchemaDrift · ขั้นสูง

    mapping ชื่อ + เลือก schema กลาง + เก็บคอลัมน์ที่ขาดเป็น null

    ผลจากข้อมูลตั้งต้น: A=100 B=200 Region=null

    จุดที่ต้องระวัง: schema กลางเลือกละ Extra โดยตั้งใจ ห้ามละข้อมูลสำคัญในงานจริง

  • คลี่หัวตารางสองชั้น

    q32_MultiHeader · ขั้นสูง

    เติมหัวกลุ่มแนวนอน สร้างชื่อคอลัมน์แล้ว Unpivot

    ผลจากข้อมูลตั้งต้น: 8 แถว จาก 2 ภูมิภาค × 2 เดือน × 2 metrics

วันที่และปฏิทิน

  • ปฏิทินปีบัญชีและวันทำงาน

    q13_Calendar · กลาง

    สร้าง Date dimension โดยไม่ต้องเตรียมไฟล์

    ผลจากข้อมูลตั้งต้น: 273 วัน ในช่วง 2026-01-01 ถึงก่อน 2026-10-01

    จุดที่ต้องระวัง: FiscalYear ใช้ปีสิ้นสุดงวด วันหยุดเป็นข้อมูลสมมติ

  • นับ SLA โดยข้ามเสาร์อาทิตย์และวันหยุด

    q14_BusinessDays · กลาง

    ระบุขอบเขตวันเริ่ม/วันสิ้นสุดชัดเจน

    ผลจากข้อมูลตั้งต้น: รวมวันเริ่มและวันสิ้นสุด เฉพาะวันทำงาน

  • กรองช่วงวันที่ด้วยพารามิเตอร์

    q35_DateParameters · พื้นฐาน

    StartDate รวม / EndDate ไม่รวม เพื่อไม่ซ้ำขอบช่วง

    จุดที่ต้องระวัง: หากเปลี่ยนช่วง ข้อมูลหลัก Dashboard ยังเป็นทั้งหมด ตัวอย่าง q35 เป็นชุดกรองแยก

  • เติมวันที่ไม่มีรายการด้วย Calendar Join

    q36_GapFill · กลาง

    แสดงวันขายเป็นศูนย์โดยยังมีแถววันที่ครบ

    จุดที่ต้องระวัง: 0 หมายถึงไม่มี transaction ในไฟล์ ไม่ได้พิสูจน์ว่าแหล่งข้อมูลส่งมาครบ

เทคนิคขั้นสูง

  • คลี่สายบังคับบัญชาแบบ recursion

    q25_Hierarchy · ขั้นสูง

    สร้างเส้นทางและระดับพร้อมตรวจวงจร

    ผลจากข้อมูลตั้งต้น: 5 พนักงานและสายบังคับบัญชา

    จุดที่ต้องระวัง: recursive function จะหยุดด้วย error หากพบ cycle หรือ parent หาย

  • ระเบิด BOM หลายระดับ

    q26_BOM · ขั้นสูง

    คูณจำนวนชิ้นส่วนทุกระดับและรวม leaf ซ้ำ

    ผลจากข้อมูลตั้งต้น: KIT 10 ชุด ต้องใช้ชิ้นส่วนปลายทาง SCREW 140 และ PANEL 20

    จุดที่ต้องระวัง: LEG เป็นชิ้นส่วนระหว่างทาง จึงไม่อยู่ในผล leaf; จำนวน 10 เป็นขนาดงานสาธิต เปลี่ยน argument ที่ fxBOM ได้

  • เลือกคอลัมน์ด้วย pattern แล้วแปลงพร้อมกัน

    q37_DynamicTransform · กลาง

    เปลี่ยนทุกคอลัมน์ที่ขึ้นต้น Amount_ โดยอัตโนมัติ

    ผลจากข้อมูลตั้งต้น: 1250 / 40 และ 999 / -10

  • Incremental window ที่กำหนดเอง

    q39_IncrementalWindow · ขั้นสูง

    filter ช่วงครึ่งเปิดสำหรับแบ่ง batch อ่านข้อมูล

    จุดที่ต้องระวัง: Excel Query นี้ไม่สะสมประวัติและไม่ใช่ Power BI incremental refresh policy; local source ยังอ่านครบก่อน filter

JSON, XML, HTML และ API

  • คลี่ JSON ซ้อน record และ list

    q27_JSON · กลาง

    แปลง orders/items เป็นตารางรายละเอียด

    ผลจากข้อมูลตั้งต้น: 3 order lines ยอด 850

  • API pagination แบบทดลอง offline

    q28_Pagination · ขั้นสูง

    List.Generate เรียกหน้าถัดไปจนเจอชุดว่าง

    ผลจากข้อมูลตั้งต้น: 5 records จาก 3 หน้าที่มีข้อมูล แล้วหยุดที่ page4 ว่าง

    จุดที่ต้องระวัง: ตัวอย่างใช้ page number + empty sentinel; API แบบ cursor ต้องเปลี่ยน state

  • แปลง XML เป็นตาราง

    q29_XML · กลาง

    อ่านข้อความ XML ที่มีโครงสร้างรายการซ้ำ

    ผลจากข้อมูลตั้งต้น: 3 item ใน XML

    จุดที่ต้องระวัง: XML จริงอาจมี namespace/attribute ต้องดูโครงสร้างก่อนขยาย

  • อ่านตาราง HTML ด้วย CSS selector

    q30_HTML · กลาง

    เลือกเฉพาะตารางเป้าหมายจาก HTML

    ผลจากข้อมูลตั้งต้น: 3 สินค้า ไม่ต้องเชื่อมต่อเว็บ

ตรวจคุณภาพข้อมูล

  • Data profiling ทุกคอลัมน์

    q33_Profile · กลาง

    ตรวจ null / distinct / min / max ก่อนใช้งานข้อมูล

    จุดที่ต้องระวัง: ผล profile ใช้กับชุดที่ query ประมวลผลครบ อาจหนักสำหรับล้านแถว

  • ตรวจ outlier ด้วย IQR

    q34_Anomaly · ขั้นสูง

    หา extreme values โดยใช้ quartile

    ผลจากข้อมูลตั้งต้น: ค่า 100 เป็น outlier

    จุดที่ต้องระวัง: ใช้เป็นสัญญาณตรวจ ไม่ลบข้อมูลโดยอัตโนมัติ

  • Assertions ตรวจ invariants และ edge cases

    q38_Tests · ขั้นสูง

    เช็กคุณภาพ logic แบบทดสอบที่ตรวจซ้ำได้

    ผลจากข้อมูลตั้งต้น: 10 assertions คำนวณโดย Excel ทุกครั้งที่ Refresh

    จุดที่ต้องระวัง: ผ่าน assertions ไม่เท่ากับทุก connector ผ่านหรือ master ครบ

  • แสดงเวลาและปริมาณข้อมูลรอบล่าสุด

    q40_RefreshAudit · กลาง

    อ่าน row counts และ runtime timestamp หลัง refresh

    จุดที่ต้องระวัง: ตารางนี้เขียนทับทุกครั้ง ไม่ใช่ log สะสม และไม่รับรองว่า query อื่นทุกตัว refresh แล้ว

เชื่อมต่อแหล่งข้อมูลจริง

  • รวม CSV ทั้งโฟลเดอร์พร้อมสถานะรายไฟล์

    c01_FolderCSV · Connector

    กรองนามสกุล/ไฟล์ซ่อนและเก็บสาเหตุไฟล์เสีย

    จุดที่ต้องระวัง: c01 เป็นรายงานตรวจไฟล์; ใช้ c01b เพื่อรวมข้อมูลจริง ไฟล์ schema ผิดจะหยุด c01b

  • รวม Excel Table จากหลาย workbook

    c02_FolderExcel · Connector

    เลือกตาราง Transactions จากทุก xlsx

    จุดที่ต้องระวัง: ทุกไฟล์ต้องมี Table ชื่อ Transactions ไม่ใช่แค่ชื่อชีต; ไม่ชี้โฟลเดอร์ที่มี workbook นี้

  • REST แบบแบ่งหน้า + retry มีขอบเขต

    c03_REST · Connector

    ใช้ RelativePath/Query และไม่ฝัง secret ในโค้ด

    จุดที่ต้องระวัง: ต้อง API รูปแบบ {data:[...]} และจบด้วยหน้าว่าง ปรับ auth/Retry-After/cursor ตามสัญญาบริการ; 401/403 ให้จัด credentials

  • SQL parameter + native query folding

    c04_SQL · Connector

    ส่ง date parameters โดยไม่ต่อ string SQL

    จุดที่ต้องระวัง: ตาราง dbo.Sales ต้องมีจริง ตรวจ View Native Query/แผนฝั่ง server เพราะ EnableFolding ไม่รับรองทุก step

  • SharePoint Folder แบบจำกัด path

    c05_SharePoint · Connector

    กรองโฟลเดอร์ก่อนอ่าน binary

    จุดที่ต้องระวัง: ใส่ site URL ไม่ใช่ sharing link และ Folder Path ควรลงท้าย / เพื่อไม่ match ชื่อคล้าย

  • PDF Table extraction

    c06_PDF · Connector

    ตรวจตารางที่เครื่องอ่านเจอ ก่อนเลือกข้อมูล

    จุดที่ต้องระวัง: เป็น connector blueprint; PDF สแกนต้อง OCR ก่อน และ schema อาจเปลี่ยน ต้องเลือก Data ให้ตรงตาราง

  • OData entity

    c07_OData · Connector

    เชื่อม entity และปล่อย connector ดูแล paging ตาม OData

    จุดที่ต้องระวัง: ตั้ง URL ถึง entity ที่ต้องการ และกำหนด credentials ตามระบบจริง

  • HTML table จากเว็บจริง

    c08_Web · Connector

    แยก DOM selector จากการดาวน์โหลด

    จุดที่ต้องระวัง: selector เป็นตัวอย่าง ต้องตรงเว็บจริง; หน้า render ด้วย JavaScript อาจไม่มีข้อมูลใน HTML ที่ดาวน์โหลด

ยังไม่เปิดให้ดาวน์โหลด

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

ไฟล์ Excel ของทุกรายงานดาวน์โหลดได้ฟรี ทั้งฉบับไทยและอังกฤษ