- 浏览: 163509 次
最新评论
-
mx122723:
不错,学习了!
解决报表特殊布局的若干示例 -
Long_yuan:
说了半天加个字段就好了嘛。。。。。。
MongoDB的本地化排序 -
windlike:
...
查询MongoDB子文档的List字段 -
Long_yuan:
既然用mongodb 还是赶紧丢掉sql设计范式吧
MongoDB的外键关联处理 -
datamachine:
m635674608 写道收费的吧???不是开源的吧??有免费 ...
结构化文本文件之间的集合运算
文章列表
使用Jasper或BIRT等报表工具时,常会碰到一些非常规的统计,用报表工具本身或SQL都难以处理。比如基于MSSQL/Oracle时,在报表中呈现类似group_concat函数的计算结果。
集算器具有结构化强计算引擎,集成简单,可以协助报表工具方便地实现此类需求。下面通过一个例子来说明通用group_concat函数的实现过程。
MSSQL的表Table1有四个字段,字段Col1、Col2、Col3是分组字段,Col4是汇总字段,部分数据如下:
报表工具需要的数据源如下:
在进行文本处理时,有时候需要从多级目录的多个文件中取出某些数据。命令行难以处理较复杂的过程,而高级语言虽然可以实现这种算法,但代码比较难写,再加上可能存在大文件,处理起来会更加困难。集算器支持游标读取大文件、脚本递归调用,易于实现批量文件处理,下面通过例子来看一下具体作法。
目录“D:\files”包含多级子目录,每个目录下都有许多文本格式的文件,从这些文件中读取指定的行(比如第二行),并将这些数据写入新的文件result.txt。目录D:\files的部分结构如下:
集算器代码:
在进行文本文件的处理时,有时需要从已经分组的数据中去除重复的行,当文件较大无法放入内存时会更为麻烦。集算器的分组运算支持丰富的选项,同时支持文件游标读取整组数据,易于实现此类算法,下面通过例 ...
在进行文本处理时,经常会遇到对大文件进行条件查询的情况。用命令行的grep\cat可以处理一些简单情况,写法很简单,但效率太低,用高级语言处理此类问题虽然可以获得较高的运行效率,但代码编写复杂度却相当高。如果遇到条件比较复杂或条件经常变化的情况,还需要额外实现一套类SQL的底层库函数,其难度会更大。
集算器支持大文件条件查询和多线程并行计算,代码简洁性能优异,下面通过例子来看一下具体作法。
文本文件employee.txt中保存了员工数据。现在要读取员工信息,从中找出1981年1月1日(含)之后出生的女员工,最后将查询结果输出到result.txt中。
文本文件empo ...
在已经分组的数据间插入汇总值,通常的做法是依次读入本组数据,直到数据发生变化,然后将本组数据和汇总值追加到新文件中,再读入下一组数据。硬编码的过程有些麻烦,集算器支持分组游标,可以自动读入整组数据。下面通过例子来看一下具体作法。
日志webdata.log有三列,列之间以逗号分隔,第一列是分组标志,后两列是数值,部分数据如下:
注意:第一组和第四组的分组标志相同。
现在要在每组数据之间插入第二列的平均值,以及一个空行,如下:
集算器代码:
在进行文本处理时,经常会遇到对大文件进行字符串匹配情况。用命令行的grep\cat命令处理此类问题时,写法很简单,但效率太低,用高级语言处理此类问题虽然可以获得较高的运行效率,但代码编写复杂度却相当高。
集算器支持大文件字符串匹配和多线程并行计算,代码简洁性能优异,下面通过例子来看一下具体作法。
文件file1.txt存储着大量的字符串,现在需要找出以”.txt”结尾的行数据,并输出到result.txt中。部分源数据如下:
集算器代码:
A1
在将日志文本解析成结构化数据时时,常会遇到记录由数量不定的多行组成的情况。这种变换存在一定的复杂性,实现复杂度较高。集算器支持正则表达式、字串拆分、隔行取数、横向拼接等灵活的结构化计算函数,适合处理此类文本。下面通过例子来看一下具体作法。
日志文件reportXXX.log存储着若干记录,每条记录由多行构成,包括14个数据项(字段)。记录以字符串“Object Type”开头。我们的目标是把该日志整理为结构化数据,并将结果写入文本文件。部分源数据如下:
集算器代码:
在进行文本处理时,经常会遇到对大文件进行字符串匹配情况。用命令行的grep\cat命令处理此类问题时,写法很简单,但效率太低,用高级语言处理此类问题虽然可以获得较高的运行效率,但代码编写复杂度却相当高。
集算器支持大文件字符串匹配和多线程并行计算,代码简洁性能优异,下面通过例子来看一下具体作法。
文件file1.txt存储着大量的字符串,现在需要找出以”.txt”结尾的行数据,并输出到result.txt中。部分源数据如下:
集算器代码:
A1:以游标的形式打开文件。函数cursor并不会将数据全部读入内存,而是以游标(流)的方式打开文件,因此不会占据内存空间。 ...
集算器和R语言都是典型的数据处理及分析语言,都具有二维结构化数据对象,都擅长多步骤的复杂计算。但两者的二维结构化数据对象在底层机制上存在较大的差异,这种差异导致了集算器对于结构化数据的计算更为擅长,特别适合应用程序员进行商业计算,而R对矩阵计算更为擅长,特别适合科学工作者进行科学计算或工程计算。
集算器的二维结构化数据类型是序表对象(TSeq)。序表对象以记录为基础,多条记录形成行式的二维表,二维表配合列名形成完整的数据结构。R语言以向量为基础,多条向量形成列式的二维表,二维表配合列名形成完整的数据结构。
底层机制影响着用户的实际体验 ...
在进行文本处理时,经常会遇到对大文件进行集合运算的情况,比如找出两个文件不同的行数据。用命令行的grep\cat命令处理此类问题时,写法很简单,但效率太低,用高级语言处理此类问题虽然可以获得较高的运行效率,但代码编写复杂度确相当高。
用集算器来进行大文件的集合运算和多线程并行计算,不仅代码简洁,而且性能优异。
文件file1.txt和file2.txt存储着大量的字符串,找出两者共同的行数据(交集)。部分数据如下:
两个大文件
润乾报表是优秀的报表工具软件。在发展过程中,润乾报表的功能越来越多,难免会出现需要整理和优化的地方。作为润乾报表的下一代产品,集算报表对润乾报表进行了新增和精简,实现了多方面的产品提升。
一、集算报表新增功能
1.集成集算器,使计算与呈现分离
集算报表内置了专业的结构化和半结构化数据计算开发工具:集算器esProc,在增强报表复杂外观展现能力的同时,还能解决报表复杂的数据源计算问题。
集算器采用网格式的编程方式,具有:分步计算,更彻底集合化,有序计算,对象引用、支持游标等特性,敏捷的语法体系使计算实现更轻松。集算器集成开发环境(IDE
作为数据计算语言,集算器和R语言都提供了丰富的功能用来处理外存中的文本文件。两者在基本用法上有很多相似之处,但区别也很明显,比如处理列宽固定的文件、读写指定的列、处理大文本文件,计算性能等方面。下面详细对比两者的异同。
1、基本功能对比
描述:
sales.txt共有六列,列之间以制表符(\t)分割,行之间以换行符(\n)分割,其中第一行为列名。请将该文件读入内存,再原样写入新的文件。该文件的前几行如下:
集算报表5.0在保留润乾报表V4.x的核心功能外,进行了优化和精简,其中报表函数也做了适当优化,这里就常见计算来比较一下二者函数语法之间的差异。
对比函数一览表
1、数据集函数
1.1ds.group()
润乾报表:
datasetName.group(selectExp{,descExp{,filterExp{,sortExp{,groupSortExp{,groupDescExp{,rootGroupExp}}}}}})
集算报表:
datasetName.group(<selectExp>{,filter_exp};{sort1}{:order1},…;{ ...
程序语言根据其设计目的不同,其侧重的基本数据类型也不同。JAVA、C#等语言被设计用来进行通用的应用程序开发,其基本数据类型是字符串、数字、布尔等原子数据类型,以及数组和通用对象。SQL、PowerBuilder、R、集算器esProc等语言被设计用来进行数据处理,其基本数据类型是有结构的二维数据表对象。比如这句SQL:SELECT T1.id,T1.name,T1.value FROM T1 LEFT JOIN T2 ON T1.id=T2.id, 这里的T1,T2以及计算结果就是这种数据类型。用多个字段组成一条记录,由多条结构相同的记录组成二维数据,这样的数据及其字段名 ...
1、测试目的
在相同的硬件和web容器上测试润乾报表和集算报表的性能,对比在报表中完成分组、排序、过滤、连接、排名的性能差异,以及并发情况下二者的表现。测试过程中,润乾报表将采用报表工具内置的计算引擎,集算报表采用其内置的集算器计算引擎。
2、环境描述
测试机型:Dell Inspiron 3420
CPU:Intel Core i5-3210M @2.50GHz *4
RAM:4G
HDD:西数WDC(500G 5400转/分)