当前位置: 代码迷 >> SQL >> 施用SQL Azure 的BI 解决方案
  详细解决方案

施用SQL Azure 的BI 解决方案

热度:238   发布时间:2016-05-05 13:32:59.0
使用SQL Azure 的BI 解决方案

         SQL Azure 是云端的关系数据库,代表了管理组织机构中数据的一个起始点。然而,管理关系数据仅是BI 解决方案的一个方面;BI 解决方案的第二个同样至关重要的方面是,以一种有意义并且相关的(有可能是可过滤的和可管理的)方式来显示数据。要做到这一点,需要的不仅是细致的数据存储,还要有在客户端以各种各样的方式渲染和操纵数据的能力。SharePoint 提供了多种与SQL Azure 交互的方式—其中一些是无代码的解决方案,另一些则是以代码为中心的解决方案。

l  SharePoint 的无代码BI 解决方案

      SharePoint 中的无代码BI 解决方案提供了一系列的整合功能,这些功能可帮助管理SQL Azure 中的数据。这些解决方案中的一些内置在原生的SharePoint 功能中,另外的则需要一些配置或声明性的开发来进行创建和部署。

      SharePoint 的开箱即用解决方案各有不同。例如,一种可能做法是使用Chart Web 部件,它能够让您在Web 部件中连接数据并以不同的方式和不同类型的图表来提供这些数据,可以连接的数据类型从SQL Server 数据到SharePoint 列表数据都包括在内。Chart Web 部件

      使用System.Web.DataVisualization库(ASP.NET Chart 控件)来创造出一种浏览器中(in-browser)的配置体验,以此来创建一些简单但高效的图表显示。另一种可能做法是关键性能指标(KeyPerformanceIndicator,KPI)的使用,这些KPI 可以让您使用各种各样的数据类型来设置状态指示器,从SharePoint 列表数据到Microsoft Excel 数据,再到SQL Server 数据都可以。最后一种做法是Excel Services,Excel Services 使得您能够把SQL Azure 数据和Excel 桥接起来,然后使用这一云端的数据来填充Excel Web Access Web 部件。

       SharePoint 中的另一种无代码解决方案例子是, 使用SQL Server ReportingService(SSRS)来构建基于表单的SQL Azure 数据视图。这种方案需要对SSRS 做一些配置,不过在安装并配置好SSRS 之后,就可以为SQL Azure 数据创建许多不同的报表了。

       另外的一种无代码例子是使用Business ConnectivityServices(BCS),其更常见于与外部据系统一起使用。BCS 提供了直接与外部系统整合的能力—这些系统既可以是基于ADO.NET 的,也可以是基于Web 服务的。这种能力使得您能够使用SharePoint Designer2010以本地方式连接到SQL Azure,声明式地构建所谓的“外部内容类型”(定义SharePoint和外部数据系统之间的关系的XML 文件)。

