การเปรียบเทียบข้อมูล Excel: เมื่อเครื่องมือ Spreadsheet ไม่พอ
การเปรียบเทียบข้อมูลระหว่างไฟล์ Excel สองชุด (Compare Sheets) เป็นงานพื้นฐานที่นักวิเคราะห์ข้อมูลต้องทำเป็นประจำ ไม่ว่าจะเป็นการตรวจสอบความเปลี่ยนแปลงของงบประมาณ การเปรียบเทียบข้อมูลลูกค้าก่อนและหลังแคมเปญ หรือการตรวจสอบความถูกต้องของข้อมูลที่ถูกย้ายจากระบบหนึ่งไปยังอีกระบบหนึ่ง
ในระดับพื้นฐาน ผู้ใช้ทั่วไปอาจใช้ฟีเจอร์ Spreadsheet Compare หรือการใช้สูตร IF ใน Excel เพื่อหาความแตกต่าง แต่ในฐานะ System Specialist หรือ Senior Architect เราทราบดีว่าวิธีการเหล่านี้มีข้อจำกัดด้านความยืดหยุ่น ความสามารถในการจัดการข้อมูลขนาดใหญ่ (Scalability) และความแม่นยำในการตรวจสอบความสัมพันธ์ของข้อมูล (Relational Integrity) โดยเฉพาะเมื่อข้อมูลมีโครงสร้างที่ซับซ้อน
ยกระดับการเปรียบเทียบข้อมูลด้วย PostgreSQL (The Architect’s Way)
เมื่อข้อมูลมีขนาดใหญ่และต้องการความแม่นยำระดับองค์กร การเปรียบเทียบข้อมูลควรถูกย้ายจากระดับ Spreadsheet ไปสู่ระดับ Database โดยใช้ระบบจัดการฐานข้อมูลอย่าง PostgreSQL นี่คือวิธีที่ทรงพลังที่สุดในการหาความแตกต่าง (Data Delta) ระหว่างชุดข้อมูลสองชุด (Sheet A และ Sheet B) โดยอาศัยหลักการของ SQL Join และ Set Operations
หลักการทำงาน: การหาความแตกต่างด้วย Full Outer Join
สมมติว่าเรามีข้อมูลสินค้าสองชุด คือชุดข้อมูลเก่า (Sheet A) และชุดข้อมูลใหม่ (Sheet B) เราต้องการทราบว่าสินค้าใดที่ถูกเพิ่มเข้ามา ถูกลบออกไป หรือมีค่าใดที่เปลี่ยนแปลงไป
เราสามารถใช้ FULL OUTER JOIN เพื่อรวมแถวข้อมูลทั้งหมดจากทั้งสองตารางเข้าด้วยกัน จากนั้นจึงใช้เงื่อนไข WHERE เพื่อกรองเฉพาะแถวที่ค่าไม่ตรงกัน หรือแถวที่ไม่มีอยู่จริงในตารางใดตารางหนึ่ง
SQL
-- สมมติว่าเรามีตาราง sheet_a และ sheet_b ที่เก็บข้อมูลสินค้า (product_id, price)</code>
SELECT
COALESCE(a.product_id, b.product_id) AS product_id,
CASE
WHEN a.price IS NULL THEN b.price
WHEN b.price IS NULL THEN a.price
ELSE a.price
END AS differing_price
FROM
sheet_a a
FULL OUTER JOIN
sheet_b b ON a.product_id = b.product_id
WHERE
a.price <> b.price OR a.product_id IS NULL OR b.product_id IS NULL;
การวิเคราะห์โค้ด (Code Analysis)
- FULL OUTER JOIN: รับประกันว่าเราจะไม่พลาดข้อมูลใดๆ ไม่ว่าจะอยู่ใน Sheet A หรือ Sheet B
- WHERE Clause: ส่วนนี้คือหัวใจของการเปรียบเทียบ โดยเรากำหนดเงื่อนไขให้เลือกเฉพาะแถวที่ค่า `price` ไม่เท่ากัน (`a.price <> b.price`) หรือแถวที่ Product ID มีอยู่แค่ในฝั่งใดฝั่งหนึ่ง
- COALESCE: ใช้เพื่อแสดง Product ID ที่ถูกต้อง แม้ว่าข้อมูลจะหายไปจากฝั่งใดฝั่งหนึ่ง
บทสรุป: เมื่อไหร่ควรใช้ Excel และเมื่อไหร่ควรใช้ Database
การใช้ Excel เหมาะสำหรับการเปรียบเทียบข้อมูลชุดเล็กเพื่อการตรวจสอบด้วยสายตา (Visual Inspection) เท่านั้น แต่สำหรับการทำงานระดับ Production ที่ต้องการความน่าเชื่อถือสูง การตรวจสอบความเปลี่ยนแปลงของข้อมูลควรถูกจัดการด้วย SQL Query ใน PostgreSQL เสมอ เพราะมันให้ผลลัพธ์ที่เป็นโครงสร้าง (Structured Output) สามารถนำไปใช้ในการรายงาน (Reporting) และกระตุ้นระบบแจ้งเตือน (Alerting) ได้โดยอัตโนมัติ ซึ่งเป็นมาตรฐานของ Data Pipeline ที่แข็งแกร่ง