PlusMagi's Blog By Pitt Phunsanit Database จัด PHPExcel สวย ๆ

จัด PHPExcel สวย ๆ

ในฐานะ System Specialist และ Senior Architect เราทราบดีว่าการดึงข้อมูล (Data Extraction) เพียงอย่างเดียวไม่เพียงพอต่อการนำเสนอผลลัพธ์ที่สมบูรณ์ การทำให้รายงานออกมาดู ‘สวยงาม’ และอ่านง่าย จึงเป็นหัวใจสำคัญของการวิเคราะห์ข้อมูล (Data Analytics) ที่มีประสิทธิภาพ

แม้ว่าในอดีตเราอาจคุ้นเคยกับการใช้เครื่องมือภายนอกอย่าง PHPExcel เพื่อจัดรูปแบบไฟล์ แต่ในโลกของการพัฒนาซอฟต์แวร์ที่ทันสมัย การจัดรูปแบบและการนำเสนอข้อมูลที่สวยงามที่สุด ควรเริ่มต้นตั้งแต่ระดับฐานข้อมูล (Database Layer) ด้วยการใช้พลังของ PostgreSQL

✨ หลักการออกแบบรายงานข้อมูลที่สวยงามด้วย PostgreSQL

การทำให้รายงานดูดีในมุมมองของฐานข้อมูล ไม่ได้หมายถึงการใส่สีสัน แต่หมายถึงการจัดโครงสร้างข้อมูล (Structure) การจัดรูปแบบ (Formatting) และการสร้าง Flag สถานะ (Status Flag) ที่ชัดเจน ซึ่ง PostgreSQL มีเครื่องมือที่ทรงพลังในการจัดการสิ่งเหล่านี้:

1. การจัดรูปแบบข้อมูล (Data Formatting) ด้วย TO_CHAR

ข้อมูลดิบที่ออกมาจากฐานข้อมูลมักเป็นรูปแบบที่เครื่องจักรเข้าใจ (เช่น ตัวเลขทศนิยม 1200.50 หรือวันที่ YYYY-MM-DD) แต่สำหรับรายงานที่มนุษย์อ่าน ต้องมีการจัดรูปแบบให้เป็นสกุลเงิน หรือวันที่ที่อ่านง่าย เราใช้ฟังก์ชัน TO_CHAR() เพื่อควบคุมรูปแบบการแสดงผลได้อย่างแม่นยำ

2. การสร้างโครงสร้างและการจัดกลุ่ม (Structuring) ด้วย CTEs

การใช้ Common Table Expressions (CTEs) หรือ WITH clause ช่วยให้เราสามารถแบ่งขั้นตอนการคำนวณหรือการกรองข้อมูลออกเป็นส่วน ๆ อย่างเป็นระเบียบ ทำให้ Query มีความซับซ้อนแต่ยังคงอ่านง่ายเหมือนการจัดหน้ารายงานทีละส่วน

3. การสร้างสถานะและเงื่อนไข (Conditional Logic) ด้วย CASE Statement

นี่คือเทคนิคที่สำคัญที่สุดในการทำให้รายงานดู ‘สมบูรณ์’ เราใช้ CASE statement เพื่อสร้างคอลัมน์สถานะ (Status Flag) เช่น ถ้ายอดขายเกินเป้าหมายให้แสดงคำว่า ‘Excellent’ ถ้าต่ำกว่าให้แสดง ‘Needs Improvement’ ทำให้ผู้ใช้งานสามารถเข้าใจภาพรวมได้ทันทีโดยไม่ต้องคำนวณเอง

💻 ตัวอย่างการสร้างรายงานที่สมบูรณ์ด้วย PostgreSQL

สมมติว่าเรามีข้อมูลยอดขายดิบ และต้องการแสดงรายงานที่จัดรูปแบบแล้ว พร้อมสถานะการขาย:

SQL

-- สร้างรายงานที่จัดรูปแบบและมีสถานะชัดเจน
WITH sales_data AS (
    SELECT 'Laptop' AS product_name, 1200.50 AS price, '2024-05-20'::date AS sale_date, 5 AS quantity
)
SELECT
    product_name,
    TO_CHAR(price, 'FM99,999.00') AS formatted_price, -- จัดรูปแบบเป็นสกุลเงิน
    TO_CHAR(sale_date, 'DD/MM/YYYY') AS formatted_date, -- จัดรูปแบบวันที่
    (price * quantity) AS total_revenue,
    CASE 
        WHEN (price * quantity) >= 6000 THEN '✅ High Performance' 
        WHEN (price * quantity) >= 2000 THEN '🟡 Standard' 
        ELSE '🔴 Low Priority' 
    END AS sales_status_flag -- สร้างสถานะตามเงื่อนไข
FROM sales_data;

💡 บทสรุปสำหรับ Senior Architect

การทำให้รายงานข้อมูลสวยงามและมีประสิทธิภาพสูงในมุมมองของระบบ ไม่ได้ขึ้นอยู่กับเครื่องมือภายนอก แต่ต้องฝังอยู่ในกระบวนการดึงข้อมูลตั้งแต่ต้นทาง ด้วยการใช้ความสามารถขั้นสูงของ PostgreSQL เช่น TO_CHAR(), CTEs, และ CASE statement คุณสามารถสร้างชุดข้อมูลที่พร้อมสำหรับการนำเสนอ (Presentation-Ready Data Set) ได้โดยตรงจาก Query ซึ่งเป็นแนวทางที่สอดคล้องกับหลักการของ Data Architecture ที่แท้จริง