Tôi đã thử nghiệm pipeline kiểu dplyr trên DuckDB
(duckdb.org)Khi dùng DuckDB cho công việc phân tích,
tôi cảm thấy chỉ với SQL thôi cũng đã có thể làm được khá nhiều việc.
Tuy vậy, với cá nhân tôi,
càng viết SQL lâu trong quá trình phân tích
thì lại càng lặp lại kiểu dùng ngày một nhiều CTE.
Bởi nếu không đặt tên và cố định các trạng thái trung gian,
thì ngay cả bản thân tôi cũng dễ đánh mất
trình tự suy nghĩ mà mình đã dùng để tạo ra truy vấn này.
Vì sao tôi nghĩ đến cú pháp dplyr
Có lẽ vì là người đã dùng R từ lâu,
nên cú pháp dplyr xử lý bảng theo từng bước
như filter → mutate → group_by → summarise
vẫn luôn đọng lại trong đầu tôi.
Dù cũng có thể làm cùng một việc bằng SQL,
nhưng tôi thấy hơi bất tiện
khi muốn giữ nguyên trình tự tư duy đó trong mã.
Vì vậy tôi đã thử làm một thí nghiệm nhỏ trên DuckDB
Tôi không muốn dựng lại runtime R,
và cũng khó truyền đạt cảm giác này chỉ bằng lời giải thích,
nên tôi đã tạo ra một thử nghiệm nhỏ dưới dạng DuckDB extension,
chuyển pipeline kiểu dplyr thành SQL.
Hiện tại mới xử lý được chừng này.
select,filter,mutatearrangegroup_by,summarise- các hàm tổng hợp cơ bản
Các phép join hay tái cấu trúc phức tạp hơn (như pivot, v.v.) thì vẫn chưa xử lý.
Đây cũng không phải là dự án nhắm đến việc tương thích dplyr hoàn chỉnh.
Hiện tại nó vẫn chỉ là một thử nghiệm bắt đầu từ sự bất tiện cá nhân của tôi,
nên tôi cũng muốn nghe ý kiến từ những ai từng có băn khoăn tương tự.
Chưa có bình luận nào.