Transcript 設計資料倉儲範例
CHAP 5 設計資料倉儲綱要 利用SQL Server 2000 的 Northwind 資料庫 示範資料庫如何轉換到資料倉儲 產生星狀或雪花綱要 Reference 資料倉儲與Analysis Service SQL Server 2000 OLAP 解決方 案(沈兆陽,文魁) 1 資料庫應用 匯入Northwind(北風資料庫) 2 在SQL Server 2005 匯入SQL Server 2000 的 Northwind(北風資料庫) 請執行程式:SQL2005_Insert_Northwind.sql 5_設計資料倉儲綱要 Northwind 資料庫簡介 Northwind ﹕ 3 一個貿易公司營運所使用的資料庫 是一個OLTP的資料庫 以交易為處理單位 以正規化的方式來設計 擁有較多資料表,但每個資料表擁有的欄位數較少 這是OLTP資料庫的特性之ㄧ 安裝好SQL Server 2000後,此資料庫即存在 5_設計資料倉儲綱要 Northwind 綱要介紹 -含13個資料表(1) 1. 4 Categories:產品類型檔( 4 個欄位,共 8 筆記錄) CategoryID:產品類型 的識別號碼主鍵 CategoryName:產品 類型的名稱 Description:產品類型 的描述 Picture:產品的圖片 2. CustomerCustomerDemo:顧 客所屬類別檔(2個欄位,0筆記 錄) CustomerID:顧客識別號碼 複合主鍵 CustomerTypeID:顧客類別 識別碼複合主鍵 5_設計資料倉儲綱要 Northwind 綱要介紹 -含13個資料表(2) 3. CustomerDemographics:顧 客類別主檔( 2個欄位,0筆記 錄) CustomerTypeID:顧客類 別識別碼主鍵 CustomerDesc:顧客類別 描述 4. Customers:顧客檔( 11個欄 位,共91筆記錄) 5 CustomerID:顧客識別號碼主 鍵 CustomerName:顧客公司名稱 ContactName:聯絡人姓名 ContactTitle:聯絡人職稱 Address:顧客住址 City:城市名稱 Region:地區名稱 PostalCode:郵遞區號 Country:國家名稱 Phone:電話號碼 Fax:傳真號碼 5_設計資料倉儲綱要 Northwind 綱要介紹 -含13個資料表(3) 5. 6 Employees :員工檔( 18個欄位,共9筆記錄) 6. EmployeeID:員工識別號碼(主鍵) LastName:員工姓氏 FirstName:員工名字 Title:員工職稱 TitleOfCourtesy:員工的尊稱(例如:先 生、女士) BirthDate:生日 HireDate:僱用日期 Address:住址 City:城市名稱 Region:地區名稱 PostalCode:郵遞區號 Country:國家名稱 HomePhone:住家電話 Extension:公司內分機號碼 Photo:照片 Notes:員工相關描述 ReportsTo:員工經理的員工號碼 PhotoPath:照片的路徑名稱 EmployeeTerritories :員工 所屬區域檔( 2個欄位,共49 筆記錄) EmployeeID:員工識別號 碼複合主鍵 TerritoryID:員工負責區域 識別碼複合主鍵 P.S. 一個員工可以負責多個區域 5_設計資料倉儲綱要 Northwind 綱要介紹 -含13個資料表(4) 7. Order Details:訂單詳細檔 ( 5個欄位,共2155筆記錄) OrderID:訂單號碼複 合主鍵 ProductID:產品識別碼 複合主鍵 UnitPrice:產品單價 Quantity:訂購數量 Discount:折扣 8. Orders:訂單檔( 14個欄位,共 830筆記錄) 7 OrderID:訂單識別號碼複合主鍵 CustomerID:顧客識別碼複合主 鍵 EmplyoeeID:承辦員工的員工號碼 OrderDate:訂購日期 RequiredDate:訂單的需要日期 ShippedDate:送貨日期 ShipVia:負責貨運公司的識別碼 Freight:貨運的價格(運費) ShipName:送貨姓名(接受者) ShipAddress:送貨住址 ShipCity:送貨的城市名稱 ShipRegion:送貨的地區名稱 ShipPostalCode:送貨的郵遞區號 ShipCountry:送貨的國家名稱 5_設計資料倉儲綱要 Northwind 綱要介紹 -含13個資料表(5) 9. 8 Products:產品檔( 10個欄位,共 10. 77筆記錄) ProductID:產品識別碼主鍵 ProductName:產品名稱 SupplierID:供應商識別碼 CategoryID:產品分類識別碼 QuantityPerUnit:每單位的尺寸、 大小、數量 UnitPrice:產品單價 UuitsInStock:庫存數量 UuitsOnOrder:一次訂貨數量 ReorderLevel:重新訂貨最低庫 存量 Discontinued:是否停售 Region :區域資料檔( 2個欄 位,共4筆記錄) RegionID:區域的識別號 碼主鍵 RegionDescription:區域 的名稱 5_設計資料倉儲綱要 Northwind 綱要介紹 -含13個資料表(6) 11. Shippers :貨運公司資料檔 ( 3個欄位,共3筆記錄) ShipperID:貨運公司的識 別號碼主鍵 CompanyName:貨運公 司的名稱 Phone:貨運公司的電話 號碼 12. Suppliers:供應商資料檔( 12個 欄位,共29筆記錄) 9 SupplierID:供應商的識別號碼 主鍵 CompanyName:公司名稱 ContactName:聯絡人姓名 ContactTitle:聯絡人職稱 Address:住址 City:城市名稱 Region:地區名稱 PostalCode:郵遞區號 Country:國家名稱 Phone:電話號碼 Fax:傳真號碼 Homepage:公司網址 5_設計資料倉儲綱要 Northwind 綱要介紹 -含13個資料表(7) 13. Territories :員工負責區域資料檔( 3個欄位,共53筆記錄) TerritoryID:區域的識別號碼主鍵 TerritoryDescription:區域的描述 RegionID:所屬地區的識別碼 P.S. 一筆Region資料可以對應多筆Territory資料 10 5_設計資料倉儲綱要 Northwind–關聯圖 11 5_設計資料倉儲綱要 需求分析 需求彙總結果 1. 2. 3. 4. 5. 6. 7. 8. 9. 12 針對每一員工做銷售業績分析 針對每一產品做銷售業績分析 針對每一分類的產品做銷售分析 針對每一供應商做產品銷售分析 針對每一顧客做銷售分析 針對每一國家的顧客做銷售分析 針對每一地區的顧客做銷售分析 針對每一城市的顧客做銷售分析 針對年度、季、月做銷售分析 5_設計資料倉儲綱要 歸納需求分析 歸納出有五個索引基準點: 1. 2. 3. 4. 5. 13 顧客: 除了可做單一顧客分析外 可以國別、地區、城市來分析 具有階層的關係 員工:單一員工做分析 產品: 除了可做單一產品分析外 可以產品分類來分析 供應商:單一供應商 時間:為一年、月、日的階層關係 5_設計資料倉儲綱要 產生維度資料 事實上,維度就是一種索引方式,所以歸納出有五種 維度資料: 1. 2. 3. 4. 5. 14 顧客維度 員工維度 產品維度 供應商維度 時間維度 5_設計資料倉儲綱要 Northwind資料庫 -資料篩選 & 分析維度(1) 篩選原來的13個檔案及欄位後, 4. Customers:顧客檔( 6個 欄位,共91筆記錄) 留下需要的8個檔案,分別為: 1. Categories:產品類型檔( 2 CustomerID:顧客識別號碼 個欄位,共 8 筆記錄) 主鍵 CustomerName:顧客公司 CategoryID:產品類型 名稱 的識別號碼主鍵 ContactName:聯絡人姓名 CategoryName:產品 City:城市名稱 類型的名稱 Region:地區名稱 屬於產品維度 Country:國家名稱 屬於顧客維度 其中Country、Region、City 具有階層式的關係 15 5_設計資料倉儲綱要 Northwind資料庫 -資料篩選 & 分析維度(2) Employees :員工檔( 8個欄位, 7. Order Details:訂單詳細檔( 5個欄 共9筆記錄) 位,共2155筆記錄) EmployeeID:員工識別號碼 OrderID:訂單號碼複合主鍵 主鍵 ProductID:產品識別碼複合 LastName:員工姓氏 主鍵 FirstName:員工名字 UnitPrice:產品單價 Title:員工職稱 Quantity:訂購數量 City:城市名稱 Discount:折扣 Region:地區名稱 其中OrderID、UnitPrice、 Country:國家名稱 Quantity、Discount不會隨時間 ReportsTo:員工經理的員工 而改變;且不會以訂單號碼、訂 號碼 購數量、折扣為基準來分析資料 屬於員工維度 ,所以是事實資料 排除Country、Region、City具有階 其中ProductID屬於產品維度 層式的關係,因為不會對員工來自 5_設計資料倉儲綱要 何處感興趣 5. 16 Northwind資料庫 -資料篩選 & 分析維度(3) 8. Orders:訂單檔( 5個欄位, 共830筆記錄) 17 9. Products:產品檔( 6個欄位,共 77筆記錄) OrderID:訂單識別號碼複 ProductID:產品識別碼主鍵 合主鍵 ProductName:產品名稱 CustomerID:顧客識別碼 SupplierID:供應商識別碼 複合主鍵 CategoryID:產品分類識別碼 EmplyoeeID:承辦員工的員 QuantityPerUnit:每單位數量 工號碼 UnitPrice:產品單價 OrderDate:訂購日期 ShipVia:負責貨運公司的識 其中UnitPrice、QuantityPerUnit 不會隨時間而改變,且不會以產品 別碼 單價、每單位數量為基準來分析資 其中OrderID不會隨時間而改變 料,所以是事實資料 ,且不會以訂單號碼為基準來 分析資料,所以它是事實資料 其中ProductID、ProductName、 CategoryID屬於產品維度 其中CustomerID屬於顧客維度 其中EmployeeID屬於員工維度 其中SupplierID屬於供應商維度 其中Orderdate屬於時間維度 5_設計資料倉儲綱要 Northwind資料庫 -資料篩選 & 分析維度(4) 11. Shippers :貨運公司資料 12. Suppliers:供應商資料檔 檔( 2個欄位,共3筆記錄) ( 4個欄位,共29筆記錄) ShipperD:貨運公司的識 別號碼主鍵 CompanyName:貨運公 司的名稱 SupplierID:供應商的識別號 碼主鍵 CompanyName:公司名稱 City:城市名稱 Country:國家名稱 因為Orders資料表不分析 ShipVia欄位,所以排除整 排除City與Country,因為需求 個Shippers資料表 分析沒有要求供應商要以國別 及城市來分析資料 其中SupplierID、 CompanyName屬於供應商維 度 18 5_設計資料倉儲綱要 設計事實資料表-Salses 事實資料: 維度資料: 單價存在於 Product 資料表 總銷售金額必須透過現存的欄位計算而得,稱為衍生欄位 事實資料表尚需包含索引所使用的欄位 19 折扣:分析哪一折扣範圍的產品銷售狀況最佳 單價:分析哪一單價範圍的產品銷售狀況最佳 關心:一個產品在一個訂單中的總銷售金額及該產品的單價 OrderID 與 Quantity 是因公司銷售行為而產生出來的,所以一定 是事實資料 員工號碼、產品號碼、供應商號碼、顧客號碼、以及訂購日期 5_設計資料倉儲綱要 設計事實資料表-Salses -欄位 事實資料表:Sales 20 欄位: EmployeeID:員工號碼主索引鍵欄位 來自Employees資料表 ProductID:產品號碼主索引鍵欄位 來自Products資料表 SupplierID:供應商號碼主索引鍵欄位來自Suppliers資料表 CustomerID:顧客號碼主索引鍵欄位 來自Customers資料表 OrderDate:訂購日期主索引鍵欄位 來自Orders資料表 UnitPrice:產品單價事實量值欄位 來自Order Details資料表 Total:單項總價Total=Quantity * UnitPrice *(1.0-Discount) 事實量值欄位 Quantity:訂購數量事實量值欄位 來自Order Details資料表 Discount:折扣 事實量值欄位 來自Order Details資料表 來源資料表: Orders、Order Details、Employees、Products、Suppliers、 Customers 5_設計資料倉儲綱要 設計事實資料表-Salses - SQL敘述 21 SQL敘述: select e.EmployeeID, p.ProductID, s.SupplierID, c.CustomerID, o.OrderDate, od.UnitPrice, od.Quantity * od.UnitPrice * (1.0- od.Discount) total, od.Quantity, od.Discount From Orders o, [Order Details] od, Employees e, Products p, Suppliers s, Customers c where o.orderID=od.OrderID and o.EmployeeID=e.EmployeeID and o.CustomerID=c.CustomerID and od.ProductID=p.ProductID and p.SupplierID=s.SupplierID 5_設計資料倉儲綱要 設計員工維度資料表-Employee 員工維度資料表:Employee 22 欄位: EmployeeID:員工號碼主索引鍵欄位 Name:員工姓名 Name=FirstName + ’ ‘ +LastName Title:員工職稱 ReportsTo:員工經理的員工號碼 來源資料表: Employees 資料綱要:星狀綱要 SQL敘述: select EmployeeID, FirstName+’ ‘+LastName Name, Title, ReportsTo from Employees 5_設計資料倉儲綱要 設計產品維度資料表 產品維度資料表-Product 產品維度資料表: Product 23 欄位: ProductID:產品號碼主索引鍵欄位 CategoryID:產品分類號碼 ProductName:產品名稱 QuantityPerUnit:每單位數量 來源資料表: Products 資料綱要:雪花綱要 SQL敘述: select ProductID, CategoryID, ProductName, QuantityPerUnit from Products 5_設計資料倉儲綱要 設計產品維度資料表 產品分類維度資料表-Category 產品分類維度資料表: Category 24 欄位: CategoryID:產品分類號碼主索引鍵欄位 CategoryName:產品分類名稱 來源資料表: Categories 資料綱要:雪花綱要 SQL敘述: select CategoryID, CategoryName from Categories 5_設計資料倉儲綱要 設計供應商維度資料表-Supplier 供應商維度資料表: Supplier 欄位: SupplierID:供應商號碼主索引鍵欄位 SupplierName:供應商名稱 SupplierName = CompanyName 25 來源資料表: Suppliers 資料綱要:星狀綱要 SQL敘述: select SupplierID, CompanyName SupplierName from Suppliers 5_設計資料倉儲綱要 設計顧客維度資料表-Customer 顧客維度資料表: Customer 26 欄位: CustomerID:顧客號碼主索引鍵欄位 CustomerName:公司名稱 CustomerName = CompanyName ContactName:聯絡人 City :城市名稱 Region:地區名稱 Country:國家名稱 來源資料表: Customers 資料綱要:星狀綱要 SQL敘述: select CustomerID, CompanyName CustomerName, ContactName, City, Region, Country from Customers 階層欄位: Country → Region → City 5_設計資料倉儲綱要 設計時間維度資料表-Time 時間維度資料表: Time 27 欄位: OrderDate:訂購日期主索引鍵欄位 來源資料表: Orders SQL敘述: select DISTINCT OrderDate from Orders 5_設計資料倉儲綱要 星狀雪花綱要 28 一個資料倉儲最適合的綱要類型: 將反正規化的星狀綱要與正規化的雪花式綱要合併一起使用, 而成為星狀雪花綱要 分析上述五個維度資料表 四個維度採星狀綱要: Employee 員工維度資料表 Time 時間維度資料表 Supplier 供應商維度資料表 Customer 顧客維度資料表 產品維度採雪花式綱要,包含了兩個資料表 Product 與 category 5_設計資料倉儲綱要 Northwind_DW資料倉儲的資料表間關係 -主索引鍵及外部索引鍵 (外來鍵)對應關係 P 5-38 主索引鍵(主鍵) 29 外來鍵 資料表 欄位 資料表 欄位 Time OrderDate Sales OrderDate Customer CustomerID Sales CustomerID Employee EmployeeID Sales EmployeeID Supplier SupplierID Sales SupplierID Product ProductID Sales ProductID Category CategoryID Product CategoryID 5_設計資料倉儲綱要 Northwind_DW資料倉儲- 事實資料表/維度資料表的關連性(關聯圖) P 5-37 事實資料表 同一個維度 雪花結構 30 5_設計資料倉儲綱要 多重維度綱要 - 常見的查詢 31 分析資料時不以單一維度為基準,而以多個維度為依據 例如:Northwind_DW資料倉儲,常見的查詢如下: 查詢SUPPLIER1供應商於1997年提供了多少金額的產品 查詢SUPPLIER1供應商於1997年提供了多少金額的 PRODUCT1產品 查詢EMPLOYEE1員工於1997年銷售了多少金額的 PRODUCT1產品 查詢EMPLOYEE1員工於1997年銷售了多少金額的 SUPPLIER1供應商的產品 查詢EMPLOYEE1員工於1997年銷售了多少金額的產品給 CUSTOMER1顧客 5_設計資料倉儲綱要 多重維度綱要 - CUBE CUBE(多重維度綱要): 32 每個查詢都用到多重的維度,應將多個維度集合在一起成為 一個單位,且一併加以考量而成為一個CUBE(多重維度綱 要) 5_設計資料倉儲綱要