資料工程不只是 ETL 與搬運資料。一段 SQL 從送出到產生結果,背後還包含資料讀取、查詢規劃、最佳化與運算。
本系列將使用 Rust 與 Apache DataFusion,透過 30 天實作拆解 SQL 查詢的執行流程。內容涵蓋 CSV、JSON、Parquet、Apache Arrow、Logical Plan、Physical Plan、欄位裁剪與條件下推,並實作多表查詢、自訂函數、簡易 ETL、錯誤處理及測試。
最終將完成一套本機資料分析工具,讓使用者載入不同格式的資料、執行 SQL、查看查詢計畫並輸出結果,從實作中理解現代查詢引擎如何運作。
先來回答昨天讀者的問題 昨天有讀者問: 規劃和執行兩階段,是先規劃後執行嗎?還是獨立的兩塊? 答案是: 先規劃,後執行。 兩者不是獨立的兩條流程,而是同一...
Logical Plan 是 SQL 的第一張執行藍圖。 它不會立刻讀取檔案,也不會直接產生查詢結果,而是先把 SQL 拆成一棵由多個 Logical Oper...
上一篇介紹了 Logical Plan,知道 SQL 會被轉換成一棵由 TableScan、Filter、Aggregate 與 Projection 組成的操...
上一篇使用 EXPLAIN 觀察了 SQL 的 Logical Plan。 Logical Plan 描述的是: 這段查詢想完成什麼? 今天再往下一層,介紹...
先回應讀者的問題:Schema 和 Physical Plan 的關係 有讀者提問:Physical Planner 建立資料來源運算子時,Schema 到底扮...
前幾天我們看到,一段 SQL 會先被轉換成 Logical Plan,再交給 Physical Planner 產生實際執行計畫。 但在這兩個階段之間,還有一個...
上一篇介紹了 Query Optimizer 的目的,今天深入其中一項常見最佳化: Projection Pushdown 它的核心概念是: 查詢只需要哪些...
上一篇介紹了 Projection Pushdown,讓資料來源盡量只讀取查詢需要的欄位。 今天介紹另一個重要的最佳化: Filter Pushdown 它的...