ผมได้ลองทดลองใช้ไปป์ไลน์สไตล์ dplyr บน DuckDB
(duckdb.org)ระหว่างที่ใช้ DuckDB กับงานวิเคราะห์ข้อมูล
ผมรู้สึกว่าแค่ใช้ SQL อย่างเดียวก็ทำอะไรได้มากพอสมควรแล้ว
แต่สำหรับผมเอง
พอใช้ SQL ไปเรื่อย ๆ ยิ่งกระบวนการวิเคราะห์ยาวขึ้น
ก็ยิ่งวนกลับไปใช้ CTE มากขึ้นเรื่อย ๆ เป็นแพตเทิร์นเดิมซ้ำ ๆ
เพราะถ้าไม่ตั้งชื่อและตรึงสถานะระหว่างทางเอาไว้
ผมเองก็จะเผลอตามไม่ทันได้ง่าย ๆ ว่า
ผมสร้างคิวรีนี้ขึ้นมาด้วยลำดับความคิดแบบไหน
ทำไมถึงนึกถึงไวยากรณ์แบบ dplyr
อาจเพราะเป็นผู้ใช้ R มานาน
ไวยากรณ์แบบ dplyr ที่จัดการตารางเป็นลำดับขั้น
เช่น filter → mutate → group_by → summarise
ยังคงติดอยู่ในหัวผมตลอด
แม้จะทำงานเดียวกันได้ด้วย SQL
แต่ผมรู้สึกว่ามันไม่ค่อยสะดวกนัก
ถ้าจะเก็บลำดับความคิดเอาไว้ในโค้ดแบบตรงไปตรงมา
เลยลองทำการทดลองเล็ก ๆ บน DuckDB
ผมไม่ได้อยากยก R runtime กลับมาใส่อีกครั้ง
และในขณะเดียวกันก็ยากที่จะถ่ายทอดความรู้สึกนี้ด้วยคำอธิบายอย่างเดียว
ผมเลยทำการทดลองเล็ก ๆ ในรูปแบบ DuckDB extension
ที่แปลงไปป์ไลน์สไตล์ dplyr ให้กลายเป็น SQL
ตอนนี้รองรับประมาณนี้
select,filter,mutatearrangegroup_by,summarise- ฟังก์ชัน aggregate พื้นฐาน
ส่วน join หรือการปรับโครงสร้างข้อมูลที่ซับซ้อนกว่าเดิม เช่น pivot ยังไม่รองรับ
และนี่ก็ไม่ใช่โปรเจกต์ที่ตั้งเป้าให้เข้ากันได้กับ dplyr อย่างสมบูรณ์
ตอนนี้ยังเป็นเพียงการทดลองที่เริ่มจากความไม่สะดวกส่วนตัวของผม
เลยอยากรู้เหมือนกันว่าคนที่เคยมีโจทย์คล้าย ๆ กันจะคิดเห็นอย่างไร
ยังไม่มีความคิดเห็น