很多人問過我,“為什么報表如此平凡,你還這么熱衷于它?”對于我來說,有關報表的最激動人心之處就在于它是如此普遍。像基本的交通運輸一樣,每個人都在以這樣或那樣的方式使用它。報表是一件用來傳達信息的藝術品,但不同于常規的藝術品,消息可以隨著驅動它的數據而改變??梢詭椭鷶蛋偃f人和公司并為他們所用,這就是我著手編寫程序并最終加入Microsoft的原因之一。沒有其他公司可以像Microsoft一樣通過發布偉大的產品來影響如此多的人。
報表是一個非常廣泛的主題,范圍包括從裝箱單、電話費賬單到即席分析和Excel電子表格。在設計Microsoft SQL Server報表服務時,我首先對報表下一個簡單的定義:報表是一個信息交付平臺。當然,這個定義也非常廣泛,它確實允許我們將精力集中在設計上,同時留給我們很大的空間在后續版本中進行擴展。這本書將幫助讀者了解報表服務的強大能力,并充分地利用其功能。
信息不僅僅是數據;它是轉換成有用信息的數據。轉換過程非常重要。任何工具都 可以閱讀并顯示該數據;人們為完成工作而真正需要的數據是經過慎重選擇的、正確的 和密切相關的信息。有許多工具可以讓用戶訪問數據,建立“視圖”和“報表”。但是,這些用戶常常不了解數據存儲的所有細微差別,從而會產生不準確的結果,或者一不小心就會影響數據引擎的性能。報表服務以官方源的方式運行,從而使每個人都使用正確的同一版本。
將來,Microsoft計劃通過集成信息權限管理(Information Rights Management)推動其更進一步發展,從而使得信息不僅來自單一源,而且可以對其進行認證,它還會過期,甚至在數據交付給最終用戶后仍可進行訪問控制。數據常常不是存在一個數據庫中甚至來自于一個數據庫,這對于我們這些處理公司數據的工作人員來說是個令人痛苦的事實。只有極少數的報表(或者能提供充分見解的報表集)是來自單一數據源的。建立多種類型的數據集市(data mart)或數據倉庫是最佳的解決方案,但常常因時間、政策或預算的限制而不可能實現。報表必須能夠從任何一個數據源獲取數據,并將所有數據結合在一份報表內。
在需要信息而得不到它的時候,這些信息就會顯得彌足珍貴。交付信息比只處理信息和加工信息更重要;在用戶需要時,它能在用戶擁有的設備上提供任何格式的信息。今天最常見的案例是普遍存在的用戶利用某個瀏覽器通過HTML進行在線訪問。如果計算機連接到了服務器上,這會是完美的。但是眾所周知,沒有什么事情是完美的。當我們在飛機上、在汽車里、陪同客戶、在游戲中、在生產基地等類似的場合時,我們需要報表。我們同樣需要報表的多種功能:交互性、點對點打印、應用程序集成——類似MS Excel的“如果怎么樣,那么會怎樣”的場景和附加分析、經由PDF的通用訪問等。單一的格式和單一的交付渠道是不夠的,但是如何知道自己需要哪一種選擇呢?報表服務可令人遠離這些選擇。所有的報表可以以任何渠道分發或者以任何格式呈現。報表設計獨立于報表的使用方式。在給定了指定格式或者所需渠道的約束后,系統的責任是提供盡可能準確的報表。
建立一個平臺與建立一個解決方案是不同的。實際上,在很多情況下,二者的目標是完全相反的。如果開發人員和管理員已經訪問了產品的所有方面,那么這個平臺是成功的。他們要能夠優化、擴展、限制、嵌入和替代產品的某些部分來滿足需求。這意味著所有API都是可用的并且編制了文檔,所有格式都是開放的和描述清楚的,而且每個組件都是可配置的或可替代的。當然,軟件設計往往因多種權衡而存在很多限制,在建立報表服務時,這是努力的目標。與Windows、SQL Server或Visual Studio非常類似,報表服務是為了使開發人員能夠基于一個堅實的基礎創建報表,在相當短的時間內以更多的功能來滿足商業需要,而且無損其靈活性和自創報表的能力。
展望未來,Microsoft將增加數不清的功能和方案,使平臺的功能更加強大,同時只需要很少的或者甚至不需要進行內部開發。我在本書中提到了其中一些功能,但還有很多沒有考慮到的地方。
我們期待收到所有用戶的來信,告訴我們對他們來說什么是重要的,我們怎么做能夠使設計、創建和操作他們的信息交付系統變得更加容易、快速并且(我希望)具有趣味性。
敏捷性。在今天的商業中,必須每天或每周(而不是每月或每季度)就做出關鍵決策。業界領先的公司意識到若要提高企業的競爭響應速度--他們公司的敏捷性-- 需要將盡可能多的決策權下放到第一線員工手中。在如今要求更快地做出更好決策的商業氣候下,實時競價系統、反向拍賣、現貨精確成本計算、按照訂單生產、全球勞動力市場和全球化只是其中的一些發展趨勢。
為了在這個新模式中獲得成功,員工們要盡可能地獲取最優信息。信息要準確、及時和可靠,必須能夠滿足他們的需要。無論員工們通過聰明地開辟新市場來最大化收益,還是通過精明地采購來最小化支出,他們都必須掌握正確的信息。
Microsoft 的SQL Server報表服務的發布在商業智能界樹立了一個重要的里程碑:信息真正可供大眾訪問。通過將報表功能直接創建在Microsoft企業數據平臺SQL Server上,軟件開發人員和信息架構師現在可以依靠這個高質量、可伸縮和健壯的體系結構來創建他們的報表。
在過去的20年,商業智能(BI)在企業中的使用越來越深入。以前,一些非常熟練的分析師集中在公司象牙塔的高層,現在BI已經為處于現今公司第一線的生產線經理、部門主管和知識工人所掌握。
在2003 年和2004年,本書的第一版問世。從那時起,我了解到報表服務將會成為一個很重要的部分,要將關于它的一本書寫得像產品本身一樣內容豐富,這并不像在公園里散步那樣容易。于是我要組建一支有能力、成熟的團隊。幸運的是,我很高興能和一些頭腦聰明、工作努力并且熱愛鉆研技術和解決問題的人一起工作。報表服務是兩年前的一個新產品,我們做了大量研究,也經歷了不少教訓。這之后,我們通過將報表解決方案擺在很多商業用戶和咨詢客戶面前,了解到更多的信息。
1.1 我們所了解的
并不是說我們已經知道了關于這個產品的所有知識,通過每個項目我們都會了解更多的知識。但我們盡可能地使任務結構清晰。請允許我先介紹一下那些和我一起快樂工作的人。在編寫本書第一版時,我們主要使用產品的Beta版。我們和Microsoft的報表服務產品團隊的成員進行了很多次談話,逐漸適應了產品的開發速度,了解到這個產品可以做什么、不能做什么。我們都記錄下來,然后把產品令人驚奇的功能寫入書中。然而正如大多數Microsoft產品一樣,我們發現執行每項任務至少有18種不同的方法。從那時起,我們就開始在不同的環境下使用報表服務。我們和商業用戶交談來理解他們的報表需求,并為不同類型的公司設計各種報表解決方案。我們把報表集成到Web網站、門戶網站、局域網站點和桌面應用程序中去。我們培訓了上百名用戶、開發人員和管理人員,也在會議上做過報告。我們為儲蓄和投資銀行、產品支持中心、軟件公司、銷售和客戶管理系統制造商、體育用品公司、主題公園以及娛樂公司設計過報表。我們知道了很多關于怎樣設計報表以及怎樣更高效地建立報表解決方案的知識。本書就是基于以上這些經驗編寫而成的。
誰要使用報表服務
過去兩年,在講授報表服務培訓課程的過程中最重要的教訓之一也許就是怎樣區分不同的聽眾。這里并非指年齡和性別的不同,而是在設計和實現報表解決方案的人中存在角色和背景的差異。作為一名應用程序開發人員,我已經習慣于指導程序員或者其他專業技術人員,他們的使命就是通過編寫軟件來使世界變得更加美好。但是我很快發現不存在同樣類型的報表設計人員。他們其中一些側重商務而不熱衷于技術和程序代碼。很多人只是簡單地為了管理或者更方便地處理生意。他們需要快速得到信息,并不想了解事情的來龍去脈或者使用笨重的工具工作。表1-1中的數字并非來源于任何一項調查和研究,僅僅是我從客觀角度觀察參加報表服務培訓班的學員所得到的數據。
表1-1
過去,可靠的報表系統非常昂貴,只有在可以實現最大收益的地方,公司才被迫實施健壯的報表系統。Microsoft的長期目標是通過激勵使用來降低信息技術的成本,這在SQL Server報表服務的授權模型中再次顯現出來。這個技術授權給目前已經擁有SQL Server授權的任何人,所以不需要任何額外的費用。它對于軟件開發人員和類似用戶是一種非常大的發展;它會極大地提高詳細、準確、及時的報表的使用和分發,從而推動高質量的BI在企業中的發展。
在這本優秀的書籍中,作者帶領我們全面學習SQL Server報表服務,涵蓋了從實際的報表基礎知識到為BI解決方案架構師、設計人員和開發人員編寫的報表解決方案的發布和管理;它必然是一種極有價值的資源。
且慢!這是一本關于創建報表以有意義和有趣的方式顯示信息的書籍。我并不想以枯燥的列表方式來表示上面這些信息,所以我創建了一個簡單的報表并把它制成圖(確切地講,它是一個分裂式、半透明的餅狀圖),如圖1-1所示。
在和報表服務打過交道、參加過相關課程或者從事咨詢服務的人中,大約有1/6是從事非技術類工作的商業經理。這類角色主要對更大的一些場景感興趣:報表如何滿足他們的分析需求并幫助他們做出判斷。這類人對實現細節或者技術原理毫無興趣。他們指導別人從事具體的工作。
系統管理員包括服務器系統創建人員、硬件專家和數據庫管理員。在一些規模較小的公司里,這類角色經常和軟件開發人員互換。管理員們通常關心服務器和基礎設施的建立和維護,以保證報表解決方案可用和正常工作。他們一般把時間和精力花費在安全管理以及如何優化系統以獲得更高效率上。
軟件開發人員代表了略少于1/3的聽眾。為了實現高級的報表功能,軟件開發人員需要編寫復雜的查詢和定制的程序代碼,用來處理商務規則和賦予報表在不同條件下的不同格式和行為。開發人員一般對報表設計環境像對家一樣熟悉,因為它和他們熟悉的編程工具非常相似。
最大的一組報表從業人員并不是軟件開發人員或者其他技術專家。他們需要強大的計算機使用技能,但他們并不花費時間來編寫代碼,或者使用像Visual Studio、Enterprise Manager或者SQL Server Management Studio之類的工具。他們是需要設計報表來進行商業應用的普通商業用戶。對于一個軟件開發人員來說,熟悉環境只是小菜一碟。在我為Microsoft 教授報表服務2000課程的時候,我經常使用一大部分課堂時間來教學生使用Visual Studio用戶界面。它對于這組人員是新的工具,并不像他們熟悉的其他應用程序一樣。比如,以前使用過其他工具(如Crystal Reports)的報表設計人員通常對報表服務設計工具有一些恐懼,因為他們不熟悉這些看起來比他們過去習慣使用的工具更為原始、更需要以開發人員為中心的工具。為了獲得高級報表功能的優點,這些人必須獲得一些編程技巧,或者和軟件工程師一起工作,以在他們的報表中添加定制的代碼和表達式。
原文轉自:http://www.anti-gravitydesign.com