商業智能:籌劃您的首個Microsoft BI解決方案
大多數數據庫管理員 (DBA) 在管理其組織的數據和 Microsoft SQL Server 實現時都遇到了某種形式的商業智能 (BI)。許多其他不具有 DBA 職責的 IT 專業人員可能聽說過 BI,但并未切身體驗過 BI,甚至完全不清楚什么是 BI。在本文中,您將了解到究竟什么是 BI。一旦您了解 BI 技術的真正用途以及如何在 Microsoft BI 平臺上構造 BI 解決方案,您就會知道為什么 BI 不僅僅適用于 DBA。如果您了解 BI,就能夠在您組織的 BI 計劃出現(這些計劃將出現)時更好地支持這些計劃,并且您將了解如何使用 BI 來跟蹤和分析與您的角色相關的數據,從而使您的工作更加輕松,并加深對這些數據的理解。
本文是一系列介紹 Microsoft BI 堆棧的文章的第一篇。在這篇文章中,我定義了 BI 并簡要描述了 BI 解決方案的高級體系結構。我還講解了構建 BI 解決方案的過程。若要深入了解本文中提到的 SQL Server BI 技術,您可以閱讀本期雜志中由 Derek Comingore 編寫的隨附文章(請見“為 BI 解決方案構建數據基礎”)和下期雜志中由 Scot Reagin 和我編寫的隨附文章。
什么是 BI?
幾年前,在我和別人合著 Business Intelligence:Making Better Decisions Faster(《商業智能:更快地做出更好的決策》,Microsoft Press,2002)時,我的同行就哪些技術應歸入 BI 的范疇并納入本書覆蓋范圍這個問題的意見很不統一,我對此十分驚訝。聽到 BI 專業人員就哪些工具是 BI 工具,哪些工具不是 BI 工具發表了不同的意見使我受到了啟發。IT 行業中仍存在著這樣的觀念差異,并且很多人還在繼續爭論 BI 的定義。在我看來,BI 既與業務流程有關,也與技術有關,因此我將從這個角度來開始定義 BI。
作為一個業務流程,BI 是您為收集和分析數據而執行的一系列活動,您可以通過與他人共享分析結果來做出更好的決策并增強您的業務。無論您是需要信息以決定如何使日常工作更高效還是需要為長期規劃(如下一年的預算)提供支持,您用來查找、傳輸、格式化和研究數據的步驟都是 BI 的一部分。此外,BI 還包括用于使結果可供日后參考的過程,這樣您和其他人便能夠在研究這些數據后估計您的決策所產生的影響。一般來說,BI 是一個迭代過程。您可以分析數據來了解發生的事情,可以采取措施來確保始終發生好的事情并避免發生壞的事情,然后可以分析數據來確定您的措施是讓事情變得更好還是更差了,以及外部因素是幫助還是阻礙了您的工作。
由于 BI 具有如此廣泛的定義,您每天甚至在記下少量信息或創建列表來幫助您做出決策時也會用到 BI。通過將技術引入到您用來收集、分析和共享信息的部分或所有業務流程中,可以讓這些流程更高效。在采用 BI 技術時,旨在從小處著手的組織通常會先使用該技術來解決特定問題。隨著時間的推移,組織會將重心轉變為在整個組織中發布信息,從而使 BI 技術的使用范圍逐漸擴大。隨著其 BI 策略的日趨成熟,組織通常會獲得更復雜的工具,以便能更好地與數據進行交互并更深入地研究數據。
查詢您的公司數據庫時出現了什么問題?
在 BI 的任何定義中,數據始終是重點。您可能想知道,在您只需查詢組織的一個或多個數據庫便能獲得所需數據時,為何還要費心創建 BI 解決方案?在以下情況下,您可能不需要正式的 BI 解決方案:您是您正在收集的數據的唯一使用者,您有訪問公司數據庫的工具、技能和安全權限,您需要的所有數據都在這些源中。相比之下,如果您需要定期與技術技能和安全權限有所不同的其他人共享信息,則需要創建一個易于使用和維護的 BI 解決方案。您還需要考慮的是,當您的同事獲悉這個靈巧的 BI 解決方案后,他們也會想使用它。為了滿足這個預期需求,您的解決方案應一開始就是可擴展的。
從表面上看,允許公司內部的每個人通過運行報告來從企業數據庫獲取數據可能看起來是個好主意,但這個方法將不會在 DBA 中廣受歡迎。他們會告訴您,直接查詢企業數據庫可能會引發一些問題。以下是幾個更常見的問題:
如果組織的數據以不同格式存儲在各個平臺上,則將這些數據整合成一類對分析很有用的常見格式可能是一大難題。無法將數據從源表直接復制到常見目標表中,而必須在存儲數據之前以某種方式操作數據。
數據定義在多個數據庫之間可能是不一致的,并且難以協調看起來類似的數據。例如,可以按照一組業務規則來計算銷售數據庫中的收益,但會受到總帳數據庫中的一組完全不同的業務規則的約束。
可能已為每個數據庫創建了結構并進行了優化,以便插入數據或執行查詢。即使您只需要查詢一個數據庫,運行分析查詢通常也需要匯總大量數據,這是一項需要耗費大量數據庫資源的操作。因此,查詢的執行時間可能較長,并會與執行插入、更新或查詢操作的其他應用程序爭用資源。
歷史數據通常在企業數據庫中存檔而不是無限期地維護。如果您需要查看隨時間變化的趨勢(一個常見的 BI 活動),您的解決方案可能必須成為一個不在企業數據庫中保存的數據的存儲庫。
企業數據庫可能沒有分析所需的某些數據。這些數據可能以平面文件、電子表格或非結構化數據格式(如 Microsoft Word 文檔)的形式存在。獲取用戶存儲在其本地計算機或大腦中的信息會更加棘手。
即使數據可用,質量問題有時也意味著您無法從源直接使用它。您可能需要下載數據并對其進行清理,然后才能分析數據。除非可以在源中清理數據,否則每當您訪問數據時都需要手動清理它 - 確保您每次都應用相同的規則。此外,您無法確保使用相同數據的其他人都會應用相同規則來清理數據。
為了解決與數據訪問相關的這些問題,BI 解決方案通常會包含一個為保存用于分析的數據而專門創建的數據庫。擁有這樣一個數據庫就意味著您可以避免在生成數據的活動和使用數據的活動之間出現任何資源爭用問題。進一步來說,您可以重構數據,使匯總數據的查詢能更快地運行。當您需要合并不同數據源中的數據時,您可以對這些數據進行集中管理,并應用業務邏輯以將這些數據設為含義一致的常見格式。您也可以將來自數據庫之外的其他源(如 XML 文檔或電子表格)的數據合并到此中心位置。創建單獨的數據庫的另一個好處是,您可以在從源數據庫中清除歷史數據后根據需要保留歷史數據。最后,您可以自動執行清理和增強數據的過程以便分析,從而確保每次訪問數據時都應用相同的規則
針對決策制定的支持
BI 解決方案不應僅限于幫助您更好地訪問數據,還應專門支持您的決策制定工作。一般而言,BI 解決方案應幫助您評估并響應業務條件,無論您是需要有關整個組織的全面數據還是需要某個部門、工作組或單人團隊的局部數據。實際上,從數據的匯總視圖快速移動到數據的詳細視圖這一能力是 BI 中的一項重要功能。
BI 解決方案旨在讓您將時間花在分析數據并尋求問題的答案上,而不是花在跟蹤、合并、重新格式化和協調數據本身上。當您有充足的時間來分析數據時,您通常可以盡早發現問題并采取措施來遏制消極趨勢。您還可以使用 BI 來發現看上去不相關的數據點之間的關聯,然后改變策略以詳細分析節省的資金或收益。您每天在工作時所做的每個決策(無論您是要解決問題還是要為將來做規劃)都會直接或間接地轉換為公司的成本或收益。
運行中的 BI
從理論上理解 BI 已經很好了,而查看運行中的 BI 可以真正幫助您了解它的好處。為了向您說明 BI 的工作原理,本系列文章中的其他三篇文章描述了為一家名為 Adventure Works 的虛構公司開發 BI 解決方案的過程。在本文的結尾,我將說明如何獲取用于 Adventure Works 的示例數據庫,Adventure Works 是一家虛構的自行車制造商,其產品銷往世界各地。該公司的銷售人員負責將其產品批發給經銷商,如小型自行車商店或大型倉儲式專營店。Adventure Works 也會通過 Internet 向個人客戶銷售產品。Adventure Works 數據提供了大量很適合 BI 解決方案的分析機會。
請記住,BI 解決方案旨在支持決策制定。明確這一點后,我們來看看 Adventure Works 在做出關鍵決策之前需要回答的幾類問題:
哪一種銷售渠道創造的利潤更多?Adventure Works 必須決定是否聘用更多的銷售人員,以便與更多的經銷商建立關系或擴大其 Internet 銷售業務。為了幫助指導這個決策,分析人員必須能夠比較一段時間內經銷商和 Internet 站點的銷售業績。分析人員需要比較的銷售業績數據點(稱為度量)包括銷售額、訂單數量和利潤率。利潤率的向好趨勢是最重要的度量,因為如果這些銷售導致了凈虧損,則即使銷售額(以美元或已售單元數為單位)很高,公司也不會實現盈利。
對特定產品的需求是增加還是減少了?Adventure Works 必須使生產水平與銷售需求保持一致。如果對某些產品的需求增加了,Adventure Works 就必須調整其制造流程,以確保有更多的這類產品可供銷售,從而提高銷售業績。如果對其他產品的需求減少了,Adventure Works 就必須降低產量或者停產,以免在供大于求的情況下進行虧本銷售。
即使您的工作不需要分析銷售數據,我仍鼓勵您在我們為 Adventure Works BI 構建解決方案時也跟著這樣做。您可以將本系列文章中所述的同一設計和開發原則應用到您自己的數據中。
Microsoft BI 堆棧
現在,讓我們進一步了解一下 BI 的技術體系結構。Microsoft BI 堆棧為您提供了構建、管理和使用 BI 解決方案時所需的一切工具。SQL Server 2008 是作為承載數據市場或數據倉庫的數據平臺的堆棧的基礎。數據市場必須是特定于主題的數據存儲。數據倉庫是包含多個主題的數據的企業范圍內集合。數據市場和數據倉庫之間的界線比較模糊,但您不必擔心無法區分它們。在本系列文章中,我使用了術語“數據市場”。(雖然本系列文章涉及的是 SQL Server 2008,您還可以使用 SQL Server 2005 構建類似的 BI 解決方案,其 BI 組件與提供的說明相比經過了少量修改或未經任何修改。)
SQL Server 2008 包括三個 BI 組件:Integration Services (SSIS)、Analysis Services (SSAS) 和 Reporting Services (SSRS)。這些組件分別利用數據集成功能、多維數據庫支持和數據表示層來擴展數據平臺。圖 1 說明了 BI 解決方案中各個組件之間的關系。
圖 1 BI 解決方案中的 SQL Server 2008 組件
在您設計數據市場的物理結構后,可以使用 SSIS 向其中填入從其他數據源提取的數據。SSIS 提供了自動執行以下過程所必需的工具:清理數據、合并來自多個源的數據以及將數據轉換為適合分析的結構。您可以使用 SQL Server 代理來安排定期執行這些過程。Derek Comingore 在其有關 SSIS 的文章中的第 31 頁中,說明了如何為 BI 解決方案開發提取、轉換和加載 (ETL) 過程。
通過將 SSAS 數據庫添加到您的 BI 解決方案,您可以支持更復雜且高性能的交互式查詢。可以使用 SSAS 將關系數據復制到名為多維數據集的多維數據庫結構中。設計完善的多維數據集可通過添加索引和摘要表的功能等效項(稱為“聚合”)來優化臨時查詢的數據以返回查詢結果,此查詢方法的速度相較于對關系數據庫執行的可比較查詢的速度將按指數方式增長。還可以將復雜的計算邏輯嵌入多維數據集中以簡化查詢,該查詢原本在使用關系數據源時需要復制數百行 Transact-SQL 代碼。利用多個前端工具(稱為多維數據集瀏覽器),您無需編寫任何代碼即可查詢多維數據集。在下一期雜志中,Scot Reagin 將向您介紹如何開發作為 BI 解決方案的一部分的多維數據集。
無論您是要將數據存儲到 SQL Server 數據市場還是 SSAS 多維數據集中,都可以將 SSRS 添加到解決方案體系結構中以使數據對用戶可用。SSRS 是一個包含工具的報告平臺,這些工具可用于開發報告,通過集中式管理基礎結構來保護和管理已發布的報告以及支持用戶訪問報告。可以使用 SSRS Web 應用程序或 Microsoft Office SharePoint Server 2007 (MOSS) 來查看報告,可以使用訂閱功能來通過電子郵件接收報告,或調用您應用程序中的 SSRS Web 服務來顯示報告。報告的默認視圖將以 HTML 格式顯示,但您也可以將報告導出到其他文件類型,如 PDF 或 Excel。下個月,我將詳細說明如何在您的 BI 解決方案的數據表示層中使用 SSRS。
Microsoft BI 堆棧還包含幾項 Microsoft Office 技術,這些技術可增加針對數據表示層的選項數。對于支持 BI 解決方案中的數據分析,Excel 2007 是一個常見選擇。您可以訪問 SQL Server 數據市場或直接從 Excel 瀏覽 SSAS 多維數據集(如圖 2 中所示),并可以比在查看 SSRS 報告時更自由地瀏覽數據。
圖 2 使用 Excel 2007 瀏覽多維數據集
除了使用 Excel 來瀏覽關系數據和多維數據之外,還可以使用其數據挖掘算法從您的數據中找出隱藏的信息模式或檢測數據中的異常情況(這意味著您可以在填充數據市場之前糾正問題)。開始進行數據挖掘的一個好方法是,從 Microsoft 下載一個免費的 Excel 加載項,然后用它來分析從任何源導入到 Excel 中的數據或查看在 SSAS 服務器上創建和存儲的數據挖掘模型的輸出。Visio 2007 的加載項也可用于共享批注數據挖掘模型。可以在“Office 2007 的數據挖掘加載項”中了解有關下載和使用這些加載項的更多信息。
對于共享數據,一個日趨流行的選擇是 MOSS 中提供的 Excel Services。通過使用 Excel 2007,您可以先創建一個工作簿(其中包含將 SSAS 多維數據集用作其數據源的數據透視表),然后將數據連接和工作簿發布到 Excel Services。盡管您可以發布包含來自其他類型數據源的數據的工作簿,但將 SSAS、數據透視表和 Excel Services 一起有很多好處,其中包括可以在保留了 Excel 的熟悉風格的純 HTML 界面中使用大部分相同的多維數據集瀏覽功能。另一個好處是,可以實現 Excel 工作簿的集中管理和訪問。有關 Excel Services 的更多信息,請參閱“Excel Services 技術概述”。
對多維數據集瀏覽使用 Excel Services 的另一個好處是,可以使用 Excel Web Access Web 部件將數據透視表和數據透視圖嵌入 MOSS 儀表板頁中。儀表板是一個特殊的 SharePoint 內容類型,它允許您使用各種 Web 部件在一個頁面上呈現來自多個源的數據。您甚至可以將一個篩選器添加到儀表板頁,并將該篩選器連接到部分或所有 Web 部件以便根據所選的篩選器動態更改頁面上的內容。圖 3 顯示了一個示例 MOSS 儀表板。MOSS 還包括一個用來顯示存儲在 MOSS 服務器上的 SSRS 報告的 Web 部件(一個稱作集成模式的可選 SSRS 配置),或者您可以使用 SSRS 附帶的 Web 部件來顯示存儲在報告服務器上的報告(稱作本機模式的默認配置)。
圖 3 使用 MOSS 儀表板頁顯示工作簿和報告
對于具有更多功能的儀表板,可以使用 Microsoft Office PerformancePoint Server 2007 (PPS)。可以使用 PPS 來開發可部署到 MOSS 的記分卡和儀表板。記分卡是一個報表,它會將實際性能與定義的目標進行比較并用彩色編碼圖標顯示結果。可以使用特定類型的 Web 部件在標準 MOSS 儀表板中顯示 PPS 記分卡或將其顯示為 PPS 儀表板的一部分。在儀表板中,可以將 PPS 報告添加到儀表板區域來顯示同一數據的不同視圖(如圖 4 中所示)或顯示來自不同源的相關數據。
圖 4 使用 PPS 儀表板顯示數據
如您所見,盡管 Microsoft BI 堆棧提供了大量用于開發、管理和實現 BI 解決方案的選項,但它絕不會阻止您使用其他選項。Microsoft BI 堆棧從上到下都是一個可擴展的體系結構,當您需要支持特定要求時,可以在其中插入自定義應用程序或第三方應用程序。
解決方案的開發方法
開始了解 Microsoft BI 堆棧的最好方法是構建一個簡單的解決方案。本系列文章中的隨附文章將向您介紹如何使用 SSIS、SSAS 和 SSRS 構建解決方案。在您讀完本系列文章后,您將大致了解所有這些組件的工作原理。但您并不一定要為構建的每個 BI 解決方案使用堆棧中的每個組件。
當您整理 BI 解決方案時,可能計劃將大多數時間花在執行數據準備任務(如重構和清理)上。在 BI 術語中,此組任務稱作提取、轉換和加載 (ETL) 過程。
在您開始 ETL 開發之前,必須仔細規劃 BI 解決方案的設計。根據我的經驗,如果您有一個特定的業務問題要解決,并在設計時先考慮用戶與信息交互的方式,則 BI 解決方案的開發會更加順利。通過采用以用戶為中心的方法,您可以反向執行適用的業務流程來設計能正確檢索和構造數據的解決方案以滿足業務需求。此建議可能看起來是一個顯而易見的方法,但我發現很多人都嘗試將解決方案開發從可用數據轉移給用戶,并最終采用從未用過的解決方案。
在您提出初始設計后,便可以開始進行開發了。如果 BI 解決方案使用 SSIS、SSAS 和 SSRS,則通過先使用 SSIS 創建和填充 BI 解決方案的數據結構來開始。一旦數據準備就緒,您就可以通過構建一個多維數據集來繼續下一步操作。當完成開發后,可以處理該多維數據集以在其中載入數據。然后,可以使用 SSRS 來開發用于查詢多維數據集的報告,并在報告中顯示查詢結果。在本系列文章的后三篇文章中,將向您介紹如何分步執行這一過程。對于您自己的項目,您應逐步反復完成此過程,以確保每個步驟的結果都能滿足后續步驟的要求。
入門
若要完成本系列文章的剩余文章中所述的完整 BI 解決方案,您需要安裝 SQL Server 2008,包括 SSIS、SSAS 和 SSRS。如果您能訪問網絡上的 SQL Server、SSAS 服務器和報表服務器,則只需在您的計算機上安裝開發工具即可。有關產品安裝說明,請參閱“如何:安裝 SQL Server 2008(安裝程序)”。您可以從 CodePlex 下載用于為 Adventure Works 構建解決方案的示例數據庫。第一個數據庫是 AdventureWorks2008,它是聯機事務處理 (OLTP) 數據庫的代表,用于捕獲由銷售部門、生產部門和人力資源部門中的業務操作生成的事務。您將此數據庫用作使用 SSIS 構建的數據市場的源。第二個數據庫是 AdventureWorksDW2008,它是表示數據倉庫設計中的最佳實踐的數據示例。如果您決定不了解 SSIS 并直接跳到多維數據集開發,則可以將此數據庫用作 SSAS 多維數據集的源。
后續步驟
在您熟悉 SQL Server BI 組件后,您應找到所擁有的一個簡單項目以鞏固您的知識。您一開始不需要成熟的數據市場,而應嘗試使用本系列文章的下一篇文章中所述的原則來構造數據。一旦您開始使用 BI,您就可能永遠不會再用同樣的方法來查看數據了。
本文來源:微軟TechNet中文站