l  SharePoint 中基于代码的解决方案

       在构建基于代码的解决方案时,首先需要做的是从SQL Azure 中取得数据,接着要SharePoint 中对数据进行一些处理。如果之前从事过任何的开发工作的话,就会知道,数据驱动式的编程可以采取许多种不同的形式。例如,可以使用ODBC 或ADO.NET 来与数据库进行交互,这种做法可以采用SQL 查询字符串的形式(例如连接并查询数据库),或采用WCF Data Service(前身为ADO.NET Data Service)的形式,该种形式提供了更丰富的数据绑定和查询类型。例如,可以利用WCF Data Service 来创建出SQL Azure 数据构造的实体数据模型,这种方法使得您能够轻松地使用LINQ 来查询SQL Azure 中的数据。在使用WCF Data Service 时,应该知道的是,并非SharePoint 支持的所有.NET 客户端技术都支持WCF Data Service。例如,如果打算使用Silverlight,那么可能会希望选择一种不同的数据连接方法,或使用WCF 服务代理(确实支持实体数据模型)来抽象到SQL Azure 的调用。对于许多由查询字符串驱动的应用来说,还可以使用SqlDataAdapter 类来构建和执行针对SQL Azure 数据库的SQL 连接字符串和查询。虽然可以这么做,但必须在代码中生成查询字符串,有时候一些复杂的查询会显得相当累赘。SqlDataAdapter 类的使用为数据库的连接提供了一种更为通用的做法;也就是说,这种做法得到了广泛的支持。这一情况减轻了对WCF 服务代理的需求,不过还并未完全消除使用它们的这种可能性。欲了解更多关于SqlDataAdapter 类的信息,请访问http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.aspx。

       当然,在能够连接上SQL Azure 并可以查询其中的数据之后,在检索数据时就需要对它们做一些处理了,而这就是您要稍加深入挖掘SharePoint 的地方。在使用SharePoint 时,可以(比如)利用Silverlight、Web 部件、BCS(例如外部列表)、ASP.NET 图表等来表现SQLAzure 中的数据。不过,SharePoint 支持的每种工件所提供的结果都稍有不同,例如,在涉及BI 解决方案的构建时,Silverlight 就非常方便,因为可以非常轻松地构建和部署流畅的动态UI 体验。这方面的例子有Silverlight 的主题和图表工具包,这些工具包提供了简单的设计增强和不同的图形化图表功能。Web 部件,SharePoint 中最常见的已开发好的工件之一,也是一种极好的显示数据的方式,可以使用Web 部件来给SQL Azure 数据创建可过滤的和可查询的视图。BCS 提供了一种到SQL Azure 的本地连接,这种连接使得最终用户能够管理SQL Azure 数据的进出,同时也允许通过SharePoint 的客户端对象模型来编程连接和利用外部列表中的SQL Azure 数据。ASP.NET Chart 控件则提供了一种丰富的并且可编程的方式来与SQL Azure 进行交互。

        在本文中,您将会用到前面这些方法的一个组合—但不包括Silverlight 在内,该方法会在第7 章中讨论—以构建BI 解决方案。具体来说,首先会构建一个无代码解决方案:使用BCS 创建一个提供到SQL Azure 的本地连接的外部列表。接着,还要构建一个基于代码的Web 部件,使用ASP.NET Chart 控件来编程汇总和显示来自SQL Azure 的数据。尽管将要构建的应用可以使用服务器对象模型,甚至是客户端对象模型来与外部列表数据进行交互(即查询这些数据),不过我们认为,使用WCF 服务代理来分步讲解数据连接和查询层的抽象过程更有助于说明问题。这样做的话,可以跨多个应用重用WCF 服务。不过,使用的法并不限于本章中描述的这些,所以记住一点,那就是在这一解决方案架构中,SharePoint 对象模型也是一种可能的选择。同样,比如,与其使用DataSet 这一数据构造,还不如在Web 部件内部使用自定义的类来管理和绑定数据。

解决方案架构

       要构建的解决方案的设计很简单,使用SQL Azure 作为后端数据源,并采用一种无代码方法“和”一种以代码为中心的方法来构建两个组成该解决方案的核心BI 应用。无代码方法利用BCS 来整合SQL Azure 和SharePoint,而以代码为中心的方法则利用ASP.NETChart 控件来构建到SQL Azure 数据的自定义连接。BCS 的使用可以让您直接连接到SQLAzure,ASP.NET Chart 控件则是利用了WCF 服务代理,WCF 服务代理查询SQL Azure 数据并在SharePoint 中动态生成图表。

       图1提供了该解决方案架构的一个高层面概览。在该图中,ASP.NET Chart 控件用到了一个WCF 服务,该服务执行进一步的SQL Azure 数据库查询工作。需要注意的是,WCF服务是部署在SharePoint 服务器上的;不过,也可以把WCF 服务部署在Windows Azure上。把WCF 服务部署在Windows Azure 上的做法,能够让您在其他应用中和诸如SharePointOnline/Office 365 一类的平台上利用WCF 服务(例如使用某个SharePoint Online 应用中的同一数据来开发基于Silverlight 的图表应用),图中虚线标记的部分代表的就是这一做法。

       WCF 服务中核心的Web 方法是GetAllSalesData,该方法完成主要任务,从SQL Azure 数据库中检索销售数据。BCS 是直接针对SQL Azure 数据源构建的,提供了一个读-写外部列表来管理销售数据。

       在完成这一例子的过程中,您会注意到SQL Azure 数据库和外部列表之间的桥接关系是通过应用ID 来进行管理的,这有助于管理两套凭证。因为SQL Azure 拥有的是一套不同于Windows 凭证的凭证,所以不能把当前活动用户的凭证传递过去,必须提供一种方式来验证到SQL Azure 的调用。

       这一架构最终体现为BI 解决方案的两个组成部分:一个提供了到SQL Azure 数据库的读/写访问的外部列表,另一个提供了数据的汇总销售视图的ASP.NET Chart Web 部件。


图1 BI 解决方案的架构

创建Sales BI 应用

      构建这一BI 应用的第一步是在SQL Azure 中创建销售数据。为了完成这一步骤,必须有一个可供使用的Windows Azure 账户。若要获取试用账户,请访问www.microsoft.com/

windowsazure/free-trial/sharepoint-integration/。

1. 创建SQL Azure 数据库

需要创建SQL Azure 数据库以在云端存储销售数据。

(1) 导航至http://windows.azure.com,使用您的Live ID 登录。

