SQL SERVER BI 入門:(1)安裝與基礎概念


SQL SERVER BI 入門

或許有很多同學和我一樣,只是聽說過BI這個詞匯,但如果工作不涉及到數據統計分析或數據挖掘,很難接觸這方面的知識。我以前一直向往能在這方面有所歷練,恰巧最近公司需要做數據統計和分析的工作,這份工作我主動提出來做,榮幸之至。寫這篇文章也是對我最近工作的總結。

 

下載並安裝

我工作選用的SqlServer 2008 R2,由於在自己電腦上寫博客,所以我這里嘗試使用2012版本,順便也能看看哪里不同。 下載地址是http://www.microsoft.com/en-us/download/details.aspx?id=29066如果你的系統是中文的則選擇中文版。

安裝時選擇功能模塊如下:[配圖1]



請注意右下角的Prerequisites for selected features的提示內容,需要4.0,其實還需要3.5

基本概念介紹

數據分析主要包含如下內容:

原始數據庫

  原始數據庫主要是用於一些數據上報的數據存儲,它包含的是最原始的信息,比如一個用戶在什么時間訪問了什么頁面或點擊了哪些按鈕。這些數據可以通過jsas、或后端代碼進行上報。

  這種日志性的數據上報一般量非常大,一天可能就產生幾億條數據,之前我在一家廣告公司呆過,廣告的量大的驚人,因為廣告都是在各大門戶展現的,所以頁面的PV就是廣告的條數,用戶的相關操作還會有數據產生,每天十來G的數據量都不成問題,所以原始數據庫表的設計要注意幾點:

    1、不能有索引(除了主鍵),也不需要索引,因為相關的分析統計都在數據倉庫里進行。

    2、主鍵必須是有序的主鍵,如果是GUID之類的,就無法保證順序,在這數據插入時會調整數據存儲的物理順序,這是非常恐怖的事情,影響速度。

    3、如果數據非常大,要考慮采用分區或分庫存儲。

    4、如果瞬間插入的太多數據庫壓力大,則需要考慮增加一個緩存層來緩解壓力,這便需要編寫服務對緩存層數據進行整理插入到數據庫的工作。這樣也的缺點是萬一緩存服務掛掉,有可能會有數據丟失的情況,可以選用會持久化的緩存服務。總之,這些是需要權衡的。

數據倉庫數據庫
  數據倉庫數據庫,是必須的,所有的統計分析都需要以此為基礎。數據倉庫的表分為兩種:維度表(dimension)和事實表(fact

  1. 維度表
  維度很容易理解。例如,我們想知道每天有多少用戶使用了產品,那么“每天”就是一個維度,因為我們需要安裝“天”來查詢有多少用戶。同樣,年、月、周、季度、地區等都是我們最常見的維度。

  2. 事實表
  事實表的理解可能會模糊一些。一般可以理解為我們要對哪種數據做統計,這種數據事實產生了哪些記錄。比如每個用戶每一個操作,這是一個事實。那么我們對用戶的操作行為做統計的時就需要行為的事實表。

  3. 事實表和維度表的關系
  如果我們使用時間維度對用戶行為做統計,那么事實表必須要有一個時間字段。而時間字段的存儲其實是時間維度表的主鍵ID,而不是真正的時間,如圖:[配圖2]

注意,我的事實表FactUserAction(用戶操作行為事實)的OperateDateint類型,和維度表DimDate建立了關系,而且DimDate把日期拆成了年月日三個字段,因為統計可能需要對年和月進行統計,所以這么設計;他們之間有一個層次關系,我們后面會講。原始表的設計如圖

  細心的朋友可能會發現,事實表的UserAction也是一個int,是的,其實這也是一個查詢維度,只是我們暫時只拿時間做例子。

  4. 如何設計事實表和維度表
  事實表和維度的設計主要是運維和產品人員的需求而決定的。程序員必能因為開發的復雜而拒絕他們的需求。當然,也不能無理的需求。這篇文章就以時間維度的需求做講解吧,這個一般也是必須的需求。

  5. 事實表和維度表的數據填充
  這一項對我們程序員來講是最為簡單的,因為我們可以開發一個服務,定時從原始數據庫把數據按照倉庫的設計重組,並插入。SQLSERVER BI也提供了現有的工具,這種工具稱之為ETLExtraction-Transformation-Loading數據提取、轉換和加載),在SQLSERVERBI里叫SSISSqlServer Integration Service)。

  圖片里三個方塊是從一個表里讀出數據,然后通過一個列的轉換,最后把轉換后的列映射到目標庫的表里,我這里做的是把CreateTime字段轉換成Year Month 和 Day,然后插入到DimDate

  使用ETL要比自己寫導入程序更能方便的和Analysis Services交互。比如導入程序后執行唯獨表,比如各種數據源的集成,非常方便。不過我沒有做深入研究。暫時就不寫這一塊了,有興趣的朋友可以慢慢摸索下。

 

今天就先寫這么多,因為我為了截圖,安裝SQLServer費了好大勁,.NET Framework 3.5總是安裝時下載失敗。我的系統是windows8,需要單獨安裝3.5才行。

大家先了解這些概念,不太明白的概念,可以先百科一下。下節寫關於Analysis services的使用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM