企業普遍部署 SQL Server 儲存核心業務資料,但業務人員習慣使用 Excel 進行分析、報表製作與資料探勘。本文示範如何將 SQL Server 資料無縫整合至 Excel,建立動態連結的報表模型,減少對 DBA 的依賴並提升業務自助分析能力。
| 方法 | 技術基礎 | 資料鮮度 | 技術門檻 | 適用場景 |
|---|---|---|---|---|
| Excel 資料連結 (舊版) | ODBC/OLE DB + .dqy/.iqy | 手動重新整理 | 低 | 靜態報表、單機使用 |
| Power Query (Get & Transform) | M 語言 + 資料模型 | 排程/手動重新整理 | 中 | 現代 Excel (2016+)、自我服務 BI |
| Power Pivot + DAX | 記憶體內分析引擎 | 模型重新整理 | 中高 | 大量資料、複雜計算、多表關聯 |
| Analysis Services 表格式模型 | 企業級語義模型 | 伺服器端排程 | 高 | 多人共用、治理需求、單一真相來源 |
SQL_Northwind → 伺服器:(local)NorthwindSQL_Northwind → 輸入認證.xlsx (含連結資訊) 或 .iqy (查詢檔可分享)prod-sql01、資料庫:NorthwindSELECT * FROM Orders WHERE OrderDate > '2024-01-01')let
Source = Sql.Database("prod-sql01", "Northwind"),
Orders = Source{[Schema="dbo", Item="Orders"]}[Data],
Filtered = Table.SelectRows(Orders, each [OrderDate] >= #date(2024,1,1)),
AddedCustom = Table.AddColumn(Filtered, "YearMonth", each Date.ToText([OrderDate], "yyyy-MM")),
Grouped = Table.Group(AddedCustom, {"YearMonth"}, {{"TotalAmount", each List.Sum([Freight]), type number}})
in
Grouped
Customers、Orders、Order Details、Products、CategoriesCustomers[CustomerID] 1:* Orders[CustomerID]Orders[OrderID] 1:* Order Details[OrderID]Order Details[ProductID] *:1 Products[ProductID]Products[CategoryID] *:1 Categories[CategoryID]Total Sales := SUMX('Order Details', [UnitPrice] * [Quantity] * (1 - [Discount]))
YoY Growth :=
VAR CurrentYear = CALCULATE([Total Sales], 'Date'[Year] = YEAR(TODAY()))
VAR PriorYear = CALCULATE([Total Sales], 'Date'[Year] = YEAR(TODAY()) - 1)
RETURN DIVIDE(CurrentYear - PriorYear, PriorYear, BLANK())
Top 5 Products :=
TOPN(5,
SUMMARIZE('Order Details', Products[ProductName], "Sales", [Total Sales]),
[Sales], DESC)
本文所有範例均基於 SQL Server 內建 Northwind 範例資料庫,包含:Customers、Orders、Order Details、Products、Categories、Employees、Shippers、Suppliers 等核心業務實體。
Excel_Reader,僅授與 SELECT 權限LEFT([Email],3) & "***@***")從傳統 ODBC 連結到 Power Query + Power Pivot + DAX,Excel 已進化為強大的自我服務 BI 前端。配合 SQL Server 後端,企業可建立「IT 治理後端 + 業務自助前端」的雙模式 BI 架構,大幅降低報表開發積壓並提升決策時效。