集算器文本处理之组间插入汇总值.pdf

集算器文本处理之组间插入汇总值.pdf

ID:52768073

大小:355.56 KB

页数:3页

时间:2020-03-30

集算器文本处理之组间插入汇总值.pdf_第1页
集算器文本处理之组间插入汇总值.pdf_第2页
集算器文本处理之组间插入汇总值.pdf_第3页
资源描述:

《集算器文本处理之组间插入汇总值.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、集算器文本处理之组间插入汇总值在已经分组的数据间插入汇总值,通常的做法是依次读入本组数据,直到数据发生变化,然后将本组数据和汇总值追加到新文件中,再读入下一组数据。硬编码的过程有些麻烦,集算器支持分组游标,可以自动读入整组数据。下面通过例子来看一下具体作法。日志webdata.log有三列,列之间以逗号分隔,第一列是分组标志,后两列是数值,部分数据如下:webcat_service,1.0,50webcat_service,1.5,30webcat_service,2.5,10webcat_service,4.0,5webroot

2、_service,10.0,50webroot_service,15.0,20webroot_service,20.0,10webroot_service,30.0,5weblink_service,12.0,50weblink_service,15.0,20weblink_service,20.0,10weblink_service,35.0,5webcat_service,2.0,50webcat_service,2.5,30webcat_service,3.5,10webcat_service,4.0,5注意:第一组和第四组

3、的分组标志相同。现在要在每组数据之间插入第二列的平均值,以及一个空行,如下:webcat_service,1.0,50webcat_service,1.5,30webcat_service,2.5,10webcat_service,4.0,5webcat_service_avg,2.25webroot_service,10.0,50webroot_service,15.0,20webroot_service,20.0,10webroot_service,30.0,5webroot_service_avg,18.75weblink_

4、service,12.0,50weblink_service,15.0,20weblink_service,20.0,10weblink_service,35.0,5weblink_service_avg,20.5webcat_service,2.0,50webcat_service,2.5,30webcat_service,3.5,10webcat_service,4.0,5webcat_service_avg,3.0集算器代码:AB1=file("E:\webdata.log").cursor(;",")=file("e:

5、result.txt")2forA1;_1=B1.export@a(A2;",")3=A2._1+"_avg,"+string(A2.avg(_2))+”r”4=B1.write@a(B3)A1=file("E:\webdata.log").cursor(;",")这句代码以游标的方式打开日志文件。函数cursor表示根据文件对象返回游标对象,使用逗号作为列分隔符(默认分隔符是tab),默认列名是_1,_2…_n,其中列_1是分组列。也可以指定列名,比如cursor(groupName,data1,data2;”,”)。

6、这句代码只是建立游标对象,并没有读入数据,实际的读入动作会在遇到语句for或函数fetch时触发。B1=file("e:\result.txt"),这句代码建立了一个文件对象,用来存储计算结果。A2:forA1;_1这句代码对游标A1进行循环读数,每次读入第一列(列名为_1)相同的一组数据,此时数据才会真正读入内存。注意这里的for语句。集算器有forcs,n这样的写法,这表示每次读入游标cs中的n条记录。而forcs;x表示每次读入游标cs中的一组记录,每组记录的x字段相同,数据需要按照x事先分组。本案例的数据已经分过组了,如

7、果尚未分组,可以使用集算器的其他函数进行前期处理(比如游标排序函数sortx)。语句forcs;x中的x也可以是表达式,即:每次读入多条数据,直到表达式x发生变化,比如:forA14;left(_1,4)。这句代码会判断第一列的前四个字符,只要前四个字符未发生变化,集算器就会把它归为一组。B2-B4:这是for语句A2的循环体,用来对每组数据进行同样的数据处理。可以看到,for语句的作用范围用缩进就可以表示,而无需用括号或begin/end等标记。另外,循环变量用for所在单元格的格名就可以表示,即A2表示当前组对应的所有记录。如

8、果用调试模式观察第一次循环,可以看到A2的值如下:B2=B1.export@a(A2;",")这句代码将A2追加到文件中。函数export可以将一组记录输出到文件中,选项@a表示追加。为了和源数据保持一致,这里使用逗号做分割符(默认分割符是tab)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。