資料知識地圖 · 3. 資料管線
ETL / ELT
資料管線設計
觀念教學
搬資料的兩種流派:先洗好菜再進倉庫,還是整車先卸貨、要用再洗?這就是 ETL 與 ELT 的分水嶺。
核心觀念
ETL(Extract-Transform-Load):擷取來源資料,先在中繼環境轉換(清理、格式統一、去識別化),再載入目標資料庫——入庫的都是乾淨資料。ELT(Extract-Load-Transform):先原樣載入(通常進資料湖或雲端倉儲),之後用倉儲本身的運算力再轉換。怎麼選?看資料量與運算資源:傳統倉儲搭 ETL;雲端環境儲存與運算便宜,ELT 漸成主流。
白話理解
銀行每晚彙整分行交易:先統一幣別、遮罩卡號,再載入總行倉儲——ETL。網路公司把 App 原始事件全倒進雲端資料湖,分析師要用時再轉換——ELT。
關鍵細節
- ETL:入庫即乾淨、治理容易;瓶頸在轉換伺服器
- ELT:載入快、保留原始資料、彈性高;治理不嚴,資料湖變沼澤
- 監控基本盤:各階段的處理時間與失敗率,失敗要能重跑
- 敏感資料在轉換階段處理:去識別化、遮罩、彙總,讓下游拿到的資料先天無害
🎯 口訣:ETL 先洗再進門,ELT 先進門再洗;個資要在進門前洗掉。
iPAS 考點
三個真實考向:
- ETL 順序題:擷取、轉換、載入;「先轉換再載入」是 ETL、「先載入再轉換」是 ELT,選項把順序顛倒就是陷阱
- 政府釋出資料題:市民用電資料含可識別個資要開放研究——最適當做法是釋出前先去識別化/匿名化,必要時做彙總統計,而不是原樣釋出或只靠研究者切結
- 生成式 AI 客服題:系統要引用歷史交易資料,想從資料層面降低敏感資訊暴露——答案方向是前處理階段先遮罩、去識別化敏感欄位,並最小化提供範圍,別選「靠模型自我約束」或「出事再過濾」
📝 本節掛載 3 題 iPAS 歷屆試題 — 讀完往下到「iPAS 考題練習」直接實戰。
應用場景
評估指標
iPAS 歷屆考題詳解(6 題)
先自行作答,再展開詳解。題目出處均為 iPAS AI 應用規劃師正式考題,著作權屬原主辦單位。
關於ETL(Extract-Transform-Load),下列敘述何者為正確?
- AE 表示將資料直接儲存至目標儲存庫
- BETL 的處理順序可以自由調整為TEL
- CL 表示將目標儲存庫經過反加密處理載入資料
- DT 包括資料的清理與排序
看正解與逐選項詳解
正解:D
某市政府規劃釋出市民用電資料供學術研究使用,資料內容包含用電紀錄與部分 人口統計欄位。考量資料可能涉及可識別個人之資訊,且須符合個人資料保護相 關規範,下列哪一種資料處理方式最為適當?
- A提供完整資料集並透過合約約定研究用途與保密責任
- B僅保留用電數值資料,移除所有其他欄位以避免識別風險
- C對具識別風險的資料欄位進行轉換處理,並移除直接識別資訊
- D僅將資料加密後提供,確保資料在傳輸過程中的安全性
看正解與逐選項詳解
正解:C
某企業規劃導入生成式 AI 客服系統,需處理顧客查詢並引用歷史交易資料。法遵部門在風險評估中指出,系統若不當處理顧客個人資料,可能引發合規與法律責任。若專案初期希望從資料層面降低敏感資訊暴露風險,下列敘述何者最為合理?
- A強化模型輸出審查與遮罩機制,以過濾可能出現的敏感資訊
- B設定 AI 回覆範圍與角色權限,限制其存取特定類型資料
- C將資料集中於加密儲存環境,並加強系統存取控管
- D僅提供必要資料或數據欄位與去識別化策略,減少模型接觸可識別個資
看正解與逐選項詳解
正解:D
某製造企業導入上萬台物聯網(IoT)感測器以進行設備健康監測。系統需在毫秒級回應異常事件,並同時將完整資料保留於雲端供後續 AI 模型訓練與分析。若企業希望兼顧即時性、資料完整性與可擴展性,下列哪一種資料流程設計最符合此目標?
- A感測器 → 雲端 API Gateway → 分散式資料庫 → 批次特徵工程 → 模型推論
- B感測器 → MQTT Broker → 雲端資料倉儲 → 即時儀表板 → 模型再訓練
- C感測器 → 邊緣運算節點 → 流式資料處理框架(Stream Processing Framework)→ 雲端資料湖 → 模型推論
- D感測器 → 本地快取層 → RESTful API → 雲端報表系統 → 模型批次更新
看正解與逐選項詳解
正解:C
某資料工程師在建構 AI 訓練資料處理流程時,需要處理一個 50GB 的 CSV 檔案,其大小遠超過系統可用記憶體。他使用 Python 的 Pandas 進行資料前處理,但直接呼叫pd.read_csv()時出現記憶體溢位(Out of Memory, OOM)錯誤。在不改用其他分散式框架的前提下,下列哪個參數最能有效解決此問題?
- Anrows=10000:限制僅讀取前 N筆資料以避免記憶體溢位
- Busecols=0.5:隨機載入 50%的資料欄位,以減半記憶體使用量
- Cchunksize=10000:分批讀取資料並逐批處理,避免一次載入整個檔案
- Ddtype:指定欄位資料型別以降低記憶體使用量
看正解與逐選項詳解
正解:C
資料分析師載入一份電商交易紀錄的 Pandas DataFrame df,欄位包含 OrderID(訂單編號)、CustomerID(客戶編號)、Category(商品分類)、Revenue(該筆營收);另有一份客戶資料表 customers,包含 CustomerID(客戶編號)與 Region(所在地區)欄位。分析師想將 customers 表中的 Region 欄位加入到 df 交易紀錄中,且「只保留那些在 customers 表中有對應資料的交易紀錄」。下列哪一種合併方式最正確?
- Apd.concat([df, customers], axis=1)
- Bpd.merge(df, customers, on='CustomerID', how='outer')
- Cpd.merge(df, customers, on='CustomerID', how='inner')
- Ddf.join(customers, on='CustomerID')
看正解與逐選項詳解
正解:C