如何创建连接到只下载查询数据的Access数据库的Excel Pivot?

时间:2014-11-29 13:30:57

标签: sql excel ms-access olap

我有一个大约60列和400,000行的表,并且正在增加。我们公司的笔记本电脑和MS Excel无法在RAM中处理这么多数据。所以我决定将数据存储在MS Access中并将其链接到Excel。

然而,Excel中的数据透视仍然将所有数据下载到Excel中,然后对数据执行过滤器和操作。这适用于较少的数据,但现在有更多的数据开始出现内存错误。即使数据透视表中的数据可能只有50个单元格,文件大小也是30+ MB ...

是否可以创建与Access的连接,使其仅下载查询的数据,事先进行操作,然后将修改后的数据发送到Excel?

我在之前的公司看过这个设置(Excel枢轴只下载它需要的东西)。但据我记得,它一直在查询SQL数据库。 (遗憾的是,由于IT主管意图成为唯一了解核心业务的人(他基本上将公司的IT运营作为人质以换取他的工作保障),因此无法了解更多信息)...但我离题了。

我已尝试在互联网上搜索这几天了,但这是我在Google无法找到的一个非常具体的问题:/

任何帮助甚至指针都将受到高度赞赏!

编辑:我想指出我正在尝试创建用于分析的OLAP连接,因此数据透视图将会更改字段。我对枢轴如何工作的理解是,当我们选择枢轴中的字段时,excel会设计一个查询(基于选择字段)并将其发送到连接数据库以检索所请求的数据。如果不是这样的话,我怎么做这样的事呢?希望详细说明。

2 个答案:

答案 0 :(得分:2)

我认为您在Access中创建了一个大型表来存储您的所有数据,所以如果您只是将该表作为数据源链接,Excel就不会知道哪个特定的数据位是相关的,并且最有可能必须经历所有这一切。

相反,您可以尝试不同方法的组合:

  • 创建一个查询,从Access预过滤数据并将该查询链接到Excel。 为{em>连接属性而不是SQL使用Table 命令类型
    在Access中测试该查询以确保它运行良好且足够快。

  • 确保所有重要字段都有索引(您过滤的字段,分组的字段,Excel必须经过的任何字段,以确定是否应将其包含在数据透视中,确保该字段有一个明智的指数)。

  • 确保在Access中的表中设置了主键。如果尚未使用,请使用默认的自动增量ID

  • 如果所有其他方法都失败了,请分解那个巨大的表格:它不是那么多的记录数量太多,而是大量的列数。

  • 如果您在数据透视表中使用计算字段或根据某些条件过滤数据,请考虑在Access中的表中添加包含预先计算数据的列。例如,您可以从Access运行查询以更新这些附加字段或添加一些VBA来执行此操作。

它应该运行得很好:为了给你一个想法,我已经用Excel 2013进行了一些测试,链接到包含33个字段和392498行(库存操作日志)的250MB ACCDB:大多数操作都在Excel中的数据透视只需要几分之一秒,对于数据密集程度最高的数据,可能需要几秒钟。

另一件事:Access支持pivot tables and pivot charts。如果访问足够,也许你不需要Excel。您可以在需要访问数据的每台计算机上使用Access Runtime 20132013(免费)作为前端。每个front-end can then be linked to the backend数据库,用于保存网络共享上的数据。这些工具比Excel更笨重,但它们都有效。

答案 1 :(得分:0)

为避免在Access数据库中创建查询,另一种可能的解决方案是在Excel中使用PowerPivot加载项,实现查询和规范化。