SQL 資料準備
BI 工具再強大,資料沒準備好也沒用。你在 Looker Studio 拉了一張折線圖,結果資料有空值、粒度不對、欄位名稱亂七八糟——最後花的時間比手動做 Excel 還多。
- 資料準備 = 用 SQL 把原始資料整理成 BI 工具能直接吃的格式
- 這是 BI 流程中最花時間的一步(通常佔 60-80%)
- 準備得好,後面拉儀表板就是拖拖拉拉的事
寬表 vs 窄表
BI 工具偏好的格式取決於你要做什麼圖表:
| 格式 | 結構 | 適合場景 | 範例 |
|---|---|---|---|
| 寬表 | 每個指標一欄 | KPI 卡片、多指標比較 | date, revenue, orders, aov |
| 窄表 | 指標名稱和值各一欄 | 篩選器、動態圖表 | date, metric_name, metric_value |
大多數情況下,BI 工具偏好寬表——一行就是一個觀察單位(一天、一個客戶、一個商品),每欄是一個指標。
維度 vs 指標
儀表板上的每個欄位不是維度就是指標:
| 類型 | 說明 | 範例 | 在 SQL 中 |
|---|---|---|---|
| 維度(Dimension) | 分類、篩選用的欄位 | 日期、管道、類別、地區 | GROUP BY 的欄位 |
| 指標(Metric) | 要衡量的數字 | 營收、訂單數、轉換率 | SUM / COUNT / AVG 的結果 |
口訣:維度切資料,指標算資料。
日期維度表
專業的 BI 系統都有一張「日期維度表」,讓你可以按年、季、月、週、星期幾來分析:
資料粒度
粒度(Granularity) = 每一行代表什麼層級的資料。
| 粒度 | 每行代表 | 行數 | 適合分析 |
|---|---|---|---|
| 訂單明細 | 一筆訂單 | 最多 | 個案追蹤 |
| 日 | 一天 | 適中 | 趨勢、異常偵測 |
| 週 | 一週 | 少 | 短期趨勢 |
| 月 | 一個月 | 最少 | 長期趨勢、KPI 報表 |
粒度越細,資料量越大,圖表越雜。儀表板的第一頁通常用「月」或「週」,下鑽頁面才用「日」。
動手做:準備一張寬表給 BI 用
目標:做一張「日期 × 管道 × 指標」的寬表,每一行是某天某個管道的匯總數據。
先看基本的日營收寬表:
加上商品類別維度,做成「日期 × 類別」的寬表:
用 CASE WHEN 把類別攤成欄位(交叉表/樞紐表):
AI 協作:學了這個,跟 AI 怎麼配合?
資料準備是最適合請 AI 幫忙的環節——重複性高、邏輯明確、容易驗證。
你的人類優勢:
- 你知道 BI 工具需要什麼格式(寬表還是窄表?粒度到日還是月?)
- 你能判斷哪些維度是業務上有意義的
- 你能檢查準備好的資料是否合理(數字對不對?有沒有遺漏?)
可以這樣跟 AI 說:
我要做一張 Looker Studio 的日營收儀表板,資料來源是 orders 表和 products 表。幫我寫一個 SQL,輸出格式是每天一行,欄位要有:日期、訂單數、不重複客戶數、總營收、客單價。只算已完成的訂單。
練習題
互動示範
挑戰任務
準備日營收寬表:每天的訂單數、不重複客戶數、營收、客單價(顯示 order_date、order_count、unique_customers、revenue、aov),只算 completed,按日期排序
準備「日期 × 類別」營收表:每天每個商品類別的銷售數量和營收(顯示 order_date、category、items_sold、revenue),只算 completed,按日期和類別排序