DS 301 實作中心
使用合成的月度分析資料包,練習把 notebook 改寫成 pipeline、處理 data contract 失敗、設計 idempotent 重跑、檢查 observability、演練 rollback,以及撰寫 runbook。
資訊
DS 301 實作資料為合成教學資料,所有來源系統、批次與數值皆為示例,不代表任何真實對象或機構。
注意
請只使用課程提供的合成檔案進行練習。除非獲得授權,切勿將機密的機構或公司資料、個人資料或敏感資料貼入 AI 工具或練習環境;使用真實營運資料前,請先確認所屬機構的規範。
下載實作檔案
月度分析資料包(乾淨版)
DS301_Analytics_Package_Clean.csv
一份月度分析資料:run_id、source_system、batch_id、event_time、ingested_at、entity_id、metric、value、schema_version。用於 Guided Lab。
月度分析資料包(實作版,含挑戰)
DS301_Analytics_Package_Practice.csv
相同欄位結構,但刻意設計了判斷挑戰:late arrival 事件、一次 schema 變更、重複的 batch_id,以及至少一筆違反 contract 的資料。用於實作中心與 Independent Lab。
資料字典(繁體中文)
DS301_Data_Dictionary_zh-TW.csv
分析資料包檔案的欄位型態、單位、粒度、允許值與來源說明(繁體中文)。
Data dictionary (English)
DS301_Data_Dictionary_en.csv
英文版資料字典,欄位與定義與中文版一致。
Guided Lab 起始 Notebook(Notebook → Pipeline 改寫)
DS301_Guided_Lab_Starter.ipynb
附有指引與待完成項目的起始 Notebook,練習把一段探索程式拆成 ingest/validate/transform/analyze/publish 五個 stage。
Independent Lab 起始 Notebook / 範本
DS301_Independent_Lab_Starter.ipynb
用於 Analytics Workflow Canvas + Executable Workflow Prototype + Runbook 的起始 Notebook 與檢核清單範本。
實作任務
實作 A:Notebook Refactor
把一段探索用的 notebook 程式碼,拆成具有明確 input/output 的 function 與 stage。
使用檔案: 月度分析資料包(實作版,含挑戰)、資料字典(繁體中文)
步驟
- 找出目前程式碼中讀取、清理、篩選、彙總的自然斷點。
- 為每個斷點寫一個 function,明確定義輸入型態與輸出型態。
- 確認每個 function 不依賴前一個 cell 遺留在記憶體中的變數。
- 為至少一個容易出錯的 function(例如清理或聚合)撰寫一個簡單測試。
要完成的產出
- 拆分後的 function 清單與各自的 input/output
- 至少一個測試案例
- 重跑其中一個 stage而不影響其他 stage 的示範
實作 B:Data Contract Failure
針對實作資料,定義一份 data contract,並示範它如何在資料違反規則時提早讓 pipeline 失敗。
使用檔案: 月度分析資料包(實作版,含挑戰)、資料字典(繁體中文)
步驟
- 列出必要欄位、允許的 metric 值與允許的缺值比例。
- 寫一個 validate 函式,區分 blocking error 與 warning。
- 對實作資料執行驗證,找出其中違反 contract 的至少一筆資料。
- 說明如果沒有這層驗證,這筆錯誤資料會如何影響下游結果。
要完成的產出
- 一份完整的 data contract 定義
- 驗證函式與其判斷邏輯
- 至少一項被攔下的 blocking error 與其影響說明
實作 C:Idempotent Rerun
檢查一段寫入邏輯是否 idempotent,並修正成安全可重跑的版本。
使用檔案: 月度分析資料包(實作版,含挑戰)、Guided Lab 起始 Notebook(Notebook → Pipeline 改寫)
步驟
- 找出目前寫入輸出的邏輯,判斷它是 append 還是覆寫/替換。
- 重跑同一批輸入兩次,觀察輸出表的列數或總額是否改變。
- 把寫入邏輯改成先刪除同範圍舊結果、再寫入新結果的 idempotent 版本。
- 再次重跑兩次,確認輸出結果與重跑次數無關。
要完成的產出
- 修正前後的寫入邏輯對照
- 兩次重跑前後輸出列數/總額的比較
- 你如何確認寫入邏輯已經是 idempotent 的說明
實作 D:Observability Checklist
為一段 pipeline 加上必要的 observability 紀錄,並檢查記錄是否足以診斷問題。
使用檔案: 月度分析資料包(實作版,含挑戰)、Independent Lab 起始 Notebook / 範本
步驟
- 為 pipeline 加上 run_id,並確認同一次執行的所有 log 都能被串連。
- 在每個 stage 前後記錄 row counts。
- 記錄 validation 結果與資料的 freshness(涵蓋到哪個時間點)。
- 模擬一次資料量異常(例如故意過濾掉大部分資料),確認你的紀錄能不能讓人發現這個異常。
要完成的產出
- 一份包含 run_id、row counts、validation 結果與 freshness 的 log 範例
- 一次模擬異常的偵測紀錄
- 你認為還缺少哪些觀測項目的說明
實作 E:Rollback Scenario
設計一個版本化的輸出機制,並演練當新版本結果有誤時如何 rollback。
使用檔案: 月度分析資料包(實作版,含挑戰)、Guided Lab 起始 Notebook(Notebook → Pipeline 改寫)
步驟
- 設計一個保留前一版輸出的機制(例如版本化的檔案或資料表快照)。
- 發布一個新版本的彙總結果。
- 假設新版本被發現有嚴重錯誤,演練切換回前一版的具體步驟。
- 記錄這次 rollback 演練花了多久、哪些步驟需要人工確認。
要完成的產出
- 版本化輸出的設計說明
- rollback 演練的具體步驟
- 演練後發現的任何流程缺口
實作 F:Runbook Drill
為至少兩種常見的 pipeline 失敗情境撰寫 runbook,並用一個模擬情境測試它是否好用。
使用檔案: 月度分析資料包(實作版,含挑戰)、Independent Lab 起始 Notebook / 範本
步驟
- 列出至少兩種可能的失敗情境(例如上游 API 暫時逾時、資料格式永久性錯誤)。
- 為每種情境寫下判斷方式、處置步驟與升級對象。
- 找一位同學或同事,只依你寫的 runbook(不額外說明)模擬處理其中一個情境。
- 記錄對方在依照 runbook 操作時遇到的任何疑惑或缺漏,並修正 runbook。
要完成的產出
- 至少兩種失敗情境的 runbook
- 一次模擬測試的紀錄
- 依測試結果修正後的 runbook 版本
完成標記只記錄在這個瀏覽器(加入梯次後會同步)。實作成果請保存在你自己的檔案或 Notebook。
同步我的進度加入梯次後,進度可跨裝置保存,講師也能看到