使用单个外部OLAP多维数据集加快多个数据透视表的刷新时间

时间:2015-10-01 09:02:36

标签: excel vba connection-string pivot-table cube

我有一个Office数据连接(ODC)指向存储在我们公司服务器上的OLAP多维数据集。连接字符串非常简单:

Provider=MSOLAP.6;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Reporting Model;Data Source=SQL03;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error

使用此多维数据集,我创建了一个包含多个数据透视表的Excel文件,每个工作表一个。一切正常,但是当我刷新数据透视表以获取最新数据时,每个数据透视表都会单独刷新,即每个数据透视表使用与多维数据集的连接显示以下内容:

  1. 刷新OLAP多维数据集
  2. 运行OLAP查询
  3. 是否有一个只需要一次刷新的解决方案,所有的pivottable共享它?我已经尝试使所有数据透视表使用相同的缓存,但尝试使用以下方式设置数据透视缓存:

    Sheets("Pivot").PivotTables(1).CacheIndex = 1 
    

    运行时错误'1004'结束:应用程序定义或对象定义错误

    有没有办法让所有数据透视表以某种方式共享数据源?

    也许是在打开文件时创建了OLAP多维数据集的本地副本,或者以不同的方式缓存数据透视表?

    我一直在玩http://www.contextures.com/xlPivot11.html的VBA,但似乎所有人都认为你的数据来自本地来源。

1 个答案:

答案 0 :(得分:0)

基于OLAP的支点的“缓存”概念与非基于OLAP的支点完全不同。根据{{​​3}}

  

基于OLAP数据源的Pivots,仅返回汇总数据   到Excel,根据需要。使用非OLAP外部数据库   返回各个源记录,然后Excel执行   总结。

     

因此,OLAP数据库可以为Excel提供   分析更多的外部数据。

但是因此,如果不对Excel进行一些重要的聚合,可能无法或不希望在Excel中“缓存”基础数据。但也许这就是解决方案:用你要报告的每个字段组成一个怪物数据透视表,然后构建一个报告界面,简单地使用GETPIVOTDATA函数引用该怪物数据透视表。