Data engineering / mobility
อยากเห็นเส้นทางตั้งแต่ไฟล์จนถึงหน้าจอ
โปรเจกต์นี้เริ่มจากภาพ data platform แบบ production-style แต่ผมตั้งใจให้ review ได้จาก fixture เล็ก ๆ โดยไม่ต้องโหลดข้อมูล NYC TLC ทั้งเดือนเข้ามาใน repo
เลยทำให้แต่ละชั้นมีงานของตัวเอง
- สร้าง Parquet fixture และ profile ก่อนตรวจ timestamp, amount, passenger, zone และ speed
- แยก valid, duplicate warning และ rejected rows แล้วโหลดเฉพาะแถวที่ผ่านไป DuckDB
- ให้ dbt สร้าง dimensions, facts และ marts ก่อนส่งให้ FastAPI, React และ Dagster local assets
จากไฟล์สู่ dashboard
- 1
TLC-style Parquet → profile และ validate
- 2
validated / rejected partitions → DuckDB staging → dbt marts
- 3
FastAPI read-only API → React dashboard; Dagster ช่วย orchestration ในเครื่อง
แถวเสียก็เป็นผลลัพธ์เหมือนกัน
fixture มีหนึ่ง valid trip, หนึ่ง duplicate warning และหนึ่งแถวที่ยอดเงินผิด การไม่กลบแถวเสียทิ้งทำให้หน้า quality อธิบายได้ว่าทำไมข้อมูลถึงไม่ไปต่อ

ผลที่ออกมา
เดโมมีแถวจริงใน fixture แค่ระดับเล็ก ๆ แต่รันซ้ำสองรอบเพื่อเช็ก month-level idempotency และมี report quality แยก valid, warning, rejected rows ออกจากกัน

ขอบเขตตอนนี้
- เดโมไม่ดาวน์โหลด full NYC TLC dataset และ fixture ไม่แทน volume จริง
- ระบบเป็น local-first ไม่มี production deployment, auth หรือ cloud account
- optional official sample ต้องใช้ network และ external DATA_DIR แยกจาก repo
ถ้าเริ่มใหม่วันนี้
- ทำ data contract ให้เห็นคู่กับ quality report ตั้งแต่ก่อนเปิด dashboard
- เพิ่มเคส late-arriving data และ schema drift เข้า demo fixture
- ลดจำนวนหน้าจอในรอบแรก แล้วทำ anomaly story ให้จบหนึ่งเส้นทางก่อน
โค้ดและเดโม
ใน repository มีวิธีรัน การทดสอบ และรายละเอียด implementation ฉบับเต็ม