iT邦幫忙

鐵人檔案

2026 iThome 鐵人賽
回列表
Software Development

深入 SQL 查詢引擎:30 天用 Rust 與 Apache DataFusion 解構資料處理流程 系列

資料工程不只是 ETL 與搬運資料。一段 SQL 從送出到產生結果,背後還包含資料讀取、查詢規劃、最佳化與運算。

本系列將使用 Rust 與 Apache DataFusion,透過 30 天實作拆解 SQL 查詢的執行流程。內容涵蓋 CSV、JSON、Parquet、Apache Arrow、Logical Plan、Physical Plan、欄位裁剪與條件下推,並實作多表查詢、自訂函數、簡易 ETL、錯誤處理及測試。

最終將完成一套本機資料分析工具,讓使用者載入不同格式的資料、執行 SQL、查看查詢計畫並輸出結果,從實作中理解現代查詢引擎如何運作。

參賽天數 18 天 | 共 18 篇文章 | 5 人訂閱 訂閱系列文 RSS系列文 團隊源來適愛開緣
DAY 1

Day 1|資料工程不只是 ETL:SQL 背後發生了什麼?

前言 提到資料工程,你最先想到的可能是 ETL: 從 API、資料庫或檔案擷取資料 清理缺失值與錯誤格式 轉換欄位型別 將資料寫入 Data Warehous...

2026-08-17 ‧ 由 郁庭 Cady 分享
DAY 2

Day 2|為什麼是 Rust × Apache DataFusion?

大家好,我是 Cady,目前就讀資管系,也正在參與 Apache DataFusion 的開源貢獻。 發現 Day 1 忘記介紹自己,來補充一下,免得很像 AI...

2026-08-18 ‧ 由 郁庭 Cady 分享
DAY 3

Day 3|建立第一個 DataFusion 專案:相同結果的 SQL,真的一樣快嗎?

前兩天,我們先從概念上認識了 Query Engine,也知道 DataFusion 是一套使用 Rust 與 Apache Arrow 建立的查詢引擎。 今天...

2026-08-19 ‧ 由 郁庭 Cady 分享
DAY 4

Day 4|從 CSV 開始:讓檔案變成可以 SQL 查詢的 Table

昨天我們建立了第一個 DataFusion 專案,並使用 SessionContext 執行一段不需要外部資料的 SQL。 今天要開始處理真正的資料檔案。 我們...

2026-08-20 ‧ 由 郁庭 Cady 分享
DAY 5

Day 5|JSON 資料也能直接 SQL 查詢

昨天我們將 CSV 註冊成 DataFusion 中的 Table,並使用 SQL 執行欄位選擇與資料篩選。 今天換成另一種常見的資料格式:JSON。 JSON...

2026-08-21 ‧ 由 郁庭 Cady 分享
DAY 6

Day 6|為分析而生的 Parquet

前幾天收到一些讀者回饋,希望文章可以更像教材:先把概念與資料處理流程說清楚,再進入程式實作。 我覺得這個建議很好,謝謝大家給我回饋~ 對資料工程來說,成功把資料...

2026-08-22 ‧ 由 郁庭 Cady 分享
DAY 7

Day 7|Row-based vs Columnar:為什麼分析系統偏好欄式資料?

先說結論 分析系統偏好欄式資料(Columnar),主要是因為分析查詢常常會: 掃描大量資料。 但只使用其中少數幾個欄位。 進行篩選、分組與聚合,例如 WHE...

2026-08-23 ‧ 由 郁庭 Cady 分享
DAY 8

Day 8|認識 Apache Arrow:DataFusion 的資料基礎

Apache Arrow 是一套跨語言的欄式記憶體格式。 它不是資料庫,也不是只用來保存資料的檔案格式;它處理的是另一個問題: 資料進入記憶體後,要如何排列,...

2026-08-24 ‧ 由 郁庭 Cady 分享
DAY 9

Day 9|Schema、Array 與 RecordBatch

在 Apache Arrow 中,一張資料表不是一個模糊的「表格物件」,而是由三個核心概念組成: Schema → 定義欄位名稱、資料型別與欄位順序 Arra...

2026-08-25 ‧ 由 郁庭 Cady 分享
DAY 10

Day 10|從檔案到 RecordBatch:追蹤資料讀取流程

昨天有讀者問: DataFusion 是如何利用 Schema 產生 RecordBatch?DataFusion 和 Schema 的關係到底是什麼? 簡...

2026-08-26 ‧ 由 郁庭 Cady 分享