LoaderAdapter
LoaderAdapter 處理資料載入,並自動處理 benchmark:// 協定以下載基準資料集和模式檔案。
類別架構
classDiagram
class LoaderAdapter {
+config: dict
+loader: Loader
+benchmarker: Benchmarker
+__init__(config)
+run() tuple[DataFrame, Schema]
-_handle_benchmark_protocol()
-_init_loader()
}
class Loader {
+filepath: str
+schema: Schema
+load() tuple[DataFrame, Schema]
}
class Benchmarker {
+config: BenchmarkerConfig
+download()
+get_filepath()
}
class BenchmarkerConfig {
+benchmark_name: str
+filepath_raw: str
}
class BenchmarkerRequests {
+download()
}
LoaderAdapter ..> Loader : 用於資料載入
LoaderAdapter ..> Benchmarker : 用於基準協定
Benchmarker --> BenchmarkerConfig : 擁有
Benchmarker ..> BenchmarkerRequests : 創建
%% 樣式定義
class LoaderAdapter {
<<主要類別>>
}
style LoaderAdapter fill:#E6E6FA
class Loader {
<<核心模組>>
}
style Loader fill:#4169E1,color:#fff
class Benchmarker {
<<基準處理器>>
}
style Benchmarker fill:#9370DB,color:#fff
style BenchmarkerConfig fill:#FFE4E1
style BenchmarkerRequests fill:#FFE4E1
note for LoaderAdapter "1. 偵測 benchmark:// 協定\n2. 使用 Benchmarker 下載\n3. 使用本地路徑的 Loader"圖例:
- 淺紫色框:LoaderAdapter 主類別
- 藍色框:核心載入模組
- 紫色框:基準資料集處理模組
- 淺粉色框:配置類別
..>:依賴關係-->:擁有關係
主要功能
- 統一的資料載入介面
- 自動偵測並處理資料和模式的
benchmark://協定 - 整合 Loader 與 Benchmarker 功能
- 回傳資料和 Schema 詮釋資料
- 支援 CSV 資料檔和 YAML 模式檔
方法參考
__init__(config: dict)
初始化 LoaderAdapter 實例,自動處理 benchmark:// 協定。
參數:
config:dict,必要- 配置參數字典
- 必須包含
filepath鍵 - 支援
benchmark://協定 - 可選參數包括:
schema:Schema 檔案路徑nrows:僅載入指定數量的資料列(用於快速測試)delimiter、encoding、header等 pandas 讀取參數
run(input: dict)
執行資料載入,包括自動下載基準資料集。
參數:
input:dict,必要- 輸入參數字典
- LoaderAdapter 通常接收空字典
{}
回傳:
無直接回傳值。使用 get_result() 和 get_metadata() 取得結果。
get_result()
取得載入的資料。
回傳:
pd.DataFrame:載入的資料
get_metadata()
取得資料的 Schema 詮釋資料。
回傳:
Schema:資料詮釋資料
使用範例
from petsard.adapter import LoaderAdapter
# 一般檔案載入
adapter = LoaderAdapter({
"filepath": "data/users.csv",
"schema": "schemas/user.yaml"
})
# 使用 nrows 參數進行快速測試
adapter = LoaderAdapter({
"filepath": "data/large_dataset.csv",
"schema": "schemas/data.yaml",
"nrows": 1000 # 僅載入前 1000 列
})
# 或使用 benchmark:// 協定
# adapter = LoaderAdapter({
# "filepath": "benchmark://adult-income",
# "schema": "benchmark://adult-income_schema"
# })
# 執行載入
adapter.run({})
# 取得結果
data = adapter.get_result()
metadata = adapter.get_metadata()工作流程
- 協定偵測:檢查 filepath/schema 是否使用
benchmark://協定 - Benchmarker 處理(基準協定時)
- 下載檔案到本地
- 驗證 SHA-256(不符時發出警告)
- 轉換路徑為本地路徑
- 資料載入:載入資料和詮釋資料
注意事項
- 這是內部 API,不建議直接使用
- 建議使用 YAML 配置檔和 Executor
- 基準檔案在首次下載後會快取
- 結果會快取直到下次 run() 呼叫