(2) 在左边的导航窗格中,单击“Hosted Services, Storage Account & CDN”,然后选择New Storage Account。

(3) 把新的存储账户映射到您的订阅(subscription),并为存储账户提供一个命名空间;另外还需要选择一个区域。完成这些操作后,单击Create 按钮。

(4) 单击Firewall Rules 控件来设置存储账户的防火墙规则(参见图2)。

这一规则允许您的计算机连接存储账户并与之交互。在生产环境中,应该始终确保将其设置为严格定义的IP;但对于概念证明或演示来说,可以把IP 规则设置得更开放一些。为防火墙规则指定一个名称(例如MyServerFWRule),然后选择IP 地址的范围(例如0.0.0.0-255.255.255.255)。

(5) 在您的门户界面中单击Database 选项卡,然后选择想在其中创建Sales 数据库的订阅。


图2 设置存储账户的防火墙规则

(6) 单击Create 按钮来创建新的数据库,提供名称(例如TotalSales)并选择版本(选择

Web,这是一种缩减版数据库,是一种更小型、更经济的用法),请记下管理员的用户名和

密码。

(7) 打开SQL Server Management Studio 2008 R2,提供用户名和密码凭证来登录新的

SQL Azure 实例,完成输入操作后,单击Connect 按钮。

(8) 在连接上之后,单击New Query 按钮。

(9) 在Query 窗口中输入下面的查询,然后单击Execute Query 按钮,这会在TotalSales

数据库中创建名为StoreSales 的新表。

CREATETABLE [StoreSales](

[StoreID][int] IDENTITY(1,1)NOT NULL PRIMARY KEY CLUSTERED,

[StoreName][nvarchar](50)NULL,

[StoreRegion][nvarchar](50)NOT NULL,

[StoreFY08Sales][nvarchar](50)NOT NULL,

[StoreFY09Sales][nvarchar](50)NULL,

[StoreFY10Sales][nvarchar](30)NULL,

[StoreFY11Sales][nvarchar](30)NULL,

[Timestamp][timestamp] NOT NULL

)

现在有了表StoreSales,打算在这个表中填入一些数据。为此,创建另一个SQL 脚本

来在其中加入几条记录。

(10) 单击New Query 按钮,在Query 窗口中输入下面的脚本,这会在StoreSales 表中

创建一组新的记录。

INSERTINTO [StoreSales]

([StoreName],[StoreRegion],[StoreFY08Sales],[StoreFY09Sales],[StoreFY10

Sales],[StoreFY11Sales])

VALUES

('SeattleDowntown', 'Pac West','12091029','13092802','13291028','14291820'),

('RedmondEastside','Pac West', '32039201','32991821','32003910','33210921'),

('NewYork Upstate', 'North East','22120928','22291092','23309211','23430291'),

('BostonEastgate','North East', '13000902','13445702','13220882','13233211'),

('SanDiego Downtown', 'South West','15561029','16772802','15441028','14981820'),

('OaklandBay','South West', '23043102','23332102','23443192','23998291'),

('OrlandoUniversal', 'South East','31093329','33111802','33295428','34291220'),

('MinnesotaEarling','Mid West', '13099002','13443102','13229972','13946591'),

('OhioState', 'Mid West','12091029','22093302','22291228','22294420'),

('ChicagoMain','Mid West', '33222102','33213102','33223192','33433291'),

('WestVirginia', 'Mid East','14121029','14332802','14121028','14998820'),

('NewOrleans Central','South East', '15011103','15291302','15224092','15221291'),

('JacksonvilleVilla', 'South East','23231029','23000902','23291029','24299288'),

('PortlandDowntown','Pac West', '15220102','15298112','15223302','15332292'),

('SanFrancisco Bay', 'South West','12091029','13092802','13291028','14291820'),

('BellinghamNorth','Pac West', '10112102','1022202','10220121','10993311'),

('HoustonMain', 'Central','12091029','13033202','13112128','14432820'),

('VancouverSouth WA','Pac West', '16654102','16755102','16344192','16332291'),

('KansasCity Downtown','Mid West', '22392012','22302910','23302903','23403920'),

('LosAngeles West', 'South West','12998098','12899878','12998190','13201920'),

('RedwoodSouth','South West', '20029102','20123321','21221092','21221998'),

('GeorgetownCentral', 'Central','31029901','32910928','33321112','34302910'),

('WashingtonDC','Central', '13022212','13118102','13998192','13443291'),

('MadisonSouth', 'Mid West','14191229','14432802','14039028','14221820'),

('GrandForks','Mid West', '22109102','22009102','23100192','21108291'),

('TuslaSouth', 'Mid West','44531029','45443802','45665028','46654820'),

