报告大型数据集的工具/查看器
我有一个数据处理系统,可以处理它所产生的数据。 “大”的意思是这个系统的“小”执行产生大约30 MB的报告数据,当转储到一个CSV文件和大型数据集大约130-150 MB(我敢肯定有人在那里有一个更大的想法“大”但这不是重点…;)
Excel以其数据列表的forms为报表用户提供了理想的界面:用户可以对数据进行过滤和细分,以查看他们感兴趣的具体细节(因为他们对多个成千上万的行,他们知道如何应用多个filter来获得他们想要的数据) – 他们还可以添加注释和标记到报告,创build图表,图表等等。他们知道如何做到这一点,这是更容易让他们这样做,如果我们只是给他们的数据。
Excel对于小型testing数据集来说非常棒,但是它不能处理这些大的testing数据集。 有谁知道可以提供与Excel数据列表类似的界面的工具 – 在多个字段上dynamic创build和更改filter的能力; 但可以处理更大的文件?
我尝试的下一个工具是MS Access,并发现Access文件非常庞大(30 MBinput文件导致大约70 MB访问文件,当我打开文件时,运行一个报告并closures文件在120-150 MB !),导入过程很慢并且非常手动(目前,CSV文件是由运行主进程的同一个plsql脚本创build的,因此我旁边没有任何干预)。 我还尝试了一个Access数据库,其中包含链接表的数据库表,这些数据库表存储报表数据,速度慢了许多倍(由于某些原因,sqlplus可以在一分钟内查询并生成报表文件, 5分钟的相同数据)
(如果有帮助,数据处理系统使用PL / SQL编写,并运行在Oracle 10g上。)
在这种情况下访问将是一个很好的工具,因为它不像excel那样有实际的行限制。 当他们习惯了自定义filter的function时,困难的部分是让人们脱离excel。 这是非常有可能的获得一些近似的东西,但它永远不会是完全一样的,除非你在表格中embedded一个Excel控件。
至于手册部分,您可以脚本化数据库以使用VBA导入文件。 例如,让我们说这个主要任务是把你的文件每天晚上转储到一个新文件夹中。 您可以创build一个“看门狗”访问数据库,该数据库具有一个打开的“OnTimer”事件,每隔几分钟查看一次该文件夹,当它find一个新的文件开始导入。 当您的用户在上午工作时,数据已经被加载。
至于膨胀,是的,这可能是一个问题,但是,所有你需要做的是快速紧凑和修复文件,它会缩小。
编辑:
您可以通过选项将访问数据库设置为closures压缩。 我不记得具体在哪里,在工作中,我们只能访问97(但足够奇怪的办公室2003)。 另一种select是通过代码压缩。 这里有一个链接来解释如何
http://forums.devarticles.com/microsoft-access-development-49/compact-database-via-vba-24958.html
有趣的一个; 这种问题在中等范围内并不多。 访问应该是这样的,但是正如你发现的那样,在很多方面都是非常糟糕的,对于许多最终用户来说可能有些过于先进。
另一方面,如果你有一个数据库服务器,那么使用它的权力似乎是一个耻辱。 有几种不同成本和复杂性的工具可以让你设置相当用户友好的基于服务器的报告,你可以让用户为自己的报告设置参数,然后在服务器上进行过滤,其结果导出到Excel,例如Oracle Discoverer或Microsoft Reporting Services(可以将其设置为直接在Oracle数据库上报告,即使它是基于SQL Server的)。
我们使用Microsoft Reporting Services; 我在Developer Studio中构build报告,允许用户访问网页,按照任何预定义的标准进行过滤,运行报告(在服务器上完成艰苦的工作),并将结果导出到Excel以供进一步处理。
一个中途的房子,你设置的报告,可以过滤到不到一百万行的初始数据,然后导出到Excel可能是要走的路…
什么版本的Excel,它现在可以处理大量的数据。 在Excel 2007中,工作表大小为16,384列1,048,576行。 你真的在报告中发送超过一百万条logging吗? 那么,谁来看待这样的数据呢?
我build议你使用一个Excel前端共享RDB后端。
为Excel创build一个自定义过滤系统(我将使用驻留在服务器上的VBA和ADO XLA,但有几种技术可供使用),它们生成SQL,将Excel返回到他们想要的数据的子集玩(图表,计算,打印等)。