由于PowerPivot的数据是内嵌在EXCEL文件中,这种方式好处就是可以作为离线数据分析(即使源数据不可用,不能进行同步更新,但还是可以使用已导入的PowerPivot数据),但是也存在一些劣势,如会造成大容量的Excel文件,一般PowerPivot的Excel文件容量200M以上,而如果仅仅作为报表展示的Excel通常文件容量在5M左右,并且难以适应以下应用场景:
1.需要避免重复数据。比如在开发多个工作簿的时候,需要生成不同的报表视图,需要使用相同的数据,但实际上可能并不想复制相同的数据在所有的工作簿,这样会导致在服务器中占用更多的内存,需要安排更多的计划任务去刷新数据,这将导致增加工作量(比如修改了度量值,则需要在多个工作簿中进行替换更新等)。
2.需要锁定数据。比如对于一些度量值是非常敏感的,只能特定的用户组才能使用,即数据权限的问题,可以在Sharepoint锁定权限,并按需分配给不同级别的数据。
3.避免打开工作簿刷新性能问题。如果在PowerPivot中更新了数据,但如果不在Excel中刷新数据,则在Excel的数据或图表并不会发生任何变化,需要强制刷新才可以。
这些都会导致低效率的,在许多场合将会变得很慢,那么有没有一种只在Excel展现数据或图表并不包含PowerPivot数据的方式?答案是肯定的,本文提供一种瘦工作簿的方式,把SharePoint中PowerPivot数据作为Excel的数据源(非以内嵌的方式,而是作为核心工作簿,可以基于该核心工作簿,开发不同的视图报表),可以较好地满足以上三个应用场景,具体操作步骤如下:
一、下载SharePoint的PowerPivot工作簿到本地上,例如PowerPivot Healthcare Audit.xlsx,如下图:
PowerPivot Healthcare Audit.xlsx文件的容量大小为4.8M左右,如下图:
打开此工作簿的连接属性,可以看到Data Source=$Embedded$,即为内嵌数据源,如下图:
二、把此工作簿的连接属性的Data Source=$Embedded$改为Data Source=http://portal.contoso.uat/sites/cockpit/PowerPivot/PowerPivot Healthcare Audit.xlsx,如下图:
按确定后,则会刷新OLAP数据,数据源从SharePoint中PowerPivot数据刷新,如下图,
完成后,另存为PowerPivot Healthcare Audit Test.xlsx,注意两个文件的大小是一样的(PowerPivot数据依然是嵌入到Excel文件中的),如下图:
三、用压缩软件打开PowerPivot Healthcare Audit Test.xlsx,去除内嵌的PowerPivot数据,用记事本打开xl\customData目录下的item1.data,清除此文件的所有数据并保存到压缩软件中,如下图:
完成后,PowerPivot Healthcare Audit Test.xlsx将不包含PowerPivot数据,仅仅是Excel数据,文件容量将大大减少了,如下图:
通过以上步骤,已完成了“瘦工作簿”,下面来验证一下是否设置成功,再次打开PowerPivot Healthcare Audit Test.xlsx,查看连接属性的数据源是否为SharePoint的PowerPivot的工作簿,如下图:
可以看到数据源已设置成功,进行相应的切片并保存工作簿,看看文件容量是否会改变,如下图:
完成操作后,保存后结果,如下图:
从以上可以看到文件容量发生了变化,比之前少了3K,再次打开此文件,看看是否存在PowerPivot数据,如下图:
从以上可以看到PowerPivot中不存在任何数据,即数据刷新是通过SharePoint的PowerPivot工作簿的。只需要在SharePoint的PowerPivot工作簿配置计划刷新任务,即可自动同步数据到SharePoint的PowerPivot工作簿,如下图:
通过与SharePoint的集成,就可以实现轻量级的PowerPivot工作簿,特别是可以统一数据源(建立“核心”工作簿),缩减文件容量,提高性能等都具有很大优势。
本博客为软件人生原创,欢迎转载,转载请标明出处:http://www.cnblogs.com/nbpowerboy/archive/2013/04/29/3050943.html。演绎或用于商业目的,但是必须保留本文的署名软件人生(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。 |