PlusMagi's Blog By Pitt Phunsanit Ai,Database การนำเสนอด้วย Area Chart: การแสดงสัดส่วนข้อมูลสะสมและการเปรียบเทียบ ปริมาณข้อมูล ตามช่วงเวลา

การนำเสนอด้วย Area Chart: การแสดงสัดส่วนข้อมูลสะสมและการเปรียบเทียบ ปริมาณข้อมูล ตามช่วงเวลา

ในฐานะนักวิเคราะห์ข้อมูลเชิงระบบ การทำความเข้าใจการเติบโตและการเปลี่ยนแปลงสัดส่วนของปัจจัยต่างๆ เมื่อเวลาผ่านไป (Time Series Analysis) คือหัวใจสำคัญของการเล่าเรื่องข้อมูล (Data Storytelling) องค์ประกอบภาพที่ทรงพลังที่สุดในการนำเสนอแนวคิดนี้คือ **Area Chart** หรือแผนภูมิพื้นที่

Area Chart ไม่ได้เป็นเพียงการลากเส้นกราฟ แต่เป็นการเติมพื้นที่สีทึบใต้เส้นกราฟ เพื่อเน้นย้ำถึง “ปริมาณสะสม” (Cumulative Volume) และการเปลี่ยนแปลงสัดส่วนของส่วนประกอบย่อย (Component Contribution) เมื่อเวลาผ่านไป การใช้งานที่ถูกต้องจะช่วยให้ผู้บริหารเห็นภาพรวมของการเติบโตที่ขับเคลื่อนโดยส่วนประกอบใด

Area Chart: ความท้าทายทางสถาปัตยกรรมข้อมูล

ในมุมมองของ System Architect การคำนวณข้อมูลสะสม (Running Total) และการหาอัตราส่วนการเปลี่ยนแปลงของหลายปัจจัยพร้อมกันตามช่วงเวลา เป็นโจทย์ที่ซับซ้อนกว่าการใช้ฟังก์ชัน `SUM()` ธรรมดา เนื่องจากเราต้องการการคำนวณแบบต่อเนื่อง (Sequential Calculation) ที่ต้องอ้างอิงค่าก่อนหน้าเสมอ

นี่คือจุดที่ PostgreSQL เข้ามามีบทบาทสำคัญ ด้วยคุณสมบัติขั้นสูงอย่าง **Window Functions** (เช่น `SUM() OVER (…)`) และ **Common Table Expressions (CTE)** ทำให้เราสามารถจัดการชุดข้อมูลเชิงเวลาที่ซับซ้อนเหล่านี้ได้อย่างมีประสิทธิภาพและเป็นระเบียบที่สุด

การคำนวณข้อมูลสะสมด้วย PostgreSQL Window Functions

ในการสร้าง Area Chart ที่แสดงการสะสมของหลายมิติ เราต้องใช้ Window Functions เพื่อคำนวณผลรวมที่สะสมมาจนถึงแถวปัจจุบัน (Running Total) และคำนวณสัดส่วนเทียบกับผลรวมทั้งหมดในแต่ละช่วงเวลา

ตัวอย่างการคำนวณ (SQL Implementation)

สมมติว่าเรามีตาราง `sales_data` ที่เก็บยอดขายรายเดือนของสินค้าหลายชนิด เราต้องการคำนวณยอดขายสะสมรวม และสัดส่วนของสินค้าแต่ละชนิดเมื่อเทียบกับยอดรวมสะสม:

SQL

WITH raw_data AS ( 
    -- จำลองข้อมูลยอดขายรายเดือน
    SELECT '2023-01-01'::date AS report_date, 'Apple' AS product, 100 AS sales_amount UNION ALL 
    SELECT '2023-01-01'::date, 'Banana', 50 UNION ALL 
    SELECT '2023-02-01'::date, 'Apple', 120 UNION ALL 
    SELECT '2023-02-01'::date, 'Banana', 80 UNION ALL 
    SELECT '2023-03-01'::date, 'Apple', 150 UNION ALL 
    SELECT '2023-03-01'::date, 'Banana', 100
) 
SELECT 
    report_date, 
    product, 
    sales_amount, 
    -- 1. คำนวณยอดขายสะสมของสินค้าแต่ละชนิด (Running Total per Product)
    SUM(sales_amount) OVER (PARTITION BY product ORDER BY report_date) AS cumulative_sales_product, 
    -- 2. คำนวณยอดขายรวมสะสมทั้งหมด (Overall Cumulative Total)
    SUM(sales_amount) OVER (ORDER BY report_date) AS overall_cumulative_total, 
    -- 3. คำนวณสัดส่วนของสินค้าชนิดนี้ต่อยอดรวมสะสมทั้งหมด
    (SUM(sales_amount) OVER (PARTITION BY product ORDER BY report_date) * 1.0 / SUM(sales_amount) OVER (ORDER BY report_date)) AS proportion_to_overall 
FROM raw_data 
ORDER BY report_date, product;

บทสรุป: การผสานพลังระหว่าง Data Science และ Database

การสร้าง Area Chart ที่สมบูรณ์แบบจึงไม่ใช่แค่เรื่องของการเลือกกราฟ แต่คือการออกแบบกระบวนการคำนวณข้อมูลที่แม่นยำและมีประสิทธิภาพสูงสุด การใช้ PostgreSQL ร่วมกับ Window Functions ทำให้เราสามารถเปลี่ยนชุดข้อมูลดิบ (Raw Data) ให้กลายเป็นข้อมูลเชิงลึก (Insight) ที่พร้อมสำหรับการนำเสนอในรูปแบบการสะสมและสัดส่วนได้อย่างไร้รอยต่อ

การเข้าใจการทำงานของ `OVER (PARTITION BY … ORDER BY …)` คือกุญแจสำคัญที่ Senior Architect ทุกคนต้องรู้ เพื่อให้สามารถออกแบบระบบ Back-end ที่รองรับการวิเคราะห์ข้อมูลเชิงเวลาที่ซับซ้อนได้อย่างมั่นคงและเชื่อถือได้

Exit mobile version