反馈已提交

网络繁忙

您正在浏览的是 FineBI6.0 帮助文档,点击跳转至: FineBI5.1帮助文档

程序数据集

  • 文档创建者:doreen0813
  • 历史版本:23
  • 最近更新:Carly 于 2023-02-08
  • 1. 概述

    1.1 应用场景

    用户有时需要使用自定义类型的数据源来进行数据分析和仪表板展示。

    1.2 功能简介

    FineBI 可以与 FineReport 建立远程连接来使用自定义数据源-程序数据集,从而 BI 引擎读取定义的数据源来进行数据分析和仪表板制作。

    注:程序数据从全量数据抽取到内存的方式改为了流式抽取,支持亿级数据量的抽取。

    2. 示例

    本例以 FineBI 内置的模板执行日志为例进行介绍。

    2.1 定义数据源程序

    点击下载模板执行日志文件:ExecuteLog.class 

    点击下载平台管理日志文件:OperateLog.class

    1)将 ExecuteLog.class 文件并将其拷贝到%FineBI%/webapps/webroot/WEB-INF/classes/com/fr/log下,此时该程序数据源定义成功,如下图所示:

    1588070434776739.png

    模板执行日志文件代码如下所示,可以进行编译成 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;
        }

    2.2 建立远程连接

    首先需要将设计器远程连接至 FineBI 服务器。此处详情请参见:远程连接 FineReport 设计器

    1)打开设计器,选择服务器>服务器数据集,如下图所示:

    432.png

    2)进入服务器数据集设置界面,选择+>程序,如下图所示:

    31.png

    3)点击选择,选择添加的ExecuteLog.class文件,点击确定保存。如下图所示:

    320.png

    4)在服务器数据集下能看到刚刚添加的程序数据集,如下图所示:

    注:此处若想添加多个,可重复上述步骤选择 OperateLog.class 文件添加。

    38.png

    2.3 FineBI 中添加程序数据表

    1)管理员登录FineBI系统,点击「公共数据」,选择任意文件夹,点击「新建数据集>数据库表」,如下图所示:

    2)在服务器数据集下,可以看到刚刚在设计器中添加的程序4,选中表并点击确定添加到业务包中即可使用。如下图所示:

    附件列表


    主题: 管理系统
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持