不多说,直接上干货!
这是来自FineBI官网提供的帮助文档
http://help.finebi.com/http://help.finebi.com/doc-view-31.html
目录:
1、描述
由上一节BI可能通过设计器远程服务器的方式,以服务器数据集的形式来连接数据。
这样其数据来源可以是数据库数据,还可以是其它任何类型的数据,因为BI是通过AbstractTableData抽象类来读取数据源的,而上述所有的数据来源都继承实现其抽象方法,因此BI可以用自定义类型的数据源了(程序数据集),BI引擎就能够读取定义的数据源作为报表数据源使用。下文讲述程序数据集的建立方法。
2、实现原理
AbstractTableData抽象类主要有5个方法,如下:
//获取AbstractTableData的总列数 public int getColumnCount(); //获取AbstractTableData中第columnIndex列的列名 public String getColumnName(int columnIndex); //判断是否存在第rowIndex行,这主要是用于处理超大数据时,完全遍历所有数据获取总行数相当困难,用这个方法来判断第rowIndex行是否存在,存在则可读取 public boolean hasRow(int rowIndex); //获取AbstractTableData的总行数 public int getRowCount(); //获取AbstractTableData中第columnIndex列,第rowIndex行的数据 public Object getValueAt(int rowIndex, int columnIndex); 在某些应用场景中,需要在程序中对数据进行处理后再作为报表的数据源使用
3、案例
下面我们定义数据集为如下样式:列为Name,Score,值分别为Alex,15;Helly,22;Bobby,99作为程序数据集。
3.1 定义数据源程序
定义一个类ArrayTableDataDemo继承AbstractTableData,并实现里面的方法,具体代码如下:
package com.fr.wind; import com.fr.data.AbstractTableData; public class ArrayTableDataDemo extends AbstractTableData { // 定义程序数据集的列名与数据保存位置 private String[] columnNames; private Object[][] rowData; // 实现构建函数,在构建函数中准备数据 public ArrayTableDataDemo() { String[] columnNames = { "Name", "Score" }; Object[][] datas = { { "Alex", new Integer(15) }, { "Helly", new Integer(22) }, { "Bobby", new Integer(99) } }; this.columnNames = columnNames; this.rowData = datas; } // 实现ArrayTableData的其他四个方法,因为AbstractTableData已经实现了hasRow方法 public int getColumnCount() { return columnNames.length; } public String getColumnName(int columnIndex) { return columnNames[columnIndex]; } public int getRowCount() { return rowData.length; } public Object getValueAt(int rowIndex, int columnIndex) { return rowData[rowIndex][columnIndex]; } }
注意:
将ArrayTableDataDemo.java编译生成ArrayTableDataDemo.class类。
怎么做?
用jdk 然后cmd里头命令
或者用IDE之类的工具
这个实现起来很简单
https://blog.csdn.net/xuehuabaobeier/article/details/44597437
当然,你也许会出现这个问题
C:\Users\lenovo>D: D:\>javac ArrayTableDataDemo.java ArrayTableDataDemo.java:3: 错误: 程序包com.fr.data不存在 import com.fr.data.AbstractTableData; ^ ArrayTableDataDemo.java:5: 错误: 找不到符号 public class ArrayTableDataDemo extends AbstractTableData { ^ 符号: 类 AbstractTableData 2 个错误 D:\>
出错的原因是:
报错的是工具内置的jar包
建议你用开发工具吧
然后引入这几个java包
然后在编译
解决办法:
你直接去工具的安装目录的WebReport下的WEB-INF下的lib目录下拷贝
如果搞不清楚,直接把这几个包全部引入工具中
保存你这个java文件就行
这里,我使用在Eclipse里将.java 编译成 .class文件?
答: 可以,当你点击保存的时候,eclipse已经帮你编译好了,你可以在你当前工程的目录下,找到bin文件夹,文件夹下面有编译好的你的.class文件
将生成的类文件拷贝到/webapps/WebReport/WEB-INF/classes/com/fr/wind下,此时该程序数据源便定义好了。
注:上面WEB-INF后面的可存放地址在BI目录中是没有的,需要自行创建。
3.2 配置程序数据
首先我们要将设计器远程到BI的服务器上。此处详见设计器远程到BI服务器上。
FineBI学习系列之FineBI官网提供的服务器数据集(图文详解)
打开服务器 -> 服务器数据集,点击加号选择程序数据集:
进行类名选择。
欢迎大家,加入我的微信公众号:大数据躺过的坑 人工智能躺过的坑
同时,大家可以关注我的个人博客:
http://www.cnblogs.com/zlslch/ 和 http://www.cnblogs.com/lchzls/ http://www.cnblogs.com/sunnyDream/
详情请见:http://www.cnblogs.com/zlslch/p/7473861.html
人生苦短,我愿分享。本公众号将秉持活到老学到老学习无休止的交流分享开源精神,汇聚于互联网和个人学习工作的精华干货知识,一切来于互联网,反馈回互联网。
目前研究领域:大数据、机器学习、深度学习、人工智能、数据挖掘、数据分析。 语言涉及:Java、Scala、Python、Shell、Linux等 。同时还涉及平常所使用的手机、电脑和互联网上的使用技巧、问题和实用软件。 只要你一直关注和呆在群里,每天必须有收获
对应本平台的讨论和答疑QQ群:大数据和人工智能躺过的坑(总群)(161156071)
原文地址:https://www.cnblogs.com/zlslch/p/8627764.html