给你的开放数据协议中添加火花(sparklines) Excel 2010中数据服务的使用(一)

[原文作者]:Beth Massi

[原文链接]:Add Spark to Your OData: Consuming Data Services in Excel 2010 Part 1

     开放数据协议(odata)是一种开放的REST-ful协议,用于在web上公布和使用数据。也叫做Astoria, ADO.NET数据服务,现在在.NET中称为WCF 数据服务。我已经在博客中多次介绍过.NET的背景下这方面的内容。他们与JavaScript和PHP类似,属于软件开发套件(SDKS)

     随着.NET Framework 3.5 SP1的发布,.NET开发人员可以简单地通过REST在web上创建和应用数据模型。service的简单化,以及与此而来的开发量的减轻,使得对将之用作数据服务层的基于CRUD-风格数据的应用程序来说 是非常有吸引力的。你可以查看我之前下的关于OData的文章。如果你是这方面的新手,我建议你先阅读《Using ADO.NET Data Services

    如今,在.NET Framework 4下,数据服务有一些(我最喜欢的)新的进步,作为一项成熟的技术,越来越多的数据保护程序从web各处冒出来。今年的MIX 2010上,发布了一款代号"Dallas"的服务,可以允许你从不同的地址处订阅Odata 源。目录在此。你可以直接在你的应用程序上使用这些订源,或者使用一个Excel加载项:PowerPivot(又名“双子座”),来使得分析数据更加容易。

    接下来,我将告诉你如何用Visual Studio 2010建立一个数据服务,使用PowerPivot客户端在Excel中使用其OData 源,并且用Excel 2010中新提供的功能Sparklines分析数据。在下篇文章中,我将告诉你如何编写自己的Excel客户端代码,来从你的Line-of-Business系统类似SQL Server和SharePoint中,使用和分析OData来源。

Visual Studio 2010创建一个AdventureWorks的数据服务

    让我们用Visual Studio 2010快速地创建一个expose AdventureWorksDW数据库(数据仓库)的数据服务。您可以从这里下载数据库。创建一个新的工程并选择网络节点,然后选择ASP.NET Empty Web Application。如果你没有看到它,请确定你的Framework绑定设置为.NET Framework 4。这是一个新的工程模板,以方便使用VS2010,尤其是如果你要创建数据服务。

clip_image002

    单击确定,创建工程。这将只包含一个web.config。接下来添加你的数据模型。我将使用Entity Framework,因此转到Project –> Add New Item,选择数据节点,然后选择ADO.NET实体数据模型。点击Add,这样你就可以创建你的数据模型,在我的例子中我从AdventureWorksDW数据库中生成。

    接下来我们需要添加WCF Data Service(在Visual Studio 2008称作ADO.NET Data Service)。Project –> Add New Item,选择数据节点,然后向下滚动,选择WCF Data Service。这个工程模板的名字因为 .NET 3.5 和 4 Framework targets而更改,所以当你试图找到它时,记住这一点。

clip_image004

    现在,你可以设置你的实体访问权限。作为范例,我将让这个模型中我的所有实体都有读权限:

Public Class AdventureWorksService

Inherits DataService(Of AdventureWorksDWEntities)

‘ This method is called only once to initialize service-wide policies.

Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)

‘ TODO: set rules to indicate which entity sets and service operations are visible, updatable,etc.

config.SetEntitySetAccessRule("*", EntitySetRights.AllRead)

config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2

End Sub

End Class

    我们可以依据不同的安全需要为模型中的数据添加读/写权限,甚至依据我们的情况添加额外的服务操作,但是在数据业务发展方面基本上仅此而已。根据你的环境设置权限,这可能是将数据公开给用户的好方法,因为这可以让用户从网络上(你的intranet)任何地方都访问到,而不需要单独的数据库安全设置。这样做是因为用户并没有直接连接到数据库,而是通过服务连接。使用数据服务还允许通过模型或者额外的操作和商业规则,来选择性公开你所需的数据。

我们可以部署到一台真实的web服务器上,或者仅仅放在本机上测试其本地使用情况。现在让我们来看看如何将PowerPivot用于这个服务并用来分析数据。

使用PowerPivot分析OData

    PowerPivot站点上有很多不错的针对超级用户的指导视频,我们建议你看看。我本身并不是一个Excel超级用户,但我是一个开发人员,我可以告诉你,我安装PowerPivot大概两分钟后就可以使用 订源了,可见它非常容易上手。PowerPivot 不仅仅有关于OData 源的,它能使用多种BI数据源,比你从Excel中拿出来的还多更多。例如,我们可以很简单地直接连接到SQL Server、Access数据、Reporting Services读取的数据、txt文件或其他电子表格。

    要启动我们的数据服务,首先确保服务在运行。如果你只是在VS中建立它,你只需要按F5键开启调试来测试。这样做将打开浏览器,你可以从那里导入你的数据。开发阶段数据服务的URL类似http://localhost:1234/AdventureWorks.svc/

    现在打开Excel,选择PowerPivot选项卡,单击PowerPivot窗口打开它。这将打开第二个工作簿,你可以使用它来从不同来源收集数据,建立他们之间的关系。在主页选项卡上选择From Data Feed
s,然后选择From Other Feeds。这将打开导入表向导,你可以制定URL给你的数据服务。

clip_image006

    单击Next,现在我们我们可以拿一些表过来做一些分析。我们拿DimEmployees和FactSalesQuotas这两个表,单击Finish.现在我们需要建立EmployeeKey表示他们之间的关系。选择Table选项卡,点击Ribbon的Create Relationship按钮。设置Table等于FactSalesQuotas,Related Lookup Table等于DimEmployees ,两列等于DimEmployees,然后点击Create按钮。

    现在我们可以处理这些数据了。我们创建一个数据透视表和几个图表来看看雇员的销售配额。在PowerPivot主页选项卡,选择PivotTable按钮,选择Chart and Table (horizontal)。这会覆盖在你的工作表上,你也可以单独选择一个工作表来存放。会打开一个任务窗格,根据你安装版本不同也可能是“Gemini Task Pane”。如果你曾经创建过数据透视表和Excel中的图表,现在会看起来比较熟悉。选择合适的选项来report on and viola,你就有了一个对Odata服务的数据分析。

clip_image008

Excel2010中用Sparklines(波形图)分析

    Excel2010中我最喜欢的功能之一就是sparklines。sparklines是绘制在单元格中的一个微型图表,直观地反映出所在行数据的情况。例如,我们可以在数据透视表的每一行添加一个趋势线,用来快速查看每个员工的工作业绩。与原来创建一个图表,必须要翻页查看不同,现在你可以立刻将数据可视化。

    要添加sparklines,在Ribbon上选择Insert选项卡,然后选择你想创建的sparkline类型。接下来选择数据范围和位置。例子中我选择了线形sparklines和最高最低点的显示。请注意,默认情况下每个sparklines都是相互独立的,这意味着你只是看到了那一行数据的趋势。如过你想对不同行数据比较,可以尝试the Axis min and max选项。

clip_image010

    更多关于sparklines的信息可参见Excel team博客

    在后面的第二部分中,我将告诉你如何创建你自己的Excel客户端代码,由SharePoint 2010 expose,通过Odata服务来使用和分析数据。我将告诉你如何写代码来调用服务,执行LINQ查询,将数据绑定到Excel列表对象,并生成图标。我还会告诉你如何在代码中增加这些很酷的sparklines。待续……

Enjoy!

饮酒伊!

发表评论