วัน: 21 เมษายน 2021

Data Engineer: ETL/ELT Pipeline Automation ด้วย Apache Airflow และ dbtData Engineer: ETL/ELT Pipeline Automation ด้วย Apache Airflow และ dbt

ในยุคที่ข้อมูลคือสินทรัพย์ที่ทรงพลังที่สุด (Data Asset) องค์กรต่าง ๆ ต้องเผชิญกับข้อมูลจำนวนมหาศาลที่มีความซับซ้อนสูง การจัดการข้อมูลแบบเดิม ๆ จึงไม่เพียงพออีกต่อไป Data Engineer ในระดับ Senior Architect จึงต้องออกแบบระบบนิเวศข้อมูล (Data Ecosystem) ที่ไม่เพียงแต่รวบรวมข้อมูลได้เท่านั้น แต่ยังต้องทำงานได้อย่างอัตโนมัติ (Automation) มีความน่าเชื่อถือ และพร้อมใช้งานสำหรับการตัดสินใจทางธุรกิจได้อย่างทันท่วงที

💡 การเปลี่ยนกระบวนทัศน์สู่ ELT: หัวใจของ Data Modernization

หัวใจสำคัญของการยกระดับระบบข้อมูลคือการเปลี่ยนจาก ETL (Extract, Transform, Load) แบบดั้งเดิม ไปสู่แนวคิด ELT (Extract, Load, Transform) แนวคิด ELT คือการโหลดข้อมูลดิบ (Raw Data) เข้าสู่ Data Warehouse ขนาดใหญ่ เช่น PostgreSQL, Snowflake หรือ BigQuery ก่อน จากนั้นจึงทำการแปลงข้อมูล (Transform) ภายในคลังข้อมูลนั้นโดยตรง การใช้ PostgreSQL เป็นฐานข้อมูลหลักทำให้เราสามารถใช้ประโยชน์จากพลังการประมวลผล (Compute Power) และความยืดหยุ่นของ SQL ในการจัดการข้อมูลได้อย่างเต็มที่

⚙️ Apache Airflow: ผู้ประสานงานวงจรข้อมูล (Orchestrator)

เมื่อเรามีข้อมูลดิบถูกโหลดเข้าสู่ PostgreSQL แล้ว ขั้นตอนต่อไปคือการทำให้กระบวนการทั้งหมดนี้เกิดขึ้นอย่างเป็นระบบและอัตโนมัติ Apache Airflow จึงเข้ามามีบทบาทเป็น ‘ผู้ประสานงาน’ (Orchestrator) ที่ทรงพลัง Airflow ทำหน้าที่กำหนดลำดับขั้นตอน (DAG – Directed Acyclic Graph) ของงานข้อมูลทั้งหมด เช่น การดึงข้อมูลจาก API, การโหลดเข้าตารางดิบ, และการเรียกใช้กระบวนการแปลงข้อมูลตามลำดับที่ถูกต้อง

✨ dbt (data build tool): การแปลงข้อมูลด้วย SQL ที่เป็นโค้ด

ในส่วนของการแปลงข้อมูล (T ใน ELT) เราใช้เครื่องมือที่เรียกว่า dbt dbt ช่วยให้ Data Engineer สามารถเขียน Transformation Logic ทั้งหมดด้วยภาษา SQL ที่คุ้นเคย โดยไม่ต้องเขียนโค้ดซับซ้อนอื่น ๆ dbt จะจัดการการสร้างโมเดล (Models) และการจัดการ Dependency ของตารางภายใน PostgreSQL ให้โดยอัตโนมัติ ทำให้การทดสอบ (Testing) และการทำ Version Control ของข้อมูลเป็นเรื่องง่ายดาย

🛠️ ตัวอย่างการทำงานร่วมกัน (Airflow Triggering dbt on PostgreSQL)

ในทางปฏิบัติ Airflow จะถูกตั้งค่าให้เรียกใช้ dbt เมื่อข้อมูลดิบถูกโหลดเสร็จสิ้น dbt จะรันคำสั่ง SQL เหล่านี้บน PostgreSQL เพื่อสร้างตารางที่พร้อมใช้งาน (Materialized View/Table):

SQL

-- dbt Model: models/dim_sales.sql
-- คำสั่งนี้จะถูกรันโดย dbt และใช้ PostgreSQL Syntax
SELECT
    t1.transaction_id,
    t1.product_name,
    t1.sale_date::date AS sale_date,
    SUM(t1.quantity * t1.price) AS total_revenue
FROM
    {{ source('raw_data', 'transactions') }} AS t1
GROUP BY
    t1.transaction_id, t1.product_name, t1.sale_date;

-- Airflow DAG จะเรียกใช้ 'dbt run' เพื่อรันโมเดลนี้

✅ บทสรุป: ระบบนิเวศข้อมูลที่สมบูรณ์

การผสานรวม Apache Airflow, dbt, และ PostgreSQL เข้าด้วยกัน ทำให้เราได้ระบบนิเวศข้อมูล (Data Stack) ที่สมบูรณ์แบบ Airflow จัดการเวลาและลำดับงาน, dbt รับผิดชอบการแปลงข้อมูลที่ซับซ้อนด้วย SQL ที่เป็นระเบียบ, และ PostgreSQL ทำหน้าที่เป็นคลังข้อมูลที่เชื่อถือได้ ด้วยสถาปัตยกรรมนี้ Data Engineer จึงสามารถสร้าง Data Pipeline ที่มีความยืดหยุ่น ปรับขนาดได้ และที่สำคัญที่สุดคือ ‘อัตโนมัติ’ อย่างแท้จริง ทำให้องค์กรสามารถเปลี่ยนข้อมูลดิบให้กลายเป็นข้อมูลเชิงลึกทางธุรกิจได้อย่างรวดเร็วและแม่นยำ