2013年12月31日 星期二

異動資料擷取

什麼是「異動資料擷取」

在 DW 的設定過程中,有些來源資料表會隨著時間不停的在變更,例如訂單資料表。 若要將這些變更定期載入到 DW 中,不可能每次都 Copy 整個來源快照集,因為這樣會耗費較多時間和資源。 所以「遞增載入」(Incremental Load)的需求就此產生,也就是每次執行 ETL 時只會轉移新增或異動的資料。

在處理這類問題時,你可以會遇到情況:

  • 你可以區分出何謂新的資料,所以,你只要轉移新增或異動的資料即可。
  • 你無法區分新舊的界線,但是你可以區分特定區間的資料,例如每次轉移特定月或特定天的資料。
  • 沒有任何資訊可以讓你區分新舊資料的界線。

本章節將介紹幾種方法來解決「異動資料擷取」的問題。

2013年12月24日 星期二

緩時變維度

緩時變維度(Slowly Changing Dimensions, SCD)

當 OLTP 資料庫中的資料發生變更時,如何在 DW 中適當的反應出這個資訊,這就是緩時變維度要解決的問題。 例如:因為每個業務員有其所屬的銷售區域,所以我們可以由銷售員的角度,來檢視各區的報表。可是如果這個銷售員轉換了銷售區域,那該時何來處理這樣子的變化,以反應出正確的報表結果。

「緩時變維度」問題是設計 DW 時很常遇到的狀況,在 SSIS 中,你除了可以在 Control Flow 和 Data Flow 中自訂解決方法外, 最簡單的方法,就是直接使用 Slowly Changing Dimension Transformation 來簡化處理緩時變問題。

變數、運算式、主要封裝

2013年12月19日 星期四

SSIS安裝

由 SQL Server 2005 開始,新的 SSIS 平台取代了原本的 DTS 功能,你可以在這個平台上執行資料整合與工作流程作業。 而 SSIS 的核心元素就是「SSIS Service」,無論封裝是部署到檔案系統或者資料庫系統,所有的封裝都會掛載到這個服務之中,由該服務負責執行。

不過,到了 SQL Server 2012 ,「SSIS Service」這個服務程式就不再是必須的,它的存的,只是為了回溯相容於舊的封裝部署模式。 而封裝的管理與執行都由新的服務程式「SSIS Server」負責,它就是 SQL Server 執行個體本身,只不過要在執行個體上,特別掛載 SSISDB catalog 。 因為所有的 project, package, parameter 等等的資料,都儲存在這個 catalog 之中。

Lab5:資料流程設計2

前一個練習中,我們已經可以將資料 ETL 到倉儲資料庫。 在這個練習中,我們將變換一些轉換技巧,來提升整個 ETL 轉換過程的執行效率。

Lab4:資料流程設計

在建立倉儲資料庫時,常會需要使用到 Stage 資料表,所以底下的 Lab 一開始會使用三個簡單的方法,來練習(1)如何在 Data Flow 將來源資料 ETL 到 Stage 資料表。 (2)再使用較進階的方法將 Stage 資料匯整成倉儲資料庫所要的資料。 (3)最後再練習如何在 Data Flow 中,判斷一筆資料是要新增或更新到倉儲資料庫。

2013年12月15日 星期日

Data Flow

Control Flow

控制流程(Control Flow)是 SSIS package 中很重要的元素。 每一個 SSIS package 都會包含一個「控制流程」和數個「資料流程」構成的。

SSIS 中的「控制流程」,大至包含以下三種不同類型的元素:

  • 工作(Tasks):負責內容的執行。
  • 容器 (Containers):結構化封裝內容。
  • 優先順序條件約束(Precedence Constraints) Constraints:控管工作或容器的執行順序。

建立 SSIS 專案

要建立倉儲資料,就一定會用到資料轉移。 要轉移資料,使用匯出匯入精靈是最方便的,但是如果有下列情況,它就變的不太好用。 例如:轉移資料前必須做適當的資料修改或資料轉換,或者轉移的資料必須與目標中已存在的資料做合併。 而 SSIS 正是用來協助執行資料轉移的好工具。

前言

資料倉儲資料載入

Loading large fact tables can be a problem. You have only a limited time window in which to do the load, so you need to optimize the load operation. In addition, you might be required to track the loads.

資料倉儲效能維護

Data warehouses are often very large, so you have to deal with performance problems. You can use index, data compression, columnstored indexed, T-SQL query skill ... to enhance performance.

2013年12月13日 星期五

Lab3:控制流程設計

若要使用 SSIS 來設計 ETL 執行工作, 首要目標就是決定使用何種 Task 來處理需求, 然後選擇適當的 Container 來優化效能。

底下例子練習,我們將練習如何由指定目錄中讀取 .csv 檔案, 並進行匯入到資料庫的操作。 如果執行成功,將檔案搬移到 data_success 目錄, 如果執行失敗,將檔案搬移到 data_failed 目錄。

2013年12月10日 星期二

Lab2:建立倉儲資料庫

在以下的練習中,我們將建立一個 DW 資料庫,並使用 AdventureWorksDW2012 資料庫當做資料來源執行 ETL。

2013年12月4日 星期三

資料倉儲設計

建構資料倉儲,就是要完成 ETL (extrac-transform-load)。 也就將資料從來源端經過萃取(extract)、轉置(transform)、載入(load)至目的端的過程。 而 SSIS 就是用來協助完成這項作業的工具。

2013年12月1日 星期日

資料倉儲簡介

Terminology

  • LOB:line-of-business
  • OLTP:online transational processing
  • OLAP:online analytical processing
  • SSAS:SQL Server Analysis Service
  • SSIS:SQL Server Integration Service
  • SCD:Slowly Changing Dimension
  • CDC:Change Data Capture
  • DQS:Data Quality Services
  • MDS:Master Data Service
  • BISM:Business Intelligence Semantic Model
  • DAX:Data Anaysis Expression, The query in the BISM tabular model
  • MDX:Mulit-Dimensional Expression, The query for the SSAS dimensional model

Tools

  • SSIS:SQL Server Integration Services
  • BIDS:Business Intelligence Development Studio (support VS2008 , SQL2008)
  • SSDT:SQL Server Data Tools (support VS2010)
  • DTS:Data Transformation Services (SQL2000)