ระหว่างที่ใช้ DuckDB กับงานวิเคราะห์ข้อมูล
ผมรู้สึกว่าแค่ใช้ SQL อย่างเดียวก็ทำอะไรได้มากพอสมควรแล้ว

แต่สำหรับผมเอง
พอใช้ SQL ไปเรื่อย ๆ ยิ่งกระบวนการวิเคราะห์ยาวขึ้น
ก็ยิ่งวนกลับไปใช้ CTE มากขึ้นเรื่อย ๆ เป็นแพตเทิร์นเดิมซ้ำ ๆ

เพราะถ้าไม่ตั้งชื่อและตรึงสถานะระหว่างทางเอาไว้
ผมเองก็จะเผลอตามไม่ทันได้ง่าย ๆ ว่า
ผมสร้างคิวรีนี้ขึ้นมาด้วยลำดับความคิดแบบไหน


ทำไมถึงนึกถึงไวยากรณ์แบบ dplyr

อาจเพราะเป็นผู้ใช้ R มานาน
ไวยากรณ์แบบ dplyr ที่จัดการตารางเป็นลำดับขั้น
เช่น filter → mutate → group_by → summarise
ยังคงติดอยู่ในหัวผมตลอด

แม้จะทำงานเดียวกันได้ด้วย SQL
แต่ผมรู้สึกว่ามันไม่ค่อยสะดวกนัก
ถ้าจะเก็บลำดับความคิดเอาไว้ในโค้ดแบบตรงไปตรงมา


เลยลองทำการทดลองเล็ก ๆ บน DuckDB

ผมไม่ได้อยากยก R runtime กลับมาใส่อีกครั้ง
และในขณะเดียวกันก็ยากที่จะถ่ายทอดความรู้สึกนี้ด้วยคำอธิบายอย่างเดียว
ผมเลยทำการทดลองเล็ก ๆ ในรูปแบบ DuckDB extension
ที่แปลงไปป์ไลน์สไตล์ dplyr ให้กลายเป็น SQL

ตอนนี้รองรับประมาณนี้

  • select, filter, mutate
  • arrange
  • group_by, summarise
  • ฟังก์ชัน aggregate พื้นฐาน

ส่วน join หรือการปรับโครงสร้างข้อมูลที่ซับซ้อนกว่าเดิม เช่น pivot ยังไม่รองรับ
และนี่ก็ไม่ใช่โปรเจกต์ที่ตั้งเป้าให้เข้ากันได้กับ dplyr อย่างสมบูรณ์
ตอนนี้ยังเป็นเพียงการทดลองที่เริ่มจากความไม่สะดวกส่วนตัวของผม
เลยอยากรู้เหมือนกันว่าคนที่เคยมีโจทย์คล้าย ๆ กันจะคิดเห็นอย่างไร

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น