('DallasDowntown','Central', '19989002','18998902','19887992','19129891'),

('BellevueLincoln', 'Pac West','12094454','13009802','13341028','13111820'),

('Detroit','Central','18998902','18556502','18776792','18334391')

(11) 右击StoreSales 表,然后选择Script Table as | SELECT to | New Query EditorWindow,自动生成通用的SELECT 语句(参见图3)


图3 为StoreSales 表生成通用的SELECT 语句

该查询的结果将显示刚才使用INSERT SQL 脚本插入的所有数据(参见图4)。


图4  SELECT 语句的查询结果

SQL Azure 数据库现在已经填入了一些虚构的销售数据,在接下来的内容中,您将(使用BCS)创建一个连接到SQL Azure 数据库的外部列表,并提供一种读/写方式来管理销售数据。

2. 创建外部列表

外部列表动态地加载外部数据,从而让用户能够创建、读取、更新和删除外部系统中的记录。

(1) 首先,需要创建应用ID,应用ID 调停与SQL Azure 之间的安全握手。要创建应用ID,请打开SharePoint CentralAdministration,在Application Management下面,选择Manage ServiceApplications。

(2) 在Secure Store Service 下面,单击Secure Store Service 代理链接。

(3) 在功能区单击New 按钮来创建新的应用ID,该操作会启用一个基于浏览器的包含了三个步骤的向导。

(4) 在Target Application Settings 页面中,输入目标应用ID(例如MyAppID)、显示名称(例如My App ID)以及联系人的电子邮件,然后单击Next 按钮(其他所有内容可以保留默认选项)。

(5) 在Field 页面中,添加用户名和密码。从Field Type 下拉列表中选择User Name 和Password。

(6) 输入SharePoint 站点的一个有效用户(例如administrator)作为应用ID 的管理员,单击OK 按钮完成应用ID 的创建。新的应用ID 现在应该已经列在应用ID 列表中了。

(7) 导航至SharePoint 站点的根一级,在SharePoint Designer 中选择Site Actions | Edit Site。

(8) 在Navigation 窗格中单击External Content Types。

(9) 单击External Content Type。

(10) 提供名称和显示名称(例如MySQLAzureECT),保留默认选项,然后选择“ClickHere to Discover External Data Sources and DefineOperations”。

(11) 单击Add Connection 按钮,从下拉列表中选择SQL Server,然后单击OK 按钮(参见图5)。


图5 添加到外部数据源的连接

(12) 当出现提示框时,输入SQL Azure 服务器的名称和数据库名称,然后为外部内容类型提供显示名称。单击选中Connect withImpersonated Custom Identity 选项,接着在SecureStore Application ID 域中输入之前创建的应用ID 的名称(例如MyAppID)。

(13) 单击OK 按钮以连接SQL Azure(请注意,现在会提示输入SQL Azure 的凭证)。

(14) 在SharePoint Designer 加载数据连接之后,右击表StoreSales,接着选择Create All Operations。

(15) 要创建外部内容类型,必须走完整个向导。请务必单击StoreID,然后单击Map To Identifier,接着再单击Next 按钮两次,也可以选择单击Finish 按钮。

(16) 这些操作完成后,单击Save 按钮。

(17) 现在可以通过单击Create Lists and Form 来使用外部内容类型创建新的列表,在List Name 域中添加列表的名称,保留其他的默认选项,然后单击OK 按钮。

(18) 现在,已经创建好了连接SharePoint 到SQL Azure 的外部内容类型,必须设置允许特定用户访问列表的权限。为此,导航至SharePoint CentralAdministration,然后在Manage

Service Applications 下单击Business Data Connectivity Services。

(19) 单击刚才创建的外部内容类型,然后单击Set Object Permissions。

(20) 在显示的对话框中输入用户以及希望赋予输入用户的权限,如图6 所示。


图6 选择用户并为用户分配权限

现在可以导航回到SharePoint 列表并重新加载列表,这时需要输入SQL Azure 的权限

许可来进行身份验证才行(参见图7),而在这之后,凭证就会缓存在服务器中。


图7 输入SQL Azure 的权限许可来加载外部列表

现在,最终的外部列表的外观应该类似于图8 中给出的内容。

 

最终的外部列表


图8 最终的外部列表

现在已经完成了外部列表的生成,这是解决方案的无代码部分。我们来继续讲解一种更多的是以代码为中心的做法。在接下来的内容中,您首先会创建一个WCF 服务来与SQLAzure 数据库进行交互,然后再创建一个Web 部件来使用该服务。

 

本文摘自:《SharePoint 2010云计算解决方案》 清华大学出版社

           ISBN: 9787302295426

           定价:58元

样章试读:http://product.china-pub.com/3684029




  相关解决方案