润乾集算报表多样性数据源之文本文件.pdf

润乾集算报表多样性数据源之文本文件.pdf

ID:52768079

大小:642.88 KB

页数:5页

时间:2020-03-30

润乾集算报表多样性数据源之文本文件.pdf_第1页
润乾集算报表多样性数据源之文本文件.pdf_第2页
润乾集算报表多样性数据源之文本文件.pdf_第3页
润乾集算报表多样性数据源之文本文件.pdf_第4页
润乾集算报表多样性数据源之文本文件.pdf_第5页
资源描述:

《润乾集算报表多样性数据源之文本文件.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、润乾集算报表多样性数据源之文本文件多样性数据源在报表开发中越来越常见,润乾集算报表对多样性数据源的有效支持使得这类报表开发变得非常简单,目前集算报表支持的数据源类型除传统的关系型数据库外,还支持:TXT文本、Excel、JSON、HTTP、Hadoop、mongodb等。这里通过两个例子介绍集算报表使用文本数据源制作报表的步骤,对于小文本文件和大文本文件在集算报表中可以采用不同的方式进行处理。小文本文件报表说明股票交易记录按月以文本形式存储,文件名为stock_record_yyyyMM.txt(如stock_record_2009

2、01.txt),文本内容包括股票代码、交易日期和收盘价。现根据指定日期精确查询某一只或几只股票的收盘价,以便进行股价趋势分析。文本内容如下:codetradingDateprice1200892009-01-0100:00:0050.241201232009-01-0100:00:0010.351201362009-01-0100:00:0043.371201412009-01-0100:00:0041.861201702009-01-0100:00:00194.63报表样式如下:输入查询日期和股票代码,查询到的交易信息由于某天的股

3、价信息只会存在一个文件中(按月存储),单个文件数据量并不是很大,因而可以将文件一次性加载到内存中完成数据查询。这里我们也将能够一次性读入内存进行计算的文件称为小文本文件。以下为具体实现:编写计算脚本使用集算编辑器编写脚本(p1.dfx),完成文件读入和数据过滤,为报表返回结果集。由于要接收报表传递的参数,首先设置脚本脚本参数编辑脚本内容(右侧为格子运行后结果):A=file("E:/stock_record_"+string(d_date,"yyyy1MM")+".txt").import@t()=A1.select(trading

4、Date==d_date&&2s_code.array().pos(code)!=null)3resultA2A1:根据日期参数导入指定文件(一个);这里使用了f.import()将文本数据一次性读入内存,采用全内存方式完成数据计算,这也是处理小文件的常用方法A2:根据指定日期和股票代码查询交易记录A3:为报表返回结果集编辑报表模板使用集算报表设计器新建报表模板,并设置参数:设置数据集,使用“集算器”数据集类型,调用编辑好的脚本文件(p1.dfx)其中,dfx文件路径既可以是绝对路径,也可以是相对路径,相对路径是相对选项中配置的df

5、x主目录的。编辑报表表达式,直接使用集算脚本返回的结果集,不再在报表中过滤,完成报表制作通过上面的实现可以看到,使用集算器脚本可以很方便地完成文本文件的读取计算,而且外置的集算脚本具有可视化的编辑调试环境,编辑好的脚本还可以复用(被其他报表或程序调用)。不过,如果脚本已经调试好,而且不需要复用的时候,要维护两个文件(集算脚本和报表模板)的一致性会比较麻烦,这时候直接使用集算报表的脚本数据集就比较简单了。在脚本数据集中可以分步编写脚本完成计算任务,语法与集算器一致,还可以直接使用报表定义好的数据源(本例并未涉及)和参数。可以这样使用脚

6、本数据集替代集算器数据集(集算脚本)部分(报表参数、表达式等部分与使用集算器数据集时完全一致,不再赘述):直接使用报表定义的参数date和code。大文本文件除了可以用小文本文件做为报表数据源,集算报表还可以读取大文本文件(无法一次性读入内存进行计算)。与小文本处理方式不同,集算报表采用外存计算的方式来处理大文件,这里也通过实例来说明。我们更改一下上面的报表需求,要求可以查询指定时间段的某些股票交易信息。由于时间跨度可大可小,所以需要读入的文件可能很多,这时无法将多个文件一次性加载到内存中进行计算,需要使用处理大文本的外存计算方式。

7、以下为具体实现:编写计算脚本设置脚本参数编辑脚本内容(右侧为格子运行后结果)A=to(int(string(b_date,"yyyyMM")),int(string(e_1date,"yyyyMM"))).select(~%100<13&&~%100>0)=A1.(file("E:/stock_record_"+string(~)+".txt").c2ursor@t()).conj@x()=A2.select(tradingDate>=b_date&&3tradingDate<=e_date&&s_code.array().pos(

8、code)!=null)4resultA3.fetch()A1:根据日期范围计算需要查询的月份,以确定用到的文件A2:循环所有月份,使用f.cursor()建立文件游标,并通过cs.conj@x()将多个游标合并为一个;与使用f.im

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

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

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