反馈已提交
网络繁忙
用户有时需要使用自定义类型的数据源来进行数据分析和仪表板展示。
FineBI 可以与 FineReport 建立远程连接来使用自定义数据源-程序数据集,从而 BI 引擎读取定义的数据源来进行数据分析和仪表板制作。
注:2019-06-14 之后的 5.1 版本对程序数据集的更新做了优化,从全量数据抽取到内存的方式改为了流式抽取,支持亿级数据量的抽取。
本例以 FineBI 内置的模板执行日志为例进行介绍。
点击下载模板执行日志文件:ExecuteLog.class
点击下载平台管理日志文件:OperateLog.class
1)将 ExecuteLog.class 文件并将其拷贝到%FineBI%/webapps/webroot/WEB-INF/classes/com/fr/log下,此时该程序数据源定义成功,如下图所示:
模板执行日志文件代码如下所示,可以进行编译成 class 文件:
package com.fr.log;import com.fr.data.AbstractTableData;import com.fr.decision.log.ExecuteMessage;import com.fr.general.data.TableDataException;import com.fr.intelli.record.MetricRegistry;import com.fr.stable.query.QueryFactory;import com.fr.third.springframework.util.CollectionUtils;import java.util.ArrayList;import java.util.List;/** * @author Munin * @version 5.1.3 * Created by Munin on 2020/4/27 */public class ExecuteLog extends AbstractTableData { private static final long serialVersionUID = -3233073054624031382L; private String[] columnNames = { "tname", "type", "userrole", "param", "ip", "username", "consume", "sql", "browser", "memory", "time", "reportId" }; private List<List<Object>> cacheData = new ArrayList<>(); public ExecuteLog() { } /** * 懒加载,解决不必要的取明细性能问题 */ private List<List<Object>> getExecuteData() { if (CollectionUtils.isEmpty(cacheData)) { init(); } return cacheData; } private void init() { try { List<ExecuteMessage> messages = MetricRegistry.getMetric().find(ExecuteMessage.class, QueryFactory.create()).getList(); if (messages != null && !messages.isEmpty()) { for (ExecuteMessage message : messages) { List<Object> objects = new ArrayList<Object>(); objects.add(message.getTemplate()); objects.add(message.getType()); objects.add(message.getUserrole()); objects.add(message.getParameters()); objects.add(message.getIp()); objects.add(message.getUsername()); objects.add(message.getConsume()); objects.add(message.getSql()); objects.add(message.getBrowser()); objects.add(message.getMemory()); objects.add(message.getTime()); objects.add(message.getReportId()); cacheData.add(objects); } } } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } } @Override public int getColumnCount() throws TableDataException { return columnNames.length; } @Override public String getColumnName(int i) throws TableDataException { return columnNames[i]; } @Override public int getRowCount() throws TableDataException { return getExecuteData().size(); } @Override public Object getValueAt(int i, int i1) { List<List<Object>> data = getExecuteData(); if (i < data.size()) { List<Object> message = data.get(i); if (i1 < message.size()) { return message.get(i1); } } return null; }
首先需要将设计器远程连接至 FineBI 服务器。此处详情请参见:远程连接 FineReport 设计器
1)打开设计器,选择服务器>服务器数据集,如下图所示:
2)进入服务器数据集设置界面,选择+>程序,如下图所示:
3)点击选择,选择添加的ExecuteLog.class文件,点击确定保存。如下图所示:
4)在服务器数据集下能看到刚刚添加的程序数据集,如下图所示:
注:此处若想添加多个,可重复上述步骤选择 OperateLog.class 文件添加。
1)登录数据决策系统,选择数据准备,进入业务包选择添加表>数据库表,如下图所示:
2)在服务器数据集下,可以看到刚刚在设计器中添加的程序4,选中表并点击确定添加到业务包中即可使用。如下图所示:
售前咨询电话
400-811-8890转1
在线技术支持
在线QQ:800049425
热线电话:400-811-8890转2
总裁办24H投诉
热线电话:173-1278-1526
文 档反 馈
鼠标选中内容,快速反馈问题
鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。
不再提示
10s后关闭