FineBI安装与启动 - FineBI帮助文档|报表开发|报表使用|学习教程

FineBI安装与启动

注：最好不要在一台物理机器上同时运行多个BI工程。NIO会将内存占满， 可能会导致另一个工程没法用、宕机卡死之类的问题。

1、操作系统

FineBI支持安装在主流操作系统上，但对操作系统的CPU及JDK版本有要求，目前支持的系统版本如下：

操作系统 | CPU | JDK1.8及以上
Windows | 32位 | Oracle
Windows | 64位 | Oracle
Linux | 32位 | Oracle
Linux | 64位 | Oracle
Linux | 64位 | IBM J9
OS X | 64位 | Oracle

在安装前需确认当前操作系统的CPU及对应JDK版本、厂商，JDK版本必须为1.8及以上，可去对应厂商处下载JDK版本安装部署，否则将无法正确安装。

注：除上述列出的操作系统对应JDK外，其余均不支持，在安装前请务必确认好。比如linux-ARM系统就不支持安装。

2、Windows系统下安装流程

从 FineBI官网 下载最新版本的.exe文件。双击FineBI安装文件，会加载安装向导，安装向导加载完后，弹出如下对话框：

下一步按钮，弹出许可协议对话框，如下图：

我接受协议后，点击下一步按钮，弹出选择安装路径对话框，如下图：

浏览，选择文件安装的目录后点击下一步按钮，弹出最大jvm内存窗口，默认内存是4G,如下图所示：

下一步，弹出选择开始菜单文件夹窗口，如下图所示:

自定义开始菜单文件夹名，然后点击下一步按钮，弹出选择附加工作窗口，如下图：

下一步按钮，弹出安装中对话框，如下图：

完成按钮，FineBI到此就安装完成了。

3、Windows版本启动

启动FineBI，两种方式，一种是通过点击桌面上的快捷图片；另一种方式是点击%FineBI%/bin/finebi.exe 文件启动。如图：

当前BI安装包本身配置了tomcat的服务器环境，点击此文件即弹出Tomcat打开BI服务器。如下图：

当tomcat服务器开启以后，会自动弹出浏览器地址：http://localhost:37799/webroot/decision打开BI平台。

初始化设置。

4、Linux系统下安装流程

Linux系统是常用的服务器系统，用户使用FineBI经常会采用linux服务器安装，下文介绍linux的安装方式。

注：用于安装FineBI的Linux系统必须要存在图形化界面，否则无法安装成功；若没有图形化界面，需要先部署Web服务器，在Web服务器中部署FineBI工程，可参考 Web服务器部署。

1）上传文件

在FineBI官网 下载了linux版本安装包后，使用二进制传输方式将安装文件linux_unix_FineBI5_0-CN.sh 上传到linux服务器中。例如FileZilla：

官网下载linux版本的安装包。或者在linux命令行下，使用：wget http://down.finereport.com/bi5/linux_unix_FineBI5_0-CN.sh，回车就会开始下载，如下图：

wget http://down.finereport.com/bi5/linux_unix_FineBI5_0-CN.sh

# chmod 777 linux_unix_FineBI5_0-CN.sh

注：如果不先执行权限命令则会报错：-bash: ./linux_unix_FineBI4_1-CN.sh: Permission denied。

执行安装命令，如下图：

./ linux_unix_FineBI5_0-CN.sh

回车键进行安装，出现许可协议，如下图：

回车键。

回车键。

回车，出现是否接受协议，输入1，按回车键。

回车键。

可以设置BI系统使用的最大内存，直接写入数值即可，其单位是M ，此处使用缺省值，直接选择回车键。

n，按回车即可。同样桌面快捷方式一般也不需要，同样输入n，按回车键。文件即解压进行安装。

y按回车将FineBI运行起来。

5、Linux版本启动

在linux系统中，有三种方式的启动：1、只在当前shell中有效 2、在系统中启动 3、Linux系统开机自启动。

5.1 Shell启动

进入FineBI的安装目录%FineBI%/bin/中，使用命令./finebi即可，如下图：

./finebi

5.2 后台启动

进入FineBI的目录%FineBI%/bin/中，使用如下命令：

nohup ./finebi &

5.3 Linux系统开机自启动

FineBI布署在linux服务器的时候，通常会设置为开机启动程序，以便于用户重启linux服务的时候，将FineBI也同时启动。

方法：将启动命令（如下图）写进/etc/rc.local文件中。linux启动时会自动读取rc.local执行启动BI的命令。

5.4 Linux中重启FineBI

在Linux中没有对应的前端界面来关闭FineBI，需要使用命令ps -ef | grep FineBI来查看java进程对应的PID，如下图，FineBI进程对应的PID为13675。

使用kill -9 PID 命令将该进程杀掉，FineBI服务即关闭。例如：

kill -9 13675
随后参考上述进入FineBI目录中，使用命令nohup ./finebi & 启动即可。

6、Mac系统下安装流程

Mac系统下安装与Windows类似，在 FineBI官网 下载最新版本的安装包文件后，双击如下图的FineBI安装文件，会加载安装向导，安装向导加载完后，会弹出对话框，随后按照windows的操作流程即可。

7、Mac版本启动

MAC系统启动FineBI包含两种方式，一种是直接在程序栏找到安装的finebi程序，双击图标启动。

FineBI安装目录，通过点击%FineBI%/bin/finebi启动。如下图所示：


FineBI端口开放列表- FineReport帮助文档|报表开发|报表使用|学习教程

FineBI端口开放列表

1、描述

在安装完成FineBI数据决策系统后，服务器需要开放一些端口供系统监听使用。对于服务器安全要求高的客户来说，在启动之前需要保证这些端口的开放，否则FineBI无法正常启动。

2、Spider单机部署

端口 | 作用 | 备注
37799 | BI的web端对外开放的端口 | 端口可修改
8005 | tomcat 远程停服务端口 | 端口可修改
8009 | tomcat AJP端口 | 端口可修改
4040 | BI的spark.ui端口 | 端口可修改
17777 | BI的spark.driver端口 | 端口可修改（端口被占用会自动递增）
17778 | BI的spark.blockManager端口 | 端口可修改(端口被占用会自动递增）
38888 | 平台的websocket端口 | 端口可修改
随机 | 防破解用的端口 | 不需单独开放，不影响BI使用

3、Spider分布式引擎部署

包含三个服务器A、B、C，分别部署三个FineBI及对应分布式引擎模块的端口开放情况：

开放端口的机器 | 开放情况 | 开放对象 | 端口 | 说明 | 备注
FineBI | 必须开放 | 浏览器1~N（业务部门使用的） | 37799、8005、8009、4040、17777、17778、38888等 | BI的端口开放同单机 | 端口可修改
分布式服务器A | 必须开放 | 浏览器x（运维使用） | 8080 | 访问的是集群管理的端口，包括分布式的部署，各组件状态的管理等 | 端口可修改
分布式服务器A,B,C | 推荐开放 | 浏览器x（运维使用） | 50070 | HDFS的访问端口，用于查看持久化数据状态UI |
 |  |  | 7877 | spark的访问端口，用于查看任务执行的状态UI |
 |  |  | 19999 | alluxio的访问端口，内存管理状况的UI |
FineBI | 必须开放 | 分布式服务器A，B，C | 不限制端口 |  |
分布式服务器A,B,C之间 | 不限制端口，机器间访问不受限制

详细Spider分布式引擎部署准备可参考Spider分布式部署准备。


初始化设置- FineReport帮助文档|报表开发|报表使用|学习教程

初始化设置

1、描述

当FineBI在安装并启动后，会自动跳出FineBI数据决策系统平台网页，在平台中可以进行一系列的数据准备、数据加工、可视化分析等操作。

2、首次访问决策系统

在安装启动FineBI服务器以后，跳出地址http://localhost:37799/webroot/decision，进入引导页面，分为两个步骤：账号设置和数据库设置，如下所示：

单击开始设置，进入配置管理员用户名和密码界面：

输入用户名和密码确认，设置的该账户可登陆数据决策系统：

管理员账号设置成功后，点击配置数据库，如下图所示：
1）使用内置数据库，点击之后直接进入登录页
2）配置外接数据库，点击后跳转到数据库配置界面，输入相应的数据库信息并启用新数据库成功后，即可将平台hsql数据进行迁移，配置成功后点击跳转到登录页面

点击登录到数据决策系统可直接进入FineBI数据决策系统平台：

3、再次登录平台

访问数据决策系统，首先进入登录页面，如下图，输入正确用户名和密码。


FineBI界面- FineReport帮助文档|报表开发|报表使用|学习教程

FineBI界面

1、描述

FineBI是一款纯B/S架构的产品，为浏览器加服务器的结构，在服务器安装完成后，客户端只需要一个浏览器即可开始使用产品。上一章节我们介绍过FineBI初始化设置，输入用户名和密码即可进入数据决策系统，下面我们详细介绍一下系统界面。

2、FineBI数据决策系统

此处我们登录了部署在本地的工程默认浏览器地址：http://localhost:37799/webroot/decision进入系统，页面包含首页仪表板、目录、仪表板、数据准备、管理系统、创建和右上角的消息提醒、当前账号设置、首页模板可选操作。

下面我们对界面各节点的使用进行简单介绍，详细的使用方法在后续章节会进行详细说明。

3、目录

目录栏可点击展开或者收起，展开后显示模板目录，选择对应模板单击即可查看。

在展开的目录栏上方有收藏夹、搜索模板、固定目录栏选项可选择。

4、仪表板

仪表板节点用于前端的分析，可供业务员创建可视化图表进行数据分析。

详情请查看仪表板。

5、数据准备

数据准备为管理员从数据库获取数据到系统并准备数据，业务员进行数据再加工处理的地方。可进行业务包、数据表、关联、多路径、数据更新、自助数据集等管理。

详情请参考数据准备。

6、管理系统

管理系统为管理员进行数据决策系统管理的地方，支持目录、用户、外观、权限等的管理配置。

详情请参考管理系统。

7、创建

创建为提供给用户快捷新建数据连接、添加数据库表、添加SQL数据集、添加EXCEL数据集、添加自助数据集、新建仪表板的地方。

详情可参考配置数据连接、添加数据表、自助数据集、仪表板。

8、消息提醒及管理员账号

消息提醒会提示用户系统通知的消息，当前账号下可以进行重新设置该账号的密码和退出当前账号的操作。

首页模板也可进行全屏显示、关闭全部和关闭其他标签的功能，关闭全部为关闭当前打开的除首页外的其他所有目录模板，关闭其他标签为关闭除当前页面显示外的其他打开模板。


分析思路- FineReport帮助文档|报表开发|报表使用|学习教程

分析思路

1、描述

使用FineBI数据决策系统进行数据分析之前需要先了解FineBI仪表板的制作思路，沿着思路来了解如何对数据进行更好的分析展示。

FineBI仪表板的制作流程：

新建数据连接：管理员创建FineBI数据决策系统到数据库的连接，需要了解数据库的类型、地址、访问用户名、密码等信息；

新建数据表：通过创建的数据连接从数据库中取数新建数据表，供后续业务人员使用；

分配权限：管理员在创建了数据表以后将不同表的权限分配给不同业务人员，实现各部门的分类管理；

创建自助数据集：业务人员通过创建自助数据集对管理员已创建的数据表进行数据再加工处理，保存以供后续前端分析；

创建仪表板：业务人员在前端的dashboard界面通过选择图表、拖拽数据、设置样式等来实现对数据多维度的分析，展示分析结果；

分享仪表板：将创建好的仪表板挂出到系统或者分享给领导、同事查看，其他用户可对该分享的模板根据自身需求进行二次编辑。

注：最好不要在一台物理机器上同时运行多个BI工程。Java NIO会将内存占满， 可能会导致另一个工程没法用、宕机卡死之类的问题。

2、示例-零售销售分析

下面我们通过零售门店的销售分析为例，为您详述如何通过上述介绍的步骤部门间相互配合来挖掘出隐藏在数据中的价值。

某公司拥有各个门店，总部的业务人员需要向上级汇报这些门店的经营状况，分析2017年各区域、季度、月份、销售产品等对各门店的影响，方便领导在了解这些因素后针对不同门店做不同的管理策略调整，来针对性的提高公司的盈利能力。

从需求我们可以分析出，业务人员向领导展示的主要为区域、季度、月份、销售产品这些维度对不同门店的销售额影响，主要涉及的是保存在数据库中的门店维度表、品类维度表、销售数据表，下面我们将分步骤介绍如何进行该分析。

数据准备快速入门

权限分配快速入门

数据加工快速入门

可视化分析快速入门

仪表板快速入门

分享快速入门


数据准备快速入门- FineReport帮助文档|报表开发|报表使用|学习教程

数据准备快速入门

1、描述

数据准备快速入门 在线视频学习 请查看【数据准备快速入门】

管理员的数据准备阶段包括创建数据连接、新建业务包、新建数据表、进行基础的表处理操作，如下图：

创建数据连接：管理员搭建数据库与FineBI之间的数据桥梁；

新建业务包：为后续新建的数据表创建用于分类保存的业务包；

新建数据表：在新建的业务包中创建从数据连接能够获取到的表数据；

基础表处理：对于从数据库获取的数据进行基本处理，包括表字段设置、自循环列、行列转换。

2、示例-销售分析数据准备

在分析思路中我们介绍过零售门店的销售分析需求，下面我们介绍在该示例中管理员的数据准备操作。

2.1 创建数据连接

打开FineBI数据决策系统，默认为http://localhost:37799/webroot/decision，点击创建>新建数据连接。

进入数据连接管理页面，在页面中可以看到已存在的数据连接和新建数据连接按钮。

因为是要连接到某公司自身的数据库，我们点击新建数据连接按钮，进行数据库的类型选择，如下图：

显示了常用数据库类型，点击更多数据连接还可显示多达三十几种数据连接，选择自身数据库的类型即可。此处我们选择H2，如下图，点击确认。

进入数据连接配置页面，输入数据连接的基本信息，包括驱动器、URL、用户名、密码等，也可选择编码转换和连接池属性设置。数据连接配置信息可参考配置数据连接。

数据连接基本信息配置完毕后，点击测试连接。

测试连接成功以后，点击保存即可，该数据连接即创建成功。

2.2 新建业务包

数据连接创建成功后，我们选择数据准备，点击添加业务包。

重命名新建的业务包，此处我们为该业务包命名为零售门店。

2.3 新建数据表

点击进去零售门店业务包，选择添加表，添加表类型可选数据库表、SQL数据集、EXCEL数据集。

此处我们选择刚创建的数据连接中的数据库表，进入数据库选表界面，选择销售数据连接和相应的门店维度表、品类维度表、销售明细表，如下图：

点击确定即可保存刚刚选择的数据表。

2.4 基础表处理

直接从数据库中添加进来的数据表字段较多，此时我们可以对数据表进行基础处理操作。可进行字段设置、创建自循环列和行列转换的操作。

字段设置：可选择数据表中的部分字段并设置字段类型；

创建自循环列：当部门之间存在层级关系但是数据表中没分层展示的时候，通过该功能将机构表转化成树状结构保存；

行列转换：将关系数据表中的行转换成列；

销售明细表（NEW_SALESDETAIL）中有些业务人员根据用不到的数据，管理员此时就可以对该表进行字段设置，点击表名右侧齿轮选择编辑。

此处我们取消勾选使用品牌编号、楼层字段，点击确定保存。

将数据表名修改为业务人员容易理解的名字：门店信息数据、类别信息数据、详细销售数据。

数据表中若存在业务人员不容易理解的字段名，也可在数据预览处修改转义名，如下图：

数据表在添加时会自动获取关联关系及转义名，若无关联此处我们还需要为其添加关联关系，点击关联视图，单击字段类别的相关表区域，选择关联到其他表的“详细销售数据”，如下图：

选择“详细销售数据”下的类别字段及关联方向“1：N”，如下图：

采用同样的方式将“门店信息数据”表中的店号字段关联到“详细销售数据”下的店号字段，关联方向同样为1：N。

2.5 数据更新

此时我们有两种方式保存刚刚编辑的数据表：1、将刚刚编辑的数据表抽取到本地保存 2、开启实时数据按钮来实时获取数据。选择任意一种方式均可。

比如我们点击抽取数据到本地保存，点击上图中的1按钮，点击立即更新该业务包。

待Spider引擎更新完毕后，点击确定保存。在数据表的更新信息处可以看到我们刚刚更新基础表的信息。

数据准备快速入门 在线视频学习 请查看【数据准备快速入门】


权限分配快速入门- FineReport帮助文档|报表开发|报表使用|学习教程

权限分配快速入门

1、描述

权限分配快速入门 在线视频学习 请查看【权限分配快速入门】

在上一节我们介绍了管理员如何进行数据准备，在管理员准备好数据后就需要根据不同数据分配不同权限给对应业务员，实现不同部门管理自身的数据。权限分配主要包括目录权限、业务包权限、分级权限、管理系统权限、人员权限等。

目录权限：是指将系统目录中的仪表板权限根据不同内容进行分配；

业务包权限：是指将在数据准备中创建的业务包进行权限的分配；

管理系统权限：为分配系统管理系统下的目录、用户、权限、系统等管理项的权限；

分级权限：是指总的管理员将一些权限进行下放，是普通用户拥有分配权限的功能，将该普通用户所拥有授权权限的权限项分配给别的用户，一般是下属；

人员权限：是指向不同部门的组长分配其可管理权限的用户，一般为下属。

2、示例-销售分析权限分配

我们之前创建的销售分析业务包需要为销售部Leader进行权限下放，让销售部Leader来控制该业务包的权限，再对下级的普通销售人员进行权限的分配。

2.1 授权销售部Leader

管理员登录数据决策系统，进入管理系统>权限管理，并点击全局设置按钮。

进入全局设置界面，点击选择开启分级授权，如下图：

点击确定保存，则在权限项处新增了人员管理和管理系统两项。

在左侧的部门处选择销售部下的saleLeader，并在权限项点击业务包权限，为其解锁零售门店业务包的授权，如下图：

解锁授权后，该业务包的使用和管理权限也将同步解锁，解锁后自动保存。为saleLeader授权后，还需要为其分配管理系统下权限管理的查看权限，否则saleLeader无法进行权限的分配。点击管理系统项，为其解锁权限管理查看权限。

此时saleLeader可以进行该业务包的权限分配了，还需要为其分配管理人员。如下图，点击人员管理项，为其授权销售部。

至此为saleLeader分配的授权即设置完毕。

2.2 saleLeader分配权限

登录saleLeader的账户，在数据准备下saleLeader可对该零售门店的业务包进行编辑管理等操作。

点击管理系统>权限管理，可以看到saleLeader能对销售部进行权限分配。

选择左侧部门处的销售部下的sale，点击业务包权限，为销售部普通员工解锁使用权限，如下图：

解锁后自动保存。

2.3 普通销售人员权限查看

saleLeader分配好权限后，登录普通sale的账户，点击数据准备>零售门店业务包，可以看到该销售人员可使用业务包中的表创建组件，或在我的自主数据集中创建自助数据集，但不能对数据表做任何管理操作。

权限分配快速入门 在线视频学习 请查看【权限分配快速入门】


数据加工快速入门- FineReport帮助文档|报表开发|报表使用|学习教程

数据加工快速入门

1、描述

数据加工快速入门 在线视频学习 请查看【数据加工快速入门】

在为业务人员分配好权限后，业务员就可以创建自助数据集，根据业务需求对原数据进行再加工处理，再处理的操作包括：选择字段、过滤、分组汇总、新增列、字段设置、排序、左右合并、上下合并、快速挖掘。

选表选字段：选择创建的自助数据集中，需要从业务包添加进来做数据加工处理的表和字段；

过滤：根据业务需求，对选择的字段按条件进行筛选过滤；

分组汇总：对原始数据根据条件进行分组统计以简化数据；

新增列：为了获得不直接存在于数据库的数据，业务人员在不影响原数据的情况下通过对现有数据列进行计算而得到的一个新的数据列，比如数据格式的转化、时间差等等；

字段设置：对已添加到自助数据集中的字段进行重新设置，包括重新选择、修改字段名等；

排序：设置对字段按条件的顺序排列；

左右合并：将两张表左右合并在一起形成一张新的表，包括并集合并、交集合并、左合并、右合并；

上下合并：将多个类似的数据表数据合并成联合结果集；

快速挖掘：通过对数据所包含的深层内在的信息进行提取，实现精准的数据聚类/预测。

2、示例-销售分析数据加工

因为需要分析2017年区域、季度、月份、销售产品这些维度对不同门店的销售额的影响，因此销售部的普通人员在分配了业务包权限以后，登录账户，选择数据准备>零售门店业务包，单击“类别信息数据”表并选择创建自助数据集，如下图：

进入自助数据集编辑界面，选择添加“类别信息数据”下的品类描述，“门店信息数据”下的店名、所属大区、所属小区，“详细销售数据”下的销售额、销售日期字段添加到自助数据集中，并命名该自助数据集“门店销售额分析”，如下图：

点击左侧的操作栏+，选择过滤。

选择添加条件，设置销售日期介于2017年，如下图：

点击右上角保存该自助数据集，在数据预览处可以看到刚刚编辑的数据。

数据加工快速入门 在线视频学习 请查看【数据加工快速入门】


可视化分析快速入门- FineReport帮助文档|报表开发|报表使用|学习教程

可视化分析快速入门

1、描述

可视化分析快速入门 在线视频学习 请查看【可视化分析快速入门】

在创建了自助数据集以后，业务人员就可以使用数据进行可视化分析了。可视化分析包含表格组件、图表组件、过滤组件等等，下面我们介绍一下如何进行销售的可视化分析。

2、示例-销售可视化分析

普通销售人员在上一步创建了自助数据集以后，可直接在该页面选择创建组件，输入仪表板名称“2017销售分析”、选择位置，点击确定，如下图：

进入组件详细设置界面，我们先分析2017年区域维度对不同门店的销售额的影响，将左侧待分析区域的维度字段大区、小区、店名拖入横轴中，将销售额拖入纵轴中，可以看到图表自动显示了柱形图，可在图形属性下点击切换形状。

可以将所属小区字段拖入图形属性的颜色属性下，分小区颜色显示销售数据。同时可在组件样式中对该图表的标题、轴线、自适应规则等做细节设置。此处我们不再赘述，详细操作可以参考图形属性和组件样式。

从图表中，我们能看出华北和西南片区的销售额总体较高，而中南、西北区域门店的销售额处于落后，上海门店较多且销售额的差距也较大。

该区域分析完成后，点击左上角的+选择零售门店业务包下的门店销售额自助数据集可新建组件进行另外的分析。

采用同样的方式分别分析2017年季度、月份、销售产品这些维度对不同门店的销售额影响。比如在拖入销售日期字段后，为其切换为年季度，再拖入销售额并切换为饼图查看。

能看到三季度比二季度的销售额多很多。

再分别制作2017年月份、销售产品这些维度对销售额影响的相关组件为折线图和词云，如下图：

为了能够查看时筛选方便，可以为该仪表板增加过滤组件，过滤店名、区域、品类及年月，如下图，点击左侧的过滤组件，选择树过滤组件。

为该组件拖入门店销售额分析下的店名字段，如下图：

点击确定保存，并修改该过滤组件名为店名。

采用相同的方式分别新增区域、品类及年月的过滤组件。

可视化分析快速入门 在线视频学习 请查看 【可视化分析快速入门】


仪表板快速入门- FineReport帮助文档|报表开发|报表使用|学习教程

仪表板快速入门

1、描述

仪表板快速入门 在线视频学习 请查看【仪表板快速入门】

上一节我们已经介绍了根据数据快速进行可视化分析，对于创建的仪表板，还可以对其做一系列的优化，让仪表板更美观。

2、示例-销售仪表板优化

在组件详细设置界面，点击右上角的进入仪表板。

点击上方的仪表板样式，可以看到能对仪表板的背景、组件、图表等做一系列的配置。

我们为组件设置背景颜色为白色，并选择组件间隙为无间隙，如下图：

设置标题背景颜色和过滤组件主题，如下图所示：

调整组件之间的距离和布局，如下图：

点击右上角的预览按钮，查看该仪表板的预览效果。点击导出按钮，还可将该仪表板导出为Excel或者PDF格式文件。

该仪表板即设计完毕。

仪表板快速入门 在线视频学习 请查看 【仪表板快速入门】


分享快速入门- FineReport帮助文档|报表开发|报表使用|学习教程

分享快速入门

1、描述

分享快速入门 在线视频学习 请查看【分享快速入门】

仪表板在制作完成以后，业务人员如果想给领导或同部门其他员工查看的话，有三种方式：1、创建公共链接 2、分享仪表板 3、申请挂出。

创建公共链接：是指创建访问该仪表板的公共链接，此公共链接任何人都可以访问，不需要登录，也不需要有任何权限；

分享仪表板：仪表板创建者直接分享该仪表板给指定用户，无需通过管理员实现；

申请挂出：业务人员向管理员申请挂出该仪表板到目录节点，供别人查看。

此处我们介绍直接分享仪表板给其他人查看的方式。

2、示例-分享销售仪表板

2.1 分享仪表板

普通销售员登录账号，进入仪表板，将鼠标悬浮在之前创建好的2017销售分析仪表板上，选择分享按钮。

进入仪表板分享设置界面，可以按照部门、角色、用户来分享，普通销售人员做的仪表板需要给销售Leader查看，因此选择销售部下的saleLeader解锁，如下图：

解锁后自动保存。

2.2 查看仪表板

销售部Leader登录自己的账户，进入目录>分享给我的，能看到普通销售人员分享过来的仪表板，如下图：

点击该2017销售分析仪表板查看仪表板的详细内容。

比如销售Leader想查看上海及华北区域所有女士产品的销售情况，可以在过滤组件中选择对应条件，下方的图表显示过滤后的数据，如下图：

分享快速入门 在线视频学习 请查看【分享快速入门】


FineBI版本更新- FineReport帮助文档|报表开发|报表使用|学习教程

FineBI版本更新

1、5.0版本简介

FineBI 5.0化茧成蝶，焕然一新，进化幅度如同iphone7到iPhoneX，将企业级自助式BI工具提升到一个新的高度。FineBI 5.0有着卓越的视觉效果和交互体验，强大数据分析能力和企业级管控，真正实现自助数据处理，自助数据分析，人人都是数据分析师。

2、全新设计

FineBI 5.0经过精心设计，视觉效果和交互体验双重革新。视觉效果上，商务简洁又不失炫酷。交互体验上，直观流畅，舒适自然。用户能够用最简单的方式、最大的效率、最低的成本对数据进行分析和观察，自由释放数据价值。

（1）商务简洁的视觉风格：操作界面商务简洁，清爽干净。图表具备很强的视觉冲击力，高度易用性、扩展性和多样化的酷炫表现，让数据可视化效果更美观、更易读

（2）贴心暖人的交互设计：秉承帆软“易学易用”的产品理念，FineBI 5.0通过一系列的交互设计，如操作形式统一，及时准确的操作提醒，更智能的图表推荐，让业务人员轻松实现0技术的自助分析，甚至不需要帮助文档。

（3）直观流畅的分析体验：更符合人类思维的深度分析，大大降低了自助分析的难度：step by step ，容忍错误，随时调整，即时反馈，专注分析。数据分析思考过程不可能是一步到位、一簇而就的，是边分析、边调整，不断循环迭代的过程，FineBI 5.0打通了数据准备和可视化分析的路径，用户可以进行无限层次的数据分析，通过操作历史的提示，以及分析操作的即时反馈，结合前端强大的数据可视化能力，用最快捷的方式辅助思考，实现用户所想，最大化的释放数据价值。

3、数据准备

让业务人员拿到需要的数据，让IT部门放心的提供数据，是自助分析推行、人人都是数据分析师的根基。FineBI5.0数据准备功能整合了原SPA螺旋分析和ETL，并做了进一步的增强，更方便、更高效、更强大，业务人员可以在精准的数据权限下，实现对数据进行再处理和深度分析挖掘的需求。

（1）清晰全面的数据掌控。FineBI 5.0可以让用户对自己的数据，有更全面、更清晰的了解。表结构和表预览两种视图，让表基础信息查看更清晰、更方便，大面积的数据预览区域，更易了解数据内容。数据血缘分析功能，让用户对数据的来源去向、应用状况一目了然。同时，数据的更新情况，何时更新、更新频繁程度，也能直观展示。

（2）简单高效的数据配置。高效的数据准备和配置，可以减少用户不必要的麻烦。关联智能继承，可以自动对新创建的自助数据集建立关联，延续数据关联关系。在基础数据更新时，将自动触发分析用户的数据更新。根据数据量、使用频率以及实时性的要求，能实现实时数据和抽取数据的无缝切换，完全不影响用户已经做好的分析。

（3）强大友好的数据处理。用户可以对自己的数据进行任意处理，即便是已经参与分析的数据也一样，进行如清洗过滤、新增字段、表合并、排序、分组汇总、数据挖掘等操作，来得到自己想要的数据。每一步操作都有数据预览，操作后立即收到反馈，增强用户的数据操纵感，减少不确定性。

4、数据可视化理念

数据可视化的能力决定数据价值的潜力。FineBI 5.0采用全新的数据可视化理念，基于著名的图形语法(The Grammar Of Graphics)设计，由此提供了无限的视觉分析可能（无限的图表类型）、不限制的属性映射效果以及全新的分面分析功能，并重新设计了图表的大数据模式，支撑图表展示数据量可达百万以上。

（1）无限视觉分析。基于著名的图形语法(The Grammar Of Graphics)设计，FineBI 5.0取消了图表类型的概念，取代以'形状'和形状对应的'颜色'，'大小'，'提示'，‘标签’等属性；取消了'分类','系列'等概念，取代以'横轴' '纵轴'两个方向 。FineBI 5.0摆脱了固定图表类型的桎梏，既显著降低了分析门槛，又提供了更为丰富的可视化效果。

（2）智能图表推荐。根据用户当前分析的字段种类和个数，自动推荐合适的图表类型，避免了图表类型选择的痛苦，进一步降低初级用户数据分析的门槛。

（3）更多适应模式。提供4种图表内部的自适应模式，包括标准、整体适应、宽度适应、高度适应，满足用户不同的仪表板布局需求。此外，还支持用户手动调整分类宽度，满足更多的自定义展示需求。

（4）性能大幅提升。FineBI 5.0采用全新的数据处理引擎和图表渲染机制，满足更高数据量的要求，前端展示数据量可达百万级。

5、企业级数据管控

数据管控能力决定BI工具的应用范围和深度。FineBI 5.0提供了精准的企业级数据权限管控方案，管理员可以高效便捷的进行权限配置，放心大胆的交付给分析人员相关数据，无需担心隐私数据泄露。

（1）权限统一配置。平台统一控制权限，如业务包权限、数据表行权限、数据表列权限等，权限控制的粒度更细致，更科学。通过配置主表权限，所有关联的业务表权限也会生效。

（2）权限智能继承。分析人员所做的自助数据集默认继承基础数据的权限，管理员无需再担心这些数据表的权限分配，每个阅读用户自动看到自己权限范围内的数据，这有利于促进分析人员之间的分享和交流。

（3）满足不同场景。不同场景对数据权限的要求是不同的，用户可以选择是否权限继承、分享时权限再设置、集团的多级权限管理等，比如总部制作的各大区销售汇总表，需要各大区用户都看到，权限智能继承的情况下是实现不了的，需要设置不继承权限。

6、Spider引擎

5.0将直接对接数据库的实时数据引擎与抽取数据的引擎整合统一为spider计算引擎。用户可以根据数据量、实时性要求、使用频次等，自由选择实时或抽取的方式。实时数据与抽取数据方式的无缝切换，将更加灵活高效支撑前端的高性能分析。

spider数据引擎可灵活支撑不同数据量级的分析，在数据量激增之后，可横向扩展机器节点，利用spider引擎专为支撑海量大数据分析而生的分布式方案。

spider引擎分布式方式，结合HADOOP大数据处理思路，以最轻量级的架构实现大数据量高性能分析。此分布式方案集成了ALLUXIO 、SPARK、 HDFS、ZOOKEEPER等大数据组件，结合自研高性能算法，列式存储、并行内存计算、计算本地化加上高性能算法，解决大数据量分析问题与在FineBI中快速展示的问题。同时从架构上保证了计算引擎系统全年可正常使用。

7、数据挖掘

数据挖掘不止于能用，更要易用。FineBI 5.0增加了三类挖掘算法：时间序列算法、聚类算法、分类算法。如果需要预测销售额，对用户群进行智能分类，或是想知道短信发给哪个用户获得的反馈可能性更大，都能通过简单拖拽，即时看到预测或聚类的可视化结果。FineBI 5.0还集成了R语言，可以处理更复杂的算法应用，为挖掘需求兜底。

8、功能细节更新

1、组件布局

更好的适应不同分辨率。解决在大分辨率显示器调整好的布局，在小分辨率查看挤成一团的问题；

2、富文本组件

支持插入动态计算指标，随数据变化而变化。组件标题支持富文本编辑，可以设置更丰富的文字样式。提供更多的组件样式的设置；

3、定时调度

BI的仪表板支持定时调度任务，可以将BI的仪表板定时通过邮件的方式或者导出excel的方式发送给相关人员，让用户更及时方便的掌握数据情况；

4、仪表板增加明细级别的计算指标

在聚合计算指标的基础上，增加组件中可以自定义明细级别的计算字段，让销量*单价计算总价的场景以更合理的方式配置出来；

5、多分析组件切换

多分析组件切换更直接，进一步减少用户进行数据探索时的操作步骤，减少记忆成本，专注探索分析；

6、同期环期的计算优化

新的同期环期根据实际日期数据进行计算，而不是基于单元格位置的计算，同时对于维度的要求极大降低，无论是选择年月日整体的日期分组还是，单个的年、月、日分组，都可以更快速方便的得到同期环期的正确计算结果；

7、联动钻取切换维度功能交互优化。

如：对于有固定下钻顺序的维度组合，例如省市县点击数据直接下钻，无需多余操作。对于产品类型，产品颜色这种没有固定下钻顺序的维度组合仍然可以灵活选择下钻层级；

8、无关联数据的联动

很多数据本身没有建立关联关系，但是分析的时候缺希望可以同时联动的场景，如产品的库存数据和产品的销售数据本身不是一个业务，但是用户希望在查看同一个产品的库存数据时也能查看其销售情况，5.0提供了无关联数据分析用户可以自定义联动关系，更灵活；

9、快速计算交互优化

让快速计算配置更便捷，支持用户快速进行数据的求同期、求环期、求同比、求环比、排名、组内排名、所有值/组内所有值、累计值/组内累计值、当前维度/指标百分比。同时指标的汇总方式增加了中位数，方差，标准差的计算；

10、趋增加多种数据周期拟合模型（线性、指数、对数、多项式），让用户更为直观地观察离散数据的拟合趋势；

11、SQL编辑界面支持高亮显示和关键字提醒，方便SQL的编辑和阅读；

12、Excel数据集支持追加合并，每月上传当月数据不会清空历史已经上传的数据；

13、支持联合主建关联，产品名称+日期的联合主建关联场景，不再需要用户新增大量的拼接字段，可以直接设置多个字段的关联。


FineBI版本说明- FineReport帮助文档|报表开发|报表使用|学习教程

FineBI版本说明

1、描述

FineBI在使用过程中如果需要查看目前产品的版本号和jar包，可以使用管理员账号登录数据决策系统，进入管理系统>注册信息，如下图，可以看到核心模块、数据源模块、平台模块、报表模块、BI模块的版本号和各自的jar包日期。

数据源模块为数据连接的模块，平台模块为管理系统，BI模块为BI的Spider引擎。


FineBI升级指南- FineReport帮助文档|报表开发|报表使用|学习教程

FineBI升级指南

1、描述

为满足客户的新需求及完善之前版本某些功能在使用中的不足之处，我们的产品也在不断更新中。若需要修复之前版本中存在的一些问题及需要使用新的功能，就得需要您升级到新版本。

下面详细介绍下如何进行版本的升级。

注：FineBI4.1版本升级至5.0版本的操作将于后续推出。

2、同版本升级（5.0）

FineBI5.0同版本之间升级的时候只需要更新jar包就行了，获取jar包有两种方式：一种是联系FineBI的技术人员或在线QQ获取最新jar包，另外一种是在官网下载最新安装包安装后到%FineBI%/webapps/webroot/WEB-INF/lib下拷贝出需要的18个jar包。

5.0升级jar包

联系FineBI技术人员获取jar包：fine-accumulator-10.0.jar、fine-activator-10.0.jar、fine-bi-adapter-5.0.jar、fine-bi-engine-spider-5.0.jar、fine-bi-engine-third-5.0.jar、fine-bi-foundation-5.0.jar、fine-core-10.0.jar、fine-datasource-10.0.jar、fine-decision-10.0.jar、fine-decision-bi-10.0.jar、fine-decision-report-10.0.jar、fine-report-engine-10.0.jar、fine-schedule-10.0.jar、fine-schedule-bi-10.0.jar、fine-schedule-report-10.0.jar、fine-swift-log-adaptor-10.0.jar、fine-third-10.0.jar、fine-webui-10.0.jar，将最新的jar包拷贝到对应目录%FineBI%/webapps/webroot/WEB-INF/lib下替换掉原先的jar包，如下图：

重启FineBI即可。

注：若为从9.15的stable安装包升级到之后版本，除了更新以上jar包外，还需要更换%FineBI%/lib 下面的 fine-bi-starter.jar；linux安装版本，需要直接更换FineBI目录下的jre：jre.tar.gz；

使用tomcat、weblogic等容器部署的，从9.15的stable升级到之后版本，需要将环境上安装的jdk的lib下面的tools.jar拷贝到Tomcat_home/lib或%FineBI%/webapps/webroot/WEB-INF/lib任一位置。


FineBI工程目录结构- FineReport帮助文档|报表开发|报表使用|学习教程

FineBI工程目录结构

1、描述

在FineBI安装完成以后，进入安装目录可以看到安装文件。FineBI安装文件本质上就是一个tomcat，下面就详细介绍下安装目录结构。

2、安装根目录

3、webroot目录

cubes：日志文件夹；

logs：存放日志文件；

scripts：存放插件相关文件；

WEB-INF：BI工程主目录；

FRDemo.db：内置Sqlite数据库文件；

test.mv.db、test.trace.db：内置H2数据库文件；

Web组件.html：这是一个Web组件，写入的超链接地址即可。比如这是一个自定义的html文件，内置在工程内部%/webroot/这个目录之下;

4、WEB-INF目录

URL参数总结第16点；

5、resources目录

Rserve连接管理；


FineBI服务器配置推荐- FineReport帮助文档|报表开发|报表使用|学习教程

FineBI服务器配置推荐

1、描述

FineBI是一款纯B/S端的商业智能分析服务平台；支持通过web应用服务器将其部署在服务器上，提供企业云服务器。用户端只需要使用一个浏览器即可进行服务平台的访问和使用。FineBI使用的是Spider引擎，Spider数据引擎可灵活支撑不同数据量级的分析，在数据量激增之后，可横向扩展机器节点，利用Spider引擎专为支撑海量大数据分析而生的分布式方案。因此我们分单机与分布式进行服务器的配置推荐。

2、Spider引擎服务器推荐

Spider引擎可以同时实现实时数据与抽取数据，可以根据数据量、实时性要求、使用频次等，自由选择实时或抽取的方式。实时数据与抽取数据方式的无缝切换，更加灵活高效支撑前端的高性能分析。此处我们的业务系统运行硬件配置预估与要求，以极限情况推算，如下：

1）假设所有数据都是实时数据， 性能与计算全部依赖于数据库，即使都是实时数据，存在缓存机制以及部分场景内存计算，因此web服务器配置可由数据量来进行估算。（用户的数据库服务器的配置这里不做推荐）其中，数据量表示的是查询数据返回的行数。

数据量 | CPU | 可用内存 | 可用磁盘空间 | 网卡
0~1kw | 4核~8核，2.5GHz及以上 | 16G~32G | 500G |
1kw~1.5亿 | 8核~16核，2.5GHz及以上 | 32G~64G | 750G |
1.5亿以上 | 16核~24核，2.5GHz及以上 | 64G~128G | 1T | 千兆以上网卡

2）假设所有的数据都需要更新

当最大单表数据量在亿级以下或数据总量在100G之内，可以直接使用web服务器的本地磁盘作为数据存储介质。当超过这个数据范围，推荐使用Spider引擎的分布式版本，参考第三章节。

数据量 | CPU | 可用内存 | 可用磁盘空间 | 网卡
0~1kw | 8核，2.5GHz及以上 | 16G~32G | 500G |
1kw~3kw | 8核，2.5GHz及以上 | 32G | 500G~700G |
3kw~5kw | 16核，2.5GHz及以上 | 64G | 700G~1T |
5kw~1亿 | 16核~24核，2.5GHz及以上 | 64G~128G | 至少1T | 千兆以上网卡

对于既有实时数据，又有需抽取数据的混合情况下，以最高配置要求即可。以上服务器台数均以单台来计的，是否多台取决于并发量。以单台Web服务器支撑200并发的原则，选择Web服务器的台数。集群的话，要求集群服务器需要千兆网。

注：FineBI的Web服务器不应安装在同时运行资源密集型应用程序（例如数据库或应用程序服务器）的物理计算机或 VM 虚拟机上。上述CPU的推荐中，需要保证FineBI实际可以占用的资源达到80%。

3、Spider分布式服务器推荐

3.1 介绍

Spider引擎的计算依赖并行计算能力与内存加速，所以CPU核心越多，内存越大，性能就更好。内存所有机器加起来能装载所有数据最好，不用频繁与磁盘交换数据，达到最佳性能；硬盘没有特别要求，只要足够大，能装载5倍以上的原始数据(分布式数据冗余与备份)即可。

下面我们推荐的分布式引擎服务器配置以实现秒级响应为准，当需要分析的数据量比较大的情况下，理论上是需要抽取的最大单表数据量过亿（这边的数据量以最大单表的行来计算，这里指的是要抽取到分布式做分析的单表，并非数据库中的最大单表），或需要抽取的数据总量超过100G，就需要扩展数据存储的节点数，以便应对大数据量的分析计算。为保证数据引擎的高可用，推荐3台及3台以上的机器。由于Spider引擎（分布式）是数据计算密集型程序，因此需保证只运行这一个资源占用最多的程序。并且建议装在物理机上，不建议VM虚拟机。系统环境要求必须是linux，推荐使用CentOS7。

3.2 服务器推荐

这里的服务器推荐不考虑FineBI的Web端。但是BI的web端服务器若与Spider分布式引擎的服务器共用的话，机器需要的资源为二者需要的资源之和，BI服务器推荐可参考上述第二章节。每个表在引擎中数据占用空间大小 = 数据行数*列数* 8 * 4 * 2 （单位：字节），因此数据大小预估时候以格子数（数据行数*列数）最大的来预估。

1）分布式最低配置要求

应用场景：适用于测试阶段的最低要求，不符合要求系统无法正常运行。不能用作正式业务系统，抽取数据无法建立索引。

数据量 | 内存 | CPU | 机器数 | 硬盘
1亿~3亿 | 16G | 1~2亿可以8核，2~3亿最好16核。2.5GHz以上 | 3台 | 1T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可
3亿~5亿 | 16G | 16核，2.5GHz以上 | 3~5台 | 1T~2T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可
5亿~10亿 | 16G | 16核，2.5GHz以上 | 5~9台 | 1T~2T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可

2）分布式推荐运行配置要求

数据量 | 内存 | CPU（推荐至强E5系列，2.5GHz以上） | 机器数 | 硬盘 | 网卡
1亿~3亿 | 64G（推荐128G） | 2*8核 | 3台 | 1T~2T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可 | 千兆以上网卡
3亿~5亿 | 64G（推荐128G） | 2*8核 | 3~5台（推荐5台） | 2T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可 | 千兆以上网卡
5亿~10亿 | 64G（推荐128G） | 2*8核 | 5~9台 | 2T~3T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可 | 千兆以上网卡
超大数据量 | 联系FineBI构架师根据场景推荐

CPU推荐Intel Xeon E5-2697 v2 *2。如果内存不足够容纳一份抽取过来的数据大小，则可以增加SSD，使得所有SSD的空间+所有内存空间可以满足数据总大小。

详细推荐请参考Spider分布式引擎服务器推荐。


FineBI与FineReport对比- FineReport帮助文档|报表开发|报表使用|学习教程

FineBI与FineReport对比

1、描述

FineBI和Finereport是帆软软件旗下的两款数据分析工具。那么肯定有很多用户不清楚两款产品的区别及各自的优势所在。下面就为大家介绍两款产品的异同。

2、产品区别

1、数据引擎方面，FineReport产品是直连数据库，性能方面需要数据库的支撑；FineBI提供直接对接数据库的实时数据与抽取数据两种方式的spider计算引擎，用户可以根据数据量、实时性要求、使用频次等，自由选择实时或抽取的方式；FineBI除了灵活支撑不同数据量级的分析，还可以在数据量激增之后横向扩展机器节点，利用Spider引擎专为支撑海量大数据分析而生的分布式方案；

2、FineReport支持灵活定制各种中国式复杂报表；FineBI主要提供自助式的OLAP多维数据分析模式；

3、FineBI的使用主要面向业务人员可以自己设计报表进行分析，向自主分析得出结果，辅助企业业务决策；FineReport可以用来出固定格式的周报、月报、适合作为正式汇报材料；

4、如果把FineReport和FineBI的最终数据分析结果都比喻为一场盛宴的话，FineReport可以比喻为一桌经过精心调理和准备的满汉全席，而FineBI则可以比喻为一场可供用户进行丰富自由选择的自助餐；

5、报表系统和BI的使用对象和目的都不相同，报表系统更着重于短期的运作支持，而BI则关注长期的战略决策，甚至更着重于商业趋势和业务单元的联系而非具体的数据和精确度本身，BI并不是用来代替着眼于日常运做的报表系统的 。

3、产品联系

1、FineReport中的所有数据源都可以通过服务器数据集在FineBI中进行读取和使用；

2、FineReport制作的所有报表页面都可以挂载在FineBI中进行查看和使用；

3、FineBI和FineReport产品支持融合部署，所有功能都可以整合在同一个工程中进行使用（推荐FineReport整合到FineBI），同时移动端共用一个数据分析app。


数据准备- FineReport帮助文档|报表开发|报表使用|学习教程

数据准备

1、描述

在业务人员进行数据分析之前，管理员需要先准备好数据。管理员的数据准备阶段包括创建数据连接、新建业务包、新建数据表、进行基础的表处理操作等。

创建数据连接：管理员搭建数据库与FineBI之间的数据桥梁；

新建业务包：为后续新建的数据表创建用于分类保存的业务包；

新建数据表：在新建的业务包中创建从数据连接能够获取到的表数据；

基础表处理：对于从数据库获取的数据进行基本处理，包括表字段设置、自循环列、行列转换。

数据准备 在线视频学习 请查看【数据准备内容概览】

2、索引

配置数据连接

数据集

业务包管理

数据表管理

关联视图（所有表）

关联视图（单表）

多路径设置

数据更新

实时数据


配置数据连接 - FineBI帮助文档|报表开发|报表使用|学习教程

配置数据连接

1、描述

配置数据连接在线视频学习请查看 【数据连接】

在使用FineBI进行数据分析的第一步就是要获取数据，获取数据的第一步就是定义数据来源。实际用户系统最常见的就是数据保存在数据库中，并且在不断更新，无论使用FineBI Spider引擎的何种数据类型，都支持对数据的不断更新。而我们需要定义的是与该数据库的连接以获取数据，本章就来介绍如何配置数据连接。

2、数据连接管理

使用拥有BI数据连接权限的用户账号登录数据决策系统（默认为http://localhost:37799/webroot/decision），一般为管理员，点击管理系统>数据连接可进入数据连接管理页面，管理页面包含已存在的数据连接和新建数据连接按钮，如下图：

如果非管理员用户想要配置BI数据连接，需要管理员给其分配管理系统下数据连接节点的权限，具体操作请查看 分级权限。

2.1 新建数据连接

新建数据连接除了我们上面介绍的在数据连接界面的“新建数据连接”按钮，还可以在数据决策系统直接点击创建>新建数据连接快速进入数据连接创建页面，如下图：

添加一个新的数据连接，需要先选择需要添加的数据库类型，如下图：

列表中给出了常用的数据库类型：APACHE KYLIN、DERBY、HP Vertica、IBM DB2、INFORMIX、Microsoft SQL Server、MySQL、Oracle、Pivotal Greenplum Database、Postgresql，除了这些常用的，在更多数据连接中还包含ADS、Amazon Redshift、APACHE IMPALA、APACHE Phoenix、Gbase 8A、Gbase 8S、Gbase 8T、H2、华为ELK、华为Fusioninsight、Hadoop Hive、Hbase、Hsql、INFORMIX、KINGBASE、Presto、SAP HANA、SAP Sybase、SPARK、Sqlite、TeraData、TRANSWARP INCEPTOR。

如果数据库列表中没有所需的数据库类型，则选择其他，将对应驱动包放置在%FineBI%\webapps\webroot\WEB-INF\lib下面并重启服务器，需要手动输入驱动器名称、URL等完整数据连接信息，如下图：

其中连接池属性包含了SQL验证查询、获取连接前校验、最大活动连接数三个配置，在勾选获取连接前校验后可在SQL验证查询中输入查询语句，系统就会在获取连接前向对应数据库发送该SQL语句进行校验。最大活动连接数则是系统的连接池中最大能容纳的数据连接数量设置。

在添加好数据库信息并测试连接成功后点击“保存”，就可以成功添加数据连接并在业务包中使用该数据连接的数据了，业务包添加数据参考添加数据表。

2.2 注意点

1）模式选择

在连接APACHE KYLIN、DERBY、HP Vertica、IBM DB2、INFORMIX、SQL Server、Oracle、Pivotal Greenplum Database、Postgresql、Amazon Redshift、Apache Phoenix、Gbase 8S、Gbase 8T、KINGBASE、Presto、SAP HANA、SAP Sybase、Hbase这些数据库时，会比其他数据连接多了一步：选择模式。当数据库如APACHE KYLIN存在模式选择时就应该将此处模式进行选择，如下图。如果这些数据库未进行模式选择，则在业务包选表的时候，默认选择的是第一个模式；当数据库如mysql不存在模式选择，则无需进行模式选择。

2）Kerberos认证

其中APACHE IMPALA、Hadoop Hive、SPARK、TRANSWARP INCEPTOR（星环）、APACHE Phoenix、Hbase这六个数据库在配置数据连接时均支持kerberos认证，在配置数据连接页面可勾选kerberos认证，并填入注册过kdc的客户端名称和keytab密钥路径，比如客户端principal：testuser@HBZQ.COM，keytab秘钥路径：C:\Program Files\FineBI\webapps\WebReport\WEB-INF\testuser.keytab；若不勾选，则不使用kerberos认证，跟其他数据库设置一致。

注：在填写kerberos认证信息之前，需要将 krb5.conf 和 ***.keytab 文件放置到%FineBI%\webapps\WebReport\WEB-INF 目录下（仅需放入同一目录即可，不强求位置）。

详细Kerberos认证请参考数据连接Kerberos认证。

在数据连接中使用Kerberos认证的时候，需要有以下事项注意：

1）上述界面中的客户端principal需要根据beeline能连上的机器通过klist来查看；

2）ZooKeeper版本需要与数据库中的相关jar包里面的版本保持一致（否则连接不成功，无法从异常中看出问题）；

3）客户端的时间需要和集群服务器一致，误差不能超过5分钟。

2.3 管理数据连接

在创建完成后的已存在数据连接列表中可对数据连接进行一些管理操作，包括：1. 测试连接 2. 复制 3. 类型&创建者 4. 删除。如下图：

在已保存数据库的详细信息栏有编辑按钮，可对该数据连接的配置进行重新编辑，如下图：

注：1、在管理数据连接时，数据连接的名子不能改动。更新到本地的表与数据库匹配依靠的是数据连接的名子，如果改了数据连接的名子，从该连接中取出的表将无法再更新；

2、如果更新本地保存的表中的数据库，如由开发环境变化到生产环境，表名与表结构均一致时，只需要修改数据连接的URL即可。本地保存的表依照数据连接名依然可以更新数据；

3、在使用其他类型的时候，需要将对应的驱动包放置在FineBI\webapps\webroot\WEB-INF\lib下面；

4、以下数据库的连接均同时支持Spider引擎中实时数据和更新到本地的数据使用。

3、连接池状态

数据连接页面除了数据连接管理外，还提供了连接池状态页面，可以看到目前已经创建的数据连接及他们对应的连接状态，如下图：

该连接状态中包含了活动连接数及空闲连接数，其中显示数字分别表示：

活动连接数/最大活动连接数，空闲连接数/最大空闲连接数。

4、索引

APACHE KYLIN数据连接

DERBY数据连接

HP Vertica数据连接

IBM DB2数据连接

INFORMIX数据连接

Microsoft SQL Server数据连接

MySQL数据连接

Oracle数据连接

Pivotal Greenplum Database数据连接

Postgresql数据连接

ADS数据连接

Amazon Redshift数据连接

Apache Impala数据连接

Apache Phoenix数据连接

Gbase 8A数据连接

Gbase 8S数据连接

Gbase 8T数据连接

H2数据连接

华为ELK数据连接

华为Fusioninsight数据连接

Hadoop Hive数据连接

Hbase数据连接

Hsql数据连接

KINGBASE数据连接

Presto数据连接

SAP HANA数据连接

SAP Sybase数据连接

SPARK数据连接

Sqlite数据连接

TeraData数据连接

TRANSWARP INCEPTOR数据连接

配置数据连接在线视频学习请查看 【数据连接】


数据连接Kerberos认证- FineReport帮助文档|报表开发|报表使用|学习教程

数据连接Kerberos认证

1、描述

在FineBI连接APACHE IMPALA、Hadoop Hive、SPARK、TRANSWARP INCEPTOR（星环）、APACHE Phoenix、Hbase这六个数据库时，配置数据连接时均支持kerberos认证，配置该认证的方式有两种：

1）使用数据连接配置界面中的Kerberos认证，主要用于hive、hbase等驱动的认证连接；

2）配置jvm参数进行认证，主要用于按要求填写数据连接配置界面认证成功，创建连接依然抛错的情况，比如cdh的impala等数据库；

数据连接前的准备工作：

需要准备krb5.conf、XXX.keytab、principal（principal的格式通常为：用户名/部门@公司，例如：user/bigdata@test.com)文件。

2、Kerberos认证步骤

2.1 使用数据连接配置界面

配置步骤：

1、将krb5.conf和XXX.keytab放到相同目录下，例如放到%FineBI%\webapps\webroot\WEB-INF目录下；

2、勾选数据连接配置面板的kerberos认证单选框，按要求填写principal和keytab文件路径。例如：keytab文件路径为%FineBI%\webapps\webroot\WEB-INF\XXX.keytab。

配置数据连接中的说明进行数据连接即可。

2.2 配置jvm参数

配置步骤：

1、准备krb5.ini文件，内容如下：

Client { com.sun.security.auth.module.Krb5LoginModule required doNotPrompt=true useKeyTab=true keyTab="%FineBI%\webapps\webroot\WEB-INF\XXX.keytab" principal="dummy@SOME.REALM" debug=false; };

将该krb5.ini文件放到特定目录下（为了得到详细报错日志可设置上述文件中的debug=true）。例如放到%FineBI%\webapps\webroot\WEB-INF目录下。

2、在FineBI安装目录bin下找到finebi.vmoptions文件，编辑该文件，增加下面2个jvm参数（两个参数的值为krb5.conf和krb5.ini文件的绝对路径）

-Djava.security.krb5.conf=%FineBI%\webapps\webroot\WEB-INF\krb5.conf -Djava.security.auth.login.config=%FineBI%\webapps\webroot\WEB-INF\krb5.ini

编辑完成的FineBI.vmoptions文件示例如下：

-Djava.security.krb5.conf=%FineBI%\webapps\webroot\WEB-INF\krb5.conf -Djava.security.auth.login.config=%FineBI%\webapps\webroot\WEB-INF\krb5.ini -Xmx4096m -Dfile.encoding=UTF-8 -Djava.io.tmpdir=.\temp

3、这种情况下不用勾选数据连接配置面板的kerberos认证单选框了，可直接在填写了驱动器、URL、用户名密码等信息后测试数据连接并保存。

3、注意事项

1、bi自带的zookeeper包与数据库服务端的zookeeper版本需要匹配（华为HD平台连接可能会出现此类报错）；

2、principal名称写错或者没对应上。principal的格式前面提到了，通常为用户名/部门@公司，例如：user/bigdata@test.com。确认principal是否正确的方式是在数据库服务端shell执行klist或者kinit -k -t /path/to/keytab name_of_principal测试；

或者直接通过beeline、impala-shell等工具连接一下开启认证的服务，并查看对应的principal信息。

比如：hive服务对应principal为hive/bigdata@XXX.COM，而impala服务对应的principal为impala/bigdata@XXX.COM；

3、检查bi服务器所在机器和数据库服务器的系统时间差，通常要求时间差小于5分钟；

4、配置bi服务器所在机器的host文件（要保证能通过主机名/域名ping通数据库服务器）；

5、cdh连接抛错Unable to obtain Principal Name for authentication可能要更新一下jre的JCE扩展包（因为jdk默认安装的JCE不能处理超过128位的对称密钥，扩展包安装连接见备注)；

注：JCE安装：https://sourceforge.net/p/skcc/wiki/Install%20JDK8%20and%20JCE%20on%20Windows/通常直接到第4步即可，下载解压得到JCE扩展jar包，然后到jre的指定目录替换文件。

6、特殊情况下，如果Windows系统下无法连接，可以把FineBI测试服务器部署在Linux系统上（需保证该服务器能通过相关shell工具连上数据库，通过klist能看到已缓存的kgt信息）；

7、如果尝试了上面的方法还是连接失败，请与平台数据库管理员确认，相关服务的安全认证配置是否正确，并请联系帆软技术支持并提供相关报错日志（提添加jvm安全调试参数，见下面备注），数据平台数据库版本、对应驱动jar包、相关连接信息、Java认证连接测试代码或者能连接认证数据库的shell工具等。

备注：

jvm安全调试日志参数：

-Djava.security.debug=gssloginconfig,configfile,configparser,logincontext

-Djava.security.krb5.debug=true


APACHE KYLIN数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

APACHE KYLIN数据连接

1、描述

Apache Kylin是一个开源的分布式分析引擎，提供Hadoop之上的SQL查询接口及多维分析（OLAP）能力以支持超大规模数据，能够处理TB乃至PB级别的分析任务，能够在亚秒级查询巨大的Hive表，并支持高并发。下面介绍如何在FineBI中连接Apache Kylin数据库。

2、数据连接

2.1 配置信息
驱动器 | URL
org.apache.kylin.jdbc.Driver | jdbc:kylin://ip:port/kylin_project_name

2.2 连接步骤

下载Apache Kylin的 驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”并选择APACHE KYLIN，如下图：

按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步测试连接，若测试连接成功则表示成功连接上数据库，如下图：

测试连接成功后才可以进行第三步选择模式，根据需要选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击保存该数据连接即添加成功。


DERBY数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

DERBY数据连接

1、描述

Apache Derby是一个完美的，100% Java编写的内存数据库，是一个容易管理的关系数据库管理系统，可以和一些商业产品的特性进行交付。且它是一个与平台无关的数据库引擎，它以Java类库的形式对外提供服务。与其他难以部署的数据库不同，Derby数据库体积小、安装非常简单，只需要将其*.jar 文件复制到系统中并为用户的项目添加该*.jar文件即可。下面介绍如何在FineBI中连接Derby数据库。

2、数据连接

2.1 配置信息
驱动器 | URL
org.apache.derby.jdbc.ClientDriver | jdbc:derby://ip:port/E:\\derbydatabase\\aaa

注：非本地使用需要使用命令开通远程服务：如NetworkServerControl start -h 192.168.5.175 -p 1527

2.2 连接步骤

下载Derby的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击新建数据连接并选择DERBY，如下图：

按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步测试连接，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以进行第三步选择模式，根据需要选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击保存该数据连接即添加成功。


HP Vertica数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

HP Vertica数据连接

1、描述

HP Vertica是一款基于列存储的MPP（massively parallel processing）架构的数据库。它可以支持存放多至PB（Petabyte）级别的结构化数据。下面介绍如何在FineBI中连接HP Vertica数据库。

2、数据连接

2.1 配置信息
驱动器 | URL | 支持数据库版本
com.vertica.jdbc.Driver | jdbc:vertica://ip:port/databaseName | Vertica_7.2.1

2.2 连接步骤

下载HP Vertica的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击新建数据连接并选择HP Vertica，如下图：

按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步测试连接，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以进行第三步选择模式，根据需要选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击保存该数据连接即添加成功。


IBM DB2数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

IBM DB2数据连接

1、描述

IBM DB2主要应用于大型应用系统，具有较好的可伸缩性，可支持从大型机到单用户环境，应用于所有常见的服务器操作系统平台下。 DB2提供了高层次的数据利用性、完整性、安全性、可恢复性，以及小规模到大规模应用程序的执行能力，具有与平台无关的基本功能和SQL命令。下面介绍如何在FineBI中连接IBM DB2数据库。

2、数据连接

2.1 配置信息
驱动器 | URL | 支持数据库版本
com.ibm.db2.jcc.DB2Driver | jdbc:db2://ip:port/dbname | DB2 V9.7；DB2_7.2；DB2_8.1；DB2_10.5；

2.2 连接步骤

该数据连接使用FineBI自带的驱动包db2jcc4.jar，对应JDK版本为1.8，若版本不匹配，可下载自身数据库对应的驱动包并将其放置到%FineBI%\webapps\webroot\WEB-INF\lib下，删除原db2jcc4.jar包，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击新建数据连接并选择IBM DB2，如下图：

按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步测试连接，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以进行第三步选择模式，根据需要选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击保存该数据连接即添加成功。

3、注意事项

FineBI在连接IBM DB2数据库后，开启实时数据的情况下，time类型不能使用date，year，month函数；


INFORMIX数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

INFORMIX数据连接

1、描述

Informix是IBM公司出品的关系数据库管理系统（RDBMS）家族。作为一个集成解决方案，它被定位为作为IBM在线事务处理（OLTP）旗舰级数据服务系统。下面我们介绍如何在FineBI中连接Informix数据库。

2、数据连接

2.1 配置信息
驱动器 | URL | 支持数据库版本
com.informix.jdbc.IfxDriver | jdbc:informix-sqli://ip:port/database:INFORMIXSERVER=server | 11.7；11.5；

2.2 连接步骤

该数据连接使用FineBI自带的驱动包ifxjdbc.jar，对应JDK版本为1.8，若版本不匹配，可下载自身数据库对应的驱动包并将其放置到%FineBI%\webapps\webroot\WEB-INF\lib下，删除原ifxjdbc.jar包，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击新建数据连接并选择INFORMIX，如下图：

对照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步测试连接，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以进行第三步选择模式，根据需要选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击保存该数据连接即添加成功。


Microsoft SQL Server数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Microsoft SQL Server数据连接

1、描述

SQL Server是关系型数据库管理系统，具有使用方便、可伸缩性好、与相关软件集成程度高等优点，可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。本章我们将介绍如何在FineBI中连接SQL Server数据库。

2、数据连接

2.1 配置信息
驱动器 | URL | 支持数据库版本
com.microsoft.sqlserver.jdbc.SQLServerDriver | jdbc:sqlserver://ip:port;databaseName=xxx | SQL Server 2000、2005、2008、2012、2014、2016；

2.2 连接步骤

该数据连接使用FineBI自带的驱动包sqljdbc42.jar，对应jdk版本为1.8，若版本不匹配，可下载自身数据库对应的驱动包并将其放置到%FineBI%\webapps\webroot\WEB-INF\lib下，删除原sqljdbc42.jar包，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击新建数据连接并选择Microsoft SQL Server，如下图：

对照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步测试连接，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以进行第三步选择模式，根据需要选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击保存该数据连接即添加成功。

3、注意事项

Spider引擎开启实时数据时：

a、2000与2005版本中，不存在date类型，在取年月日时，jooq中进行的cast(datetimeCol as date)会报错，用convert(varchar(10),datetimeCol,120)可正常运行；

b、time类型在进行日期类型相关的转化时会报错。


MySQL数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

MySQL数据连接

1、描述

MySQL是一种开放源代码的关系型数据库管理系统（RDBMS），使用最常用的数据库管理语言--结构化查询语言（SQL）进行数据库管理。本章我们将介绍如何在FineBI中连接MySQL数据库。

2、数据连接

2.1 配置信息
驱动 | URL | 支持数据库版本
com.mysql.jdbc.Driver 或者 org.gjt.mm.mysql.Driver | jdbc:mysql://ip:port/dbname | MySQL_5.6.31；MySQL_5.5；MySQL_5.5.5；MySQL_5.6.35；MySQL_5.7；MySQL_5.6.37；MySQL_5.5.46；MySQL_6.5；MySQL_5.7.16；MySQL_5.6.29；MySQL_5.6.22；MySQL_5.6.34；MySQL_5.6.28；MySQL_5.1；

2.2 连接步骤

该数据连接使用FineBI自带的驱动包mysql-connector-java-5.1.44-bin.jar，对应jdk版本为1.8，若版本不匹配，可下载自身数据库对应的驱动包并将其放置到%FineBI%\webapps\webroot\WEB-INF\lib下，删除原mysql-connector-java-5.1.44-bin.jar包，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击新建数据连接并选择MySQL，如下图：

按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击测试连接，若测试连接成功则表示成功连接上数据库。

测试连接成功后点击保存该数据连接即添加成功。


Oracle数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Oracle数据连接

1、描述

ORACLE数据库系统是美国ORACLE公司（甲骨文）提供的以分布式数据库为核心的一组软件产品，是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统，作为一个通用的数据库系统，它具有完整的数据管理功能；作为一个关系数据库，它是一个完备关系的产品；作为分布式数据库它实现了分布式处理功能。本章我们将介绍如何在FineBI中连接Oracle数据库。

2、数据连接

2.1 配置信息
驱动 | Database Name | URL | 支持数据库版本
oracle.jdbc.driver.OracleDriver | sid_name | jdbc:oracle:thin:@ip:port:sid_name | oracle 9i；oracle_9.2；Oracle10.2.0；oracle 11g；oracle_11g2；oracle_11.2.0.3；oracle_11.2.0.4；oracle_11.2.3；oracle 12c；oracle 10g AIX版本；
 | service_name | jdbc:oracle:thin:@//ip:port/service_name

2.2 连接步骤

该数据连接使用FineBI自带的驱动包ojdbc14.jar，对应jdk版本为1.8，若版本不匹配，可下载自身数据库对应的驱动包并将其放置到%FineBI%\webapps\webroot\WEB-INF\lib下，删除原ojdbc14.jar包，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击新建数据连接并选择Oracle，如下图：

按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步测试连接，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以进行第三步选择模式，根据需要选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击保存该数据连接即添加成功。

3、注意事项

1、若为Spider引擎开启实时数据，直连ORACLE数据库的话，超过22位的字段需要使用SQL语句转义添加到BI中。原因是BI直连会在字段前加8位字符，而Oracle超过30位标识符在将表添加到FineBI中时就会报错ORA-00092。

SQL转义语句可使用：select “超过22位字段名的字段” as 转义名 from 表。


Pivotal Greenplum Database数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Pivotal Greenplum Database数据连接

1、描述

Greenplum数据库也简称GPDB，拥有很多丰富的特性，例如完善的标准支持、拥有良好的线性扩展能力、支持分布式事务、支持ACID等，因此FineBI支持通过GreenPlum数据库取数进行数据分析。本章我们将介绍如何在FineBI中连接Pivotal Greenplum Database。

2、数据连接

2.1 配置信息
驱动 | URL | 驱动下载链接
org.postgresql.Driver | jdbc:postgresql://ip:port/dbname | postgresql-42.1.4.jar
com.pivotal.jdbc.GreenplumDriver | jdbc:pivotal:greenplum://ip:port;DatabaseName=xxx | greenplum.jar
2.2 连接步骤

从上面下载链接中下载Pivotal Greenplum Database的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击新建数据连接并选择Pivotal Greenplum Database，如下图：

按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以进行第三步选择模式，根据需要选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。

3、注意事项

在引擎中当获取表的关联信息时，8.0的postgresql-8.0-415.jdbc3 会有版本问题，用postgresql-8.1-415.jdbc3替换可解决问题。


Postgresql数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Postgresql数据连接

1、描述

PostgreSQL是一个功能强大的开源数据库系统。经过长达15年以上的积极开发和不断改进，PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内极高的声誉。目前PostgreSQL可以运行在所有主流操作系统上，包括Linux、Unix（AIX、BSD、HP-UX、SGI IRIX、Mac OS X、Solaris和Tru64）和Windows。PostgreSQL是完全的事务安全性数据库，完整地支持外键、联合、视图、触发器和存储过程（并支持多种语言开发存储过程）。PostgreSQL是一种企业级数据库，具有的各种高级功能，像多版本并发控制(MVCC)、按时间点恢复(PITR)、表空间、异步复制、嵌套事务、在线热备、复杂查询的规划和优化以及为容错而进行的预写日志等。本章我们将介绍如何在FineBI中连接Postgresql数据库。

2、数据连接

2.1 配置信息
驱动 | URL | 支持数据库版本
org.postgresql.Driver | jdbc:postgresql://ip:port/dbname | postgresql_9.4.7；9.5.0；

2.2 连接步骤

下载Postgresql的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击新建数据连接并选择Postgresql，如下图：

按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以进行第三步选择模式，根据需要选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。

3、注意事项

在Postgresql数据连接中numeric数据类型长度超过19位会读取成文本类型。


ADS数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

ADS数据连接

1、描述

阿里分析型数据库ADS是一种高并发低延时的PB级实时数据仓库，全面兼容MySQL协议以及SQL:2003 语法标准，可以毫秒级针对万亿级数据进行即时的多维分析透视和业务探索；可以使用标准 SQL、现有的商业智能 (BI) 工具和ETL工具经济高效地轻松分析与集成您的所有数据。本章我们将介绍如何在FineBI中连接该ADS数据库。

2、数据连接

2.1 配置信息
驱动 | URL
com.mysql.jdbc.Driver | jdbc:mysql://ip:port/my_ads_db

2.2 连接步骤

该数据连接使用FineBI自带的驱动包mysql-connector-java-5.1.44-bin.jar，对应jdk版本为1.8，若版本不匹配，可下载自身数据库对应的驱动包并将其放置到%FineBI%\webapps\webroot\WEB-INF\lib下，删除原mysql-connector-java-5.1.44-bin.jar包，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击新建数据连接选择更多数据连接，并在弹出框中选择ADS，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

正确输入信息后点击“测试连接”按钮，出现测试连接成功提示则表示成功连上数据库，此时点击保存，数据库即添加成功。

3、注意事项

1、select * from () limit x 不支持；

limit 超过10000，会有报错超出限制。 数据库默认最大就是10000，可以通过修改数据库端配置更改这个值；

2、开启实时数据情况下，不支持记录数去重这个功能，原因是distinct count不能与group by同时使用；


Amazon Redshift数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Amazon Redshift数据连接

1、描述

Amazon Redshift是一种快速且完全托管的 PB 级数据仓库，与传统的数据仓库仓储及分析用数据库相比具有列式数据存储、高级压缩、大规模并行处理（MPP）等优点。本章我们将介绍如何在FineBI中连接Amazon Redshift数据库。

2、数据连接

2.1 配置信息
驱动 | URL
com.amazon.redshift.jdbc4.Driver 或 com.amazon.redshift.jdbc41.Driver | jdbc:redshift://endpoint:port/database 或 jdbc:postgresql://endpoint:port/database

2.2 连接步骤

下载Amazon Redshift的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择Amazon Redshift，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

正确输入信息后点击第二步的“测试连接”按钮，出现测试连接成功提示则表示成功连上数据库。

测试连接成功后才可以选择模式，根据需求选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。


Apache Impala数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Apache Impala数据连接

1、描述

Impala是Cloudera公司主导开发的新型查询系统，它提供SQL语义，能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义，但由于Hive底层执行使用的是MapReduce引擎，仍然是一个批处理过程，难以满足查询的交互性。相比之下，Impala的最大特点也是最大卖点就是它的快速。本章我们将介绍如何在FineBI中连接Apache Impala数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本
com.cloudera.impala.jdbc41.Driver | jdbc:impala://ip:port/dbname | impala 2.2；impala 2.3；

若Impala数据库存在认证，则需要在URL后加入authmech参数（数据库没有用户名密码时不需要加改参数），不同参数值代表了不同的认证，如下所示：

authmech=3：username and password
2：username
1：kerberos
0：不认证
URL格式为：jdbc:impala://ip:port/dbname;authmech=n；（n可以等于0、1、2、3）
且若为kerberos认证，URL需要调整为：jdbc:impala://192.168.1.10:21050/default;AuthMech=1;KrbHostFQDN=hostalias;KrbServiceName=impala。
其中：KrbHostFQDN需要指定连接哪台服务器的impala，需要使用服务器的别名。

2.2 连接步骤

下载Apache Impala的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择Apache Impala，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入自身数据库的对应信息，可选择勾选kerberos认证。若勾选kerberos认证，则需填入注册过kdc的客户端名称、keytab密钥路径和Kerberos认证对应URL，参考 数据连接Kerberos认证，如下图：

若不勾选kerberos认证，则跟其他数据库设置一致，选择填入编码转换和连接池属性信息即可（编码转换和连接池属性介绍可参考配置数据连接）。如下图，显示的为没有用户名、密码的配置。

点击“测试连接”，若测试连接成功则表示成功连接上数据库，如下图：

测试连接成功后点击“保存”该数据连接即添加成功。

3、注意事项

1、FineBI在数据查询的时候忽略大小写，字段查询结果都为小写；

2、impala不支持date类型，支持timestamp；

3、impala不支持多个distinct count，多个去重记录数预览sql会报错；


Apache Phoenix数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Apache Phoenix数据连接

1、描述

Apache Phoenix通过结合联机事务处理和hadoop运行分析平台的完美结合来针对低延迟应用程序，它支持标准SQL和有包含事务的原子性、隔离性、一致性、持久性的JDBC API的能力，并且后期绑定灵活，基于NoSQL世界的读时模式，以HBase作为后台存储。本章我们将介绍如何在FineBI中连接Apache Phoenix数据库。

2、数据连接

2.1 配置信息
驱动 | URL
org.apache.phoenix.jdbc.PhoenixDriver | jdbc:phoenix:ip:port/dbname

2.2 连接步骤

下载Apache Phoenix的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择Apache Phoenix，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入自身数据库的对应信息，可选择勾选kerberos认证。若勾选kerberos认证，则需填入注册过kdc的客户端名称、keytab密钥路径和Kerberos认证对应URL，参考 数据连接Kerberos认证，如下图：

若不勾选kerberos认证，则跟其他数据库设置一致，选择填入编码转换和连接池属性信息即可（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以选择模式，根据需求选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。

3、注意事项

注意事项：

1、A join B on A.a=B.b，A B不支持子查询。可能导致引擎开启实时数据时的关联无法正常使用, 只能走内存化；

2、多层嵌套可能会sql报错，如果用户原本的sql数据集已经有sql嵌套, 引擎开启实时数据时的查询可能会出现问题。例如 select T_2.a from ( select T_1.a from ( select * from A) T_1 ) T_2 会报错。

报错解决方法：

报错1: jdbc访问数据库无法连接, 提示get locations错误或者zookeeper找不到对应的地址

解决方法: 检查如下位置的配置，/etc/hosts 中的机器名对应IP是否为局域网IP；/etc/hostname中机器名设置和/etc/hosts中是否配置一致；BI所在机器hosts配置的IP+机器名是否正确。

报错2: BI测试链接失败, 报错 "Caused by: java.sql.SQLException: org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()V from class org.apache.hadoop.hbase.zookeeper.MetaTableLocator"

解决方法: guava包需要替换 guava-16.0.1.jar。


Gbase 8A数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Gbase 8A数据连接

1、描述

GBase 8a是一款具有高效复杂统计和分析能力的列存储关系型数据库管理系统，能够管理TB级数据。GBase 8a以列作为基本存储方式和数据运算对象，结合列数据压缩处理、并行处理、Snapshot 并发控制、快速索引等新型数据处理技术， 在查询、 统计、 分析及批量加载性能上具备突出的优势。本章我们将介绍如何在FineBI中连接GBase 8A数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本
com.gbase.jdbc.Driver | jdbc:gbase://ip:port/dbname | Gbase 8A（基于mysql）

2.2 连接步骤

下载GBase 8A的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择GBase 8A，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后点击“保存”该数据连接即添加成功。


Gbase 8S数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Gbase 8S数据连接

1、描述

GBase 8s是国内第一款采用硬件加密技术获得国家密码管理局资质的安全数据库，主要适用于涉密信息系统、信息系统安全等级保护要求中规定的三级以上信息系统、国民经济支柱行业核心信息系统，以及其他信息系统等对数据管理具有高安全需求的领域。本章我们将介绍如何在FineBI中连接GBase 8S数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本
com.informix.jdbc.IfxDriver | jdbc:informix-sqli://ip:port/database:INFORMIXSERVER=server | Gbase 8S（基于infomix）

2.2 连接步骤

该数据连接使用FineBI自带的驱动包ifxjdbc.jar，不需要再拷贝驱动。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”并选择GBase 8S，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以选择模式，根据需求选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。


Gbase 8T数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Gbase 8T数据连接

1、描述

GBase 8t是国内第一款与世界技术同级的国产事务型通用数据库系统，是南大通用提供的基于IBM Informix 12.1源码构建的一款国产、自主、安全可控的高端事务型数据库产品。本章我们将介绍如何在FineBI中连接GBase 8T数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本
com.informix.jdbc.IfxDriver | jdbc:informix-sqli://ip:port/database:INFORMIXSERVER=server | Gbase 8T（基于informix）

2.2 连接步骤

该数据连接使用FineBI自带的驱动包ifxjdbc.jar，不需要再拷贝驱动。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”并选择GBase 8T，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击测试连接，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以选择模式，根据需求选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“确定”该数据连接即添加成功。


H2数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

H2数据连接

1、描述

H2是一个纯JAVA编写，不受平台限制的嵌入式数据库。功能完整，支持标准SQL和JDBC，支持内嵌模式、服务器模式和集群等。且FineBI内置的Demo数据即为H2数据库，本章我们将介绍如何在FineBI中连接H2数据库。

2、数据连接

2.1 配置信息

驱动器 | URL
org.h2.Driver | jdbc:h2://${ENV_HOME}/../databaseName

2.2 连接步骤

该数据连接使用FineBI自带的驱动包h2-1.4.192.jar，不需要再拷贝驱动。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”并选择H2，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步“测试连接”，若测试连接成功则表示成功连接上数据库，如下图：

测试连接成功后才可以进行第三步选择模式，根据需求选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。


Hadoop Hive数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Hadoop Hive数据连接

1、描述

Hadoop是个很流行的分布式计算解决方案，Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具，可以用来进行数据提取转化加载（ETL），这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言，称为 HQL，它允许熟悉 SQL 的用户查询数据。本章我们将介绍如何在FineBI中连接Hadoop Hive数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本
org.apache.hive.jdbc.HiveDriver | jdbc:hive2://ip:port/dbname | hive_1.1；Hadoop_Hive_1.2；

2.2 连接步骤

下载Hadoop Hive的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择Hadoop Hive，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入自身数据库的对应信息，可选择勾选kerberos认证。若勾选kerberos认证，则需填入注册过kdc的客户端名称、keytab密钥路径和Kerberos认证对应URL，参考 数据连接Kerberos认证，如下图：

若不勾选kerberos认证，则跟其他数据库设置一致，选择填入编码转换和连接池属性信息即可（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后点击“保存”该数据连接即添加成功。

3、注意事项

FineBI默认查询出的字段名前会加表名，若不想要加表名，需要在数据库文件hive-site.xml中进行配置，如下图，将value的值由默认的true改成false。


Hbase数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Hbase数据连接

1、描述

Hbase作为大数据平台的重要组成部分，在数据存储方面起到了至关重要的作用，因此BI连接Hbase也是必不可少的功能之一。FineBI提供的方法是通过phoenix连接hbase，下面我们将详细介绍如何进行连接。

2、数据连接

2.1 配置信息
驱动 | URL
org.apache.phoenix.jdbc.PhoenixDriver | jdbc:phoenix:ip:port/dbname

2.2 连接步骤

1、下载phoenix安装包 http://mirror.bit.edu.cn/apache/phoenix/ ，解压后找到 phoenix-4.12.0-HBase-1.2-server.jar（实际版本需根据自身Hbase版本找）, 放入hbase/lib下, 重启hbase ( 使用命令./stop-hbase.sh, 再./start-hbase.sh)；同样的解压包内找到phoenix-4.12.0-HBase-1.2-client.jar，放入FineBI安装目录FineBI/webapps/webroot/WEB-INF/lib下，重启FineBI。

注：此处Phoenix与HBase存在版本的对应关系：Phoenix 2.x - HBase 0.94.x；Phoenix 3.x - HBase 0.94.x；Phoenix 4.x - HBase 0.98.1+。例如，当使用的是HBase0.94.18，那可以用phoenix2.x，phoenix3.x版本。请在上面的phoenix安装包下载网站查看版本匹配关系，如下图，确定版本后再下载拷贝jar包。

2、登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择Hbase，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入自身数据库的对应信息，可选择勾选kerberos认证。若勾选kerberos认证，则需填入注册过kdc的客户端名称、keytab密钥路径和Kerberos认证对应URL，参考 数据连接Kerberos认证，如下图：

若不勾选kerberos认证，则跟其他数据库设置一致，选择填入编码转换和连接池属性信息即可（编码转换和连接池属性介绍可参考配置数据连接）。如下图，显示的为没有用户名、密码的配置。

点击第二步“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以选择模式，根据需求选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。

3、注意事项

问题报错及解决方法：

问题1: jdbc访问数据库无法连接, 提示get locations错误或者zookeeper找不到对应的地址

解决方法：检查如下位置的配置，数据库机器/etc/hosts 中的机器名对应IP是否为局域网IP，/etc/hostname 中机器名设置和/etc/hosts中配置是否一致；BI所在机器hosts中配置的数据库IP+机器名是否正确；是否修改后重启了hbase。

问题2：SQuirrel连接

解决方法：参考 http://phoenix.apache.org/installation.html#SQL_Client 。在 https://sourceforge.net/projects/squirrel-sql/?source=typ_redirect 下载SQuirrel，默认安装后，将phoenix-xxxx-client.jar 放到%SQuirrel_HOME%/lib下，启动SQuirrel后, 先添加驱动再添加Alias即可。


KINGBASE数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

KINGBASE数据连接

1、描述

Kingbase是人大金仓面向事务处理类、兼顾简单分析类应用的数据库产品，可承载各行业管理信息系统和业务生产系统的相关业务，可用于替代Oracle的大型通用关系型数据库。本章我们将介绍如何在FineBI中连接Kingbase数据库。

2、数据连接

2.1 配置信息

驱动 | URL
com.kingbase.Driver | jdbc:kingbase://ip:port/dbname

2.2 连接步骤

下载Kingbase的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择Kingbase，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以进行第三步选择模式，根据需求选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。


Presto数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Presto数据连接

1、描述

Presto是一个分布式SQL查询引擎， 它被设计用来专门进行高速、实时的数据分析。它支持标准的ANSI SQL，包括复杂查询、聚合（aggregation）、连接（join）和窗口函数（window functions)。Presto的运行模型和Hive或MapReduce有着本质的区别。Hive将查询翻译成多阶段的MapReduce任务， 一个接着一个地运行。 每一个任务从磁盘上读取输入数据并且将中间结果输出到磁盘上。 然而Presto引擎没有使用MapReduce。它使用了一个定制的查询和执行引擎和响应的操作符来支持SQL的语法。除了改进的调度算法之外， 所有的数据处理都是在内存中进行的。 不同的处理端通过网络组成处理的流水线。 这样会避免不必要的磁盘读写和额外的延迟。 这种流水线式的执行模型会在同一时间运行多个数据处理段， 一旦数据可用的时候就会将数据从一个处理段传入到下一个处理段。 这样的方式会大大的减少各种查询的端到端响应时间。本章我们将介绍如何在FineBI中连接Presto数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本
com.facebook.presto.jdbc.PrestoDriver | jdbc:presto://ip:port/hive/dbname | Presto_0.152

2.2 连接步骤

下载Presto的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择Presto，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步“测试连接”，若测试连接成功则表示成功连接上数据库，如下图：

测试连接成功后才可以进行第三步选择模式，根据需求选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。


SAP HANA数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

SAP HANA数据连接

1、描述

SAP HANA是一个软硬件结合体，提供高性能的数据查询功能，用户可以直接对大量实时业务数据进行查询和分析，而不需要对业务数据进行建模、聚合等。SAP内存数据库的数据并不是只在内存里，也会不停写到硬盘里，这就用到复制服务器Replication Server，包括Log-based，Trigger-based和ETL-based。这些复制服务器需要用到Sybase Replication Server、Sybase Replication Server Agent、Sybase Adaptive Server EntERPrise (ASE，适用性服务器)等，以及HANA Load Controller和BO Data Services。本章我们将介绍如何在FineBI中连接SAP HANA数据库。

2、数据连接

2.1 配置信息

驱动 | URL
com.sap.db.jdbc.Driver | jdbc:sap://ip:port?reconnect=true

2.2 连接步骤

下载SAP HANA的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择SAP HANA，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以进行第三步选择模式，根据需求选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。


SAP Sybase数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

SAP Sybase数据连接

1、描述

SAP Sybase是基于客户/服务器体系结构的数据库，由于采用了客户/服务器结构，应用被分在了多台机器上运行。更进一步，运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库，为了让其它语言编写的应用能够访问数据库，提供了预编译。Sybase数据库，不只是简单地提供了预编译，而且公开了应用程序接口DB-LIB，鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用，因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植，是一种高性能的数据库。本章我们将介绍如何在FineBI中连接SAP Sybase数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本
com.sybase.jdbc4.jdbc.SybDriver | jdbc:sybase:Tds:ip:port/dbname | SAP Sybase ASE_12.5；SAP Sybase IQ；

2.2 连接步骤

下载SAP Sybase的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择SAP Sybase，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步“测试连接”，若测试连接成功则表示成功连接上数据库，如下图：

测试连接成功后才可以进行第三步选择模式，根据需求选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。


SPARK数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

SPARK数据连接

1、描述

Spark是一种通用的大数据快速处理引擎。Spark使用Spark RDD、 Spark SQL、 Spark Streaming、 MLlib、 GraphX成功解决了大数据领域中离线批处理、交互式查询、实时流计算、机器学习与图计算等最重要的任务和问题。Spark除了一站式的特点之外，另外一个最重要的特点，就是基于内存进行计算，从而让 它的速度可以达到MapReduce、Hive的数倍甚至数十倍。本章我们将介绍如何在FineBI中连接Spark数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本
org.apache.hive.jdbc.HiveDriver | jdbc:hive2://ip:port/dbname | 2.2.0

2.2 连接步骤

下载Spark的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择SPARK，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入自身数据库的对应信息，可选择勾选kerberos认证。若勾选kerberos认证，则需填入注册过kdc的客户端名称、keytab密钥路径和Kerberos认证对应URL，参考 数据连接Kerberos认证，如下图：

若不勾选kerberos认证，则跟其他数据库设置一致，选择填入编码转换和连接池属性信息即可（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后点击“保存”该数据连接即添加成功。

3、注意事项

Spark数据连接时，无法通过添加数据库表的方式取数，目前只能通过SQL数据集添加；


Sqlite数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

Sqlite数据连接

1、描述

SQLite 是一个软件库，实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。SQLite是在世界上最广泛部署的SQL数据库引擎。本章我们将介绍如何在FineBI中连接SQLite数据库。

2、数据连接

2.1 配置信息
驱动 | URL
org.sqlite.JDBC | jdbc:sqlite:[PATH_TO_DB_FILES]

2.2 连接步骤

下载Sqlite的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择Sqlite，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后点击保存，该数据连接即添加成功。


TeraData数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

TeraData数据连接

1、描述

TeraData是知名MPP架构的数据库，在整体上是按Shared Nothing 架构体系进行组织的，它的定位就是大型数据仓库系统，定位比较高，软硬件都是NCR自己的，其他的都不识别，通常被用于OLAP应用。本章我们将介绍如何在FineBI中连接TeraData数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本
com.teradata.jdbc.TeraDriver | jdbc:teradata://localhost/CLIENT_charset=EUC_CN, TMODE=TERA,charset=ASCII,LOB_SUPPORT,database=xxx | Teradata_v12； TeraData_15.00.06.04；

2.2 连接步骤

下载TeraData的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”并选择TeraData，如下图：

按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

点击第二步“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后才可以进行第三步选择模式，根据需要选择对应模式，若不进行选择，则默认为第一个模式。

模式选择后点击“保存”该数据连接即添加成功。

3、注意事项

teradata 表的字段名不能为value，驱动执行sql select id,value from table 这种会报错，误认为了关键字。(加上""可以执行sql)


TRANSWARP INCEPTOR数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

TRANSWARP INCEPTOR数据连接

1、描述

Transwarp Inceptor交互式分析引擎提供高速SQL分析，可帮助企业建立高速可扩展的数据仓库或数据集市，结合多种报表工具提供交互式数据分析、即时报表和可视化能力。Inceptor提供完整的ANSI SQL支持以及PL/SQL过程语言扩展，可以支持复杂的数据仓库类分析应用，也使得从原有数据库系统迁移到Hadoop更为容易。本章我们将介绍如何在FineBI中连接Transwarp Inceptor数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本 | 驱动
org.apache.hive.jdbc.HiveDriver | jdbc:hive2://ip:port/dbname | 星环_4.6.4；星环_4.7.1；星环_4.5.1； | 4.6-inceptor-driver.jar
org.apache.hive.jdbc.HiveDriver | jdbc:hive2://ip:port/dbname | 星环_5.1.2； | inceptor-driver-5.1.0.jar

2.2 连接步骤

根据版本下载星环的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\webroot\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”并选择TRANSWARP INCEPTOR，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入自身数据库的对应信息，可选择勾选kerberos认证。若勾选kerberos认证，则需填入注册过kdc的客户端名称、keytab密钥路径和Kerberos认证对应URL，参考 数据连接Kerberos认证，如下图：

若不勾选kerberos认证，则跟其他数据库设置一致，选择填入编码转换和连接池属性信息即可（编码转换和连接池属性介绍可参考配置数据连接）。如下图：

点击“测试连接”，若测试连接成功则表示成功连接上数据库。

测试连接成功后点击“保存”该数据连接即添加成功。


数据集- FineReport帮助文档|报表开发|报表使用|学习教程

数据集

1、索引

服务器数据集

程序数据集

SAP数据集

SAP BW数据集

SSAS数据集

SAP HANA数据集


服务器数据集- FineReport帮助文档|报表开发|报表使用|学习教程

服务器数据集

1、描述

服务器数据集 在线视频学习 请查看 【服务器数据集】

在前面章节中我们介绍了如何通过BI的数据连接功能来连接要访问的数据库，这一节介绍如何使用服务器数据集。与数据库数据集不同，服务器数据集是不随数据连接的变化而变化的，这些数据存储在BI的服务器中的，不论有没有数据连接，服务器数据集中的数据都可以使用。

服务器数据集目前不能在BI的界面设置，需要用 Finereport设计器远程连接建立。

2、设计器远程连接方法及步骤

下载安装好Finereport设计器之后，我们需要将Finereport设计器与BI的服务器远程连接。首先打开设计器，在菜单栏中选择文件>切换工作目录>其他，如下图所示：

在弹出的配置工作目录的界面中，点击“+”>远程服务器来新建一个远程服务器连接，如下图：

可以看到新增了一项远程服务器连接，并且它的右侧界面出现了远程服务器的连接配置。我们将远程服务器连接名修改为“FineBI”，填入需要的配置信息。点击测试连接可以看到“连接成功”。点击确定，Finereport与BI的远程连接就建立好了！

注：这里的远程服务器的配置信息就是启用BI的信息，包括BI所在的主机名/IP、端口号、WEB应用（默认webroot）、Servlet（默认decision）以及BI登录的用户名和密码（一般为管理员账户）。

注：连接失败时，记得检查BI服务器是否已经运行！

3、服务器数据集建立步骤

远程服务器连接好之后，现在可以导入一些需要的数据集，Finereport中提供了多种的服务器数据集导入方式：通过数据库查询、通过程序导入、内置数据集、文件数据集、存储过程、关联数据集、树数据集、多维数据库以及SAP数据集，在这里以数据库查询为例，介绍服务器数据集的建立和服务器数据集的使用。在菜单栏中选择服务器>服务器数据集。

在弹出的服务器数据集配置页面点击“+”>数据库查询：

可以看到新增了一项数据库查询项，我们将其重命名为“服务器数据demo”。选择BIdemo数据连接，选择数据表PUBLIC.DIM_AREA，在右侧的sql书写区域写入：

select * from PUBLIC.DIM_AREA

sql语句写好之后，可以点击预览数据是否正确。

预览之后点击确定，一个服务器数据集就创建好了，接下来我们登录BI去看看如何使用刚建好的服务器数据集。

4、服务器数据集使用方法

打开BI 数据准备>业务包管理界面， 新建一个业务包 ，选择添加数据库表，如下图：

在弹出的界面的数据连接中选择服务器数据集，在右侧的界面就可以看到我们新建的名为“服务器数据demo”的服务器数据集了。

注：Finereport设计器10.0必须与FIneBI5.0版本以及更高版本连接。

服务器数据集 在线视频学习 请查看 【服务器数据集】


程序数据集- FineReport帮助文档|报表开发|报表使用|学习教程

程序数据集

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、示例

3.1 定义数据源程序

下面以模板执行日志作为示例，演示如何通过程序数据集获取系统中的模板执行日志。

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 java.util.ArrayList;
import java.util.List;

/**
 * Created by Zed on 2018/6/2.
 */
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>> data = new ArrayList<List<Object>>();

    public ExecuteLog() {
        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());

                    data.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 data.size();
    }

    @Override
    public Object getValueAt(int i, int i1) {
        if (i < data.size()) {
            List<Object> message = data.get(i);
            if (i1 < message.size()) {
                return message.get(i1);
            }
        }
        return null;
    }
}

编译生成ExecuteLog.class并将其拷贝到/webapps/webroot/WEB-INF/classes/com/fr/log下，此时该程序数据源便定义好了。

模板执行日志和平台管理日志ExecuteLog.class与OperateLog.class可在此直接下载使用。

注：上面WEB-INF后面的可存放地址在BI目录中是没有的，需要自行创建。

3.2 配置程序数据

首先我们要将设计器远程连接到FineBI服务器上。此处详见 设计器远程到BI服务器上 。

打开设计器，选择服务器>服务器数据集，如下图：

进入服务器数据集设置界面，选择+>程序数据集，如下图：

点击选择之前放入目录的ExecuteLog.class，如下图：

点击确定保存。则在服务器数据集下能看到我们刚刚添加的程序。

登录FineBI数据决策系统，选择数据准备，进入业务包选择添加表>数据库表，如下图：

在服务器数据集下，可以看到我们刚刚在设计器中添加的程序数据集3，如下图：

点击确定添加到业务包中即可使用。


业务包管理- FineReport帮助文档|报表开发|报表使用|学习教程

业务包管理

1、描述

业务包管理 在线视频学习 请查看【业务包管理】

FineBI的业务包是BI分析的数据基础，由管理员创建，通过FineBI定义的数据连接向数据库中取数，业务包中包含了连接数据库所获取的数据表。若为非实时数据表，业务包在数据更新以后将获取到的数据保存在本地，BI分析则从本地取数，这也就保证了只要本地保存了数据，就算不联网也可以使用BI分析。开启了实时数据的数据表中则保存了获取连接数据库数据的一系列sql配置等，在模板分析时生成相应的sql语句向数据库查询。

FineBI业务包包含了能够提供给分析人员使用的所有数据库表，由管理员创建并将数据库中的表添加进去，以供分析人员使用，有以下几个功能特点：
1、数据可来源于多个表或者多个数据库的多个表；
2、数据之间的关联是通过数据库表建立的主键表的方式实现的，多个表之间的关联可直接继承数据库表间的外键关系实现，同时也可手动建立表间关系；
3、数据业务包中的表名和字段名可进行转义，变成业务人员能够理解的数据，转义的信息可以直接使用数据库中的注释，也可手动添加，还可以使用excelview进行转义；
4、数据业务包可设置权限，为不同业务人员分配不同权限；
5、数据业务包可自定义数据，添加数据的方式有多种；
下面我们详细介绍一下业务包的操作。

2、步骤

进入FineBI数据决策系统，点击数据准备即可进入业务包界面，如下图：

业务包可以进行创建、分组、重命名、删除等操作，下面索引将给出详细介绍。

3、索引

创建业务包

业务包分组

删除业务包

业务包管理 在线视频学习 请查看【业务包管理】


创建业务包- FineReport帮助文档|报表开发|报表使用|学习教程

创建业务包

1、创建业务包

进入FineBI数据决策系统，选择数据准备后可以看到目前已有的业务包和添加业务包按钮，如下图：

每个分组内均有一个添加业务包按钮，点击该按钮可为当前分组添加一个业务包。

点击该新建的业务包，则会进入业务包编辑界面，可为新业务包添加数据表。数据表的操作可参考 添加数据表 。

2、重命名业务包

在创建完业务包以后，可以对业务包重命名。将鼠标悬浮在创建的业务包上，可以看到有多个操作按钮，选择重命名，如下图：

点击该按钮进行业务包名的修改，直接输入新的命名即可。

3、查看业务包信息

已添加的业务包将鼠标悬浮在查看信息按钮处，可以查看该业务包的数据占用空间和创建者，如下图：


业务包分组- FineReport帮助文档|报表开发|报表使用|学习教程

业务包分组

1、描述

在使用业务包进行数据分析的过程中，如果业务包很多的话，寻找起来会很麻烦。因此FineBI为业务包提供了分组功能，添加不同的分组来将业务包分类存放。

2、添加分组

在FineBI数据决策系统的数据准备界面，可以看到添加分组的按钮，如下图：

单击该按钮即可添加分组，添加成功后新的分组将被自动命名为“未分组”。

3、重命名分组

将鼠标悬浮在新增的分组上，出现操作按钮，选择重命名可对该分组重新命名，如下图：

直接输入新的分组名即可，如下图：

4、删除分组

将鼠标悬浮在分组上出现的操作按钮还有删除，点击可选择删除已有的分组，如下图：

提示“确定删除分组”，点击确认即可成功删除。

5、移动到分组

在已有分组创建好的业务包想要移动到其他分组内，就可以使用业务包的移动到功能。将鼠标悬浮在业务包上，出现的操作按钮中包含移动到选项，如下图：

点击移动到按钮，下方会出现已有的业务包分组，选择业务包移动的目标分组即可。此处我们选择“测试”分组，将行业分组内的互联网业务包移动到测试分组下。


删除业务包- FineReport帮助文档|报表开发|报表使用|学习教程

删除业务包

1、删除业务包

业务包在创建以后如果不再使用了可以直接删除，将鼠标悬浮在业务包上，选择删除按钮，会出现确认删除业务包的提示，如下图：

点击确认即可删除该业务包，同时业务包内添加的表等数据也会同时删除，因此在删除前请务必确认该业务包确实不再使用了。


数据表管理- FineReport帮助文档|报表开发|报表使用|学习教程

数据表管理

1、描述

数据表管理 在线视频学习 请查看【基础数据表管理】

前面我们介绍了业务包的概念，可以用来保存来自于数据库的数据表，本章我们将介绍如何进行业务包中数据表的管理，包括数据表的添加、编辑、重命名、删除、查看等操作。

2、索引

添加数据表

编辑数据表

自循环列

行列转换

重命名数据表

移动数据表

删除数据表

数据预览

血缘分析

关联视图

更新信息


添加数据表- FineReport帮助文档|报表开发|报表使用|学习教程

添加数据表

1、添加表

添加数据表 在线视频学习 请查看【添加基础数据表】

进入FineBI数据决策系统，选择数据准备并进入业务包，在业务包配置页面可以看到添加表选项。

可添加的数据源表有三种类型：数据库表、SQL数据集和EXCEL数据集，自助数据集为业务人员根据原表进行数据加工生成的处理表。下面我们详细介绍添加三种数据原表的操作。

注：数据库表和SQL数据集在添加完成后若不选择开启实时数据，均需进行数据更新才能使用。EXCEL数据集则不需单独数据更新，会自动进行表更新。

2、添加数据库表

点击添加表，选择数据库表。

进入数据库选表界面，如下图，可以选择已创建的数据连接，右侧会显示获取到的该数据连接中的表信息。

根据需要选择添加到业务包中的表，如下图，我们选择医药的相关表。

点击右上角的确认以后FineBI会自动读取已选表中的数据库关联和表名转义、列名转义等，如下图：

随后进入业务包界面，可以在业务包中看到刚刚添加成功的数据库表。

注：添加成功的数据库表若不选择开启实时数据的话，需要进行数据更新才能使用，如创建自助数据集、创建组件等。

3、添加SQL数据集

在业务包配置页面，点击添加表，选择SQL数据集。

进入SQL数据集配置页面进行SQL语句、数据表名等的配置。

选择数据来源的数据连接为BIDEMO，输入SQL语句：select * from DEMO_CONTRACT，点击右侧的预览按钮，即可出现获取到的DEMO_CONTRACT数据表，修改表名为合同表，如下图：

数据表配置完成后点击保存，业务包中即出现刚刚添加的SQL数据集，如下图。该合同表的图标显示为sql，表示该表为sql数据集。

注：添加成功的SQL数据集若不选择开启实时数据的话，需要进行数据更新才能使用，如创建自助数据集、新建仪表板等。

SQL数据集支持添加参数，详细设置请参考参数添加。

SQL数据集在添加完成后，在基础表编辑界面的右上角有修改SQL按钮，点击可进行SQL语句的修改。

4、添加EXCEL数据集

EXCEL数据集提供了添加EXCEL数据到FineBI数据决策系统的方式，在业务包配置页面，点击添加表，选择EXCEL数据集。

进入EXCEL数据集配置界面，点击上传数据，并选择对应本地Excel表。

点击打开以后，Excel表会自动上传至FineBI中，在EXCEL数据集配置界面会出现获取的表字段和字段类型及数据预览，在左侧的字段类型处可以修改字段类型。

点击确定，该Excel数据集即添加成功，业务包中即出现刚刚添加的表，如下图：

且Excel数据集在添加以后不需要进行数据更新，FineBI会自动进行数据更新将数据保存至本地以供后续使用。

添加数据表 在线视频学习 请查看 【添加基础数据表】


编辑数据表- FineReport帮助文档|报表开发|报表使用|学习教程

编辑数据表

1、编辑数据表

编辑数据表 在线视频学习 请查看【编辑基础数据表】

在数据表添加完成以后，还可以对添加的数据表进行编辑操作，包括选择表字段、字段类型设置、创建自循环列和行列转换。进入编辑数据表界面的方式有两种，点击数据准备>业务包，进入业务包配置页面，可以看到已经添加到业务包中的表，单击表右侧的齿轮按钮，选择编辑。

或者点击在业务包配置页面表右上方的编辑按钮直接进入表编辑。

进入数据表编辑界面，可以修改当前表名，勾选表中的字段是否使用，选择表字段的字段类型，单击下方的预览按钮可以预览该表数据。

左侧显示表中字段处理的操作流程，表字段和类型的选择属于字段设置操作，后续操作还包括自循环列和行列转换，后面将给出详细介绍。

2、字段设置

如上所述，在字段设置流程可以选择字段和类型，我们将医药_库存周转事实表的客户编码字段的字段类型改为数值，并选择不使用库存金额和周转月字段，如下图：

设置完毕后点击预览，可看到表数据。

若还需要进行其他设置，如自循环列、行列转换等，可参考第三章节的索引；若不进行其他操作，点击右上角的确定即可在业务包中看到我们刚刚编辑好的表。

在更新信息中单表更新以后就可以在创建自助数据集、新建仪表板中使用该数据表。

3、索引

自循环列

行列转换

编辑数据表 在线视频学习 请查看 【编辑基础数据表】


自循环列- FineReport帮助文档|报表开发|报表使用|学习教程

自循环列

1、描述

通常公司的部门之间都存在层级关系，比如银行机构的总行、支行、分行等。在银行内部为了标识这些不同机构，通常会有唯一的部门ID，比如总部ID为1，支行的ID为10，分行为110等等类似这种。在数据库中保存的机构表往往直接保存机构号、机构名称等，不会形成一个树状的层级结构，这样在使用数据分析的时候非常不方便。因此FineBI提供了自循环列功能，将组织代码表转化成树状结构用于分析，它包含两种方式：根据一列数据分层和根据两列数据分层。

根据一列数据分层应用于组织代码表中的机构代码只有一列的时候，比如下图这种机构表，总部（ID为1），董事会（ID为10，该层级的第一位为第一层的ID值），财务部（ID为11，该层级的第一位为第一层的ID值），部门的职位-财务1（ID为110，该层级的第一位为第一层级的值，第二位为第二层级的值），财务部，市场部等是总部下面的分属部门，财务1这些职位是财务部的下属部门。数据库中存储部门信息的时候，都是将所有部门ID放在一个数据列中，并没有将总部作为一个数据列，财务部作为一个数据列。

根据两列数据分层应用于组织代码表中的机构代码有两列，分别为当前机构号和直接上级机构号，比如下面的银行机构表，某银行镇江丹徒新区支行的机构代码是7018，它的直接上级机构代码是0711，0711代表某银行镇江环城支行。

若将上面介绍的表直接保存在业务包中使用分析的话，在仪表板拖拽机构名称字段出来的时候将是所有机构，但很多时候我们需要对不同层级的机构使用不同的维度分析，这样的数据很显然是不符合要求的。我们需要的是分别对应不同层级总行、支行、分行的机构名称列，比如下面的：

下面我们就详细介绍下如何使用自循环列将上图的组织代码表转化成树状结构。

2、根据一列数据分层

下面我们以之前介绍的公司部门机构表为例来介绍如何转换成树状结构。

添加公司机构表到业务包中，单击该表右侧的齿轮按钮，选择编辑。如下图：

进入数据表编辑界面，在左侧的字段处理操作流程中点击+，选择自循环列。

进入自循环列设置界面，默认自循环列类型为根据一列数据分层，需要选择自循环列的设置条件，包括显示值、分层依据ID列。如下图：

因为我们的机构表有只有一列ID号，因此我们选择默认的根据一列数据分层。显示值为最终分层显示的名称，该机构表中最终分层显示的为机构名称，即name字段；分层依据ID列为机构代码中的机构号，即ID字段。如下图：

条件设置好后，点击右侧的构建关系，可以看到根据我们的分层设置构建出了三个层级，如下图，分别是位数为1、2、3的层级。

点击确定保存，则在数据预览处可以看到新生成的数据表，新生成的三个层级分别为总部、部门、部门职位，单击重命名可修改自循环列层级字段名称。

数据编辑完成后，进行单表更新或者开启实时数据后，即可在新建组件中使用该数据。如下图：

3、根据两列数据分层

上面我们已经介绍过，根据两列数据分层应用于数据表中有两列机构代码数据，下面我们就之前的银行机构表演示如何应用自循环列。在数据表添加完成后，点击数据准备>业务包，进入业务包配置页面。可以看到已经添加到业务包中的表，此处我们选择银行结构表，单击表右侧的齿轮按钮，选择编辑。

注：已添加的表需设置实时数据/表更新以后才能进行自循环列操作。

进入数据表编辑界面，在左侧的字段处理操作流程中点击+，选择自循环列。

进入自循环列设置界面，需要选择自循环列的设置条件，包括自循环列类型、显示值、分层依据ID列，Parent ID列。

因为我们的机构表有两列机构ID号，因此此处我们选择根据两列数据分层；显示值为最终分层显示的名称，机构表中最终分层需要显示的是机构名称；分层依据ID列为机构代码两列中的当前机构号；Parent ID列为机构代码两列中的直接上级机构号；此处我们分别选择JGID和PARENT_ID。

自循环条件设置完成后，点击右侧的构建关系按钮，可以看到根据我们的分层设置构建出了五个层级，如下图：

点击右上角的确定按钮，FineBI自动进行表更新操作，在业务包中可以看到新生成的数据表，单击重命名可修改自循环列层级字段名称。

在更新信息中单表更新以后就可以在创建自助数据集、新建仪表板中使用自循环列生成的层级字段，如下图：


行列转换- FineReport帮助文档|报表开发|报表使用|学习教程

行列转换

1、描述

行列转换是指将关系数据表中的行转换成列或者列换换成行，简单来说就是讲转换前数据表中某个字段的所有值取出来，配以某个指标字段，成为新表的列名。很多时候用户也会从不规范的数据源中提取数据到FineBI中，比如将Excel文件导入。而Excel文件的字段和展示样式并不固定，往往会与规范化的数据库表数据不能很好的兼容合并，导入Excel后就有可能用到行列转换，将很多行展示数据转化为规范的列字段进行分析。

2、行转列示例

如下图所示的学生成绩表保存了学生成绩，每个学生都有多门课程的成绩：英语、化学、数学等，如果保存在FineBI业务包中每人将占据多条记录，即每人分学科分别存储。

而将不同学科的值作为字段名，保存的学生信息表每个学生只会有一条记录，实现的是如下图的效果。

2.1 导入源数据

参考添加数据表将源数据表stscore添加到FineBI的业务包中，添加后在数据准备>业务包中可以看到该表的信息。

注：在添加完成表以后需要进行数据更新操作，在更新完成后才能进行后续行列转化处理。若选择开启实时数据，则不需要进行更新操作。

2.2 行列转化

选择数据表设置中的编辑按钮，对该表进行编辑处理。

进入数据表编辑界面，进行字段设置，默认选择全部字段。在左侧字段处理操作流程处点击+，选择行列转换。

进入行列转换设置界面，需要进行栏次名、原始指标字段和识别生成指标所在列的根据字段的选择。

根据字段识别生成的指标所在列：是指数据表中根据需要转化的字段值重复的字段，在之前的学生成绩表中，姓名就根据“需要被转化字段-科目”重复出现（即因为有多个科目的成绩导致每个人重复出现），那么该下拉框中的字段可以选择姓名，该选项可以选择最终显示时需要唯一值的字段；

栏次名：是指需要被转化的行字段名称，在本示例中，是指科目字段；

原始指标字段：原始数据表中包含的字段都会出现，在本示例中，需要选择成绩字段；

生成的指标字段：是指被转化字段所对应的值字段，在本示例中，是指每个科目的成绩字段值；

设置完成后，效果如下图所示：

点击确定保存该行列转换设置。进入更新信息进行单表更新。

数据更新成功后，在数据预览处，可以看到转化成功的列字段：学科-成绩。

如上图，每个学生都变成一条数据记录成绩了，而不同科目都变为新的字段来保存成绩，完成达到我们的需求了。

行列转换的列传行操作请参考行列转换之列转行。


重命名数据表- FineReport帮助文档|报表开发|报表使用|学习教程

重命名数据表

1、重命名数据表

前面已经介绍了添加和编辑数据表，数据表在编辑的时候可以进行重命名操作，如下图：

对于已经编辑好的表，在业务包配置页面也可以对该表进行重命名操作。点击已编辑表右侧的齿轮按钮，选择重命名。

输入想要修改的表名称，比如库存表，即成功修改了表名称。


移动数据表- FineReport帮助文档|报表开发|报表使用|学习教程

移动数据表

1、移动数据表

对于保存在业务包中的数据表，如果想要将它移动到其他业务包中，就可以使用移动到功能。在业务包配置页面，点击已添加数据表右侧的齿轮按钮，选择移动到，如下图：

选择想要移动到的目的业务包，比如此处我们将库存表移动到测试业务包，如下图：

点击数据准备下的测试业务包，可以看到该库存表已经被移动过来了。


删除数据表- FineReport帮助文档|报表开发|报表使用|学习教程

删除数据表

1、删除数据表

对于存在于业务包中已经不需要使用的数据表，FineBI提供了删除数据表的功能。进入业务包配置页面，点击已添加数据表右侧的齿轮按钮，选择删除。

此时会出现若删除该数据表，与该表有关系的自助数据集和模板都会受到影响，是否确认删除的提示。若确认不再使用该表，则点击确认即可删除成功。

注：在删除之前请确认清楚该数据表是否不再需要使用，删除后将不能恢复。


数据预览- FineReport帮助文档|报表开发|报表使用|学习教程

数据预览

1、数据预览

在业务包中添加并编辑成功数据表以后，业务包编辑界面存在数据预览区域，可以查看已编辑成功的表数据，如下图：

表数据在预览的时候可以有两种查看方式：明细展示和表结构展示，明细展示会展示所有的字段、字段类型和数据信息，且支持修改字段名，如下图：

表结构展示显示字段类型、字段名和原始名，字段名为自动获取的转义名或原始名修改后的字段显示名称，如下图：


血缘分析- FineReport帮助文档|报表开发|报表使用|学习教程

血缘分析

1、描述

业务包在添加数据表或者创建自助数据集以后，业务包编辑界面存在血缘分析区域，可以查看该表的来源表和子孙表/模板，如下图，其中非当前用户创建的子孙表或模板灰化显示，当前用户创建的则不灰化。

2、来源表

血缘分析中的来源表即显示该当前表的原始表。若当前表为基础表，则来源表显示该基础表的原始表名。如下图，“产品名称维度”的来源表为“产品名称维度”。

3、子孙表/模板

上面介绍的来源表为显示当前表的来源，那子孙表/模板即显示用当前表制作成的子表和模板。血缘分析中的子孙表/模板包含名称、类型、创建人、位置信息，如下图，客户维度表的子孙表/模板中显示了基础表、由该表创建的自助数据集和模板。


更新信息- FineReport帮助文档|报表开发|报表使用|学习教程

更新信息

1、描述

数据准备>业务包的编辑界面存在更新信息区域，可以查看当前表的更新记录，包括数据占用空间、更新的基础表和更新完成时间。在进行任何更新操作，包括单表更新/业务包更新/全局更新等以后，更新记录都会保存到该更新信息中。如下图：

注：若该表开启实时数据，则不会再进行更新信息记录的写入。

2、基础表

若为基础表，则更新信息下显示的为原始表名及成功更新的完成时间，如下图，同时在更新信息区域存在单表更新按钮，可对该表进行单表更新。

3、自助数据集

若为自助数据集，则更新信息下显示的为用到的基础表表名、成功更新的完成时间和自助数据集的数据占用空间，业务员可直接查看到自己编辑的自助数据集使用到的原始表是什么时候的。如下图，且自助数据集中不存在单表更新按钮，因为自助数据集在编辑以后点击确认即会自动更新，无需手动进行单表的更新。


更新Excel- FineReport帮助文档|报表开发|报表使用|学习教程

更新Excel

1、描述

在业务包数据表管理的时候，管理员已经将Excel数据集添加好了，但是在业务员使用的时候，需要对数据集进行更新。因此我们在数据准备>业务包>Excel数据表的界面提供了业务人员对Excel数据集进行更新的操作，支持追加上传与重新上传的操作，追加上传是指在原先Excel数据表的基础上上传Excel增加数据；重新上传为上传Excel替换掉原先的数据。

注：两种更新excel的方式均需要保证重新上传的Excel表与原先的版本一致、表结构一致，即字段名称、字段顺序均一致。有数据表编辑权限的用户在更新exel的时候可以对原先的字段类型进行修改再更新。

2、更新excel步骤

业务人员进入数据准备>业务包，点击有权限使用的EXCEL数据集，选择右上角的更新excel按钮，如下图：

注：此时因为业务人员仅拥有使用该excel数据集的权限，因此不能对字段类型进行修改。如下图，字段类型处均灰化无法点击。

2.1 追加上传

追加上传只需上传新增的excel数据，把新上传的excel数据增添到原数据后。点击追加上传，选择要追加的excel文件，点击打开，如下图：

确定保存即可。

2.2 重新上传

重新上传为全部替换为新上传的excel。点击重新上传，选择要替换的excel文件，点击打开，如下图：

系统会自动对上传的文件数据进行校验，需要满足追加的数据字段类型与字段名称均一致才能上传成功，上传成功后页面会出现提示“excel上传成功！”，如下图：

且原数据将全部被替换为新上传的数据，如下图，为替换成功的数据。


关联视图（单表）- FineReport帮助文档|报表开发|报表使用|学习教程

关联视图（单表）

1、描述

关联视图 在线视频学习 请查看 【数据关联】

通常数据库的表与表之间存在关联关系，比如外键，即某个字段是一个表的主键，但该字段同样是另一张表的外键，那么FineBI怎么读取这种表间关联关系呢？在添加数据表中我们介绍过，将数据库表添加到业务包的过程中，系统会自动读取表间关联。本章我们将介绍另一种方法：手动建立表间关联关系。

2、添加表间关联

2.1 添加关联

打开FineBI数据决策系统，进入数据准备>业务包，单击业务包配置页面已添加成功的表可以看到单表的关联视图选项。

在关联视图设置区域，手动选择需要建关联的字段，如客户编码，单击客户编码后的相关表区域，右侧即出现对应该选择字段的关联设置。

单击右侧区域的关联到其他表按钮，即可选择关联相应的业务包>数据表，选择以后出现关联设置区域，在该区域需要选择关联字段，添加关联方向，即哪个作为主表。关联方向包含三种：1：1、1：N、N：1，需要根据实际情况进行选择，不能违反实际数据对应的关联关系。如实际主表不会因为手动设置为子表而变为子表。

此处，我们为“医药_库存周转事实表”的客户编码字段选择“客户地区维度表”的客户编码字段添加关联，选择关联方向为N：1，即“医药_客户地区维度”作为主表，如下图：

添加完成后点击确认保存，即可在该数据表的关联关系区域看到已经添加成功的关联，如下图：

还可单击已创建的关联下方的关联到其他表，按照上面同样的方式同样添加关联到其他表/字段即可。

配置完字段关联后，需要点击更新信息>单表更新进行该表的更新操作，抽取数据保存到本地才能使用。表更新详细设置可参考 数据更新 。

注：若存在多人配置相同字段关联的情况，后保存的将覆盖之前保存的关联配置。且同一张表的字段A不能出现多张主表，也即上面库存事实表的客户编码字段只能配置一个主表字段，如上面的客户维度表客户编码字段，不能再为该字段配置N：1关系的其他字段，否则后面配置的将覆盖之前配置的关联。

2.2 联合关联

有的时候客户系统中通过一个主键无法确定一条记录，比如订单表里有很多字段，一般情况只要有个订单号bill_no做主键就可以了，但是，现在要求可能会有补充订单，使用相同的订单号，那么这时单独使用订单号就不可以了，因为会有重复。那么可以再使用个订单序列号bill_seq来作为区别，把bill_no和bill_seq设成联合主键。

若需设置联合主键，则在关联视图下勾选联合关联，并选择需要的字段添加关联，如下图，勾选“客户ID”和“合同类型”字段并点击关联到其他表，同上述一样选择表和对应字段添加关联关系即可。

3、修改表间关联

对于已经添加好的关联关系，我们可以点击编辑按钮进行修改，如下图：

可以重新进行关联字段和关联方向的选择。

4、删除表间关联

对于之前创建的不需要的表间关联，我们可以进行表间关联关系的删除，如下图，点击删除按钮进行删除。

5、关联关系查看

前面已经手动建立好一组表间关联关系了，除了在单表的关联视图区域查看关联外，还可以在数据准备节点下的关联视图区域查看，如下图：

关联视图 在线视频学习 请查看 【数据关联】


关联视图（所有表）- FineReport帮助文档|报表开发|报表使用|学习教程

关联视图（所有表）

1、描述

关联视图 在线视频学习 请查看【数据关联】

在数据表管理中我们介绍过单表的关联视图，主要用于管理单张表的关联关系，而FineBI在数据准备节点下提供了所有表的关联视图界面，可以方便的查看和管理业务包中所有有权限表的关联关系。

2、关联视图查看

进入FineBI数据决策系统，点击数据准备>关联视图，如下图：

进入所有表的关联视图界面，显示了所有表之间的关联关系，没有关联的关联图之间用虚线隔开，没有任何关联的表位于关联图的最下方，右上角的搜索框中可直接输入表名搜索该表的关联图。

将鼠标移动到表关联的字段上，与该表有关系的表字段即会高亮显示，可以清楚看到该字段与哪些表字段关联。

在关联视图中，每个表名前均有眼睛图标，点击该眼睛图标后，视图中只显示与该表有直接字段关联的表，其他表隐藏。再次点击眼睛图表则会返回原先所有表的关联视图界面。

3、编辑关联关系

除了上述介绍的查看关联表、字段的方式，在关联视图中列出的所有关联表或者关联字段均能够点击，点击以后会进入业务包编辑界面，可进行数据表管理里的各种操作。如下图，我们在关联视图界面单击客户名称字段。

进入该字段所在业务包编辑界面，不仅可对当前字段所在的表进行编辑操作，还可以对该业务包中其他有权限的表进行编辑。数据表的编辑操作可参考数据表管理，单表的关联视图可参考关联视图（单表）。

编辑完成后点击左上角的返回按钮即可回到关联视图界面。

注：在未开启实时数据情况下，表间关联关系在修改后需要进行数据更新，抽取数据保存到本地才能使用。

关联视图 在线视频学习 请查看 【数据关联】


多路径设置- FineReport帮助文档|报表开发|报表使用|学习教程

多路径设置

1、描述

FineBI在数据表较多且表间关联关系设置较多且复杂以后，可能会存在从一张表到另一张表之间多路径的情况。多路径表间关联关系是指，从一张表到另一张表，除了可以从路径1关联过去，还可以从路径2关联过去。比如说有A、B、C三张表，从A表到C表有一个直接的关联关系，同时A表也关联到B表，B表关联到C表，即A表通过B表关联到C表，那么A表到C表就有两条路径，如下图：

2、多路径设置概述

针对上面介绍的这种多路径情况，FineBI中会有多个模块来选择由于复杂的表间关系而产生的多条相似数据关联路径，从而帮助解决或者缓解多路径产生的问题。多路径包含多种类型：冗余多路径、错误路径等。

冗余多路径一般是指产生多路径的表间关联，多条路径下获取的数值都是一样的，但是有些路径很复杂，有些很简单。比如上面的A表直接关联到C表就比A表通过B表关联到C表要简单。我们在使用的时候为了减轻服务器压力，可以直接设置为选择简单路径进行数据关联读取即可。

错误路径一般是指由于复杂的关联关系产生了多路径中，个别路径获取的数据并不是正常业务逻辑下需要得出的，会影响正常数据分析，因此需要设置部分非业务需要的路径不参与分析。

多路径对于业务分析来说是需要尽量避免和优化的，因为多路径对导致本身复杂的业务更加不易理解和分析。那么下面将会大家介绍多路径设置的两种方式。

3、多路径设置方式

3.1 多路径数据关联

在建立表间关联的时候，可以手动设置关联关系为一对一或者一对多，以及对应的表间关联方向。可以在添加表的阶段就可以对最终的多维数据库结构有所了解，从而避免掉一些由于数据不全导致的错误的关联关系。或者在业务逻辑确定的情况下，有些表由于在不同业务都会使用而产生多路径时，可以重复添加相同数据，并针对不同业务添加不同转义表名来避免产生多路径。

具体详情请参见多路径数据关联 。

3.2 多路径设置界面

在多路径设置界面，FineBI直接提供了对已产生多路径的选择渠道。多路径设置界面会根据路径起始及结束表而列出对应的多路径选项进行选择。

具体详情请参见多路径设置界面 。


多路径数据关联- FineReport帮助文档|报表开发|报表使用|学习教程

多路径数据关联

1、描述

很多的冗余多路径都是由于用户添加表及建立表间关联不规范造成的，所以我们可以在此学习从原始数据加载过程中就避免产生这些冗余多路径。一般原始数据库有完整的主外键关联关系的，直接读取到FineBI中时数据及数据关联结构均能够保持规范。下面的操作主要是针对如果本身数据库并未添加完整的主外键关系，只是直接读取原始数据并且只写上对应表的关联字段。或者由于BI支持从多数据源中加载数据，从不同数据库读取的数据表之间或者数据库表与上传的EXCEL文件并没有建立主外键关系时，我们提供规范的操作让FineBI读取数据并建立多维数据库中的关联关系能够比较规范。

2、操作

针对上面所说的不规范数据关联情况，我们提供了操作方法来规范在FineBI中建立的数据关联。

在业务包中数据表的关联关系处，提供了标识主键的方法，外键可直接通过字段建立表间关联来体现。如下图。

建立关联关系时，可以设置表间关联关系为一对一或一对多，即在关联操作时，可以选择一方是1还是N来标识关联方向（1为主表，N为子表）。从而确保建立的关联关系与用户实际业务逻辑、数据库存储逻辑保持一致。表间关联关系的设置可参考关联视图（单表） 。

注：如果用户标注的信息与实际数据不符，如非distinct字段设置为主键等信息，在表更新时会自动纠正，但是会导致部分相关设置不生效。

3、示例-根据业务逻辑设置

当前某公司业务上有客户表与合同表两个表，而且这两个表需要建立关联关系。直接读取数据库数据并建立关联，没有进行区分主子表关系和设立主键。但是因为存储数据不全，直接判断关联字段的数据就发现客户表与合同表的数据都是一对一匹配的，即一个客户对应一个合同，由此产生了很多冗余的多路径情况，而且这些多路径很多是错误且不存在于业务逻辑中的。
但从公司真实业务逻辑来说，客户表是主表，合同表是子表，即同一个客户允许与多个合同关联，反之则不行。我们就需要按照这个实际逻辑到业务包的表设置界面进行操作设置。

建立表间关联关系的操作，具体参见关联视图。

3.1 读取主外键

直接读取原始数据库表的主外键信息，或者字段是否设置唯一约束。如果数据库中已经添加过，则可以直接读取到业务包的数据表中。如果有外键，且对应表也在业务包中，则可以直接建立数据关联关系。

3.2 设置主键

如果添加的数据表没有主外键等信息，那么添加到在数据表设置页面，可以由用户进行手动添加。
3.3 匹配关系及关联方向
为数据表添加数据关联信息界面，可以设置数据匹配关系是一对一或一对多，而且如果是一对一的情况，也可以选择关联方向，即A,B表数据都是一对一，可以根据实际业务逻辑设置方向为A->B,而不采用B->A的关联关系，即采用A关联B用取1：N的选择。

4、示例-数据表复用

当前某公司有一个公共的维度表是人员姓名的维度表，然后有一个订单表，其中会有创建人、审核人两个字段与姓名维度表进行关联。当需要使用订单表中的指标，如订单金额，订单数等信息时，直接使用姓名字段的话，并不知道应该使用创建人还是审核人作为姓名匹配，还必须手动选择此时需要使用哪个字段与姓名维度表进行匹配。

所以，为了方便上述问题的前端分析操作，我们就需要复用这个订单表，将订单表添加2次至业务包中且作为不同的表，分别用表中的创建人、审核人字段与姓名维度表关联（即2个订单表都只用一个字段去匹配）。此时在前段分析时，直接从名字上区分后，需要使用创建人可以从使用创建人关联的订单表中取指标，使用审核人的相关指标方法类似。


多路径设置界面- FineReport帮助文档|报表开发|报表使用|学习教程

多路径设置界面

1、描述

针对已经产生的多路径情况，FineBI提供了多路径设置界面来选择由于复杂的表间关系而产生的多条相似的数据关联路径，从而减少前段数据分析时因为多路径而产生的繁琐操作，避免数据展示出现偏差及错误。下面我们详细介绍一下多路径设置的操作。

2、多路径设置界面

登录FineBI数据决策系统，选择数据准备，在右上角就可以看到多路径设置按钮，如下图：

点击进入多路径设置界面，当前系统中存在的所有多路径都会列在界面上，可以根据需要数据关联的最优路径。如下图，“医药库存表”与“医药_客户地区维度”之间存在了两条路径，勾选路径前的复选框即可选择路径。

比如我们选择第一条路径，勾选该条路径，表示在用户分析的时候可以使用该条路径。随后点击退出多路径设置即可。

如果想要快速找到相关表的多路径，可在右上角的搜索框输入表名或字段名来搜索，如下图：


计算模式- FineReport帮助文档|报表开发|报表使用|学习教程

计算模式

1、描述

FineBI的Spider引擎包含了三种数据计算模式：本地模式、分布式模式和直连模式。其中本地模式与分布式模式实现的是将数据库的数据抽取到引擎存储，保存数据业务包从数据库中取出来的数据表、字段、表间关系，转义等等，可支持离线使用；直连模式是指直接连接数据库获取实时的数据进行分析。实时数据的性能与计算依赖于数据库，而抽取数据需要web服务器的本地磁盘作为数据存储，或者利用多台机器做分布式存储，计算性能由数据引擎决定。

Spider引擎分布式模式，结合Hadoop大数据处理思路，以最轻量级的架构实现大数据量高性能分析。此分布式方案集成了Alluxio 、Spark、 HDFS、zookeerer等大数据组件，结合自研高性能算法，列式存储、并行内存计算、计算本地化加上高性能算法，解决大数据量分析问题以及在FineBI中快速展示的问题。同时从架构上保证了引擎系统全年可正常使用。
Spider引擎的直连模式，可以直接对接数据库做实时大数据分析。将用户在FineBI前端拖拽分析的操作，实时地转化为经过处理的查询语言，实现对企业数据库的数据进行实时分析的效果。

直连模式的实时数据与本地模式以及分布式模式下的抽取数据可以灵活转换，使得分析更加灵活方便。企业可根据自身的需要采取相应的数据保存模式。

2、索引

直连模式：实时数据

本地/分布式模式：数据更新（抽取数据）


实时数据- FineReport帮助文档|报表开发|报表使用|学习教程

实时数据

1、描述

实时数据为FineBI提供了直连数据库取数的方式，在为基础表开启实时数据以后，该表将不再需要将数据更新到本地，直接连接数据库通过SQL取数，获取的都为实时的数据。开启实时数据以后的直连表在使用上与分布式表一样，可以进行关联关系设置、创建自助数据集、创建仪表板等，直连表不存在单表更新按钮，在进行业务包更新和全量更新的时候也不会更新直连表。直连表可与其他分布式表进行关联，在同一张仪表板中也可以同时使用直连和分布式表。用户可以对自身数据库中经常发生变化或者对实时性要求比较高的表对其开启实时数据功能，这样在实际使用中就不需要频繁的进行表更新操作，更加的方便快捷。

2、开启实时数据

登录FineBI数据决策系统，在业务包编辑界面打开基础表，包括数据库表、SQL数据集和EXCEL数据集，在界面上方均可以看到实时数据按钮，默认为关闭状态，表示该表为分布式表。

我们为上面的产品名称表打开实时数据按钮以后，如下图，基础表的更新信息中单表更新按钮随即灰化不可点击。

且在后续自助数据集/仪表板中使用该基础表的时候，获取的均为直连数据库的实时数据。后续对该销售DEMO业务包和整个系统的全量更新操作均不会更新该直连表。


数据更新- FineReport帮助文档|报表开发|报表使用|学习教程

数据更新

1、描述

数据更新 在线视频学习 请查看【数据更新】

FineBI的数据更新是指将数据库中的数据抽取到引擎存储，本地模式使用本地磁盘存储，分布式模式采用分布式存储，保证数据的一致性。在不为数据表开启实时数据的情况下，数据表均需抽取数据保存才能使用。

按照更新内容的不同包括：全局更新、业务包更新和单表更新，这些更新方式均可设置手动立即更新与定时更新。其中只有单表更新的设置中包含全量更新与增量更新。

FineBI只在定时更新和服务器重启时才会自动更新，其他都需手动才能更新；FineBI进行数据更新时生成的是临时文件夹，在更新成功后替换原先文件夹，若有表更新不成功，不会一直更新直到成功更新，而是只更新一次，提示信息中显示报错并将生成的临时文件夹丢弃，并不影响原有的数据。

当有任何一种方式的数据更新正在进行时，并不影响其他方式的数据更新加入等待队列，加入队列中的数据表按照队列优先级等待后续数据更新。即无论是否正在进行更新操作，都可以点击进行其他的更新操作。下面将分章节介绍不同的更新方式。

2、索引

全局更新

全局手动更新

全局定时更新

业务包更新

单表更新

增量更新

数据更新 在线视频学习 请查看 【数据更新】


全局更新- FineReport帮助文档|报表开发|报表使用|学习教程

全局更新

1、描述

全局更新是指将FineBI中所有未开启实时数据的数据表全部更新到本地，包括所有非实时数据业务包中的所有表和所有字段。全局更新分为全局手动更新和全局定时更新，全局更新的更新过程分为三个阶段：数据读取/加载、生成索引、生成关联，不管是什么类型的更新，更新的数据均保存在本地，所以需确保本地有足够的空间用于数据更新。

注：全局更新仅对未开启实时数据的数据表有效，若单个表和单个业务包设置了不随全局更新，那全局更新也对这些表和业务包无效。

下面我们分类介绍如何进行全局更新。

2、索引

全局手动更新

全局定时更新


全局手动更新- FineReport帮助文档|报表开发|报表使用|学习教程

全局手动更新

1、全局手动更新

在数据准备中创建了非实时的数据表和业务包以后，数据并没有更新到本地，只是与数据库之间建立的关系。如果想要在本地服务器中直接使用的话，那就需要在数据准备>更新设置中手动更新，如下图：

2、数据存放

在上述的更新设置界面，存在数据存放路径，默认数据存放在安装路径的ROOT业务包下，如下图，FineBI的安装路径为/Applications/FineBI5.0/，则数据存放路径为/Applications/FineBI5.0/ROOT。

修改后输入新的路径地址。

确定即可。


全局定时更新- FineReport帮助文档|报表开发|报表使用|学习教程

全局定时更新

1、全局定时更新

在进行全局更新时，除了手动立即更新的方式，我们还可以设置定时更新。全局定时更新在某个固定的时间点，对所有业务包中的非实时数据表全部更新到本地。

与全局手动更新类似，我们进入数据准备>更新设置，在全局更新设置界面可以看到全局定时更新任务框，如下图：

+定时设置即可进入定时任务设置界面，如下图：

2、定时任务设置

定时任务设置界面包含任务名称、开始时间、执行频率、结束时间的设置，如下图：

2.1 开始/结束时间

开始时间和结束时间是指更新任务开始和结束的时间，并不是指全局更新的时间。开始和结束的时间粒度可细化到时分秒。

2.2 执行频率

执行频率包含四种：只执行一次、简单重复执行、明细频率设置、表达式设定，如下图所示：

只执行一次

只执行一次表示该定时更新任务只在设置的开始时间开始执行一次全局更新，执行结束时间无需设置。

简单重复执行

选择简单重复执行则可进行简单的间隔时间设置，包含分钟、小时、天、周四种时间间隔粒度，如下图：

明细频率设置

选择明细频率设置可进行细化的间隔时间设置，如下图，包含了细化到时分的执行时间和执行日、执行月设置。

表达式设定

选择表达式设定即指设定一些特定时间的更新频率，其中预置表达式包含五种，如下图：

2.3 Cron表达式

Cron表达式为一个字符串，由5或6个空格隔开，分为6或7个域，每一个域代表一个时间范围。Cron有如下两种语法格式：

1) Seconds Minutes Hours DayofMonth Month DayofWeek Year

2) Seconds Minutes Hours DayofMonth Month DayofWeek

从左到右（用空格隔开）：秒 分 小时 月份中的日期 月份 星期中的日期 年份(可选）。

域

每一个域可出现的字符如下：

域 | 允许值 | 允许的特殊字符
秒（Seconds） | 0~59的整数 | , - * / 四个字符
分（Minutes） | 0-59的整数 | , - * / 四个字符
小时（Hours） | 0-23的整数 | , - * / 四个字符
日期（DayofMonth） | 0-31的整数（但是需要考虑月的天数） | ,- * ? / L W C 八个字符
月份（Month） | 1-12的整数或英文JAN-DEC | , - * / 四个字符
星期（DayofWeek） | 1-7的整数或英文SUN-SAT（1=SUN, 2=MON,...） | , - * ? / L C # 八个字符
年份（Year） | 1970-2099 | , - * / 四个字符

特殊字符

每一个域除了使用数字还可以出现特殊字符，其中特殊字符的含义如下：

（1）* ：表示匹配该域的任意值，假如在Minutes域使用*，即表示每分钟都会触发事件；

（2）? ：只能用在DayofMonth（日期）和DayofWeek（星期）两个域。它也匹配域的任意值，但实际不会。因为DayofMonth和 DayofWeek会相互影响。例如想在每月的20日触发调度，不管20日到底是星期几，则只能使用如下写法： 13 13 15 20 * ?，其中最后一位只能用？，而不能使用*，如果使用*表示不管星期几都会触发，实际上并不是这样；

（3）- ：表示范围，例如在Minutes域使用5-20，表示从5分到20分钟每分钟触发一次；

（4）/ ：表示起始时间开始触发，然后每隔固定时间触发一次，例如在Minutes域使用5/20，则意味着5分钟触发一次，而25，45等分别触发一次；

（5）, ：表示列出枚举值。例如：在Minutes域使用5,20，则意味着在5和20分每分钟触发一次。

（6）L：该字符只在DayofMonth（日期）和DayofWeek（星期）域中使用，代表“Last”的意思，但它在两个字段中意思不同。L在日期字段中，表示这个月份的最后一天，如一月的31号，非闰年二月的28号；如果L用在星期中，则表示星期六，等同于7。但是，如果L在前面有一个数值X，它就具有其他含义了。例如，月份中的6L表示该月的倒数第六天；星期域中的FRIL表示这个月的最后一个星期五。

（7）W：该字符只能出现在DayofMonth（日期）域里，是对前导日期的修饰，表示离该日期最近的工作日。例如15W表示离该月15号最近的工作日，如果该月15号是星期六，则匹配14号星期五；如果15日是星期日，则匹配16号星期一；如果15号是星期二，那结果就是15号星期二。但必须注意关联的匹配日期不能够跨月，如你指定1W，如果1号是星期六，结果匹配的是3号星期一，而非上个月最后的那天。W字符串只能指定单一日期，而不能指定日期范围；

（8）LW：在DayofMonth字段可以组合使用LW，它的意思是当月的最后一个工作日；

（9）C：该字符只在DayofMonth（日期）和DayofWeek（星期）域中使用，代表“Calendar”的意思。它的意思是计划所关联的日期，如果日期没有被关联，则相当于日历中所有日期。例如：5C在日期字段中就相当于日历5日以后的第一天；1C在星期字段中相当于星期日后的第一天；

（10）#：该字符只能在DayofWeek（星期）域中使用，表示当月某个工作日。如6#3表示当月的第三个星期五(6表示星期五，#3表示当前的第三个)；而4#5表示当月的第五个星期三，假设当月没有第五个星期三，忽略不触发；

示例

Cron表达式示例：

每隔5秒执行一次：*/5 * * * * ?

每隔1分钟执行一次：0 */1 * * * ?

每隔1小时执行一次：0 0 */1 * * ?

每天23点执行一次：0 0 23 * * ?

每天凌晨1点执行一次：0 0 1 * * ?

每月1号凌晨1点执行一次：0 0 1 1 * ?

在26分、29分、33分执行一次：0 26,29,33 * * * ?

每天的0点、13点、18点、21点都执行一次：0 0 0,13,18,21 * * ?

根据上面的表达式规则获取Cron表达式以后，可参考链接http://www.pppet.net/检查写的表达式是否正确，确保正确以后填入。


业务包更新- FineReport帮助文档|报表开发|报表使用|学习教程

业务包更新

1、描述

业务包更新是指对某个业务包单独设置的数据更新，单个业务包在全局更新时的更新方式可以设置为两种：更新与不更新，分别表示在全局更新的时候该单个业务包是否进行更新。业务包更新在更新时间上包含立即更新和定时更新，立即更新即直接执行单个业务包的更新，定时更新是指在某个固定时间点对该业务包执行数据更新。

注：若某业务包有开启了实时数据的表，该业务包的更新对该表是无效的。

2、业务包更新界面

进入数据准备>业务包，点击业务包更新设置按钮，如下图：

立即更新该业务包按钮是立即执行该业务包更新的触发器；
定时更新设置是针对该业务包进行的业务包更新。下面详细说明。

3、随全局的更新方式

上面我们介绍过，单个业务包随全局更新的更新方式是指在全局更新时该业务包执行什么样的更新方式，展开更新方式，可以看到一共有两种，分别为更新与不更新。

确定即可。

4、立即更新该业务包

立即更新该业务包即表示直接执行该业务包的全部表、字段的更新，点击该按钮即开始执行更新，随即显示更新进度条，在更新完成后显示完成。

5、定时更新

定时更新是针对当前业务包所进行的定时更新任务；与全局更新的定时任务是分开执行的。单击+定时设置后进行定时任务的设置。

定时任务设置一致。


单表更新- FineReport帮助文档|报表开发|报表使用|学习教程

单表更新

1、描述

单表更新是指对某个业务包的某张表单独设置的更新，单张表在该业务包更新时的更新方式可以设置为三种：“一直全量更新”、“首次全量，此后增量更新”和“首次全量，此后不更新”。在更新时间上包含立即更新和定时更新，立即更新即直接执行单张表的更新，定时更新是指在某个固定时间点对该张表执行数据更新。不管是立即更新或是定时更新，均需要选择更新内容为全量更新还是增量更新。全量更新是指将该表对应到数据库中表的所有数据全部更新一次到本地；增量更新是指在当前已存储在本地中该表数据基础上，将对应数据库中表的未更新的数据（与当前存储的表不一样的数据）更新到本地。

2、单表更新界面

进入数据准备>业务包，选中某张表后，点击更新信息>单表更新，如下图：

注：开启了实时数据的基础表更新信息下单表更新按钮不可点击，不需要更新。

由上至下，依次是单表随业务包的更新方式、单表立即更新按钮、定时更新设置、增量更新设置框。

单表随业务包更新的更新方式是指在业务包更新时该表执行什么样的更新方式；
单表立即更新按钮是立即执行该单表更新的触发器；可以选择立即全量更新，立即增量更新。
定时更新设置是针对该表进行的单表更新，可以选择全量更新或增量更新。下面详细说明。

3、随业务包的更新方式

上面我们介绍过，单表随业务包更新的更新方式是指在业务包更新时该表执行什么样的更新方式，展开更新方式，可以看到一共有三种更新方式，分别是“一直全量更新”，“首次全量，此后增量更新”，“首次全量，此后不更新”。如下图：

首次生成为全量，此后增量更新：首次业务包更新时，该表进行全量更新，以后一直使用增量更新的方式。增量更新是指对表中新增加、新删除和新修改的数据进行更新，即将数据库中有变化的数据更新至本地中，并保持以前的数据不变动。其设置界面在下方，分为增量增加、增量删除。其具体的增量更新的详细设置见 增量更新 。这种更新方式适合于数据量非常大的业务明细数据。

首次生成为全量，此后不更新：第一次业务包在更新时，该表是全量的数据更新到本地，此后无须在表所在业务包更新的时候去更新这张表；一般这种方式适合于一些基础维度表，这些表一般是固定的标准，极少改变；比如一些行业标准的字典表、省市地区表；

注：业务包更新的更新过程包括数据读取/加载>生成索引>生成关联，而设置此后不更新的表在业务包更新过程中就不会有生成索引的过程，即只会读取数据并生成关联，因此在业务包更新中对于设置了以后不更新的表可节约部分时间。

4、立即更新

立即更新该表就是直接执行该表的更新。在点击按钮后可以选择两种更新方式：全量更新与增量更新。全量更新即将该表的所有字段、字段值等都更新到本地；增量更新需要提前在增量更新设置框中设置好更新方式，参考增量更新。

注：增量更新的时候，如果数据表结构发生变化如多加一个字段或少一个字段，此时增量更新不会进行字段的增加或减少，因而会产生更新错误；这时候需要先采取全量更新的方式。

5、定时更新

定时更新是针对当前表所进行的定时更新任务；与全局更新/业务包更新的定时任务是分开执行的。单击+定时设置后进行定时任务的设置。

定时更新任务是由更新周期设置与更新方式组成的，如下图：

增量更新。

定时任务设置一致。


增量更新- FineReport帮助文档|报表开发|报表使用|学习教程

增量更新

1、描述

增量更新是指对表中新增加、新删除和新修改的数据进行更新，即将数据库中有变化的数据更新到引擎中存储，并保持以前的数据不变动。增量更新分为：增量增加、增量删除、增量修改，其中增量修改为通过增量增加与删除的组合来实现。增量更新只更新有变化的数据，因此其更新效率较全量更新有明显的提高。在BI中的增量更新均是在单表更新中实现的。其实现分为三步：

第一步：用sql执行where语句 uptime>上次更新时间（也可以不用参数“上次更新时间”，可自定义一个），将数据库中更新的时间与上次更新的时间进行对比，当某条数据在数据库里的更新的时间大于上次更新的时间，便说明该数据是未更新的数据，将它们更新进来即可；

第二步：读取到数据库中表的变化。表的变化分为：增加、删除、修改，通过sql语句首先识别到数据变化的行，再识别变化的类型是哪一种，从而确定属于哪一种增量更新。实现这一步，数据表要满足表中存在主键（唯 一标识）来标识表中的行，同时有字段记录变化的类型。例如对"用户表（A表）"进行增量更新，用户表的主键是UserID；通过对照表(B表)来记录用户表的变化，用ID和Uptype分别记录变化所在的行和类型（用add表示增加，del表示删除，upd表示修改）。此时执行sql语句，where A.ID=B.ID即可找到变化的行，Uptype="add"即找到增量增加的数据。

第三步：将未更新的数据更新到引擎中，对于增量增加、增量删除及增量修改的操作在BI的单表更新中完成。在单表更新设置界面，选择“首次生成全量，此后增量更新”即进入到增量更新的设置界面。将相应的sql语句分别对应写到对应的增量类型的框中，后台自动执行sql语句，选择相应变化的所在的行执行增加、删除、修改三种操作。

2、增量更新界面

进入数据准备>业务包>数据表，点击更新信息，选择更新设置，如下图：

出现单表更新的界面，如下图，增量更新的方式包含了两种：增量增加和增量删除，单击可以点击切换增量更新的方式；包含了两个参数：上次更新时间与当前更新时间；下方的空框处用于填写执行增量更新的sql语句。

“上次更新时间”与“当前更新时间”均为对比参数，其使用方式是直接单击该参数名即可输入到设置框内，并使用函数将它们从字符串转化为时间类型。“上次更新时间”表示的是上一次更新开始的时间；“当前更新时间”是指本次更新的开始时间；通过两个时间点，将更新的数据圈定到从上次开始更新时到本次更新之间的新数据上，这样每次更新都会以上次的终点为起点进行更新，以保证数据的准确和完整。

注：“当前更新时间”这个参数并不需要强制使用，它是为了防止出现在更新的sql语句查询时，出现插入数据的情况，此时就不易判断该数据是否被更新；使用"当前更新时间"作为下限，可以将查询sql语句时的数据插入放到下次的更新中进行更新，不会出现遗漏或重复插入。如没有上述情况，使用“上次更新时间”即可。

注：增量更新是以行为单位的，增量增加是对引擎中保存的数据表直接添加行，增量删除是直接删除行。

3、增量增加

增量增加在使用时一般包含两种情况：普通增量增加和时间戳增量增加。

3.1 普通增量增加

普通增量增加为将表中的所有数据增加到当前表，比如获取销售明细表的SQL：select * from new_salesdetail，表示将new_salesdetail表中所有数据全部增加到已有的表中。 例如数据库中有两个表A,B，其数据结构完全一致，比如2018-1-14查看，表A中存放的是历史全部数据（不包括2018-1-14的数据），而2018-1-14的所有数据都存放于表 B中。此时若需要在FineBI中使用所有数据，我们可以先将表A的数据全部添加到FineBI中，到了2018-1-15的时候，将表B的所有数据全量增加到FineBI分布式存储中。如下图：

预览，可查看该SQL执行的结果，如下图：

3.2 时间戳增量增加

时间戳增量增加可使用参数，设置时间满足大于上次更新时间的数据进行更新。比如存在下面的销售明细表：销售单号（主键）、收费、销售时间、uptype；

SELECT * from 销售明细表 a where a.uptype='add'and a.销售时间>str_to_date('上次更新时间','%Y-%m-%d %H:%i:%s')

需要选择上次更新时间的参数填入，如下图：

4、增量删除

增量删除会根据查询出来的字段名与FineBI中存储的字段名自动匹配，根据查询出来的结果进行数据的删除。增量删除一般也包含两种情况：普通增量删除和时间戳增量删除。

注：只要是查询出来的字段名与Spider引擎存储中的字段名匹配，就会将这部分的数据进行删除。

4.1 普通增量删除

输入的SQL比如：

select 1 as 店号 from new_salesdetail，表示将new_salesdetail表中店号为1的数据删除掉；

select 1 as 店号, 2 as 楼层 from new_salesdetail，表示将new_salesdetail表中店号为1以及楼层为2的数据删除掉；

select 店号 from new_salesdetail where 楼层 in (1,2,3)，表示删除楼层是1,2,3的数据；

select 店号 from new_salesdetail where 楼层 in (1,2,3) and 店号 in (2,3,4)，表示删除楼层是1,2,3以及店号是2,3,4的数据。

如下图：

4.2 时间戳增量删除

与增量增加类似，增量删除也可使用参数，设置时间满足大于上次更新时间的数据进行更新。比如将上次更新时间与本次更新时间之间查询出来的字段进行删除。

SELECT b.UserID from userModify b where b.uptype = 'del' andb.uptime>str_to_date('上次更新时间','%Y-%m-%d %H:%i:%s') and b.uptime < str_to_date('当前更新时间','%Y-%m-%d %H:%i:%s')

如下图：

5、增量修改

Spider引擎中没有单表更新中的增量修改项，可以通过增量删除和增量增加进行功能组合来实现增量修改的场景。例如如下两种场景：

场景1：

每天的增量数据表A包含两部分：用户新录入的数据和用户修改过的历史数据。如果想将这种数据增量到引擎中，我们可以先删除表A数据，也就是将引擎中已保存的表A的数据全部删除。然后把表A的数据全部增加进入引擎中。即将增量数据全部作为新增数据重新写入引擎存储中。

场景2:

用户可能对历史数据进行增删改的操作，为了保证数据的准确性，我们可以对数据进行一个增量组合。比如用户修改了前三天的数据，我们可以删除前三天的数据，并增量增加前三天+今天的数据，这样可以不用关心用户具体做了什么增删改的操作，全部更新过来。

6、增量更新时间

增量更新可以设置立即更新或者定时更新，其时间设置与定时更新中一致，可参考单表更新。

6.1 定时增量更新

在配置好增量更新的方式以后，可以+定时设置添加定时任务，如下图：

确定以后，该新增的任务即为定时增量更新的任务，如下图：

6.2 立即增量更新

同样在配置好增量更新方式以后，直接在单表更新界面单击立即更新，选择增量更新，即可立即进行增量更新。


内存化- FineReport帮助文档|报表开发|报表使用|学习教程

内存化

1、描述

内存化 在线视频学习 请查看【内存化】

在FineBI实际使用的时候，对于大数据量直连数据库的实时数据，获取数据时间较久，并且经常在多张表关联的时候，有一部分表每天的变化不大，因此FineBI提供了内存化功能。内存化是指将这些基本没有变化的表提前加载进入内存，来加快数据计算的执行速度。比如，维度表与事实表进行1:N关联的时候，为维度表勾选内存化，FineBI在计算时会自动将N表进行汇总，随后再与1表关联，以加快分析时的数据计算速度。

2、使用方式

2.1 内存化示例

如下图所示，在数据准备>业务包下的基础表中，可以看到有内存化复选框，勾选此框即为该表添加内存化功能。

注：只有基础表才有该内存化设置，且内存化仅对实时数据生效。默认不开启。仅对该基础表有编辑权限的用户可开启配置。

比如上述的产品名称维度表，其存在与合同事实表的关联关系如下图：

两张表根据产品ID字段进行关联，产品名称维度表的通常数据量不大且较少更新，而合同事实表的数据量大且更新频繁。此时按照产品名称来统计销售额，关联模型通常为产品名称维度表：合同事实表为1：N。

若不勾选内存化：

此时在使用该表进行数据分析，拖拽产品名称、合同金额字段统计的时候，合同金额字段会先通过购买的产品（产品ID）字段与产品名称维度表进行关联，关联以后再根据产品名称字段进行汇总操作。即先关联（join），后汇总（group by），因为合同事实表的数据量较大，则该执行的关联的操作时间较长。

若勾选内存化：

在同样拖拽产品名称、合同金额字段统计时，合同金额会先根据自身的购买的产品字段进行汇总，随后再通过产品ID字段与产品名称维度表进行关联，获取产品名称。即先汇总（group by），后关联（join）。通过这种方式节省了执行join的时间，同时因为是对汇总之后的结果进行关联，因此执行速度也能更快。

注：1、若上述为关联关系为N的合同事实表勾选内存化，则关联关系为1的产品名称维度表即使不勾选，也会自动被内存化处理。

2、内存化功能适用于数据量小且更新频率较低的表，需根据服务器内存配置适当选择。

2.2 内存化参数配置

勾选内存化后，可进入管理系统>系统管理>BI参数中的关联表缓存相关参数来分大小缓存配置内存化的维表缓存数量及时间，判断依据为 行*列 >= 依据值，为大缓存 ， 行* 列 < 依据值，为小缓存。参考BI参数。

若上述为关联关系为N的合同事实表勾选内存化，则关联关系为1的产品名称维度表即使不勾选，也会自动被内存化处理。

注：内存化功能适用于数据量小且数据变化频率较低的表，需根据服务器内存配置适当选择。

内存化 在线视频学习 请查看【内存化】


自助数据集- FineReport帮助文档|报表开发|报表使用|学习教程

自助数据集

1、描述

自助数据集 在线视频学习 请查看【自助数据集介绍】

自助数据集是指对分布的、异构数据源中的数据，比如说关系数据等底层数据进行一定的处理，将处理后的表保存到业务包中，作为后续数据分析的基础。通常在管理员创建了数据连接和业务包以后，业务人员如果还想对数据进行处理加工为后续分析做准备，可以通过创建自助数据集来实现。

下面我们介绍自助数据集的基本管理操作。

2、创建自助数据集

创建自助数据集有三种方式，下面分别介绍。

1）快捷创建入口

业务员登录FineBI数据决策系统，点击+创建，选择添加自助数据集，如下图，填入名称和该自助数据集保存的位置即可。

2）数据表界面入口

除了在快捷创建处新建自助数据集外，还可以进入数据准备>业务包下已有数据表页面，选择创建自助数据集，如下图：

3）我的自助数据集入口

或者直接从数据准备下的我的自助数据集中直接添加，如下图，且该创建的自助数据集将直接保存在我的自助数据集业务包下。

创建成功以后即进入自助数据集编辑界面，如下图：

注：此处只能选择已添加并进行数据更新的数据表。

注：若从上面第二种数据表界面选择创建自助数据集入口的话，进入自助数据集界面默认会选中该数据表中的所有字段添加。其余入口方式均不会有默认的字段选择。

在表处理流程框可以选择各种处理方式，包括选择字段、过滤、分组汇总、新增列、字段设置、排序、左右合并、 上下合并，这些不同处理方式的操作可参考后续章节。

3、编辑自助数据集

如上述介绍，自助数据集创建以后即进入编辑界面，如果在保存以后还想对该表进行重新编辑的话，可以点击自助数据集右侧的齿轮按钮，选择编辑，如下图，就可以对该自助数据集进行重新编辑的操作。

除了在表名齿轮选择编辑，还可以在页面右侧的表区域选择编辑。

4、重命名自助数据集

自助数据集在编辑界面可以对表名进行修改，如下图：

保存成功的自助数据集如果想修改表名，就可以点击自助数据集右侧的齿轮按钮，选择重命名，如下图，就可以对该自助数据集进行重命名的操作。

5、移动自助数据集

通常自助数据集保存在创建该表时的业务包中，如果想将它移动到其他业务包中，就可以点击自助数据集右侧的齿轮按钮，选择移动到对应业务包，就可以将该自助数据集成功从当前业务包中移走。

6、删除自助数据集

对于之前创建的不想要的自助数据集，可以点击自助数据集右侧的齿轮按钮，选择删除，如下图，就可以将该已创建的自助数据集删除。

自助数据集除了上述介绍的操作外，在业务包配置页面与基础表一样，有数据预览、血缘分析、关联视图、 更新信息区域可以查看配置。自助数据集还支持继承权限与关联，勾选后即表示该创建的自助数据集继承来源表的权限和关联配置，默认创建的自助数据集均为勾选状态。

但是自助数据集不能编辑关联关系，即不能给自助数据集再设置除继承的关联外的其他关联，如下图：

此外，还支持在自助数据集页面直接创建组件，如下图：

7、历史步骤

在已经创建的自助数据集中可以看到之前做的历史操作的步骤，如下图：

对于历史步骤中的任意字段操作，均可单击修改对应操作。比如之前做的排序操作，可单击以后修改排序列，如下图：

修改完成历史步骤后，直接点击右上角的保存可保存在当前自助数据集中，单击另存为可另存成一张新的自助数据集表。

8、自助数据集更新

业务人员创建的自助数据集没有开启实时数据或抽取数据的操作，因为自助数据集的更新是随着基础表的。若基础表开启了实时数据，则创建的自助数据集也是获取的实时数据；若基础表为更新到本地的数据，则自助数据集在创建完成时会自动抽取数据保存到本地，且在后面基础表进行表更新的的时候，自助数据集也会同步更新数据。

注：自助数据集在创建时默认是用200条数据参与计算，只有在创建完成保存并生成数据后，才会显示添加的完整数据。

9、索引

选择字段

过滤

分组汇总

新增列

字段设置

排序

左右合并

上下合并

自助数据集 在线视频学习 请查看 【自助数据集介绍】


选择字段- FineReport帮助文档|报表开发|报表使用|学习教程

选择字段

1、描述

FineBI自助数据集使用时的第一个步骤就是选择字段，然后才能做一系列数据加工分析的操作。选择字段就是指自己选择需要从业务包中添加进来做数据加工处理的字段，不需要的表和字段不用添加，这样就增强了实用性，加快了处理速度。

2、步骤

进入数据准备>我的自助数据集，点击添加自助数据集，如下图：

进入自助数据集配置界面，界面显示可选的业务包，如下图：

点击选择包含要添加字段的业务包，即会以列表形式显示该业务包中可选的表，如下图：

点击选择需要进行数据处理的来源表，并选择表中对应的字段，如下图：

注：此处只能选择已添加并进行数据更新的数据表，未更新的数据表不能用于创建自助数据集。

在选择表中字段以后，业务包中与该表相关联的表还可以选择，而与该表不关联的表则灰化不可选择。在选择表中字段的时候，字段的名称前都显示了该字段的类型。同时字段上方可以点击全部添加全选字段，或者搜索以后全部添加，如下图：

选择字段以后右侧会出现数据预览区域，在数据预览区域可以选择明细展示数据或者表结构展示。如下图：

字段右侧可点击选择删除该字段，如上图所示。同时单击该字段可以显示表间关系图，包括字段的来源和选择的关联路径，如下图：

在添加完成字段以后可以点击左侧操作步骤中的+，选择后续处理数据的步骤。

若不做后续处理，如下图，可点击页面右上角的保存/另存为将该自助数据集保存至业务包中。

在业务包中就可以看到刚刚新增的自助数据集信息。


过滤- FineReport帮助文档|报表开发|报表使用|学习教程

过滤

1、描述

过滤 在线视频学习 请查看【过滤】

FineBI提供了数据过滤功能，业务人员可以直接在原数据表的基础上新增一张表对数据进行过滤并保存以供后续分析使用。比如我们保存在业务包中的原数据表包含了合同类型、金额数量、签约时间字段，其中签约时间包含了历史所有的合同时间，而业务员在使用时只需要用2017年的数据，那就需要对原表进行过滤处理再给业务员使用，下面我们详细介绍如何进行过滤。

2、步骤

进入数据准备>我的自助数据集，点击添加自助数据集，如下图：

进入自助数据集配置界面，从业务包的数据表中选择需要的字段合同类型、总金额、购买数量、合同签约时间，右侧表格中即显示选择的字段，如下图：

注：此处只能选择已添加并进行数据更新的数据表，未更新的数据表不能用于创建自助数据集。

因为我们需要对原数据的年份处理后使用，因此选完字段以后在最左侧的操作流程栏点击+，选择过滤，如下图：

进入过滤设置界面，可选择的过滤条件有两种：添加条件和添加公式，此处我们需要过滤合同签约时间为2017年，因此点击添加条件，选择合同签约时间字段介于2017年1月1日和2017年12月31日之间，如下图：

过滤条件设置完毕后，点击右上角的保存即可在业务包中看到新建的自助数据集，数据预览如下：

过滤 在线视频学习 请查看 【过滤】


分组汇总- FineReport帮助文档|报表开发|报表使用|学习教程

分组汇总

1、描述

分组汇总在线视频学习请查看【分组汇总】

分组汇总是指对原始数据根据条件进行的分组统计的分析操作。通常数据库中保存的原始数据字段很多且冗杂，业务人员使用起来不方便，而按照需求对原数据分组汇总处理后的自助数据集结构简单，保存在业务包中方便业务人员后续在前端的分析使用。比如，存在一些合同的销售数据，保存在数据库中的数据均是按照日期来存储的，但是业务员在前端分析时只需要统计各年份的数据，便可以创建自助数据集使用分组汇总功能提前对数据进行按年份的汇总，方便在前端的分析。

2、步骤

进入数据准备>我的自助数据集，点击添加自助数据集，如下图：

进入自助数据集配置界面，从业务包的数据表中选择需要的字段合同类型、总金额、购买数量、合同签约时间，右侧表格中即显示选择的字段，如下图：

注：此处只能选择已添加并进行数据更新的数据表，未更新的数据表不能用于创建自助数据集。

我们看到已经选取的字段均为所有的明细数据，查看非常不方便。此时我们在左侧的操作流程中选择分组汇总，如下图：

进入分组汇总配置界面，如下图，可以看到右侧显示了上面步骤中所选择的字段、分组汇总条件的设置和数据预览。

默认分组栏为文本字段和时间字段，汇总栏为数值字段，也可以拖拽对分组汇总字段进行修改，分组和汇总栏文本数值时间字段均可以使用。其中分组和汇总各字段的详细配置可以查看第三章节。在设置了分组汇总条件以后，下方的数据预览处会出现根据条件生成的数据。比如我们将分组栏中的“合同签约时间”分组条件修改为年份，总金额和购买数量还是保持求和汇总，则数据预览出现如下统计数据：

分组汇总设置完毕以后点击右上角的保存按钮即可以在业务包中看到我们刚刚新建的自助数据集，如下图：

3、分组汇总条件设置

3.1 分组

分组字段支持文本字段、数值字段、时间字段，默认选定已选字段中所有文本、时间字段，均支持重命名、删除分组字段。

文本字段

分组栏中文本字段可以选择相同值为一组、自定义分组两种形式，如下图，相同值为一组即表示按照文本字段中的相同值分组，例如合同类型即按照长期协议、服务协议、购买合同等分组；

自定义分组即表示对文本包含的字段中自行定义分组，比如我们对上图中的合同类型进行自定义分组，点击自定义分组进入设置界面，如下图：

如果想将长期协议和长期协议订单分到一组命名为长期合同，此时我们需要先添加分组“长期合同”，随后选中长期协议和长期协议订单并移动到新增的分组长期合同中即可。

除了可以新增并移动到新的分组中，还可以将已有分组内容复制到其他分组中，操作步骤跟上述类似，选中分组点击复制到并选择新分组即可。同时也支持将未分组的值分组到其他，如下图勾选该选项即可，勾选以后也可修改其他的分组名。

在自定义分组设置好以后，点击确认保存，在分组汇总数据预览窗口即可看到合同类型栏变成我们刚刚自定义设置的分组，如下图：

数值字段

分组栏中的数值字段与文本字段类似，可以选择相同值为一组或者区间分组，相同值为一组即表示按照数值字段的相同值为一组，这边不再详细介绍。

区间分组包含两种方式：自动和自定义分组，选择自动时系统默认根据最大最小值设置区间间隔，分为5组，其中区间间隔的数值也可修改。

自定义分组默认按照自动分组的区间间隔设置分组，支持修改，支持添加、修改、删除分组，同时支持对分组自定义命名和将未定义分组的剩余值分组到一个自定义命名的分组，且该项默认开启。添加分组步骤如下图所示：

点击确定保存，数据预览框购买数量即按照设置的区间进行了分组，如下图：

时间字段

分组栏的时间字段支持16种分组类型，包括年月日、年份、季度、月份、星期、日、周数、时、分、秒、年季度、年月、年周数、年月日时、年月日时分、年月日时分秒，按照需要的时间类型选择即可。

如下图，我们选择了合同签约时间按照年份进行分组，数据预览框即显示了以年份分组的数据。

3.2 汇总

汇总字段支持文本字段、数值字段、时间字段，默认选定已选字段中所有数值类型字段，支持重命名、删除汇总字段。

文本字段

汇总字段的文本类型支持去重计数、记录个数、字符串拼接三种统计方式，去重计数是指将该字段中相同的值只统计一次，即统计不同值的个数，可以理解为count(distinct字段）；记录个数是指记录这个字段一共有多少个，相当于count(*)；字符串拼接是指按分组栏将该字段下的数据值进行字符串的拼接，拼接成一个值。

按照需要直接点击选择统计方式即可，如下图即显示了合同类型按照记录个数的方式统计的数据预览。

数值字段

汇总字段的数值类型支持求和、求平均、求最大值、求最小值、去重计数、记录个数、求方差、求标准差、求中位数的统计方式，默认为求和的方式。除了这些还可以选择对上述统计方式进行求同期、求环期、求同比、求环比，默认选择无；其中求同期与求同比又有年、季度、月、周、星期的时间周期选项，默认选择年。（同期、环期、同比、环比的详细使用请参考表格快速计算）

比如想要对总金额字段求和的年同期数值，就可以同时选择求和和求同期中的年周期，如下图：

时间字段

汇总字段的时间类型支持去重计数、记录个数、最早时间、最晚时间的统计方式。去重计数是指将该字段中相同的值只统计一次，即统计不同值的个数，可以理解为count(distinct字段）；记录个数是指记录这个字段一共有多少个，相当于count(*)；最早时间和最晚时间指的是分组内的最早、最晚时间。

比如我们想要按照各个合同类型的最早时间总金额和数量的求和汇总，就可以选择合同签约时间的条件为最早时间，分组栏选择合同类型，总金额和购买数量的汇总方式选择求和，如下图，即可以按照四种合同类型的最早时间汇总。

分组汇总在线视频学习请查看 【分组汇总】


新增列- FineReport帮助文档|报表开发|报表使用|学习教程

新增列

1、描述

新增列在线视频学习请查看【新增列】

很多时候我们想要得到不直接存在于数据库的数据，比如数据格式的转化、时间差等等，此时就可以使用新增列功能。业务人员在不影响原数据的情况下通过对现有数据列进行计算而得到的一个新的数据列，保存在业务包中以供后续业务分析使用。比如我们在统计合同的时候想要获取一个合同签约距今的时间差作为新的一列，就可以使用新增列的功能，下面我们详细介绍如何实现该功能。

2、步骤

进入数据准备>我的自助数据集，点击添加自助数据集，如下图：

进入自助数据集配置界面，从业务包的数据表中选择需要的字段合同类型、总金额、购买数量、合同签约时间，右侧表格中即显示选择的字段，如下图：

注：此处只能选择已添加并进行数据更新的数据表，未更新的数据表不能用于创建自助数据集。

在添加完字段以后在最左侧的操作流程栏点击+，选择新增列，如下图：

进入新增列设置界面，可以修改新增列名，支持的新增列获取方式包含公式/函数、时间差、获取时间、所有值/组内、累计值/组内、排名/组内、分组赋值，详细的获取方式介绍可以查看第三章节。

此处我们获取一个合同签约时间距今时间差，在左侧获取方式栏选择时间差，右侧选择时间差的字段为系统时间和合同签约时间，时间差单位选为年。

点击确认保存，在数据预览框会出现新增的时间差这一列，如下图：

此时新增列即设置完毕，点击右上角的保存按钮即可以在业务包中看到我们刚刚新建的自助数据集，如下图：

3、新增列获取方式

3.1 公式/函数

新增列支持使用公式/函数的方式对添加的字段进行处理，支持的函数类型参考函数章节。在新增列设置界面左侧的获取方式栏选择公式/函数后，右侧可以进行函数、运算符、字段类型的选择和公式框等，如下图：

选择需要处理的字段和对应处理的函数、运算符，就可以在公式框看到公式，公式添加完成后可以选择该新增列的字段类型，支持文本、数值、日期。若不选择，默认为自动类型，是系统根据生成的结果进行字段类型的字段自动判断。如下图，我们添加一个计算均价的公式，为该公式命名为均价，选择SUM函数求金额之和，并点击除法的运算符和数值字段中的购买数量添加到公式，该计算公式就添加成功了。同时可以为该公式选择字段类型为数值类型，如下图：

注：公式框中的函数、字段都需要点击左侧的选择区域选择，不能手动输入。

在公式添加完成以后点击确认保存，如下图，即可在数据预览框看到新增的数据列“均价”。

3.2 时间差

新增列支持使用时间差的方式获取，在新增列设置界面选择了时间差方式以后，界面右侧可以进行时间差计算公式和单位的选择，如下图：

时间差计算公式默认是第一个字段减去第二个字段的时间，上图中即为系统时间减去合同签约时间。第一个字段可选系统时间和已添加字段中的时间字段，如下图：

第二个字段可选仅为已添加字段中的时间字段，如下图：

时间差单位包含七种：年、季度、月、天、时、分、秒，如下图：

且无论选择什么时间差单位，计算以后的时间差字段均为整数，不会保留小数。例如想要新增一列用户注册到合同签约之前的时间差，以月为粒度，就可以在时间差计算公式第一个字段选择合同签约时间，第二个字段选择注册时间（因为默认是第一个字段减去第二个字段的时间差，所以我们选择合同签约时间减去注册时间），单位选择月，如下图：

点击确认保存后，在数据预览框就可以看到新增的时间差数据列，如下图：

注：新增时间差数据列生成的字段只能是数值类型，不提供切换数据类型功能。

3.3 获取时间

新增列支持使用获取时间方式添加，在新增列设置界面选择获取时间以后，右侧可以选择时间获取的字段来源和获取的粒度，如下图：

其中字段来源为已添加字段中的所有时间类型字段，如下图：

获取时间的粒度包含十五种：年份、季度、月份、星期、天、周数、时、分、秒、年季度、年月、年周数、年月日时、年月日时分、年月日时分秒，如下图：

例如我们想要新增一列合同签约的季度，为后续分析什么季度签约最多做准备。如下图，就可以在新增列中选择获取时间字段为合同签约时间，获取的时间粒度为季度。

点击确认保存，就可以在数据预览框看到新增的获取合同签约时间季度的字段列，如下图：

注：新增的获取时间数据列会根据选择的获取时间粒度类型自动判断，不需要进行字段类型的选择。如上面获取的合同签约季度为数值类型。

3.4 所有值/组内

新增列支持使用所有值/组内所有值的方式添加，所有值计算的是该指标在该表汇总所有值，组内所有值计算的是按照选择的分组方式组内所有值的汇总统计结果。在选择所有值/组内的方式后，设置界面右侧可以选择所有值或者组内所有值方式，取值字段和计算方式。

其中选择用来统计的字段仅支持数值类型，可选择的字段为已添加的数值类型字段，如下图：

统计方式包含四种：求和、求平均、求最大值、求最小值，如下图：

若选择统计组内所有值的话，还需要进行分组方式的选择，分组依据来源于已添加的除数值字段外的所有字段，如下图：

如果我们想要新增一列统计相同合同类型分组内的平均金额，就可以选择字段为组内所有值，数值来自总金额，统计方式为求平均，分组方式选择合同类型，生成的取值描述如下图所示：同一合同类型中的总金额求平均。

点击确认保存，在数据预览框就可以看到新增的相同合同类型平均金额，如下图：

3.5 累计值/组内

新增列支持使用累计值/组内累计值方式获取。累计值/组内累计值，计算的是该指标在该表所有值/组内所有值的累计统计结果，按照上一步数据的排序结果由上至下依次对当前指标进行累加。在选择累计值/组内方式以后，设置界面右侧可以选择字段、数据来源，如下图：

字段可以选择累计值或者组内累计值，取值来源仅能选择已添加字段中的数值类型字段，如下图：

若选择组内累计值的话，还需要进行分组方式的选择，分组依据来源于已添加的除数值字段外的所有字段，如下图：

如果我们想要新增一列获取合同类型的组内金额累计，就可以选择字段为组内累计值，数值来自总金额，分组方式选择合同类型，获取到的取值描述为同一合同类型中的总金额求累加，如下图：

点击确认保存，在数据预览框就可以看到新增的合同类型组内累计，如下图：

3.6 排名/组内

新增列支持使用排名/组内排名的方式获取，排名值/组内排名值，计算的是该指标在该表所有值/组内所有值的排名结果。列出该指标在全部数据/组内全部数据中的排名。在选择排名/组内方式以后，设置界面右侧可以选择字段、数据来源，如下图：

字段可以选择排名方式为：升序排名、降序排名、组内升序排名和组内降序排名，如下图：

取值来源仅能选择已添加字段中的数值类型字段，如下图：

若选择组内排名方式的话，还需要进行分组方式的选择，分组依据来源于已添加的除数值字段外的所有字段，如下图：

如果我们想要新增一列在同一合同类型内的合同金额升序排名，就可以选择字段为组内升序排名，数值来自总金额，分组方式为合同类型，获取到的取值描述为同一合同类型中的总金额有小到大求排名，如下图：

点击确认保存，在数据预览框就可以看到新增的合同类型组内升序排名，如下图：

3.7 分组赋值

分组赋值的赋值依据支持文本和数值两类字段。选择文本字段作为赋值依据时，分组名称将作为新增列的值；选择数值字段作为赋值依据时，分组的值作为新增列的值；

当选中文本字段作为赋值依据时，可对文本字段进行分组设置，并命名分组名称。比如我们为合同类型进行重分组，如下图：

则点击确认保存后，可以看到新增的合同类型新分组列。

若选中数值字段作为赋值依据时，分组赋值方式包括自定义和自动。自定义可以自行设置分组数值范围和分组名称，而自动则为默认设置分组。

自定义分组可自定义设置分组个数、各分组的范围、分组的名称，如下图，我们为总金额设置四个分组：十万以下、十万到一百万、一百万到一千万、一千万以上。

点击确认保存后，可以看到新增的金额分组赋值列。

自动分组可设置区间间隔，将根据数据最小值和最大值按照区间间隔分为若干组。如下图，我们为总金额设置自动分组赋值，区间间隔设为5000000，则该字段将会被分为9组。

点击确认保存后，可以看到新增的自动总金额分组赋值列。

新增列在线视频学习请查看 【新增列】


字段设置- FineReport帮助文档|报表开发|报表使用|学习教程

字段设置

1、描述

字段设置在线视频学习请查看【字段设置】

FineBI提供了字段设置功能来对已有字段进行重新设置，业务人员可以直接在原数据表的基础上新增一张表对数据进行字段设置并保存以供后续分析使用。下面我们将详细介绍如何进行自助数据集中的字段设置。

2、步骤

进入数据准备>我的自助数据集，点击添加自助数据集，如下图：

进入自助数据集配置界面，从业务包的数据表中选择需要的字段合同类型、总金额、购买数量、合同签约时间，右侧表格中即显示选择的字段，如下图：

注：此处只能选择已添加并进行数据更新的数据表，未更新的数据表不能用于创建自助数据集。

因为我们需要对原数据进行重新设置，因此选完字段以后在最左侧的操作流程栏点击+，选择字段设置，如下图：

进入字段设置界面，可以进行修改字段名、勾选是否显示该字段等功能，如下图：

比如此处我们修改总金额字段名为合同金额，并点击右上角的保存按钮，就可以在业务包中数据预览处看到我们刚刚操作的字段设置。

字段设置在线视频学习请查看 【字段设置】


排序- FineReport帮助文档|报表开发|报表使用|学习教程

排序

1、描述

排序在线视频学习请查看【排序】

FineBI提供了排序功能来对数据库中字段进行重新排序，业务人员可以直接在原数据表的基础上新增一张表对字段进行重新排序并保存以供后续分析使用。下面我们将详细介绍如何进行自助数据集中的排序功能操作。

2、步骤

进入数据准备>我的自助数据集，点击添加自助数据集，如下图：

进入自助数据集配置界面，从业务包的数据表中选择需要的字段合同类型、总金额、购买数量、合同签约时间，右侧表格中即显示选择的字段，如下图：

注：此处只能选择已添加并进行数据更新的数据表，未更新的数据表不能用于创建自助数据集。

因为我们需要对原数据进行排序操作，因此选完字段以后在最左侧的操作流程栏点击+，选择排序，如下图：

进入排序设置界面，可以点击添加一个或多个排序列，同时显示数据预览，如下图：

其中添加排序列的字段可以选择已添加的所有类型字段，且排序按照字段设置排序的先后顺序，设置的越早的排序优先使用，每个字段只能设置一次排序。排序效果为组内排序，即对第一个字段进行升序/降序排序，再对第二个字段进行升序/降序排序时，排序效果为对第一个字段中相同值下对应的第二个字段的值进行组内的升序/降序排序。若我们想要对合同金额、签约时间做一个升序排序操作，就可以在排序方式显示处添加多个排序列，如下图，同时设置排序方式为升序。也就是总金额在合同类型的分类下进行了组内的升序，而合同签约时间在总金额相同的情况下进行同种合同类型下时间的升序。

排序设置完成后点击右上角的保存按钮，就可以在业务包中数据预览处看到我们刚刚进行排序后的数据，如下图：

排序在线视频学习请查看 【排序】


左右合并- FineReport帮助文档|报表开发|报表使用|学习教程

左右合并

1、描述

左右合并在线视频学习请查看【左右合并】

在实际使用数据的过程中经常会有想将两张表联合在一起形成一张新表使用的情况，因此FineBI提供了左右合并和上下合并来实现数据表拼接的功能，该功能相当于之前版本中的join和union操作。左右合并包含四种方式，分别为并集合并、交集合并、左合并、右合并，下面我们就来详细介绍这四种左右合并的方式。

2、步骤

例如我们在地产行业业务包中有两张数据表：签约事实表（FACT_SALE_CONTRACT）和合同维度表（DIM_CONTRACT），需要将这两张表根据合同ID字段联合在一起形成一张新表且保证签约事实表的数据不会丢失。此时我们可以通过左右合并来实现。

进入数据准备>我的自助数据集，点击添加自助数据集，如下图：

进入自助数据集配置界面，从地产行业业务包的签约事实表中选择需要添加到最终表中的字段，这边我们全选了签约事实表中的字段。

注：此处只能选择已添加并进行数据更新的数据表，未更新的数据表不能用于创建自助数据集。

添加完字段以后在左侧的操作栏点击+，选择左右合并，如下图：

此处我们选择要合并的表为合同维度表，如下图：

点击下一步进入到添加字段页面，从左边选择要添加的字段，如下图：

点击确认保存字段选择，进入左右合并设置界面，根据需要点击合并方式；随后添加合并依据的字段，点击右上角的添加合并依据可以新增依据条件；完成后页面下方会出现合并结果数据预览框。

选择要进行合并的方式。单击合并方式后的

按钮，可以看到四种合并方式的详细介绍，如下图，可以根据自己的需要选择对应的合并方式。

我们要保证签约事实表的数据不会丢失，因此我们选择左合并的方式。此时在合并依据栏会自动出现两张表中都有的字段为合并依据，此处为合同GUID字段，如下图，若不想要默认的字段，也可删除原合并依据并添加新的。

注：此处添加的两个表中的合并依据字段必须为同一类型的，字段类型不一致不能左右合并，需要进行字段类型转化。

在添加完合并依据后，下方的数据预览框即会出现合并后新表的数据预览，如下图：

点击右上角的保存/另存为按钮将刚刚进行的自助数据集操作保存，就可以在我的自助数据集业务包中看到我们处理过的新表，如下图：

左右合并在线视频学习请查看 【左右合并】


上下合并- FineReport帮助文档|报表开发|报表使用|学习教程

上下合并

1、描述

上下合并在线视频学习请查看【上下合并】

上下合并与左右合并功能类似，上下合并主要是为了将多个类似的数据表数据进行合并成一张新表以供后续分析，产生的是联合结果集。可能存在这样的情况：一家公司由于历史原因，把订单信息分开存储在了多个地方，不同分公司独立存储，导致信息并不通畅。那么在FineBI中就可以使用上下合并操作进行整合，把所有订单信息协调在一起。而这些表的结构基本上一致的，且BI支持从多个数据源中取数据进行整合。

2、步骤

与左右合并类似，我们同样使用地产行业的签约事实表与其他表做上下合并的操作。进入数据准备>我的自助数据集，点击添加自助数据集，如下图：

进入自助数据集配置界面，从业务包的签约事实表中选择需要添加到最终表中的字段，这边我们全选了签约事实表中的字段。

注：此处只能选择已添加并进行数据更新的数据表，未更新的数据表不能用于创建自助数据集。

添加完字段以后在左侧的操作栏点击+，选择上下合并，如下图：

进入上下合并配置页面，需要选择合并的表，可以添加一张或多张表参与合并；选择表后会自动出现当前表和添加的合并表间可以进行合并的相同字段，可进行字段的修改，也会出现最后合并的结果集字段；页面下方为最终合并表结果的数据预览。如下图所示。

此处点击添加合并表，选择要合并的表，如下图：

点击下一步进入到添加字段页面，从左边选择要添加的字段，如下图：

点击确认保存字段选择，在合并配置页面可以看到新添加的合并表，将鼠标悬浮到表名上可以看到能进行重新编辑和删除的操作，如下图。同时右方会出现当前表和添加表的合并依据，即不同表间的各字段展示，包括相同和不同的字段。

同时会出现合并结果字段，如下图，单击字段可以对字段进行重命名操作。

添加多张合并表的步骤与上述类似，单击添加合并表并选择表字段即可。设置完以后在页面下方的预览区就可以看到合并的数据预览，如下图：

点击右上角的保存/另存为按钮将刚刚进行的自助数据集操作保存，就可以在地产行业业务包中看到我们处理过的新表，如下图：

3、说明

上下合并产生的是联合结果集，比如有如下图所示的表A和表B。

我们使用上下合并操作后的自助数据集如下图所示，结果会包含所有数据，对于没有匹配的记录，则会以null作为值。

上下合并在线视频学习请查看 【上下合并】


数据挖掘- FineReport帮助文档|报表开发|报表使用|学习教程

数据挖掘

1、描述

数据挖掘在线视频学习请查看【数据挖掘介绍】

上一章我们介绍过自助数据集是指对分布的、异构数据源中的数据，比如说关系数据等底层数据进行一定的处理，将处理后的表保存到业务包中，作为后续数据分析的基础。除了有之前介绍的过滤、分组汇总、排序、左右/上下合并等基础数据加工操作外，本章我们介绍数据处理较高级的处理方式—数据挖掘。数据挖掘通过对数据所包含的深层内在的信息进行提取，为企业实现精准的数据聚类/预测，协助企业及时调整策略做出更好的决策，增强企业的可持续竞争性。经过普通表处理操作的数据可以进行挖掘，同样经过挖掘的数据也可以再进行普通加工处理，经过挖掘处理的数据都会出现新增列或新增行，将挖掘结果存储于数据表中供业务人员在前端分析使用。

2、功能介绍

FineBI自助数据集中的数据挖掘处理包含两个类型：快速挖掘和R语言分析。我们按下图所示方式创建自助数据集以后，可以看到在表处理操作流程处看到数据挖掘的操作。

快速挖掘：包含时序预测、聚类和分类预测。时序预测主要是指在时间维度上的预测，基于历史数据来预测未来一定时间内的数据；聚类是将数据分为若干个小组，让同组的数据尽量相似，让不同组的数据尽量不同；分类预测是预测数据并预判数据的分类。

R语言分析：R语言分析是直接通过代码调用自助数据集中上一步的数据进行处理。

下面我们将分章节介绍自助数据集中的数据挖掘操作。

3、索引

时序预测

聚类

分类

回归

关联规则

R语言分析

Rserve连接管理

数据挖掘在线视频学习请查看【数据挖掘介绍】


时序预测- FineReport帮助文档|报表开发|报表使用|学习教程

时序预测

1、描述

时序预测在线视频学习请查看【时序预测】

时序预测主要是指在时间维度上的预测，基于历史数据来预测未来一定时间内的数据，例如根据过去两个月的销售额来预测未来一周的销售额；根据过去一年的发电量来预测未来一个月的发电需求。预测主要算法为时间序列，使用算法为指数平滑模型。指数平滑的形式可以分为一次指数平滑法、二次指数平滑法、三次指数平滑法，其中一次指数平滑法针对没有趋势和季节性的序列，二次指数平滑法针对有趋势但是没有季节特性的时间序列，三次指数平滑法则可以预测具有趋势和季节性的时间序列，Holt-Winters模型指的是三次指数平滑法。Holt-Winters模型是应用最为广泛的时序预测模型之一，适用于各种领域，实现较高准确度的预测。下面我们以预测未来一个月的发电量来详细介绍如何进行时序预测操作。

关于时间序列算法详细介绍可参考怎样理解时间序列一、怎样理解时间序列二。

2、时序预测示例

创建自助数据集 并选择添加火电数据字段后，在表处理操作流程处选择快速挖掘，如下图所示：

注：若要使用数据挖掘的时序预测功能，在选择字段时必须选择包含时间字段，因为预测是时间维度上的预测。

进入快速挖掘配置界面，可以看到有预测、聚类与分类/预测的选项，默认选择时序预测功能。时序预测需要填入的基本配置选项如下图所示，包括：日期列、预测指标、预测维度、预测长度、周期数、季节、水平、置信区间、缺失值填充。

日期列：所选数据表字段中日期类型的字段，以该列为日期维度列向后进行预测，单选；

预测指标：需要预测的指标列，多选下拉框选择，只能是数值类型字段，如销售额、发电量等；

预测维度：可以同时预测多个分组的值，例如预测多个产品多个门店时需选择分组列，可多选；

预测长度：默认数值为10，可手动修改；单位默认为时间列中，该时间字段的时间分组的单位，可修改为选项天/周/月/季/年；

周期数：默认为自动，根据单位不同为7天、1周、12月、4季、1年，可手动填写修改，单位为预测长度中选择的单位；

季节：是否考虑季节因素；包括无、累加、累乘选项，默认为无，单选；

水平：是否考虑水平因素；包括无、有选项，默认为无，单选；

置信区间：设置预测的区间范围，选择95%则代表未来的值95%的可能性在这个区间内。默认不勾选，在勾选后有三个下拉选项80%、90%、95%可选择，同时也可手动输入1-100的数值；

缺失值填充：默认不勾选为空，在勾选后可自定义填充数值；

根据自身预测需求按照上述介绍填入对应信息。例如，我们根据之前的发电量来预测未来一个月的发电需求，配置如下，时间列自动获取了日期字段“年月日TBRQ”，预测指标选择要预测的发电量字段“FDL_DR”，预测长度选择30天。

点击确定，则在自助数据集编辑界面可以看到原始数据与预测的数据预览，新增一列预测数据“FDL_DR_forecast”。

如果计算失败，则会提示相应的报错，如日期不能小于两个单位、数据带有缺失值、时间列存在缺失值等。

数据生成后可进行后续的表处理操作流程，并点击右上角保存。若想修改预测配置，可点击编辑配置并重新计算。

3、生成数据说明

新增列：

新增目标列数量＊3列数据，目标列数量＊1列预测列，目标列数量＊2列置信区间列，例如80%上限列和80%下限列；在历史数据行这几列数据为空，从预测时间开始展示预测数据以及置信区间数据；

新增行：

新增n行数据，n取决于参数配置中的预测长度；

数据结果：

如果预测长度单位选择周、或者月等大粒度单位，则数据结果自动依照按照所选择单位进行分组汇总，包括历史数据和预测数据。此外不对数据进行其他分组汇总操作，例如，历史数据为30天10个商品3个门店的销售额，预测后的数据为30天历史数据＋未来5天3个门店10个商品的预测销售额。也就是数据粒度依然为日期－门店－商品。若客户想实现总销售额的预测，则需要先在自助数据集中执行分组汇总操作，再进行预测操作；

预测数据小数点位数和被预测指标值小数点位数相同（其中指标值的小数点位数为指标值的小数点位数和填充值的小数点位数中的最多位数）。

4、注意事项

4.1 缺失值

在进行挖掘预测的时候，预测指标有缺失值时需要勾选缺失值填充，否则无法预测出数据。且若缺失的数据大于5%时，尽管勾选缺失值填充，仍有可能预测不出，缺失数据不能过多。

4.2 时间列

时间列有NA值，比如某行记录时间列是空但是有对应的指标值，这种情况无法预测。

时间列不连续，比如2011-01-01，2011-01-03都有记录，但是没有2011-01-02这行的记录，这种情况下如果确实的不是太多，勾选缺失值填充后还是能预测的；但如果确实的太多，则可能预测不出。

4.3 置信区间

若不计算置信区间，数据个数需大于等于填入的周期数*2+1个数据。即数据个数 >= 周期数*2+1；比如周期数为12月，则需要有大于等于25个月的数据个数。

若计算置信区间，数据个数需大于等于填入周期数*2+1+预测长度，即数据个数 >=（周期数*2+1+预测长度）；比如周期数为7天，预测长度为7天，则需要有大于等于22天的数据个数。

时序预测在线视频学习请查看 【时序预测】


聚类- FineReport帮助文档|报表开发|报表使用|学习教程

聚类

1、描述

聚类在线视频学习请查看【聚类】

聚类是将小组分为若干个小组，让同组的数据尽量相似，让不同组的数据尽量不同。聚类分析是在没有给定划分类别的情况下，根据数据相似度，进行样本分组的一种方法，聚类建立在无类标记的数据上，是一种非监督的学习算法。常用算法有k-means、k-medoids、clarans等，其中以k-means最为常用，其算法原理简单且便于处理大量数据，FineBI提供的聚类功能中使用的就是k-means算法。

聚类常用于解决大量数据的归类，例如根据会员的几个行为属性划分会员等级、根据商品的几个数据划分商品类别等。此外聚类也常作为其他算法的基础，例如决策树 神经网络等分类算法需要离散化数据，而聚类则常作为离散化工具使用。下面我们以花萼长度、花萼宽度、花瓣长度、花瓣宽度来进行鸢尾花卉种类分类来详细介绍如何进行聚类操作。

2、聚类示例

创建自助数据集 并选择IRIS表字段后，在表处理操作流程处选择快速挖掘，如下图所示：

进入快速挖掘配置界面，选择聚类功能。聚类需要填入的基本配置项如下图所示，包括：聚类列名、聚类指标、聚类数、最大迭代次数、距离函数和是否替换缺失值。

聚类列名：可以定义放置聚类名那一列的列名，如：会员质量、风险等级等；如果不填则默认为聚类；

聚类指标：变量输入列，参与聚类的指标变量，可以选择多个数值型字段进入该列，聚类算法根据选择的列进行聚类计算；

聚类数：也就是聚类结果的簇数量，可输入正整型变量，默认为空，必填项；

最大迭代次数：算法的计算次数，可输入正整形值，默认自动设置；

距离函数：单选欧式距离/曼哈顿距离，默认为欧式距离；

替换缺失值：是否勾选，默认不勾选；

根据自身聚类需求按照上述介绍填入对应信息。例如，我们根据花萼长度、花萼宽度、花瓣长度、花瓣宽度来进行鸢尾花卉种类分析，配置如下，聚类列名命名为“鸢尾花卉种类”，聚类指标选择花萼长度、花萼宽度、花瓣长度、花瓣宽度四个字段，聚类数输入3，也就是花卉种类分为3类。

点击确定，则在自助数据集编辑界面可以看到生成的数据预览，新增“鸢尾花卉种类”列和各聚类指标的中心点数据列，“鸢尾花卉种类”列分为三类，序号为0、1、2，详细的生成数据说明可查看第三章节。

如果计算失败，则会提示相应的报错。数据生成后可进行后续的表处理操作流程，并点击保存。若想修改聚类配置，可点击编辑配置并重新计算。

3、生成数据说明

生成的数据：

1、直接在原表基础上，增加以下几列：聚类序号，聚类(列名为基础设置中设置的分类列名)、中心坐标点(根据聚类维度数来决定)；

2、数据结果聚类数为基本配置中的聚类数，聚类序号默认为0、1、2、3、4；聚类名默认为聚类1、聚类2、聚类3；

3、中心点坐标的维度分别为变量输入列中的各个列；

例如上述根据花萼长度、花萼宽度、花瓣长度、花瓣宽度来进行鸢尾花卉种类分析生成的数据，如下图所示，包括聚类名、聚类中心坐标等。

生成数据示例：

例如原始数据为姓名、最近消费金额、消费频率、最大消费金额4列数据，那么经过聚类处理后，将生成以下几列数据：

姓名、最近消费金额、消费频率、最大消费金额、聚类序号、聚类名、最近消费金额聚类中心坐标、消费频率聚类中心坐标、最大消费金额聚类中心坐标

4、二次聚类

用户可能需要多次聚类来实现对数据完整的评估，如评估用户的高低价值、评估用户的多个敏感属性等，因此流程上，聚类同其他自助数据集流程一样，可以被多次调用。在进行二次聚类调用时，聚类的算法调用、配置等与上述没有区别；生成的数据以上一步数据为基础数据，在此基础上新生成以下几列：聚类序号2、聚类名2(如果基础配置中有设置聚类名，则显示设置的聚类名)、聚类中心坐标点(所有维度名后面添加2)。

聚类在线视频学习请查看【聚类】


分类- FineReport帮助文档|报表开发|报表使用|学习教程

分类

1、描述

分类在线视频学习请查看【分类】

分类功能是预测数据并预判数据的分类。分类不同于聚类，分类是一种有监督算法，需要在给定已知分类属性下，对数据进行分类。同时，分类算法在使用上基本用于预测，该算法可以分成两步来看，第一步是分类，以历史数据(含有分类结果)为基础进行训练；第二步是预测，根据训练的所得到的函数，对不含有分类结果的数据进行预测，预测这些数据属于哪些分类。同样，分类预测不同于预测，它的预测更多的是判断属性，判断某一数据属于哪一个分类，其预测值是离散的。而我们前面的时序预测主要是时间序列和回归，其预测是连续的，可以预测未来的数据。

分类在挖掘领域中非常常用，但是在BI领域中却不常用，在商业领域中，分类可用于判断垃圾邮件、判断用户是否会流失、判断新品是否会畅销。例如我们存在会员数据，有部分消费者有消费但是未注册会员，为了根据消费者的消费水平为他们精准的推荐会员等级，下面我们详细介绍如何根据消费水平来分类预测会员等级。

2、分类示例

创建自助数据集 并选择会员数据字段后，在表处理操作流程处选择快速挖掘，如下图所示：

进入快速挖掘配置界面，选择分类功能。分类需要填入的基本配置项如下图所示，包括：预测列名、预测列、参数列、算法、筛选器和算法对应的配置项。

预测列名：新生成的预测列的列名，可自定义命名为：预测价值属性、预测风险属性、预测是否畅销等等；默认为预测列；

预测列：针对该列进行分组，预测的列也是该列中已有的类目，可以选择任意列(不支持时间类型)，且只能选择1列；

参数列：影响分组结果的列，可以选择多列（不能选择分组列中选中的列），不支持时间类型；

筛选数据：满足某一条件的数据才进行分类预测操作；

算法：决策树或神经网络；

决策树：

纯度计算：Gini/entropy；

最大深度：默认为自动，应填入不小于1的正整型；

叶节点最小样本数量：默认值为3，应填入不小于1的正整型；

神经网络：

优化算法：SGD /Momentum动量，默认SGD；

隐藏层层数：可选1、2、3，最多选择三层；

第1层单元格个数：选择几个隐藏层，就要选择几次，如果多个隐藏层，后面就有第二层、第三层，最小为2，正整型；

学习率：默认值为0.2，0到1之间的任意数值；

最大迭代次数：不小于1的正整型，默认为500；

动量（优化算法选择/Momentum动量时出现，否则没有）：默认值为0.3，0到1之间任意数值；

根据自身分类预测需求按照上述介绍填入对应信息。例如我们这边存在的会员数据，有部分消费者有消费但是未注册会员，为了根据消费者的消费水平精准为他们推荐会员等级，我们需要分类预测出这部分非会员消费者的等级，原始会员数据如下，非会员的会员等级字段为空。

我们根据年消费金额、年消费次数、平均消费间隔天数对之前的非会员预测会员等级，在分类预测中配置如下：

点击确定，则在自助数据集编辑界面可以看到生成的数据预览，生成的预测列中成功预测了之前非会员的人员可推荐的会员等级。

如果计算失败，则会提示相应的报错。数据生成后可进行后续的表处理操作流程，并点击保存。若想修改分类/预测配置，可点击编辑配置并重新计算。

3、生成数据说明

数据结果为在原有数据基础上，新增一列预测列，无论是训练数据或是预测数据，该列均为通过算法计算得出的预测结果，结果为分组列中的数据项。如我们上面生成的预测会员等级数据。

分组预测算法常常与其他操作共同使用，常用的有新增公式列和聚类。例如通过新增公式列判断商品的是否属于畅销，先对商品进行离散化处理，并生成新的一列。再通过分组预测算法，对新品进行分组预测；通过聚类对老会员进行风险等级聚类，再通过分组预测对新会员进行判断该会员属于哪一风险等级。

分组预测不同于常规报表，其应用不多见于监督类报表，而是以程序型或分析项目性出现。

分类在线视频学习请查看【分类】


回归- FineReport帮助文档|报表开发|报表使用|学习教程

回归

1、描述

当需要预测某个商品多少天卖完，即根据商品价格、天气温度、星期几、周边工资收入、竞争对手数等等来推测商品要卖多少天时，可以使用数据挖掘的回归预测功能，用于根据其他因素影响的预测。

回归是一种用于数值预测的技术，不同于“分类”算法用于预测，回归是一种统计学方法，一般用于预测连续型数据(逻辑回归除外)。回归重点考虑其他一个或多个变量与目标变量之间的关系，例如大学生毕业年限和平均工资之间的关系，常见的可视化回归方程如：

2、回归预测示例

1、在数据准备下选择数据挖掘业务包下的血压收缩压数据表后，点击创建自助数据集，如下图，该血压收缩压表包含了体重、年龄和血压收缩压字段。

2、进入自助数据集配置界面，默认选择添加了该血压收缩压数据的所有字段，在表处理操作流程处选择快速挖掘，如下图所示：

回归功能。回归预测需要填入的配置项如下图所示，包括预测列名、预测列、参数列、预测维度、是否消除共线性、岭参数、筛选数据。

预测列名：新增的预测列的名称，为必填项；

预测列：因变量列，数值类型变量，单选，为必填项；

参数列：自变量输入列，回归方程中的自变量，参与拟合回归方程的变量。数值类型变量，可多选。为必填项；

预测维度：可以同时对多个分组的数据做回归分析，例如多个产品多个门店，因此在多个分组数据做回归分析时需选择分组列，该分组列可以多选(但要求为字符类型)。若选择分组列，则数据按照分组列进行汇总后再做回归计算，为选填项；

是否消除共线性：勾选/取消勾选，默认不勾选；共线性的详细说明请参考 多重共线性；

岭参数：选择是否消除共线性之后可以填写该参数，用于岭回归，填入大于0的数值型，默认值：1.0E-8；

筛选器：满足某一条件的数据才进行回归训练(与 分类 算法中的筛选器一致)。

因为我们要根据体重、年龄、血压收缩压拟合出多元线性方程，从而预测出指定体重年龄所对应的血压收缩压，因此我们为该回归预测添加配置项如下，预测列名设置为“血压收缩压预测”，预测列为“血压收缩压”，参数列为“体重”、“年龄”，如下图：

确定保存该回归配置，则数据预览处出现该血压收缩压的预测值，如下图，页面上方显示刚刚设置的回归预测基本配置项。

保存可直接保存该回归预测数据，或者单击左侧的操作栏进入下一节点调用该回归预测数据。

3、生成数据说明

新增列：新增一列根据原数据拟合生成的预测列，当影响因素列数据为空时，该预测列数据为空，目标列不影响预测列是否为空。

对应上例中生成的为血压收缩压预测值，为根据已有数据拟合成的多元线性方程预测出的，包含部分缺失原血压收缩压数据，根据体重与年龄预测出的血压收缩压值，如下图：


关联规则- FineReport帮助文档|报表开发|报表使用|学习教程

关联规则

1、描述

关联规则是数据挖掘中的常用算法，该算法用于发现数据之间的内部规则，最出名的例子为啤酒与尿布事件，即通过分析用户的交易数据，发现跟尿布一起购买最多的商品竟是啤酒。关联规则是通过不断迭代数据，计算不同项集的支持度和置信度，最终得出满足要求的数据关系，通过调整支持度和置信度的大小，来控制数据之间关系的紧密程度。很多企业通过关联规则来实现精准营销、商品推荐等需求。

关联规则不需要训练，以所有带分析数据为输入，不断迭代计算寻找内部数据之间的关系，用户输入支持度、置信度、等关键参数，最终得出用户想要的数据关系表。其结果完全是一张新表，用于表达输入数据之间的关系。

下面我们介绍一下在FineBI中如何根据客户购买的商品数据来挖掘顾客购买商品之间的关联规则，比如挖掘出顾客在购买哪些商品之后可能购买哪些产品，以此做好购物导航等工作。

2、关联规则示例

1、在数据准备下选择数据挖掘业务包下的超市销售关联表后，点击创建自助数据集并选择位置和名称，如下图，该超市销售关联表包含了客户同时购买的商品，ID标识了购买行为，购买了商品标识为非空，未购买标识为空。

进入自助数据集配置界面，默认选择添加了该超市销售关联表的所有字段，在表处理操作流程处选择快速挖掘，如下图所示：

关联规则功能。该关联规则需要填入的基本配置项如下图所示，包括项目列、分组列、最小支持度、最小置信度、最大项集数、规则数。

项目列：关联规则计算的依据列，例如计算商品关联规则的商品列，可多选，为必选项；

分组列：用于分组，可以通过该列将关联规则分成多组进行计算。例如客户需要计算不同门店或不容月份的商品关联关系，可选择门店或月份为分组列字段。可多选，为选填项，需要选入字符类型；

注：项目列和分组列不可选择相同字段。

最小支持度：0到1之间的小数，默认0.5，不可为空；关联规则挖掘第一阶段是从所有原始数据集合中，找出所有高频项目组，高频的意思是指某一项目组出现的频率相对于所有记录而言，必须达到某一水平。一项目组出现的频率称为 支持度 (Support)；

最小置信度：0到1之间的小数，默认0.5，不可为空；关联规则挖掘第二阶段是要产生关联规则，利用前一步骤的高频项目组来产生规则，在最小置信度(Minimum Confidence)的条件门槛下，若一规则所求得的置信度满足最小置信度，称此规则为关联规则；

是否定义最大项集数：可勾选定义，默认不勾选；项集数指的是被关联一组商品的个数，比如商品a可以关联商品b，也可以关联商品{b、c}，也可以关联商品｛b、c、d｝，则对应的项集数分别为1、2、3；

是否定义规则数：可勾选是否定义，默认不勾选；勾选后需要填入规则数值；规则数指的就是数据最后生成的行数，每一行为一条规则；

规则数：“是否定义规则数”项勾选时，可输入此选项，大于0的正整数，默认为10。如果在勾选了定义规则数的情况下，该项不能为空。

因为我们需要根据客户购买商品的先后顺序来挖掘顾客购买商品之间的关联规则，选择项目列为商品列：牛奶、黄油、芝士、鸡蛋、面包、水果，设置最小支持度与最小置信度分别为20%、30%，如下图：

确定保存该关联规则配置，则页面上方显示刚刚设置的关联规则基本配置项，数据预览处出现客户购买商品关联规则的结果，如下图：

保存可直接保存该关联规则数据，或者单击左侧的操作栏进入下一节点调用该关联规则数据。

3、生成数据说明

通过关联规则生成的数据结果是基于输入数据生成的一张新表，包含选择项集、频繁项集、支持度、置信度，如下图：

选择项集：为满足最小支持度的项目列，在上例中表示满足大于20%概率会购买的商品；

频繁项集：与对应“选择项集”所关联的项集，在上例中表示满足大于30%概率会关联购买的商品；

支持度：支持度表示客户会选择该“选择项集”的预测概率；

置信度：置信度表示客户在选择了该“选择项集”后，会同时选择“频繁项集”的预测概率；


R语言分析- FineReport帮助文档|报表开发|报表使用|学习教程

R语言分析

1、描述

R语言分析在线视频学习请查看【R语言分析】

R语言应用与挖掘算法类似，只是R语言是直接通过代码调用上一步的数据进行处理。因此R语言作为自助数据集中的一个流程，可以调用上一节点的数据，R语言处理好的数据同样可以被下一节点调用进行其他数据处理操作。

FineBI支持R语言，本质上是一个代码写字板，将写好的代码裹挟着数据传递到Rserve，由Rserve来解析运算并且返回数据给FineBI。因此FineBI的代码格式、语法规则、日志信息等都是由Rserve管理的，使用R语言分析功能前需要连接Rserve服务，详情请参考Rserve连接管理。

2、R语言分析操作

创建 自助数据集 并选择字段后，在表处理操作流程处选择R语言分析，如下图所示：

进入R语言配置界面，界面分为编码区、日志区、数据区，如下图：

编码区：用来进行R语言编译，可以运行R语言代码，具有以下功能：

--执行代码；

--终止执行；

--基本的文本操作：复制、粘贴、剪切、全选；支持快捷键操作；

--代码过长出现滚动条可滚动预览；

--代码保存于自助数据集中；

日志区：用来查看编译日志，具有以下功能：

--日志自动输出(包括报错和中间函数或变量的数据预览)；

--清空日志；

--日志过长有滚动条；

--支持复制功能，日志太多可以让用户把日志拷贝到其他文件中；

数据区：用来预览挖掘处理后的数据，数据标准和自助数据集一致。当没有写任何R语言的时候，数据区显示上一步的数据结果；若不写任何R语言，可以进行下一步操作，依然继承该数据；可以直接保存并执行自助数据集，数据结果为上一步的数据结果。当R语音报错时，数据区内容为空，下一节点无法调用数据，可保存自助数据集配置，但无法执行自助数据集。

数据区只展示主干数据(自助数据集流程的数据)，该数据在R语言编译区为一个数据框，承接上一步的数据后该数据有默认的数据框名称，只针对该数据框进行修改、变更时，该数据区变化，若将R语言分析结果存储在其他新的变量中，数据区不随之更新。R语言编译过程中产生的其他数据，包括存储于其他变量的数据和函数预览数据等，都只显示在日志区。

其中在编码区，如下图，上一节点的数据会自动存储在R_INPUT中，要是想把数据传给下一节点必须赋值给R_OUTPUT，最关键的是必须满足data.frame的结构。

比如我们使用R语言分析最基础的例子：R_OUTPUT<-R_INPUT，即将上一节点获取的数据赋值给下一节点，点击编码区的执行按钮，执行成功后则出现数据预览（最基础的R语言例子能够实现，说明R语言分析能够正常使用了），如下图：

点击确认保存，则在自助数据集编辑界面可以看到使用的R语言语句和数据预览。

R语言执行后可进行后续的表处理操作流程，并点击保存。若想修改R语言，可点击编辑R语言并重新执行。

R语言分析在线视频学习请查看【R语言分析】


Rserve连接管理- FineReport帮助文档|报表开发|报表使用|学习教程

Rserve连接管理

1、描述

为了支持FineBI中R语言的应用，需要FineBI连接到Rserve，因此在管理系统中提供了Rserve的连接入口。下面详细介绍如何操作连接Rserve。

2、rserve连接

管理员或有管理系统权限的账号登录到FineBI数据决策系统，选择管理系统>系统管理，点击rserve链接。需要输入Rserve的服务器、端口和用户名密码。

若未安装R语言，可参考 R语言Windows&Mac安装和R语言Linux安装安装启动。

服务器：输入服务器地址，默认localhost；

端口：rserve的端口号，正整型数字，默认6311；

是否使用用户名密码：默认不使用，不需要输入用户名密码连接；Rserve若设置了用户名密码，需要打开该项；

用户名：输入rserve的用户名；

密码：输入rserve的密码；

注：连接前请确保Rserve服务器启动且端口对外开放。

在按照自身Rserve服务器情况正确输入连接信息后，点击测试连接，若提示连接成功则表示成功连到该Rserve。

测试连接成功后，点击右上角的保存即可。随后就可以在R语言分析中使用。

3、账号密码连接

注：Rserve默认的连接方式是没有用户名密码的，如果给Rserve设置了账号密码，需要做些配置改动才可以从FineBI连接成功。

以下以Windows系统示例：

1）新建账号密码RserveAuth.txt文件，文件格式如下图所示，分别为账号和密码（需换成自身的账号密码）：

2）新建Rserv.conf文件，文件内容如下：

pwdfile RserveAuth.txt remote enable auth required plaintext enable

3）将上面两个文件都放到.../ Rserve/lib/x64/文件夹中；

4）设置环境变量（具体教程可参考https://www.cnblogs.com/mutougezi/p/6140329.html）；

5）将C:\Program Files\R\R-3.2.0\bin\x64（换成自身环境R的对应路径）加到环境变量Path最后面；

6）打开cmd，输入命令如下目录（需换成自身环境R的对应路径）：

cd C:\Program Files\R\R-3.2.0\library\Rserve\libs\x64

随后输入：

Rserve.exe --RS-conf Rserv.conf --RS-port 6311

这样就可以实现账号密码登录了。

4、索引

R语言的安装请参考下面链接：

R语言Windows&Mac安装

R语言Linux安装


可视化分析组件- FineReport帮助文档|报表开发|报表使用|学习教程

可视化分析组件

1、描述

可视化分析组件在线视频学习请查看【可视化分析组件介绍】

可视化组件为进行数据分析的可视化展示工具，通过添加来自数据库的维度、指标字段，使用各种表格和图表类型来展示多维分析的结果。FineBI用于数据分析的可视化组件包括表格、图表、时间控件、文本控件、树控件等等多样化的类型，能够提供给用户更丰富的选择。下面我们就来介绍下如何添加和详细设置可视化的组件。

2、添加组件

登录FineBI数据决策系统（需要是BI编辑用户才可以），选择仪表板>新建仪表板，新建一张用于数据分析的仪表板，为该仪表板命名为test并点击确认。

单击该新建的仪表板进入仪表板编辑界面，如下图：

在仪表板编辑界面即可添加组件，有两种方式：1、单击页面中间的“添加组件”按钮；2、单击页面左上角组件上的绿色按钮；如下图：

添加后需要进行业务包>数据表的选择，选择要进行数据分析的数据表。

点击确认进入组件设置界面，组件的详细设置将在后续章节介绍。

若单击右上角的进入仪表盘按钮，将回到刚刚仪表板的设置页面，如下图：

3、详细设置组件

在仪表板中若要进入组件详细设置界面，可以将鼠标悬浮在组件上，即可看到右上角有多个操作按钮。选择下拉>详细设置或者直接单击最右的详细设置。

或者

4、复制组件

若已配置好的组件想要复制一个一模一样的，可以使用组件复制功能。将鼠标悬浮在组件上，选择下拉>复制。

5、删除组件

已制作好的组件不需要使用的时候可以直接删除，将鼠标悬浮在组件上，选择下拉>删除。

6、索引

维度字段操作

指标字段操作

表格组件

图表组件

时间过滤组件

文本过滤组件

树过滤组件

数值区间过滤组件

其他过滤组件

文本组件

图片组件

Web组件

时序预测（前端）

聚类（前端）

组件操作

可视化分析组件在线视频学习请查看 【可视化分析组件介绍】


表格组件- FineReport帮助文档|报表开发|报表使用|学习教程

表格组件

1、描述

表格组件为展现数据的一个传统组件，通过表格形式展现。在FineBI中提供了三种类型表格组件：分组表、交叉表、明细表，分组表按照维度分组，对指标内的数据进行汇总统计；交叉表按照行维度和列维度对指标数据汇总统计；明细表则展示所有明细数据。还可以对表格做各种属性、样式、排序、过滤等操作，详细介绍请参考下面链接。

表格组件在线视频学习请查看【表格组件整体介绍&&分组表介绍】

2、索引

分组表

交叉表

明细表

表格排序

表格分组

表格过滤

表格汇总方式

表格快速计算

表格数值格式

表格属性

表格组件样式

表格钻取

表格列宽等分


分组表- FineReport帮助文档|报表开发|报表使用|学习教程

分组表

1、描述

分组表在线视频学习请查看 【表格组件整体介绍&&分组表介绍】

分组表是有一个行表头维度和数值指标数据组成的分组报表，没有列表头。分组表按照行表头拖拽的维度分组，对指标内的数据进行汇总统计。如下图：

下面介绍创建一个展示如上述合同类型-付款类型的总金额分组表的步骤。

2、创建分组表

1、登录FineBI数据决策系统，进入仪表板界面，点击添加组件并选择想要进行数据分析的数据表。我们选择包含合同类型、付款类型、总金额的合同信息表；

2、进入组件详细设置界面，为横轴拖入待分析维度区域的“合同类型”、“合同付款类型”字段，为纵轴拖入待分析指标区域的“总金额”字段；

3、在图表/表格智能推荐区域选择分组表，组件预览区域即出现根据维度和指标统计的分组结果；

4、若还想增加指标“购买数量”的统计，则直接将“购买数量”拖至分析区域的指标框中即可；若已添加的字段不想展示，直接拖走即可。

至此，分组表就创建成功了。分组表中维度的默认统计方式为“相同值一组”，指标的默认统计方式为“求和”，分组和汇总方式均可以修改，表格的属性、样式等也均可以修改，详细设置请参考下面链接。

3、索引

表格属性

表格样式

表格排序

表格分组

表格过滤

表格汇总方式

表格快速计算

表格数值样式

表格列宽等分

分组表在线视频学习请查看 【表格组件整体介绍&&分组表介绍】


交叉表- FineReport帮助文档|报表开发|报表使用|学习教程

交叉表

1、描述

交叉表在线视频学习请查看【交叉表】

交叉表是指由行表头、列表头以及数值区域组成的较为复杂的报表。如分组表中介绍，如果想要在维度区域再增加一个年份字段来统计各年度的合同金额，使用分组表只能加在行表头，显示数据条数将非常多，如下图：

如果我们使用交叉表，就可以增加一个列表头用于展示年份维度，数据显示将清晰很多，如下图：

下面介绍创建一个展示如上述合同类型-付款类型-年份的总金额交叉表的步骤。

注：交叉表行*列超过100000000，会报错。该报错为出于性能的考虑，代码上做的限制。

2、创建交叉表

1、登录FineBI数据决策系统，进入仪表板界面，点击添加组件并选择想要进行数据分析的数据表。我们选择包含合同类型、付款类型、总金额的合同信息表；

2、进入组件详细设置界面，为横轴拖入待分析维度区域的“合同类型”、“合同付款类型”字段，为纵轴拖入待分析指标区域的“总金额”字段；

3、在图表/表格智能推荐区域选择交叉表，并将“合同签约时间”字段拖至列维度，修改时间分类为“年”。组件预览区域即出现根据维度和指标统计的分组结果；

4、若还想增加其他维度/指标字段，拖拽至对应分析字段区域即可；若已添加的字段不想展示，直接拖走即可。至此，交叉表就创建成功了。交叉表中维度的默认统计方式为“相同值一组”，指标的默认统计方式为“求和”，分组和汇总方式均可以修改，表格的属性、样式等也均可以修改，详细设置请参考下面链接。

3、索引

表格属性

表格样式

表格排序

表格分组

表格过滤

表格汇总方式

表格快速计算

表格数值样式

表格列宽等分

交叉表在线视频学习请查看 【交叉表】


明细表- FineReport帮助文档|报表开发|报表使用|学习教程

明细表

1、描述

明细表在线视频学习请查看【明细表】

明细表顾名思义，是指展示所有明细数据的报表，每一条数据都罗列在上面，并进行简单汇总的报表。FineBI提供了明细表组件，您只需要在仪表板中添加明细表组件，然后将所有需要展示的字段添加进去，且所有字段都添加至单一区域，FineBI就能自动匹配关联关系后展示出明细数据。

下面介绍创建一个展示如上述合同明细数据的步骤。

2、创建明细表

1、登录FineBI数据决策系统，进入仪表板界面，点击添加组件并选择想要进行数据分析的数据表。我们选择包含合同类型、付款类型、总金额的合同信息表；

2、进入组件详细设置界面，在图表/表格智能推荐区域选择明细表；

3、为分析区域的数据栏拖入“合同类型”、“合同付款类型”、“总金额”、“购买数量”字段；

4、在组件预览区域即出现拖入数据的明细数据。若还想增加明细字段，直接将字段拖入数据栏即可；若已添加的字段不想展示，直接拖走即可。

至此，明细表就创建成功了。明细表的表格属性、样式、排序、过滤、数值样式可以修改。因为是明细数据的展示，因此不支持表格分组、汇总方式的设置，也不支持结果过滤器。详细设置请参考下面链接。

3、总行数

明细表在显示时默认显示1000行，该数据在组件样式>格式中可以进行调整，如下图：

可输入数值为大于0的整数数值，默认为1000；若输入的数值大于明细表总条数，则显示实际总条数；输入的数值小于明细表总行数，则显示输入数值。比如我们输入总行数为10行，则可以看到该明细表预览区域仅显示了10行的明细数据，如下图：

4、索引

表格属性

表格样式

表格排序

表格过滤

表格数值样式

表格列宽等分

明细表在线视频学习请查看 【明细表】


表格排序- FineReport帮助文档|报表开发|报表使用|学习教程

表格排序

1、描述

表格排序在线视频学习请查看【表格排序&&过滤】

表格排序是指对于表格中的数据按照条件进行重新排序，表格排序包括两种方式：分析区域维度字段的排序设置和表格中列表头的排序设置。

下面我们按照表格分类来介绍排序设置。

2、分组/交叉表排序

分组表、交叉表支持两种方式的表格排序设置，在分组表的维度和交叉表的行/列维度处均可设置排序规则：升序、降序或者自定义排序，其中升序、降序可直接选择按照所有维度字段或者当前选择的指标来排序，如下图：

自定义排序则可以随意设置当前分组的内容顺序，直接拖拽即可调整。

除了上述的排序设置方式，还可以在表格中列表头设置顺序，维度字段支持设置组内升序/组内降序，指标字段支持设置升序、降序和不排序。

3、明细表排序

明细表不支持在分析区域维度字段设置排序，只支持在表格中列表头处进行设置，可设置为升序、降序或不排序。

表格排序在线视频学习请查看 【表格排序&&过滤】


表格分组- FineReport帮助文档|报表开发|报表使用|学习教程

表格分组

1、描述

表格分组即对分组/交叉表中维度字段进行分类，明细表不存在分组的概念，因此不支持表格分组。表格分组的方式包含两种：相同值为一组和自定义分组。

2、相同值为一组

在为表格拖入维度字段以后，默认分组方式为“相同值为一组”，即该维度字段在分组统计的时候按照相同的值作为一组。比如下面的合同类型按照相同值为一组分类，即按照合同类型的四种类型分组。

3、自定义分组

自定义分组可自行添加新的分组，并对已有分组进行重分类等操作。比如我们对上面的合同类型进行自定义分组，将长期协议和长期协议订单分为一组，命名为“长期订单”。

1）选择下拉>自定义分组；

2）进入自定义分组设置框，选择“长期协议”和“长期协议订单”，点击添加分组；

3）为新分组重命名为“长期订单”；

4）点击确定即可保存该自定义分组。自定义分组菜单中还可选择“未分组的值分组到其他”，即设置未指定到特定分组的值全部分到其他栏中；还可选中分组值后移动/复制到其他分组。

4、区间分组设置

当表格中维度字段存在数值维度字段时，可对其进行区间分组设置。该数值字段只能通过指标转化为维度的方式，从待分析维度区域中才能拖拽到横纵轴的维度上，如下图：

该合同金额为通过指标转换为维度以后，再拖拽至横纵轴的维度栏，如下图：

区间分组设置可以对该数值字段进行自定义的数值区间分组，默认会根据数值的最小与最大值分为五组，也可自定义修改分组的数量及区间大小。如下图，我们对该合同金额字段选择下拉>区间分组设置。

进入区间分组详细设置界面，分组方式包含了两种：自定义和自动，如下图：

4.1 自定义

自定义的分组方式可自行设置分组的名称、对应的区间数值大小和分组的数量，如下图：

同时可选择是否将其他未分组的值分到“其他”（其中“其他”名称可修改），如下图：

点击确定保存该自定义分组设置后，合同金额栏即根据自定义的分组显示字段，如下图：

4.2 自动

自动的分组方式可设置区间间隔，系统自动根据设置的区间间隔、数值最大值、最小值将字段分组，如下图，我们在设置了区间间隔后，系统自动获取了分组数为51组。

点击确定保存该分组设置，合同金额栏即根据自动的分组显示字段，且字段显示为数值区间，如下图：


表格过滤- FineReport帮助文档|报表开发|报表使用|学习教程

表格过滤

1、描述

表格过滤在线视频学习请查看 【表格排序&&过滤】

在表格中维度和指标栏均可对数值进行过滤设置，包含三种方式 ：分析区域字段的过滤设置、表格中列表头的过滤设置和结果过滤器，均为对汇总后的数据进行过滤。分组表、交叉表均支持三种方式的过滤设置，明细表仅支持前两种，不支持结果过滤器。

待分析指标字段也存在过滤，为明细过滤，表示对原始表中的明细数据进行过滤，可参考 指标明细过滤 ；

2、分析区域字段的过滤设置

2.1 维度字段

分析区域维度字段的过滤条件支持添加条件和添加公式。

添加条件支持选择当前维度和已选的指标字段。

条件可选择属于、不属于、包含、不包含、为空、非空、开头是、结尾是、开头不是、结尾不是、前N个、后N个，如下图：

在选择条件后输入对应条件信息即可。添加公式只支持选择数值字段作为公式条件。

在添加多个条件的时候，条件之间的并列关系包括两种：且和或。

2.2 指标字段

指标字段的过滤条件只支持添加条件。

选择添加条件后默认为当前指标设置过滤，且只支持对当前的指标添加条件，包含介于、不介于、等于、不等于、大于、小于、大于等于、小于等于、最大的N个、最小的N个、为空、非空的条件。

多个条件之间的并列关系同样包括两种：且和或条件。

3、列表头的过滤设置

列表头的维度字段过滤设置也包含“添加条件”和“添加公式”，指标字段过滤设置只包含“添加条件”，设置均与第二章节分析区域字段的过滤设置一样，参考上面介绍即可。

4、结果过滤器

表格的结果过滤器中同样可以为表格添加过滤条件，在上述分析区域的字段过滤设置中，均只能选择当前分析区域已选的字段进行条件过滤，而结果过滤器中可拖入任何想要过滤的字段。比如，我们想要为上面的表格过滤出已经交货合同统计，但不想要拖入“是否已经交货”到表格中显示，此时我们可以使用结果过滤器功能。

注：明细表不支持结果过滤器功能。

1）将“是否已经交货”字段拖入结果过滤器中，如下图：

2）单击“是够已经交货”字段的下拉按钮，选择过滤。

3）选择添加条件，并设置条件为“是否已经交货属于是”，如下图：

4）点击确定按钮保存过滤条件，右侧表格中数据即过滤为已经交货的结果。

表格过滤在线视频学习请查看 【表格排序&&过滤】


表格汇总方式- FineReport帮助文档|报表开发|报表使用|学习教程

表格汇总方式

1、描述

表格中的指标字段可对其进行汇总方式的设置，包含求和、求平均、求中位数、求最大值、求最小值、求标准差、求方差，仅分组表和交叉表支持。

2、求和

为分组/交叉表拖入指标字段以后，默认汇总方式为求和，统计的是按照维度字段进行分组后的指标求和。如下图中的“总金额”和“购买数量”字段，统计了不同合同类型下付款类型分组内的金额和数量总和。

3、求平均

求平均为按照维度字段分组后的指标求平均，如下图，选择“总金额”和“购买数量”统计方式为求平均后，统计了不同合同类型下付款类型分组内的金额和数量求平均的值。

4、求中位数

求中位数为取按照维度字段分组后的指标所有数值高低排序后正中间的一个数，如下图，选择“总金额”和“购买数量”统计方式为求中位数后，统计了不同合同类型下付款类型分组内的金额和数量求中位数的值。

5、求最大值

求最大值为取按照维度字段分组后的指标所有数值中最大的一个数值，如下图，选择“总金额”和“购买数量”统计方式为求最大值后，统计了不同合同类型下付款类型分组内的金额和数量中最大的数值。

6、求最小值

求最小值为取按照维度字段分组后的指标所有数值中最小的一个数值，如下图，选择“总金额”和“购买数量”统计方式为求最小值后，统计了不同合同类型下付款类型分组内的金额和数量中最小的数值。

7、求标准差

求标准差为取按照维度字段分组后的指标方差值的算术平方根，如下图，选择“总金额”和“购买数量”统计方式为求标准差后，统计了不同合同类型下付款类型分组内的金额和数量的标准差值。

8、求方差

求方差为取按照维度字段分组后的指标每个值跟所有值的平均数之差的平方值的平均数，如下图，选择“总金额”和“购买数量”统计方式为求方差后，统计了不同合同类型下付款类型分组内的金额和数量的方差值。


表格快速计算- FineReport帮助文档|报表开发|报表使用|学习教程

表格快速计算

1、描述

对于分组表和交叉表中的指标字段，FineBI提供了对数值的快速计算，计算方式包括：求同期、求环期、求同比、求环比、排名、组内排名、所有值、组内所有值、累计值、组内累计值、当前维度百分比、当前指标百分比。默认直接拖入指标字段后没有计算方式，当前拖入的指标支持的计算方式显示可点击，如下图。

2、求同期

求同期为计算上一时间维度中当前时间点的数据值，在维度拖入的时间字段为年月日、年周数、年月、年季度时，指标字段下拉中的快速计算>求同期才可以点击，且可选择的同期时间维度根据时间字段的不同维度显示也不一样，比如维度中拖入的为“合同签约时间”年月日维度，则指标中求同期可选的维度为“年”、“月”、“周”，分别表示在其他维度都一样的情况下，取上一年的值对应的该日的值；其他维度都一样的情况下，取上一月的值对应的该日的值；其他维度都一样的情况下，取上一周的值对应的该日的值。

若维度中拖入的为“合同签约时间”年月维度，则指标中求同期可选的维度为“年”，表示在其他维度都一样的情况下，取上一年的值对应的该月的值。

若想要快速计算求同期，直接单击求同期后选择时间维度，该指标在表格预览中即显示计算后的结果。

3、求环期

求环期表示求相对于当前时间粒度的前一周期的值，比如当前时间粒度为年月日，求环期表示求当前年月日的前一天的值；当前时间粒度为年月，则求环期表示求当前年月的前一月的值。求环期支持所有时间粒度，即时间字段的所有维度均可以选择求环期，如下图：

直接单击求环期，该指标在表格预览中即显示计算后的结果。

4、求同比

求同比为计算当前时间数据值与上一时间维度该时间点数据值的百分比，求同比与求同期类似，在维度拖入的时间字段为年月日、年周数、年月、年季度时，指标字段下拉中的快速计算>求同比才可以点击，且可选择的同比时间维度根据时间字段的不同维度显示也不一样。比如维度中拖入的为“合同签约时间”年月日维度，则指标中求同比可选的维度为“年”、“月”、“周”，分别表示在其他维度都一样的情况下，计算当前时间数据值与取上一年的值对应该日的值的百分比；其他维度都一样的情况下，计算当前时间数据值与取上一月的值对应的该日的值；其他维度都一样的情况下，计算当前时间数据值与取上一周的值对应的该日的值。直接单击求同比后选择时间维度，该指标在表格预览中即显示计算后的结果。

5、求环比

求环比为计算当前时间数据值与相对于当前时间粒度的前一周期的数据值的百分比，与求环期类似，求环比支持所有时间粒度，即时间字段的所有维度均可以选择求同比。比如当前时间粒度为年月日，求环比表示求当前年月日的数据值与前一天值的百分比；当前时间粒度为年月，则求环比表示求当前年月的数据值与前一月值的百分比。直接单击快速计算>求环比，该指标在表格预览中即显示计算后的结果。

6、排名

求排名为计算当前指标数值在维度下的排名顺序，可选升序排名和降序排名两种。升序排名即按照指标数值从小到大的顺序，排名从1到N；降序排名则按照指标数值从大到小的顺序，排名从1到N。

如我们为合同金额选择计算方式为排名>升序排名，则按照金额的大小进行1到N的排序。

7、组内排名

组内排名为计算当前指标数值在分组内的排名顺序，同样可选升序排名和降序排名两种，升序排名即按照指标数值组内从小到大的顺序，排名从1到N；降序排名则按照指标数值组内从大到小的顺序，排名从1到N。

如我们为合同金额选择计算方式为组内排名>升序排名，则按照金额的大小在组内进行1到N的排序。

8、所有值

所有值为对该指标的所有值进行计算，包括求和、求平均、求最大值、求最小值。若选择对所有值计算，则该指标所有维度内显示的值都相同，都为计算的结果。

如我们为总金额选择计算方式为所有值>求平均，则合同金额指标栏内的数值均为用该指标的所有数据计算出的平均值。

9、组内所有值

组内所有值为对该指标在分组内的所有值进行计算，包括求和、求平均、求最大值、求最小值。若选择对组内所有值计算，则该指标组内显示的值都相同，都为该组的所有数据计算的结果。

如我们为合同金额选择计算方式为组内所有值>求平均，则合同金额指标栏内的数值为用该指标的组内所有数据计算出的平均值。

10、累计值

累计值为对该指标所有值的累计统计结果，从上至下依次累加指标值。如我们为合同金额选择计算方式为累计值，则合同金额指标栏内的数值为从上至下依次累加总金额。

11、组内累计值

组内累计值为对该指标组内所有值的累计统计结果，在组内从上至下依次累加指标值。如我们为合同金额选择计算方式为组内累计值，则合同金额指标栏内的数值为组内从上至下依次累加总金额。

12、当前维度百分比

当前维度百分比为当前细粒度数据占该维度所有细粒度数据和的百分比，表示单个值占当前所在维度下总值的比例。比如我们为省份城市维度统计的合同金额计算当前维度百分比，上海市的合同金额当前维度百分比表示上海市的合同金额除以上海市的合同与回款金额总和。

13、当前指标百分比

当前指标百分比为当前细粒度数据占该指标内所有维度的细粒度数据和的百分比，表示单个值占指标总值的百分比。比如我们为省份城市维度统计的合同金额计算当前指标百分比，上海市的合同金额当前指标百分比表示上海市的合同金额除以所有城市合同金额指标的总和。


表格数值格式- FineReport帮助文档|报表开发|报表使用|学习教程

表格数值格式

1、描述

对于表格中的指标字段，FineBI提供了对于数值字段的数值格式设置功能，可对字段设置成数字或百分比等。分组表、交叉表、明细表中的数值字段均支持该数值格式设置。

2、数值格式

对分析区域的指标/数据栏中的数值字段，选择下拉>数值格式，即可进入数值格式设置界面。

数值包含三种格式：自动、数字和百分比。默认为自动格式，可选择数量单位、单位后缀和千分符，数量单位包含个、万、百万和亿；单位后缀可手动输入想要的数值单位；千分符可选择是否勾选上；在设置完数值格式后，示例就会出现配置的格式样式，如下图。

若选择数值格式为数字，相比自动的格式增加数值的小数位数，可设置数字小数点后显示的位数。

百分比格式的可相比自动格式也是增加了小数位数的设置，但百分比格式无法设置数量单位，如下图：

根据自身需要进行数值格式设置后，点击确定保存，该数值字段在表格中的显示即按照配置的示例。


表格属性- FineReport帮助文档|报表开发|报表使用|学习教程

表格属性

1、描述

表格属性在线视频学习请查看【表格属性】

表格属性为设置表格中的指标文字颜色和文字旁的图标标记，包括颜色和形状，属性设置的效果如下图所示：

下面我们详细介绍下在表格属性中该如何设置出上图效果。

2、属性设置

进入仪表板组件设置界面，在为表格（包括分组表、交叉表和明细表）选择了维度、指标的字段以后，可以看到组件设置中有表格属性设置。如下图，此处我们以分组表演示，其他表格类型同样设置。

颜色栏可设置指标字段文字的颜色，可设置根据不同条件来显示不同颜色；形状栏可设置字段旁的图标标记，同样可设置根据不同条件来显示标记，标记的形状有两种类型可以选择。为表格属性的颜色和形状栏分别拖入想要设置分类条件的字段，拖入的字段仅支持指标字段，即只能支持指标字段的分类条件来设置颜色和形状。

比如我们想要为“合同金额”设置文字颜色，满足“购买数量”小于100的显示红色，大于100的显示为绿色；设置图标标记，“合同金额”小于20,000,000的标记向下，大于20,000,000的标记向上。

2.1 颜色属性

1）为颜色栏拖入字段“购买数量”，如下图：

单击该颜色栏，出现条件设置框，如下图：

此处我们添加条件为0-100显示颜色为红色，100以上显示颜色为绿色，添加条件如下，在“合同金额”处的字段颜色即根据设置的条件显示。

2.2 形状属性

2）为形状栏拖入字段“合同金额”，如下图：

单击该形状栏，出现形状条件设置框，如下图：

可选择的形状如下图所示，包含两种，可根据需要选择，默认为无。

此处我们选择上升下降箭头，并添加临界值为20,000,000，如下图，在合同金额处的图标标记即按照设置条件来显示。

此时，我们表格属性中颜色和形状都设置完成。

2.3 其他说明

注：在表格属性中添加的字段均与分析区域的指标字段一致，能进行汇总方式、快速计算、过滤、数值格式等操作，在字段处下拉进行选择即可。

若表格的指标栏存在多个指标字段，则在表格属性中可分别设置他们的颜色和形状，也可统一进行条件设置。如下图，“合同金额”和“购买数量”字段在表格属性处分别存在字段颜色和图标标记的设置处，也存在“全部”的设置，即对两个字段统一的条件设置。

表格属性在线视频学习请查看【表格属性】


表格组件样式- FineReport帮助文档|报表开发|报表使用|学习教程

表格组件样式

1、描述

表格组件样式在线视频学习请查看【表格样式】

表格的组件样式包括标题、字体、格式、背景等的设置，通过这些设置可以调整表格的显示样式。

注：如果浏览器设置了最小字体，而仪表板图表中设置的最小字体小于浏览器的最小字体，那么以浏览器为准，比如说chrome浏览器的最小字体为12号，图表设置的字体大小为10号，在chrome下查看图表时，图表字体显示为12号，而非10号，故此时需要修改浏览器字体大小。

2、标题

标题设置包含了是否显示标题、标题内容和标题字体样式的设置，分组表、交叉表、明细表均可设置。

默认组件标题为勾选显示，若不想显示，去掉勾选即可；在标题的内容框可以修改标题文字和字体样式。如下图，点击内容框下的按钮对标题进行详细设置，支持对标题中的各个字符分别设置显示效果。

3、标题栏

标题栏可以设置表格组件中标题栏的背景，包含两种类型：颜色和图片，分组表、交叉表、明细表均可设置。

在勾选显示标题的情况下，对组件标题栏的背景也可以进行设置，包括颜色和图片。颜色设置有自动、透明和具体颜色的选择；

图片可以选择上传背景图片。

4、表格字体

表格字体可以设置表格中字体的样式，包含自动和自定义两种，分组表、交叉表、明细表均可设置。

自动为FineBI默认的表格字体样式，自定义可分别设置表格的表头和表身字体，表身又可单独设置维度和指标字体在表格中的显示位置：居左、居中和居右。

5、风格

风格可以设置表格的展示类型、风格和主题色，分组表、交叉表均可设置，明细表只能设置展示风格和主题色。

分组表和交叉表的显示类型包含多列展示和树状展示，效果分别如下所示：

表格展示风格有三种，分别对应如下效果：

主题色可修改表格展示时的背景颜色，同样可选择自动、透明或具体颜色。

6、合计行/列

合计行/列可以设置是否显示、显示内容和合计方式，仅分组表、交叉表可以设置。

分组表因为不存在列维度，因此合计行/列设置时仅能设置合计方式，默认显示内容为行合计；合计方式包含自动和自定义两种。

交叉表可以选择行、列、行/列为合计显示内容，合计方式也是包含自动和自定义两种。

合计行/列的显示内容分别对应如下：

合计方式自动即根据指标的汇总方式自动显示，也可自定义合计的汇总方式，如下图，为合同金额的合计自定义求平均，则图表中的合同金额合计行均为求平均的值。

7、格式

格式可以设置表格的行高、分页行数、是否显示序号、是否展开行表头节点，分组表、交叉表均可设置，明细表仅能设置行高、是否显示序号和总行数。

行高设置的是表格中的行间距；

分页行数设置表格每一页显示多少行，超过该行数就到下一页显示。

显示序号勾选后在表格增加一列，第一列用于显示序号信息，按顺序排列。

展开行表头节点表示展开表格分组的所有表头节点，如下图，分组中的表头节点全部为展开状态。

除了勾选展开行表头节点外，也可直接点击表格最上方的“+”展开所有的行/列查看，如下图：

注：该点击展开的方式仅支持查看展开数据，并不能保存展开所有行表头节点的设置，刷新以后仍然为收起的状态。

8、背景

背景可以设置表格组件的整体背景，分为颜色和图片两种，分组表、交叉表、明细表均可设置。

表格组件的背景颜色同样可以设置自动、透明和具体颜色。

背景图片可以选择自行上传图片作为表格背景。

9、交互属性

交互属性可以设置是否冻结表格维度和是否联动传递过滤条件，分组表、交叉表均可设置，明细表仅能设置是否冻结表格维度。

冻结表格维度是指，将表格的维度表头冻结起来，即冻结行表头。当数据过多，有横向滚动条的时候，滚动查看指标字段的时候，左边维度字段还停留在原来的位置，可以清晰的知道每行数据的具体含义。

联动传递过滤条件表示在设置了组件联动后传递过滤条件至其他组件，默认为勾选状态；若不想要传递过滤条件，将勾选去掉即可实现。

表格组件样式在线视频学习请查看 【表格样式】


表格列宽等分- FineReport帮助文档|报表开发|报表使用|学习教程

表格列宽等分

1、列宽等分

分组表、交叉表、明细表均支持列宽等分功能，列宽等分表示将表格的列宽度平均分配，每一列都是相同的宽度。可在两个地方设置：组件的详细设置界面和仪表板中表格组件功能选项中。

组件详细设置界面：

仪表板中的表格组件：

使用上述两种方式均可以点击设置列宽等分。设置完成后，无论组件的宽度如何变化，每一列的宽度均根据组件宽度平均分配。


图表组件- FineReport帮助文档|报表开发|报表使用|学习教程

图表组件

1、描述

FineBI除了可以用表格来分析各个指标并展示数据外，还可以用图表来进行指标分析，相较于表格，图表分析数据看起来更加直观。FineBI能创建柱形图、点图、热力点图、线型图、面积图、矩形块图、饼图、文本图、填充地图、漏斗图、仪表盘等，常用的图表效果有KPI指标卡、颜色表格、分组表格、迷你图、热力区域图、分区柱形图、堆积柱形图、多系列柱形图、对比柱状图、瀑布图、分区折线图、多系列折线图、折线雷达图、范围面积图等，详细介绍请参考下面链接。

图表组件在线视频学习请查看【图表整体介绍&&图表属性介绍】

2、创建图表

创建柱形图

创建点图

创建热力点图

创建线形图

创建面积图

创建矩形块图

创建饼图

创建文本图

创建填充地图

创建漏斗图

创建仪表盘图

3、图表设置

图形属性

组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

4、常用图表效果

KPI指标卡

颜色表格

分组表格

迷你图

热力区域图

分区柱形图

堆积柱形图

多系列柱形图

对比柱状图

瀑布图

分区折线图

多系列折线图

折线雷达图

范围面积图

组合图

散点图

聚合气泡图

玫瑰图

区域地图

点地图

流向地图

热力地图

矩形树图

词云


创建柱形图- FineReport帮助文档|报表开发|报表使用|学习教程

创建柱形图

1、描述

柱形图是一种用来显示一段时期内数据的变化或者描述各项之间的比较的图表，用来强调数据随时间或其他条件的变化。下面我们介绍在FineBI中如何创建省份-销售额柱形图。

2、创建柱形图步骤

1、新建仪表板并选择添加组件，选择销售DEMO业务包中的地区数据分析自助数据集，如下图：

2、拖拽维度下的字段“省份”至横轴，拖拽指标下的字段“合同金额”至纵轴，如下图：

3、此时图形属性下默认为自动即为柱形图，可点击选择柱形图，如下图：

4、此时在图表预览处即可看到创建的柱形图。

此时柱形图我们即创建完毕，柱形图还支持颜色、大小、标签、提示、细粒度、组件样式等的设置。详细请参考图形属性和图表组件样式。

同时在图表的横纵轴还可拖入多个维度和指标字段来显示复杂的柱形图，比如再为横轴拖入“城市”字段，纵轴拖入“回款金额”字段，则横轴分层显示维度，指标在图表中叠加显示。

若想在纵轴分类显示各个城市的指标，可将“城市”字段拖入纵轴中，如下图所示：

若想要显示条形图，在横纵轴处点击选择交换横纵轴即可，如下图，将鼠标悬浮在横纵轴处，点击交换按钮。

横纵轴字段即交换显示，图表显示为条形状。

柱形图除上述介绍外，还可进行图形属性、样式、图表排序、分组、过滤、设置轴、汇总方式、快速计算等的设置，创建成复杂的柱形图表，详细请查看下面链接。

图形属性

图表组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

图表钻取


创建点图- FineReport帮助文档|报表开发|报表使用|学习教程

创建点图

1、描述

点图用来显示不同数据点之间的关系，用来比较在不均匀时间段内的走势。同时可以引入第三个数据变量，用来表示点的大小或者渐变颜色的深浅，从而突出点分布的情况。

2、创建点图步骤

1、新建仪表板并选择添加组件，选择销售DEMO业务包中的地区数据分析自助数据集，如下图：

2、拖拽维度下的字段“合同签约时间”至横轴，拖拽指标下的字段“合同金额”至纵轴，如下图：

切换合同签约时间的时间维度为年月，如下图：

3、在图形属性下的形状选择栏选择点，如下图：

4、此时在图表预览处即可看到创建的点图。

此时点图我们即创建完毕，点图还支持颜色、大小、形状、标签、提示、细粒度、组件样式等的设置。详细请参考图形属性 和 图表组件样式 。

图表横纵轴同样支持拖入多个字多维度多指标显示，比如我们想显示不同年份下的不同省份合同和回款金额，就可以再拖入“省份”和“回款金额”字段分别到横纵轴。

同样也支持交换横纵轴的字段显示，点击横纵轴处的交换横纵轴的字段按钮即可。

点图除上述介绍外，还可进行图形属性、样式、图表排序、分组、过滤、设置轴、汇总方式、快速计算等的设置，创建成复杂的点图表，详细请查看下面链接。

图形属性

图表组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

图表钻取


创建热力点图- FineReport帮助文档|报表开发|报表使用|学习教程

创建热力点图

1、描述

热力点图用来表示当前坐标范围内的各个点的权重情况，如下图展示了用户类型及年龄的分布情况。

2、创建热力点图步骤

1、新建仪表板并选择添加组件，选择互联网行业业务包中的用户信息维度表，拖拽维度下的字段“用户类型”至横轴，“年龄”至纵轴，如下图：

2、在图形属性下的形状选择栏选择热力点，如下图：

3、此时图表预览处即出现热力点的显示，但该热力点未显示分布在该年龄和用户类型中的用户数，因此，我们将指标下的“记录数”字段拖入图形属性中的热力色下，表示图表中的热力色根据用户的人数来显示。

单击图形属性下的热力色栏，可设置热力色的渐变方案，如下图：

4、在图表预览处即可看到创建好的热力点图。

热力点图除了支持热力色外，还支持大小、标签、提示、细粒度、组件样式等的设置。详细请参考 图形属性 和 图表组件样式 。

图表支持交换横纵轴的字段显示，点击横纵轴处的交换横纵轴的字段按钮即可。横纵轴同样支持拖入多个字段多维度多指标展示，比如再按照性别展示分布情况。

热力点图除上述介绍外，还可进行图形属性、样式、图表排序、分组、过滤、设置轴、汇总方式、快速计算等的设置，创建成复杂的热力点图表，详细请查看下面链接。

图形属性

图表组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

图表钻取


创建线形图（折线图、曲线图、垂直图）- FineReport帮助文档|报表开发|报表使用|学习教程

创建线形图（折线图、曲线图、垂直图）

1、描述

线图是用来更清晰的查看数据的变化趋势，对数据进行汇总分析查看。如下图展示了随着时间年月的注册人数变化。

2、创建线形图步骤

1、新建仪表板并选择添加组件，选择互联网行业业务包中的用户信息维度表，拖拽维度下的字段“注册日期”至横轴，指标下的字段“记录数”至纵轴，如下图：

2、因为我们想看注册人数随年月的变化，因此切换横轴注册日期为年月，如下图：

3、此时图形属性下的自动在图表中即显示为线图，我们也可以选择将其切换为线，如下图：

4、在图表预览处即可以看到线形图的效果。

线形图支持颜色、大小、连线、标签、提示、细粒度、组件样式等的设置。详细请参考图形属性 和 图表组件样式 。

图表支持交换横纵轴的字段显示，点击横纵轴处的交换横纵轴的字段按钮即可。横纵轴同样支持拖入多个字段多维度多指标展示，比如再按照性别分别查看注册人数的变化。

线形图除上述介绍外，还可进行图形属性、样式、图表排序、分组、过滤、设置轴、汇总方式、快速计算等的设置，创建复杂的图表，详细请查看下面链接。

图形属性

图表组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

图表钻取


创建面积图- FineReport帮助文档|报表开发|报表使用|学习教程

创建面积图

1、描述

面积图可用来展示持续性数据，可很好地表示趋势、累积、减少以及变化。面积图更擅于展示部分和整体之间的关系。如下图展示了浏览量随日期的变化。

2、创建面积图步骤

1、新建仪表板并选择添加组件，选择互联网行业业务包中的访问统计事实表，拖拽维度下的字段“统计日期”至横轴，指标下的字段“浏览量”至纵轴，如下图：

2、因为我们想看浏览量随年月的变化，因此切换横轴统计日期为年月，如下图：

3、在图形属性下的形状选择栏选择面积图，如下图：

4、在图表预览处即可以看到创建好的面积图的效果。

面积图支持颜色、标签、提示、细粒度、组件样式等的设置。详细请参考 图形属性 和 图表组件样式 。

图表支持交换横纵轴的字段显示，点击横纵轴处的交换横纵轴的字段按钮即可。横纵轴同样支持拖入多个字段多维度多指标展示，比如再按照访问平台查看不同平台的浏览量的变化。

面积图除上述介绍外，还可进行图形属性、样式、图表排序、分组、过滤、设置轴、汇总方式、快速计算等的设置，创建复杂的图表，详细请查看下面链接。

图形属性

图表组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

图表钻取


创建矩形块图- FineReport帮助文档|报表开发|报表使用|学习教程

创建矩形块图

1、描述

矩形块图以矩形块的形式展示不同数据点的分布情况，矩形块图可以颜色或矩形块的大小来展示对应指标值的大小。如下图展示了不同访问平台、访问阶段的访问时间分布。

2、创建矩形块图步骤

1、新建仪表板并选择添加组件，选择互联网行业业务包中的访问阶段统计事实表，拖拽维度下的字段“访问平台”至横轴，“访问阶段”字段至纵轴，如下图：

2、在图形属性下的形状选择栏选择矩形块，如下图：

3、此时图表预览处即出现矩形块的显示，但该矩形块未显示分布在访问阶段和平台的访问时间，因此，我们将指标下的“总停留时间”字段拖入图形属性中的颜色下，表示图表中的颜色根据访问的停留时间显示。

除了将“总停留时间”指标字段放在颜色属性中，也可将其放在大小属性中，表示图表中矩形块的大小根据访问的停留时间显示。

4、在图表预览处即可看到创建好的矩形块图。

矩形块图支持颜色、大小、标签、提示、细粒度、组件样式等的设置。详细请参考 图形属性 和 图表组件样式 。

图表支持交换横纵轴的字段显示，点击横纵轴处的交换横纵轴的字段按钮即可。横纵轴同样支持拖入多个字段多维度多指标展示，比如再按照年份展示分布情况。

矩形块图除上述介绍外，还可进行图形属性、样式、图表排序、分组、过滤、设置轴、汇总方式、快速计算等的设置，创建成复杂的图表，详细请查看下面链接。

图形属性

图表组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

图表钻取


创建饼图- FineReport帮助文档|报表开发|报表使用|学习教程

创建饼图

1、描述

饼图是用来展示每一数值相对于总数值的大小，FineBI中的饼图可根据横纵轴展示不同维度分布情况，也可根据半径、角度等展示每个分组相对总值的占比大小。

2、创建饼图步骤

1、新建仪表板并选择添加组件，选择互联网行业业务包中的访问阶段统计事实表，拖拽维度下的字段“访问平台”至横轴，指标下的字段“总停留时间”至纵轴，如下图：

2、在图形属性下的形状选择栏选择饼图，如下图：

3、在图表预览处即可以看到创建好的饼图的效果，为在横纵轴中显示对应维度的指标大小。

4、若想要按照半径角度等显示不同维度的指标大小，可以在图表类型中选择“饼图”切换，如下图，则原先在横纵轴的维度指标字段将默认切换到图形属性的颜色和角度中，在图表预览处可看到对应饼图的效果。

面积图除了上面的颜色和角度外，还支持半径、标签、提示、细粒度、组件样式等的设置。详细请参考 图形属性 和 图表组件样式 。

图表支持交换横纵轴的字段显示，点击横纵轴处的交换横纵轴的字段按钮即可。横纵轴同样支持拖入多个字段多维度多指标展示，比如再按照访问阶段查看不同平台的浏览量的变化，可将“访问最后阶段”字段拖入横轴中。

饼图除上述介绍外，还可进行图形属性、样式、图表排序、分组、过滤、设置轴、汇总方式、快速计算等的设置，创建成复杂的图表，详细请查看下面链接。

图形属性

图表组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

图表钻取


创建文本图- FineReport帮助文档|报表开发|报表使用|学习教程

创建文本图

1、描述

文本图用于直接展示数值的数字大小，比如下图展示了不同访问平台、不同访问阶段的访问停留时间。

2、创建文本图步骤

1、新建仪表板并选择添加组件，选择互联网行业业务包中的访问阶段统计事实表，拖拽维度下的字段“访问平台”至横轴，“访问阶段”字段至纵轴，如下图：

2、在图形属性下的形状选择栏选择文本，如下图：

3、此时图表中没有任何文本的显示，因为我们还未给文本图形属性下的文本栏赋值。因为要展示的是访问时间，因此我们将指标下的字段“总停留时间”拖入文本栏，则图表中即可显示对应平台和阶段的访问时间数值。

单击该文本框范围，可自定义设置文本内容的格式。

文本图除了文本外，还支持颜色、大小、提示、细粒度、组件样式等的设置。详细请参考 图形属性 和 图表组件样式 。

图表支持交换横纵轴的字段显示，点击横纵轴处的交换横纵轴的字段按钮即可。横纵轴同样支持拖入多个字段多维度多指标展示，比如再按照年份列出停留时间数值。

文本图除上述介绍外，还可进行图形属性、样式、图表排序、分组、过滤、设置轴、汇总方式、快速计算等的设置，创建成复杂的图表，详细请查看下面链接。

图形属性

图表组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

图表钻取


创建填充地图- FineReport帮助文档|报表开发|报表使用|学习教程

创建填充地图

1、描述

在需要按照地区分析数据时，可以使用填充地图进行展示。填充地图可以按照国家、省、市、区甚至一些定制的地图展示。如下图：

2、创建填充地图步骤

1、新建仪表板并选择添加组件，选择销售DEMO业务包中的地区数据分析自助数据集，单击选择维度下省份字段转换为地理角色省/市/自治区，如下图：

2、匹配好数据后生成省份（经度）、省份（纬度）字段，将字段分别拖至横轴和纵轴，如下图：

3、图表中自动显示地图，但对应的省份为文本显示。在图形属性下的形状选择栏选择填充地图，如下图：

4、此时图表中即以颜色的填充来对应显示数据包含的省份。如果想要填充的颜色根据指标来显示，可将指标拖入图形属性下的颜色栏。比如，我们将合同金额拖入颜色栏，则地图中的颜色填充即按照合同金额大小来显示颜色变化。

除了上述的填充颜色外，还可以使用矩形块等形状来显示不同颜色属性，如下图，在图形属性下选择矩形块，则地图中的不同省份则按照合同金额显示三维矩形块的颜色。

填充地图除上述介绍外，还可进行图形属性、样式、图表排序、分组、过滤、设置轴、汇总方式、快速计算等的设置，创建成复杂的图表，详细请查看下面链接。

图形属性

图表组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

图表钻取


创建漏斗图- FineReport帮助文档|报表开发|报表使用|学习教程

创建漏斗图

1、描述

漏斗图是展示每一阶段的占比情况，提供转化率、到达率分析的一种图表类型。

2、创建漏斗图步骤

1、新建仪表板并选择添加组件，选择互联网行业业务包中的访问阶段统计事实表，拖拽维度下的字段“访问最后阶段”至图形属性下的细粒度栏，指标下的“总停留时间”字段至图形属性下的大小栏，如下图：

漏斗图，如下图，则图表预览处即出现访问阶段对应访问时间的漏斗图。

3、若想要多维度展示不同访问阶段的时间漏斗，可将字段拖入横纵轴中，比如我们想要查看不同访问平台的访问阶段漏斗图，就可以将维度下的“访问平台”字段拖入横轴中，如下图：

4、除了上述介绍的创建漏斗图步骤外，还可以直接将“访问最后阶段”和“总停留时间”字段分别拖入横纵轴中，并在图表类型处选择漏斗图，如下图：

FineBI将自动将横纵轴的字段切换到图形属性的细粒度及大小处，并显示漏斗图。

图形属性

图表组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

图表钻取


创建仪表盘图- FineReport帮助文档|报表开发|报表使用|学习教程

创建仪表盘图

1、描述

仪表盘组件，就是作为单个指标数值的进度分析，也可以单个指标通过维度分开，使用多个仪表进行同时展示。

2、创建仪表盘步骤

1、新建仪表板并选择添加组件，选择互联网行业业务包中的访问阶段统计事实表，拖拽指标下的“总停留时间”字段至纵轴，如下图：

2、在图形属性下的形状选择栏选择仪表盘，如下图，则图表预览处即以仪表盘的形状在横纵轴中展示拖入的指标字段。

3、若想要第一章中的样式展示仪表盘，可在图表类型处选择仪表板切换，或者直接将指标字段“总停留时间”拖至图形属性下的指针值栏，如下图：

仪表盘类型

在图形属性中还可以选择仪表盘类型，直接点击切换即可。

比如我们选择切换为试管型仪表盘（竖形），如下图：

指针值

指针值表示当前仪表盘中的指标值，可拖入指标或维度字段。在多指针仪表盘时，可拖入多个字段，多个字段对应仪表盘中的多个指针。如下图：

目标值

目标值表示当前仪表盘中最大值，可拖入指标或维度字段进行映射，只能拖拽一个字段。若不拖入字段，则为默认值；同时也可以单击目标值框，选择自定义并输入值，如下图，输入目标值为1000，则仪表盘中的最大值显示为1000。

图形属性

图表组件样式

图表排序

图表分组

图表过滤

图表设置轴

图表汇总方式

图表快速计算

图表数值格式

图表特殊显示

图表设置分析线

图表开启堆积

图表钻取


图形属性- FineReport帮助文档|报表开发|报表使用|学习教程

图形属性

1、描述

图形属性在线视频学习请查看 【图表整体介绍&&图表属性介绍】

图形属性除了可以选择创建的图表类型外，还支持对图表中的各种属性进行设置，包括颜色、大小、标签、提示、细粒度、连线、半径、角度、文本、仪表盘类型、指针值、目标值等，不同图表能够设置的属性不一样。图表中可设置的形状包含柱形图、点、热力点、线、面积、矩形块、饼图、文本、填充地图、漏斗图、仪表盘，选择不同的形状对应可设置的属性也不一致，下面我们对属性进行详细介绍。

2、颜色

颜色属性为所有类型的图表均支持的功能。颜色属性支持单击直接进行颜色的设置，或者拖入一个维度或指标进行设置。直接单击进行设置是对图表中的所有的元素统一进行的颜色设置，均设置成同一个颜色；而拖入维度/指标后，组件中元素则按照当前的字段进行颜色的变化设置。

2.1 单击进行设置

比如柱形图，单击图形属性下的颜色栏，出现指定颜色的设置，如下图：

颜色的设置不仅包含指定颜色，还包括效果、不透明度和边框的设置，其中效果的开启关闭效果如下图所示：

不透明度即设置该组件的不透明程度，比如将其设置为30%，则柱状图的效果如下图所示：

边框为设置组件元素的边框颜色，如上图中，设置边框为绿色，则在柱形图中柱子的外围有绿色边框。

2.2 拖入字段

将一个维度/指标字段拖入颜色栏中，即可根据字段的内容分类显示组件中元素的颜色（仅支持拖入一个字段，若拖入多个，后拖入的将替换之前的字段）。

1）拖入维度字段

在拖入维度字段以后，可以对字段内容进行对应颜色选择。比如拖入“访问平台”字段，则单击颜色框以后可进行访问平台对应字段Android、IOS和移动浏览器分别设置指定颜色，如下图：

此时同样可以设置图表的效果、不透明度和边框颜色。

2）拖入指标字段

在拖入指标字段后，可以按照指标的大小进行颜色的显示，与维度字段的区别为是设置的渐变的颜色。如下图，我们将“总停留时间”字段拖入颜色栏，则单击颜色框以后可以进行渐变颜色的设置，包括渐变类型、渐变方案、渐变区间等的设置。

此时也同样可以设置图表的效果、不透明度和边框颜色。

3、大小

大小属性为设置组件中元素的大小，仅面积图、饼图、填充地图不支持该属性，其余图表类型均支持。大小属性也支持单击进行设置，或者拖入一个维度或指标进行设置。直接单击是对所有的组件元素大小的调整；而拖入一个维度或指标后，则可以按照维度/指标的字段值进行对应大小的显示。

3.1 单击进行设置

选择不同图表形状，对应设置的大小名称也不同，柱形图设置的就是柱宽和圆角，点、热力点、仪表盘设置的均为半径，线设置的为线宽，矩形块、漏斗图设置的为宽度，文本设置的为字号。比如我们在柱形图中直接单击大小栏，即出现大小设置窗口，如下图：

拖拽柱宽可直接调整柱子的宽度大小，圆角则是调整柱子四个角的弧度，如下图：

其他图表类型的大小均为同样方式拖拽调整，此处不再赘述。

3.2 拖入字段

将一个维度/指标字段拖入大小栏中，即可根据字段的内容分类显示组件中元素的大小（仅支持拖入一个字段，若拖入多个，后拖入的将替换之前的字段）。

1）拖入维度字段

在拖入维度字段后，图表中的元素即按照维度字段的分类进行显示，单击该大小栏，同样可拖拽调整组件元素的大小。比如我们为点图的大小栏拖入“访问平台”维度字段，则图表中的点即按照访问平台的分类进行对应点大小的显示，最小的点表示Android平台，其次为IOS平台，最大的点为移动浏览器。单击该大小栏，可直接调整图表中点的大小，对应调整的为图表中所有点的半径大小。

2）拖入指标字段

在为大小栏拖入指标字段后，图表中的元素即按照指标字段的数值大小进行显示，单击该大小栏，同样可拖拽调整组件元素的大小。比如我们为点图的大小栏拖入“总停留时间”指标字段，则图表中的点即按照停留时间的大小对应显示点大小。单击该大小栏，可以调整点的半径大小，而该半径大小的调整对应的是图表中的所有点的半径。

4、形状

形状属性为点类型的图表中支持的设置。形状属性支持单击直接进行点形状的选择，或者拖入一个维度或指标进行设置。直接单击进行设置是对所有的点进行形状选择，所有点均设置成统一的形状；而拖入一个维度或指标后，则可以按照维度/指标的字段进行形状的选择。

4.1 单击进行设置

单击图形属性下的形状栏，出现形状类型的选择，如下图：

形状类型包括几何、趋势、正误、红绿灯，每种类型下均有多种点形状可以选择。

根据需要选择点形状，则图表中所有的点均为选择的形状，比如我们选择正误，图表中的点均为正误的点形状。

4.2 拖入字段

将一个维度/指标字段拖入形状栏，即可根据字段的内容分类显示点的形状（仅支持拖入一个字段，若拖入多个，后拖入的将替换之前的字段）。

1）拖入维度字段

在拖入维度字段以后，可以进行点形状的选择。比如拖入省份字段，选择趋势点类型，则图表中的点则按照省份类型显示趋势下的各个点形状，如下图：

单击字段前的点形状，并在上面选择指定类型，可修改指定省份的点形状。

2）拖入指标字段

在拖入指标字段后，同样可以进行点形状的选择，区别是点形状按照指标字段的数值区间进行分类。比如拖入记录数字段后，选择正误点类型，则图表中的点按照默认的记录数数值区间类型进行点形状分类，如下图：

也可进行自定义的形状区间分类，如下图，勾选自定义，并进行区间个数、点形状和对应区间值的设置即可。

5、标签

标签属性为图表中元素增加文字说明的属性，除文本外的所有图表类型均支持设置该属性。标签属性支持单击直接进行标签的设置，或者拖入维度或指标字段进行设置。直接单击设置可直接为组件中的所有元素增加文字标签；而拖入维度或指标字段后，则可以按照维度/指标的字段值进行对应标签的显示。

5.1 单击进行设置

直接单击图形属性下的标签栏，出现标签栏设置界面。可选择勾选是否显示标签，输入内容格式，设置标签位置和标签显示，是否允许标签重叠及不允许重叠时对应的方案。

单击内容格式下的按钮进入内容编辑界面，可直接输入想要显示标签的文字并设置字体的样式，分为自动和自定义两种。

5.2 拖入字段

将维度/指标字段拖入标签栏，即可根据字段的内容显示标签的文字内容，支持拖入多个字段显示多个标签。

在拖入维度/指标字段后，标签设置中的内容格式将变为拖入的字段，图表中的元素将对应显示字段的对应内容。比如我们为线图拖入“访问平台”和“总停留时间”字段，则在线图中的对应节点处即显示对应的平台和停留时间值。

单击标签栏可以对该标签内容进行设置，同样可选择勾选是否显示标签，输入内容格式，设置标签位置和标签显示，是否允许标签重叠及不允许重叠时对应的方案。点击内容格式下的按钮后进入内容编辑界面，右上角的按钮可点击选择当前已拖入标签栏的字段；对标签文字也可以选择自动或自定义设置字体样式；左下角的按钮可点击恢复默认设置。如下图：

设置完成后点击确认保存该标签内容的设置即可。

6、提示

提示属性设置的为图表中鼠标悬浮在组件元素中提示的内容，默认显示为当前图表中已拖拽的所有字段名和对应的值。提示属性同样支持单击直接设置和拖入维度/指标字段进行设置。直接单击设置可直接为组件中的提示设置内容格式和背景色；而拖入维度或指标字段后，则可以根据维度/指标的字段值增加提示的内容显示。

6.1 单击进行设置

直接单击图形属性下的提示栏，出现提示栏设置界面。可对内容格式、背景色进行编辑和是否勾选显示维度下所有提示，若勾选显示维度下所有提示，则内容格式和背景色将不可编辑，均直接显示所有提示；

比如，我们为上面的线图设置提示栏为总停留时间的数值，则点击内容格式下的按钮进入文本编辑后，仅保留“总停留时间（求和）”一项字段，并设置背景颜色，则在图表中将鼠标悬浮在节点处，可以看到刚刚设置好的提示内容。

6.2 拖入字段

将维度/指标字段拖入提示栏，即可根据字段的内容显示提示的文字内容，支持拖入多个字段显示多个提示内容。

1）拖入维度字段

在拖入维度字段后，图表中的元素即按照该维度的字段内容进行分类，且提示内容中将增加该维度字段和对应值的说明。比如我们为点图的提示栏拖入“访问平台”字段后，点图中的点即按照不同访问平台的分类进行细粒度的展示，同时提示内容也增加了每个点所对应的访问平台。

单击提示栏同样可以对提示内容格式及背景等做编辑。

2）拖入指标字段

在提示栏拖入指标字段后，图表中的元素并不会根据指标值进行分类，而是在每个元素的提示栏中增加该项指标的提示说明。比如我们同样为点图增加指标字段“记录数”，则内容格式中将增加该指标项记录数和对应数值，在图表的对应点中我们也可以看到该项提示。

7、细粒度

细粒度指的是当前图表展示时，展示的数据最细维度，细粒度属性用来细分图形的维度。所有图表类型均支持该属性，可拖拽多个维度或指标字段至该属性中，拖拽后，图表中元素会按照细粒度的维度来细分图形。且细粒度中的指标字段和维度字段，会默认添加到数据点提示中。

比如我们为矩形块图拖入细粒度“访问平台”字段，则原先的矩形块细分成了三块，分别为Android、IOS和移动端浏览器。

8、连线

连线指的是折线图每个细粒度点的连接顺序。连线为线形图中仅有的属性，该属性分别支持单击直接设置和拖入一个维度/指标字段进行设置。若未拖入字段，则以横纵轴中最小维度为连线依据，按照顺序连线；如果没有维度字段，则以横轴中的指标字段为连线依据，按照指标值大小顺序连线；如果横坐标没有指标字段，则以纵坐标中的指标字段为连线依据。如果拖拽了维度或指标字段到连线属性中，则同一分区内，拖拽字段外其他所有细粒度相同的点按照拖拽字段的内容顺序连成一根线。

8.1 单击进行设置

直接点击线形图中图形属性下的连线栏，出现连线设置框，可选择是否转化为雷达图、线型的类型和是否有标记点，如下图：

8.2 拖入字段

将一个维度/指标字段拖入连线栏，即可根据拖拽字段的内容顺序连成一根线（仅支持拖入一个字段，若拖入多个，后拖入的将替换之前的字段）。

比如我们拖拽了维度字段“访问平台”后，则图表中的线即按照访问平台的内容连成一根线。

若拖拽指标字段“总停留时间”至连线栏，则图表中的线即按照停留时间连成一根线。

在为连线栏拖入字段后，均可单击该连线栏进行是否转化为雷达图及线型、标记点的设置。

9、半径、角度

半径、角度为饼图所特有的属性，半径指的饼图的半径大小，角度指的是饼图每个扇形的弧度大小。半径支持直接单击进行设置或者拖入一个维度或指标字段，角度则只支持拖入字段进行设置。

9.1 半径
单击进行设置

直接单击图形属性下的半径栏，可直接设置饼图的半径大小和内径占比，半径大小可直接调整饼图的大小，而内径占比则调整饼图的圆环宽度（即中间内径的大小）。

拖入字段

在为半径栏拖入字段后，若拖入维度字段，则图表中的饼图元素根据维度的分类进行细分，单击该半径栏，可以选择是否共用半径和半径大小、内径占比的设置。其中在共用半径的情况下，饼图的所有弧度半径相同；在不共用半径的情况下，每个弧度的半径不相同，每个分类对应不同的半径大小。如下图：

若为半径栏拖入指标字段，单击该半径栏，同样可以选择是否共用半径和半径大小、内径占比的设置。在共用半径的情况下，饼图的所有弧度半径相同，圆半径大小取决于半径属性中字段的汇总方式；在不共用半径的情况下，每个弧度的半径不相同，每个弧度的半径大小取决于拖拽到半径属性中的指标字段。

9.2 角度

角度为饼图每个扇形的弧度大小，仅支持拖入字段设置，在拖入字段后，弧度即按照对应字段值的大小进行显示。比如在拖入“总停留时间”字段后，饼图中弧度大小就对应每个阶段停留的时间大小。

图形属性在线视频学习请查看 【图表整体介绍&&图表属性介绍】


图表组件样式- FineReport帮助文档|报表开发|报表使用|学习教程

图表组件样式

1、描述

图表组件样式在线视频学习请查看【图表样式】

图表的组件样式包括标题、图例、轴线、横向网格线、纵向网格线、背景的设置，通过这些设置可以调整图表的显示样式。

注：如果浏览器设置了最小字体，而仪表板图表中设置的最小字体小于浏览器的最小字体，那么以浏览器为准，比如说chrome浏览器的最小字体为12号，图表设置的字体大小为10号，在chrome下查看图表时，图表字体显示为12号，而非10号，故此时需要修改浏览器字体大小。

2、标题

标题设置包含了是否显示标题、标题内容和标题字体样式的设置。

默认组件标题为勾选显示，若不想显示，去掉勾选即可；在标题的内容框可以修改标题文字和字体样式。如下图，点击内容框下的按钮对标题进行详细设置，支持对标题中的各个字符分别设置显示效果。

标题中支持显示动态标题，即在标题栏的右上角按钮选择当前仪表板已添加的字段到标题中后，点击对应组件的对应字段，该标题将动态显示字段值。

3、标题栏

标题栏为设置组件标题背景的地方，支持设置颜色和上传图片作为标题背景。

4、图例

在图形属性的颜色、大小和形状栏中拖入字段以后，图表中的图例会自动生成，且每个字段对应一个图例，如下图：

不同的图表类型可设置的图例不同，柱形图可设置颜色和大小图例，点图可设置颜色、大小、形状图例，热力点可设置热力色、大小图例，线形图可设置颜色大小图例，面积图仅能设置颜色图例，矩形块图能设置颜色和大小图例，饼图能设置颜色和半径（即大小）图例，文本图能设置颜色和大小图例，填充地图仅能设置颜色图例，漏斗图能设置颜色和大小图例，仪表盘图能设置颜色和大小图例。

除了设置图例字段外，在组件样式中的图例下，可对图例显示进行详细设置，包括是否显示图例、图例中字体的设置、图例的边框及位置。

其中字体支持自动和自定义两种，自定义可修改显示字体的格式、大小、加粗都属性。

默认图例的位置都为右方，可点击切换成上、下、左；图例边框可设置透明、默认或指定的颜色。

5、轴线

轴线指的是分区线及坐标轴线，在组件样式下可选择是否显示及显示的样式。

轴线显示与显示的效果如下图所示：

轴线可设置的样式为线型、线宽大小和颜色，根据需要进行切换设置即可。

6、横向网格线

横向网格线与轴线类似，可设置是否显示及显示的线样式，显示样式可设置线型、线宽大小和颜色。

7、纵向网格线

纵向网格线也与轴线类似，可设置是否显示及显示的线样式，显示样式可设置线型、线宽大小和颜色。

8、背景

组件样式下的背景栏设置的为该组件的背景，可选择颜色和上传图片，

若为地图形式展示，则可进行gis背景设置，可以选择FineBI内置的各种gis背景，也可不使用gis背景。如下图：

9、自适应显示

自适应显示为设置组件中图表自适应方式的地方，包含四种自适应方式：标准适应、整体适应、宽度适应和高度适应，默认为标准适应。

标准适应为FineBI根据组件图表的最佳视觉比例的展示效果，可拖拽调整横纵方向轴区间大小；宽度适应为图表在宽度方向（即横向）填充整个图表预览区域，纵向采取最佳比例，因此纵向可能出现滚动条，宽度适应时不可调整横轴的轴区间宽度；高度适应为图表在高度方向（即纵向）填充整个图表预览区域，横向采取最佳比例，因此横向可能出现滚动条，高度适应时不可调整纵轴的轴区间高度；整体适应为图形全部展示在图表区内，横向和纵向都填充满整个图表预览区域，不会出现滚动条，仅可调整横轴的轴区间高度和纵轴的轴区间宽度。可根据需要选择对应的组件自适应显示方式。

图表组件样式在线视频学习请查看【图表样式】


图表排序- FineReport帮助文档|报表开发|报表使用|学习教程

图表排序

1、描述

图表排序在线视频学习请查看【图表常用分析操作】

图表的排序支持对横纵轴及图形属性中的维度字段设置排序，分为升序、降序和自定义排序三种，自定义排序为自行调整字段值的顺序，其中日期字段仅支持升序降序两种。

2、横纵轴

对横纵轴中的维度字段点击下拉按钮后，可以看到有升序降序设置，选择升序降序依据的字段为当前数据表中的所有维度字段和已拖入的指标字段，如下图：

比如我们按照统计日期进行升序排序，则图表中该横轴的统计日期即按照日期升序。

为纵轴的维度字段访问最后阶段设置按照总停留时间进行升序排序后，在图表中可看到该纵轴分类即按停留时间大小升序，如下图：

横纵轴中的指标字段不支持排序，仅维度字段支持。

3、图形属性

对于在图形属性中拖入的维度字段，同样支持对不同属性对应的值设置排序。比如我们颜色属性下访问平台按照总停留时间进行升序排序，则在图表的柱子中则按照停留时间由小到大根据颜色进行了升序。

图形属性中的指标字段同样不支持排序，仅维度字段支持。

图表排序在线视频学习请查看 【图表常用分析操作】


图表分组- FineReport帮助文档|报表开发|报表使用|学习教程

图表分组

1、描述

图表分组在线视频学习请查看 【图表常用分析操作】

图表的分组支持对横纵轴及图形属性中的维度字段设置分组，默认为相同值为一组，也可进行自定义分组。

2、相同值为一组

相同值为一组即表示该维度字段按照相同的字段值进行分组，比如下面访问平台按照相同值为一组分类，则在图表中可以看到访问平台分为了三类：Android、IOS和移动浏览器，相同的平台分在了一组。

3、自定义分组

自定义分组可自行定义想要的分组类型，比如还是对上面的访问平台进行自定义分组，点击“访问平台”字段的下拉按钮，选择自定义分组，如下图：

4、区间分组设置

当图表中维度字段存在数值维度字段时，可对其进行区间分组设置。该数值字段只能通过 指标转化为维度 的方式，从待分析维度区域中才能拖拽到横纵轴的维度上。比如将合同金额通过指标转换为维度以后，拖拽至横纵轴的维度栏，可选择区间分组设置，如下图：

4.1 自定义

自定义的分组方式可自行设置分组的名称、对应的区间数值大小和分组的数量，如下图：

点击确定保存该自定义分组设置后，图表合同金额处即根据自定义的分组显示字段，如下图：

4.2 自动

自动的分组方式可设置区间间隔，系统自动根据设置的区间间隔、数值最大值、最小值将字段分组，如下图，我们在设置了区间间隔后，系统自动获取了分组数为51组。

确定保存该分组设置，图表合同金额栏即根据自动的分组显示字段，且字段显示为数值区间，如下图：

图表分组在线视频学习请查看【图表常用分析操作】


图表过滤- FineReport帮助文档|报表开发|报表使用|学习教程

图表过滤

1、描述

图表过滤在线视频学习请查看 【图表常用分析操作】

图表的过滤包含三种方式：待分析指标字段的过滤、横纵轴及图形属性的过滤及结果过滤器。待分析指标字段的过滤为明细过滤，表示对原始表中的明细数据进行过滤，可参考指标明细过滤；横纵轴及图形属性的过滤和结果过滤器均为对汇总后的数据进行过滤，其中横纵轴及图形属性的过滤条件均只能选本维度或拖入的指标字段，而结果过滤器可选择当前数据表里的任意字段作为条件设置过滤。下面我们详细介绍一下各种过滤方式。

2、横纵轴及图形属性的字段过滤

横纵轴与图形属性中的字段一样，支持对汇总后的数据进行过滤。维度字段在过滤时只能选择自身和已拖入的指标字段作为条件，指标字段只能选择本身设置条件过滤。比如，我们为访问平台字段设置过滤，点击下拉，选择过滤，如下图：

函数选择添加需要的公式即可。

注：公式中的数值字段需要点击字段选择，手动输入无效。

3、结果过滤器

结果过滤器在添加过滤条件时，直接将想要过滤的字段拖入结果过滤器中并选择过滤添加条件即可。比如对于下面的分区柱形图，我们想要图表中仅展示2016年的数据，就需要为该图表添加过滤条件过滤出2016年的数据，而若在横纵轴或图形属性中添加过滤条件，则必须要将“统计日期”字段拖入图表中显示，不是我们想要的结果。

图表过滤在线视频学习请查看【图表常用分析操作】


图表设置轴- FineReport帮助文档|报表开发|报表使用|学习教程

图表设置轴

1、描述

图表设置轴在线视频学习请查看 【图表常用分析操作】

图表支持对横轴、纵轴的进行文本设置，分为分类轴和值轴两种，维度字段设置的为分类轴，指标字段设置的为值轴。下面我们分类进行详细介绍。

2、分类轴

从待分析区域的维度下拖入的字段可设置分类轴，若是从指标转化为维度的字段也支持分类轴设置。在横纵轴中，点击维度字段的下拉按钮选择设置分类轴，如下图：

3、值轴

从待分析区域的指标下拖入的字段可设置值轴，在横纵轴中，点击指标字段的下拉按钮选择设置值轴，如下图：

使用对数标度（而不是线性标度）的度量，默认情况下勾选以后，将以 10 的幂次来绘制轴标签。

图表设置轴在线视频学习请查看【图表常用分析操作】


图表汇总方式- FineReport帮助文档|报表开发|报表使用|学习教程

图表汇总方式

1、描述

图表汇总方式在线视频学习请查看 【图表常用分析操作】

FineBI中指标的汇总方式包括求和、求平均、求中位数、求最大值、求最小值、求标准差、求方差，默认拖拽指标字段至分析区域后的汇总方式均为求和，可单击指标字段的下拉按钮选择切换汇总方式，如下图：

2、汇总方式说明

默认汇总方式为求和，统计的是按照维度字段进行分组后的指标求和数值，如下图中的“总停留时间”字段，统计了不同访问阶段和不同访问平台分组内的停留时间总和。

按照维度字段分组后的指标求平均，比如为上图中的“总停留时间”字段勾选汇总方式为求平均以后，将统计不同访问阶段和不同访问平台分组内的停留时间均值；

求中位数为取按照维度字段分组后的指标所有数值高低排序后正中间的一个数，比如为上图中的“总停留时间”字段勾选汇总方式为求中位数以后，将统计不同访问阶段和不同访问平台分组内的停留时间所有数值排在正中间的数值；

求最大值为取按照维度字段分组后的指标所有数值中最大的一个数值，比如为上图中的“总停留时间”字段勾选汇总方式为求最大值以后，将统计不同访问阶段和不同访问平台分组内的停留时间最大值；

求最小值为取按照维度字段分组后的指标所有数值中最小的一个数值，比如为上图中的“总停留时间”字段勾选汇总方式为求最小值以后，将统计不同访问阶段和不同访问平台分组内的停留时间最小值；

求标准差为取按照维度字段分组后的指标方差值的算术平方根，比如为上图中的“总停留时间”字段勾选汇总方式为求最标准差以后，将统计不同访问阶段和不同访问平台分组内的停留时间方差值的算术平方根；

求方差为取按照维度字段分组后的指标每个值跟所有值的平均数之差的平方值的平均数，比如为上图中的“总停留时间”字段勾选汇总方式为求最方差以后，将统计不同访问阶段和不同访问平台分组内的停留时间每个数值和所有值平均数之差的平放值的平均数；

图表的汇总方式与表格一致，详细可参考表格汇总方式。

图表汇总方式在线视频学习请查看 【图表常用分析操作】


图表快速计算- FineReport帮助文档|报表开发|报表使用|学习教程

图表快速计算

1、描述

图表快速计算在线视频学习请查看【快速计算】

图表的快速计算支持在前端快速进行对指标项的计算，包括求同期、求环期、求同比、求环比、排名、组内排名、所有值、组内所有值、累计值、组内累计值、当前维度百分比、当前指标百分比的计算方式，默认直接拖入指标字段后没有计算方式。

2、计算方式说明

默认指标项没有计算方式，可以在指标字段的下拉框中选择快速计算，并选择指定计算方式。比如我们为“总停留时间”字段选择计算方式为升序排名，如下图：

则该指标项为根据总停留时间由小到大的排序，指标项即为从1至6，如下图所示：

图表的快速计算支持的计算方式使用与表格一直，详细可参考表格快速计算。

图表快速计算在线视频学习请查看 【快速计算】


图表数值格式- FineReport帮助文档|报表开发|报表使用|学习教程

图表数值格式

1、描述

图表数值格式在线视频学习请查看 【图表常用分析操作】

与表格类似，对于图表中的指标字段，FineBI同样提供了对于数值字段的数值格式设置功能，可对字段设置成数字或百分比等。

2、数值格式说明

数值格式支持自动、数字和百分比三种格式，如下图：

表格数值格式，这里不再赘述。

图表数值格式在线视频学习请查看 【图表常用分析操作】


图表特殊显示- FineReport帮助文档|报表开发|报表使用|学习教程

图表特殊显示

1、描述

图表特殊显示在线视频学习请查看 【图表常用分析操作】

图表的特殊显示为FineBI针对特定的点进行特殊样式设置，以突出其显示效果。如销售额最高的省份，所有销售未达标的销售等。对于拖拽至分析区域的指标字段，可下拉进行特殊显示设置，特殊显示包括注释、闪烁动画和图片填充三种。下面我们分别介绍这三种显示方式。

2、注释

注释支持所有图表类型，指的是用户对某些特殊点做的批注。批注默认内容与标签一致，可自定义注释的详细内容和样式，可插入当前分析所使用的所有的字段，但不支持自动样式。比如我们为上图的合同金额选择特殊显示下的注释，进入注释设置界面。

3、闪烁动画

闪烁动画支持所有的图表类型，可设置闪烁动画的条件和时间周期。比如我们为合同金额选择特殊显示下的闪烁动画，进入闪烁动画设置界面。

4、图片填充

图片填充仅支持柱形图，其余图表类型不可设置。设置图片填充后，符合条件的柱子将以对应的图片填充。图片填充方式包括：堆叠（按照柱子宽度，保持原图比例不变，多个图片进行堆积）和适应（图片按照柱子宽高适应，只填充一张图片）。比如我们为合同金额选择特殊显示下的图片填充，进入图片填充设置界面。

图表特殊显示在线视频学习请查看【图表常用分析操作】


图表设置分析线- FineReport帮助文档|报表开发|报表使用|学习教程

图表设置分析线

1、描述

图表设置分析线在线视频学习请查看 【图表常用分析操作】

图表的分析线提供两种方式：警戒线和趋势线，警戒线用于在图表中对指标的某些数值做出预警，比如低于均值的销售额，趋势线用于对图表中的变化做出拟合的走势线，能直观看出变化趋势。指标字段拖拽到横纵轴后，下拉选项中会有设置分析线选项，点击分析线可在当前指标对应的值轴上添加警戒线和趋势线。其中警戒线可添加固定值， 内置的几种计算结果（平均值，最大值，最小值）以及公式；趋势线可添加内置的多种拟合模型，包括“指数拟合”，“线性拟合”，“对数拟合”，“多项式拟合”，可设置前推和后推n周期。

2、警戒线

警戒线可设置线的样式，还可设置显示的标签内容和样式，可添加多条。警戒线的线形和标签都显示在图层最上层，覆盖图形和其余标签之上。警戒线的标签默认颜色与线设置的颜色一致，标签内容为警戒线名称；标签位置处于警戒线上方。比如我们为上面的柱形图添加警戒线，点击“合同金额”字段的下拉按钮选择设置分析线>警戒线（横向），如下图：

添加警戒线，并设置警戒线名称及对应的数值/计算公式、线样式、线颜色等，如下图，若想添加多条警戒线，再点击添加警戒线并设置对应线条件即可。

3、趋势线

趋势线同样可设置线的样式，还可设置显示的标签内容和样式，可添加多条。趋势线的线形和标签显示在图层上方（警戒线下方），覆盖图形和其余标签之上。趋势线的标签默认颜色与线设置的颜色一致，标签内容为趋势线名称+趋势线函数。比如我们为随时间变化的签单额添加趋势线，点击“合同总价”字段的下拉按钮，选择设置分析线>趋势线（横向），如下图：

进入趋势线设置界面，点击添加趋势线，输入趋势线名称及拟合方式、前后推周期、趋势线样式、颜色等，其中拟合方式包括了四种：“指数拟合”、“线性拟合”、“对数拟合”、“多项式拟合”，趋势线的具体原理可参考文档 [老]趋势线原理 。如下图，若想添加多条趋势线，再点击添加趋势线并设置对应线条件即可。

点击确定保存，可以在图表中看到我们刚刚添加的签单趋势线。

图表设置分析线在线视频学习请查看 【图表常用分析操作】


指标聚合/并列- FineReport帮助文档|报表开发|报表使用|学习教程

指标聚合/并列

1、描述

在同一轴上，如果有多个指标字段，则可设置指标字段是指标并列或者指标聚合，分别表示指标的并列显示和聚合显示。

指标并列：每个指标字段分别对应一个值轴；

指标聚合：所有指标点显示在同一坐标系内，可设置指标字段采用左值轴或者右值轴；

下面我们分别介绍一下这两种显示方式。

2、指标并列

2.1 设置指标并列

指标并列表示各个指标字段的分值轴展示。如下图，我们在纵轴中添加了访问统计事实表中的浏览量、访问次数和跳出次数三个指标字段，并为纵轴选择指标并列的显示方式。

2.2 设置值轴

可单独对每一个值轴进行设置，对其他的没有任何影响。如下图，我们对浏览量的值轴进行设置，选择下拉>设置值轴。

确定保存，在图表中可以看到浏览量对应的值轴单独显示为轴逆序且轴标题未显示，如下图，且该设置对另外两个指标的值轴不生效。

3、指标聚合

3.1 设置指标聚合

指标聚合表示所有指标显示在同一值轴上。如下图，我们在纵轴中添加了访问统计事实表中的浏览量、访问次数和跳出次数三个指标字段，并为纵轴选择指标聚合的显示方式。

3.2 设置值轴

此时对单个指标进行值轴样式设置的话，就会对整个值轴生效，而不仅仅是指标本身了。比如我们对浏览量的值轴进行设置，选择下拉>设置值轴。

确定保存后，可以看到图表中浏览量显示为右值轴，访问次数和跳出次数还是显示为左值轴，如下图：

访问次数与跳出次数均可以按照上述方式进行同样的设置。


图表开启堆积- FineReport帮助文档|报表开发|报表使用|学习教程

图表开启堆积

1、描述

图表开启堆积在线视频学习请查看 【图表常用分析操作】

FineBI对于图表中的组件提供了堆积开关，用于开启在图表中显示时的堆积效果，比如下面的柱形图即展示了浏览量、访问次数、跳出次数三个指标的堆积显示效果。

2、开启堆积

只有拖拽在横纵轴上的指标字段，且垂直方向上为维度字段或没有任何字段时，才可以设置是否堆积，堆积开关默认处于关闭状态。堆积显示在柱形图使用较多，分为指标并列和指标聚合两种情况，下面我们用柱形图演示如何开启堆积。

2.1 指标并列

在指标并列时，堆积效果通常用于细粒度的展示。比如我们为横纵轴分别拖入互联网行业业务包中互联网渠道统计数据表下的“二级渠道名”和“浏览量”、“访问次数”、“跳出次数”字段，并选择指标显示方式为指标并列，如下图：

2.2 指标聚合

在指标聚合时，堆积效果通常用于多个指标的叠加显示。比如还是上面的“二级渠道名”和“浏览量”、“访问次数”、“跳出次数”字段，选择指标显示方式为指标聚合，如下图：

下拉按钮，选择开启堆积，如下图：

开启堆积，并将维度下的“指标名称”字段拖入图形属性下的颜色栏，则图表中的各个指标项均叠加显示，如下图：

图表开启堆积在线视频学习请查看【图表常用分析操作】


KPI指标卡- FineReport帮助文档|报表开发|报表使用|学习教程

KPI指标卡

1、描述

KPI指标卡为直观展示KPI数值的组件，可直接显示所选字段的数值，比如展示销售额、毛利、毛利率等指标数值，效果如下图所示：

图表效果 维度字段 指标字段 KPI指标卡 0 1

2、操作步骤

新建组件并选择销售DEMO下的合同事实表，将指标下的字段“合同金额”拖入横/纵轴中，并在图表类型下选择KPI指标卡。

注：该KPI指标卡必须在横纵轴中有0个维度、1个指标字段才能选择，否则图表类型下的KPI指标卡将灰化无法点击。

图形属性。

而除了单个KPI指标卡的展示，还可在此基础上，将更多的维度字段拖至横/纵轴中，以展示多维的KPI指标，如下图：

图形属性下的文本中也支持拖入多个维度/指标字段，展示多个维度或指标项。


颜色表格- FineReport帮助文档|报表开发|报表使用|学习教程

颜色表格

1、描述

颜色表格用于展示对应不同维度分类的不用文字颜色，效果如下图所示：

颜色表格的基本要求：

图表效果 | 维度字段 | 指标字段
颜色表格 | >=1 | 1

2、操作步骤

新建组件并选择销售DEMO下的地区数据自助数据集，将待分析区域维度下的字段“省份”、“城市”拖入横轴中，将指标下的字段“合同金额”拖入纵轴中，在图表类型下选择颜色表格。

注：该颜色表格必须在横纵轴中有大于等于1个维度、1个指标字段才能选择，否则图表类型下的颜色表格将灰化无法点击。

图形属性中自动选择文本，如下图：

图形属性和组件样式。横纵轴也可以拖入更多维度或指标字段增加表格文字的展示。


迷你图- FineReport帮助文档|报表开发|报表使用|学习教程

迷你图

1、描述

迷你图可以直观清晰的展现各分类的对应指标数值大小，比如下图展示的各访问渠道的浏览量大小。

迷你图的基本要求：

图表效果 | 维度字段 | 指标字段
迷你图 | >=1 | >=1

2、操作步骤

新建组件并选择互联网行业业务包下的互联网渠道统计数据，将待分析区域维度下的字段“一级渠道名”、“二级渠道名”拖入横轴中，将指标下的字段“浏览量”拖入纵轴中，在图表类型下选择迷你图。

注：该迷你图必须在横纵轴中有大于等于1个维度、大于等于1个指标字段才能选择，否则图表类型下的迷你图将灰化无法点击。

指标字段会被切换到图形属性下的大小栏，维度字段会被切换到纵轴中，图形属性中自动选择点，如下图：

若有两个指标字段，则第二个指标将会被切换至图形属性下的颜色栏；若存在多个指标字段，除颜色和大小栏外，其余指标将会被放至细粒度中。

我们可以为该迷你图调整颜色、设置大小、选择点形状、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。

横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


热力区域图- FineReport帮助文档|报表开发|报表使用|学习教程

热力区域图

1、描述

热力区域图以特殊高亮的方式展示坐标范围内各个点的权重情况，效果如下图所示：

热力区域图的基本要求：

图表效果 | 维度字段 | 指标字段
热力区域图 | 2 | >=0

2、操作步骤

新建组件并选择互联网行业业务包下的用户信息维度表，将待分析区域维度下的字段“注册日期”拖入横轴，字段“年龄”拖入纵轴中，在图表类型下选择热力区域图。

注：该热力区域图必须在横纵轴中有2个维度、大于等于0个指标字段才能选择，否则图表类型下的热力区域图将灰化无法点击。

形状会自动被切换成热力点，一个维度字段将置于横轴，一个维度字段将置于纵轴，如果有指标字段的话置于大小属性中。颜色选择热力，如果有更多的指标字段则置于细粒度中。如下图：

此时热力区域图即创建成功，我们还可以为该热力区域图调整热力色、设置大小、标签提示、设置组件样式等，比如为热力色属性拖入字段来显示权重，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


分区柱形图- FineReport帮助文档|报表开发|报表使用|学习教程

分区柱形图

1、描述

分区柱形图为并列展示维度下各个分类指标的柱形图，效果如下图所示：

分区柱形图的基本要求：

图表效果 | 维度字段 | 指标字段
分区柱形图 | >=1 | >=1

2、操作步骤

新建组件并选择零售行业业务包下的门店销售数据统计，将待分析区域维度下的字段“所属小区”、“品类描述”拖入横轴中，将指标下的字段“销售额”、“毛利”拖入纵轴中，在图表类型下选择分区柱形图。

注：该分区柱形图必须在横纵轴中有大于等于1个维度、大于等于1个指标字段才能选择，否则图表类型下的分区柱形图将灰化无法点击。

此时分区柱形图即创建成功，我们还可以为该分区柱形图调整颜色、设置柱宽、圆角、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


堆积柱形图- FineReport帮助文档|报表开发|报表使用|学习教程

堆积柱形图

1、描述

堆积柱形图用于显示单个项目与整体之间的关系，比较各个类别的每个数值所占总数值的大小。效果如下图所示：

堆积柱形图的基本要求：

图表效果 | 维度字段 | 指标字段
堆积柱形图 | >=1 | >=2

2、操作步骤

新建组件并选择互联网行业业务包下的互联网地区访问统计，将待分析区域维度下的字段“统计日期”拖入横轴中，将指标下的字段“浏览量”、“访问次数”、“跳出次数”拖入纵轴中，在图表类型下选择堆积柱形图。

注：该堆积柱形图必须在横纵轴中有大于等于1个维度、大于等于2个指标字段才能选择，否则图表类型下的堆积柱形图将灰化无法点击。

所有的维度字段将被置于横轴，所有的指标字段将被置于纵轴，且都开启指标聚合，如下图：

此时堆积柱形图即创建成功，我们还可以为该堆积柱形图调整颜色、设置柱宽、圆角、标签提示、设置组件样式等，统计日期维度切换为年月，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


多系列柱形图- FineReport帮助文档|报表开发|报表使用|学习教程

多系列柱形图

1、描述

多系列柱形图用于显示不同系列指标间的对比效果。效果如下图所示：

多系列柱形图的基本要求：

图表效果 | 维度字段 | 指标字段
多系列柱形图 | >=1 | >=2

2、操作步骤

新建组件并选择互联网行业业务包下的互联网地区访问统计，将待分析区域维度下的字段“统计日期”拖入横轴中，将指标下的字段“浏览量”、“访问次数”、“跳出次数”拖入纵轴中，在图表类型下选择多系列柱形图。

注：该多系列柱形图必须在横纵轴中有大于等于1个维度、大于等于2个指标字段才能选择，否则图表类型下的多系列柱形图将灰化无法点击。

选择该图表类型后，图形属性下自动切换成柱形图，指标名称置于颜色属性，所有的维度字段将被置于横轴，所有的指标字段将被置于纵轴，纵轴开启指标聚合，如下图：

此时多系列柱形图即创建成功，我们还可以为该多系列柱形图调整颜色、设置柱宽、圆角、标签提示、设置组件样式等，统计日期维度切换为年月，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


对比柱状图- FineReport帮助文档|报表开发|报表使用|学习教程

对比柱状图

1、描述

对比柱状图用于同一维度下，两个指标的对比分析，能更直观的看出对比差距。效果如下图所示：

对比柱状图的基本要求：

图表效果 | 维度字段 | 指标字段
对比柱状图 | 1 | 2

2、操作步骤

新建组件并选择销售DEMO业务包下的KPI指标项，将待分析区域维度下的字段“产品名称”拖入横轴中，将指标下的字段“合同金额”、“回款金额”拖入纵轴中，在图表类型下选择对比柱状图。

注：该对比柱状图必须在横纵轴中有1个维度、2个指标字段才能选择，否则图表类型下的对比柱状图将灰化无法点击。

选择该图表类型后，图形属性下自动切换成柱形图，维度字段被置于纵轴，两个指标字段被置于横轴，纵轴开启指标并列，第一个指标字段对应的值轴开启轴逆序，如下图：

此时对比柱状图即创建成功，我们还可以为该对比柱状图调整颜色、设置柱宽、圆角、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


瀑布图- FineReport帮助文档|报表开发|报表使用|学习教程

瀑布图

1、描述

瀑布图一般用于分类使用，便于反应各部分的之间的差异。效果如下图所示：

瀑布图的基本要求：

图表效果 | 维度字段 | 指标字段
瀑布图 | >=1 | 2

2、操作步骤

新建组件并选择销售DEMO业务包下的KPI指标项，将待分析区域维度下的字段“产品名称”拖入横轴中，将指标下的字段“合同金额”、“回款金额”拖入纵轴中，在图表类型下选择瀑布图。

注：该瀑布图必须在横纵轴中有大于等于1个维度、2个指标字段才能选择，否则图表类型下的瀑布图将灰化无法点击。

选择该图表类型后，图形属性下自动切换成矩形块，所有维度字段置于横轴，一个指标字段置于纵轴，一个指标字段置于大小属性。如下图：

此时瀑布图即创建成功，我们还可以为该瀑布图调整颜色、设置大小、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


分区折线图- FineReport帮助文档|报表开发|报表使用|学习教程

分区折线图

1、描述

分区折线图用于分区域分指标查看数据的变化趋势。效果如下图所示：

分区折线图的基本要求：

图表效果 | 维度字段 | 指标字段
分区折线图 | >=1 | >=1

2、操作步骤

新建组件并选择销售DEMO业务包下的KPI指标项，将待分析区域维度下的字段“合同签约时间”拖入横轴中，将指标下的字段“合同金额”、“回款金额”拖入纵轴中，在图表类型下选择分区折线图。

注：该分区折线图必须在横纵轴中有大于等于1个维度、大于等于1个指标字段才能选择，否则图表类型下的分区折线图将灰化无法点击。

选择该图表类型后，图形属性下自动切换成线，所有维度字段被置于横轴，所有指标字段被置于纵轴，纵轴开启指标并列。如下图：

此时分区折线图即创建成功，我们还可以为该分区折线图调整颜色、设置线宽、连线属性、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


多系列折线图- FineReport帮助文档|报表开发|报表使用|学习教程

多系列折线图

1、描述

多系列折线图用于在同一区域查看指标的变化趋势，能直观看出趋势对比。效果如下图所示：

多系列折线图的基本要求：

图表效果 | 维度字段 | 指标字段
多系列折线图 | >=1 | >=2

2、操作步骤

新建组件并选择互联网行业业务包下的互联网渠道统计数据表，将待分析区域维度下的字段“统计日期”拖入横轴中，将指标下的字段“浏览量”、“访问次数”、“跳出次数”拖入纵轴中，在图表类型下选择多系列折线图。

注：该多系列折线图必须在横纵轴中有大于等于1个维度、大于等于2个指标字段才能选择，否则图表类型下的多系列折线图将灰化无法点击。

选择该图表类型后，图形属性下自动切换成线，所有维度字段被置于横轴，所有指标字段被置于纵轴，指标名称置于颜色属性，纵轴开启指标聚合。如下图：

此时多系列折线图即创建成功，我们还可以为该多系列折线图调整颜色、设置线宽、连线属性、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


折线雷达图- FineReport帮助文档|报表开发|报表使用|学习教程

折线雷达图

1、描述

雷达图（Radar Chart），又可称为戴布拉图、蜘蛛网图（Spider Chart），每个分类都拥有自己的数值坐标轴，这些坐标轴由中心向外辐射， 并用折线将同一系列的值连接。用以显示独立的数据系列之间，以及某个特定的系列与其他系列的整体之间的关系。效果如下图所示：

折线雷达图的基本要求：

图表效果 | 维度字段 | 指标字段
折线雷达图 | >=1 | >=1

2、操作步骤

新建组件并选择样式数据下的浏览器占比变化表，将待分析区域维度下的字段“浏览器”拖入横轴中，将指标下的字段“数量”拖入纵轴中，在图表类型下选择折线雷达图。

注：该折线雷达图必须在横纵轴中有大于等于1个维度、大于等于1个指标字段才能选择，否则图表类型下的折线雷达图将灰化无法点击。

选择该图表类型后，所有维度字段被置于横轴，所有指标字段被置于纵轴，指标名称被置于颜色属性。纵轴开启指标聚合。线型设置中，开启雷达图。如下图：

因为指标中的数量为求和，为了展示第一章节折线雷达图分年份展示数量的效果，我们还需要将指标下的“年份”字段先转换为维度字段，再拖入细粒度属性中，并设置为相同值为一组，如下图，图表预览中的雷达图即按照年份显示数量。

此时折线雷达图即创建成功，我们还可以为该折线雷达图调整颜色、设置线宽、连线属性、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


范围面积图- FineReport帮助文档|报表开发|报表使用|学习教程

范围面积图

1、描述

范围面积图用来展示持续性数据，可很好地表示趋势、累积、减少以及变化。效果如下图所示：

范围面积图的基本要求：

图表效果 | 维度字段 | 指标字段
范围面积图 | >=1 | 2

2、操作步骤

新建组件并选择互联网行业业务包下的互联网渠道统计数据表，将待分析区域维度下的字段“统计日期”拖入横轴中，将指标下的字段“访问次数”、“跳出次数”拖入纵轴中，在图表类型下选择范围面积图。

注：该范围面积图必须在横纵轴中有大于等于1个维度、2个指标字段才能选择，否则图表类型下的范围面积图将灰化无法点击。

选择该图表类型后，图形属性下自动切换成面积，所有维度字段被置于横轴，所有指标字段被置于纵轴，且开启堆积属性 ，纵轴开启指标聚合。 颜色设置中第一个指标对应的颜色设置透明度为0，所有颜色的效果关闭。如下图：

此时范围面积图即创建成功，我们还可以为该范围面积图调整颜色、设置线宽、连线属性、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


组合图- FineReport帮助文档|报表开发|报表使用|学习教程

组合图

1、描述

多指标分析而言，不同的指标可能查看的目的不同，有的指标需要看趋势，有的指标需要查看数据对比情况，此时就可以使用组合图组件来实现这一功能。效果如下图所示：

组合图的基本要求：

图表效果 | 维度字段 | 指标字段
组合图 | >=1 | >=2

2、操作步骤

新建组件并选择销售DEMO业务包下的地区数据自助数据集，将待分析区域维度下的字段“合同签约时间”拖入横轴中，将指标下的字段“合同金额”、“回款金额”拖入纵轴中，在图表类型下选择组合图。

注：该组合图必须在横纵轴中有大于等于1个维度、大于等于2个指标字段才能选择，否则图表类型下的组合图将灰化无法点击。

选择该图表类型后，第一个指标形状切换成折线图，其余指标形状则切换成柱形图，所有维度字段被置于横轴，所有指标字段都被置于纵轴，纵轴开启指标聚合。如下图：

此时组合图即创建成功，我们还可以为该组合图调整颜色、设置线宽、连线属性、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


散点图- FineReport帮助文档|报表开发|报表使用|学习教程

散点图

1、描述

散点图用来显示不同数据点之间的关系，用来比较在不均匀时间段内的走势。效果如下图所示：

散点图的基本要求：

图表效果 | 维度字段 | 指标字段
散点图 | >=1 | >=1

2、操作步骤

新建组件并选择样式数据业务包下的样式数据二，将待分析区域维度下的字段“类目”拖入横轴中，将指标下的字段“指标一”、“指标二”拖入纵轴中，在图表类型下选择散点图。

注：该散点图必须在横纵轴中有大于等于1个维度、大于等于1个指标字段才能选择，否则图表类型下的散点图将灰化无法点击。

选择该图表类型后，图形属性下形状切换为点，所有维度字段被置于横轴，指标字段被置于纵轴。指标名称被置于颜色属性。纵轴开启指标聚合。如下图：

此时散点图即创建成功，我们还可以为该散点图调整颜色、设置半径、形状、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


聚合气泡图- FineReport帮助文档|报表开发|报表使用|学习教程

聚合气泡图

1、描述

聚合气泡图用数值类型字段来确定气泡的面积大小，实现对比。效果如下图所示：

聚合气泡图的基本要求：

图表效果 | 维度字段 | 指标字段
聚合气泡图 | >=1 | 1或2

2、操作步骤

新建组件并选择互联网行业业务包下的互联网渠道统计数据，将待分析区域维度下的字段“二级渠道名”拖入横轴中，将指标下的字段“访问次数”、“跳出次数”拖入纵轴中，在图表类型下选择聚合气泡图。

注：该聚合气泡图必须在横纵轴中有大于等于1个维度、1个或者2个指标字段才能选择，否则图表类型下的聚合气泡图将灰化无法点击。

选择该图表类型后，图形属性下形状自动切换成点，所有维度字段被置于细粒度属性中，指标字段被置于大小属性中，如果有第二个指标字段，则被置于颜色属性中。如果有更多的指标字段则将被置于细粒度中。如下图：

此时聚合气泡图即创建成功，我们还可以为该聚合气泡图调整颜色、设置半径、形状、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


玫瑰图- FineReport帮助文档|报表开发|报表使用|学习教程

玫瑰图

1、描述

玫瑰图用来显示的是每一数值相对于总数值的大小。效果如下图所示：

玫瑰图的基本要求：

图表效果 | 维度字段 | 指标字段
玫瑰图 | 1 | 2

2、操作步骤

新建组件并选择零售行业业务包下的门店销售数据统计表，将待分析区域维度下的字段“所属小区”拖入横轴中，将指标下的字段“销售额”、“毛利”拖入纵轴中，在图表类型下选择玫瑰图。

注：该玫瑰图必须在横纵轴中有1个维度、2个指标字段才能选择，否则图表类型下的玫瑰图将灰化无法点击。

选择该图表类型后，图形属性下形状自动切换为饼图，维度字段被置于颜色属性中，一个指标字段被置于角度属性，另一个字段被置于半径属性，不开启共用半径。如下图：

此时玫瑰图即创建成功，我们还可以为该玫瑰图调整颜色、设置半径大小、内径占比、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


区域地图- FineReport帮助文档|报表开发|报表使用|学习教程

区域地图

1、描述

需要按照地区分析数据时，我们可以使用区域地图，FineBI的地图在展示效果上与所有用地图来做数据分析的样式基本一致，可以按照省，市，国家甚至一些定制的地图展示。如下图：

区域地图的基本要求：
图表效果 | 字段
区域地图 | 两个地理维度（经度、纬度）

2、操作步骤

新建组件并选择销售DEMO业务包下的地区数据分析自助数据集，将待分析区域维度下的字段“省份”转化为地理角色，详细操作请参考维度转化为地理角色。随后将“省份（经度）”拖入横轴中，将“省份（纬度）”拖入纵轴中，在图表类型下选择区域地图。
注：该区域地图必须在横纵轴中有两个地理维度字段才能选择，否则图表类型下的区域地图将灰化无法点击。

此时区域图即创建成功，我们还可以为该区域地图调整颜色、设置标签提示、细粒度、组件样式等，详细操作步骤请参考 图形属性 和 组件样式 。在组件样式中，还可以设置区域地图显示的GIS背景，内置的包含深蓝、黑色、mapbox、清新、高德地图、素雅、午夜、卫星，如下图：

区域地图中的填充块还可以为其增加动画效果，在指标字段的下拉框中选择特殊显示>闪烁动画，进入动画条件是设置界面进行设置即可。详细设置可参考 闪烁动画 。


点地图- FineReport帮助文档|报表开发|报表使用|学习教程

点地图

1、描述

很多公司的业务分布范围很广，如果该公司想要查看的是某个区域各个网点（特定位置）的数据时，用地图实现起来会比较复杂，并且精准性不高，那么就可以使用点地图，可精准快速定位到位置。

点地图的基本要求：

图表效果 | 字段
点地图 | 两个地理维度（经度、纬度）

2、操作步骤

新建组件并选择样式数据业务包下的南京苏果营业数据表，将待分析区域指标下的字段“经度”、“纬度”转化为地理角色的经度和维度，详细操作请参考指标转化为地理角色。随后将“经度”拖入横轴中，将“纬度”拖入纵轴中，在图表类型下选择点地图。

注：该点地图必须在横纵轴中有两个地理维度字段才能选择，否则图表类型下的点地图将灰化无法点击。

图形属性和组件样式。在组件样式中，还可以设置点地图显示的GIS背景，内置的包含深蓝、黑色、mapbox、清新、高德地图、素雅、午夜等，如下图：

特殊显示>闪烁动画，进入动画条件是设置界面进行设置即可。详细设置可参考闪烁动画。


流向地图- FineReport帮助文档|报表开发|报表使用|学习教程

流向地图

1、描述

流向地图常用来可视化源汇流(Origin Destination Flow)数据。源地和汇地可以是点，也可以是面。源地和汇地之间的互动数据，常用连接空间单元几何重心之间的线段来表达，线的宽度或颜色来表示源地和汇地之间的流向数值。每个空间位置可以是源地，也可以是汇地。

流向地图多应用于区际贸易、交通流向、人口迁移、购物消费行为、通讯信息流动、航空线路等场景，具体示例如下：

图表效果 字段 流向地图 两个地理维度（经度、纬度）、1个维度

2、操作步骤

新建组件并选择样式数据业务包下的北京公交线路图，将待分析区域指标下的字段“站经度”、“站纬度”转化为地理角色的经度和维度，“ID”字段转换为维度，详细操作请参考指标转化为地理角色、指标转化为维度。随后将“站经度”、“站纬度”、“ID”分别拖入横纵轴中，在图表类型下选择流向地图。

注：该流向地图必须在横纵轴中有两个地理维度字段、1个纬度字段才能选择，否则图表类型下的流向地图将灰化无法点击。

连线）

图形属性和组件样式。比如将乘车人数字段拖入颜色属性，并单击选择特殊显示>闪烁动画，如下图：

注：与FineBI4.1版本的流向地图相比，FineBI5.0的图表做了相关改动。在原先4.1版本流向地图中的连线规则为根据起始点的经纬度字段来连线；而在5.0版本中只需要一个经纬度字段，包含所有点的经纬度数据，连线按照图形属性下的连线字段x来连接，按x为顺序连线，含义为同一分区内，除x外其余所有细粒度维度相同的点按照x的内容顺序连成一根线。对应上述示例中，表示按照ID连线，属于同一线路的连成一条线。对于原先在4.1版本中使用的流向数据，需要按照5.0的规则对数据做对应修改后使用。


热力地图- FineReport帮助文档|报表开发|报表使用|学习教程

热力地图

1、描述

热力地图用来表示地理范围内各个点的权重情况。如下图显示了全国各地区环境监测PM2.5的数值高低：

图表效果 字段 热力地图 两个地理维度（经度、纬度）

2、操作步骤

新建组件并选择样式数据业务包下的全国环境监测数据表，将待分析区域维度下的字段“监测城市”转化为地理角色，详细操作请参考维度转化为地理角色。随后将“监测城市（经度）”拖入横轴中，将“监测城市（纬度）”拖入纵轴中，在图表类型下选择热力地图。

注：该热力地图必须在横纵轴中有两个地理维度字段才能选择，否则图表类型下的热力地图将灰化无法点击。

形状自动切换为热力点，经纬度分别被置于横纵轴，如果有指标字段的话置于大小属性中。颜色选中'热力'方案。如果有更多的维度或指标字段则置于细粒度中。如下图：

（注：在上一步骤拖入监测城市经纬度字段时，也可直接拖入PM值字段。在选择热力地图图表类型时，PM值字段会自动被切换到大小属性下）

图即创建成功，我们还可以为该热力地图调整热力色、大小、设置标签提示、细粒度、组件样式等，详细操作步骤请参考 图形属性 和 组件样式 。在组件样式中，还可以设置区域地图显示的GIS背景，内置的包含深蓝、黑色、mapbox、清新、高德地图、素雅、午夜、卫星，如下图：


矩形树图- FineReport帮助文档|报表开发|报表使用|学习教程

矩形树图

1、描述

矩形树图是用来描述层次结构数据的占比关系，能够进行逐级钻取显示下层数据情况。效果如下图所示：

矩形树图的基本要求：

图表效果 | 维度字段 | 指标字段
矩形树图 | >=1 | 1

2、操作步骤

新建组件并选择销售DEMO业务包下的KPI指标项表，将待分析区域维度下的字段“产品名称”、“合同签约时间”拖入横轴中，将指标下的字段“合同金额”拖入纵轴中，在图表类型下选择矩形树图。

注：该矩形树图必须在横纵轴中有大于等于1个维度、1个指标字段才能选择，否则图表类型下的矩形树图将灰化无法点击。

选择该图表类型后，图形属性下形状自动切换为矩形块，维度字段按照顺序被添加到细粒度中，指标字段添加到大小属性中。如下图：

此时矩形树图即创建成功，我们还可以为该矩形树图调整颜色、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


词云- FineReport帮助文档|报表开发|报表使用|学习教程

词云

1、描述

词云是一种直观展示数据频率的图表类型，可以对出现频率较高的“关键词”予以视觉上的突出，形成“关键词云层”，从而过滤掉大量的文本信息，使浏览者只要一眼扫过文本就可以领略重点。效果如下图所示：

词云图的基本要求：

图表效果 | 维度字段 | 指标字段
词云 | 1 | 1

2、操作步骤

新建组件并选择样式数据业务包下的搜索词汇统计表，将待分析区域维度下的字段“搜索词”拖入横轴中，将指标下的字段“搜索次数”拖入纵轴中，在图表类型下选择词云图。

注：该词云图必须在横纵轴中有1个维度、1个指标字段才能选择，否则图表类型下的词云图将灰化无法点击。

选择该图表类型后，图形属性下形状自动切换为文字，维度字段被添加到文本中，指标字段添加到大小属性中。如下图：

此时词云图即创建成功，我们还可以为该词云图调整颜色、大小、标签提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


多层饼图- FineReport帮助文档|报表开发|报表使用|学习教程

多层饼图

1、描述

多层饼图指的是具有多个层级，且层级之间具有包含关系的饼状图表。多层饼图适合展示具有父子关系的复杂树形结构数据，如地理区域数据、公司上下层级、年月日时间层级等等。效果如下图所示：

图表效果 维度字段 指标字段 多层饼图 >=1 1

2、操作步骤

新建组件并选择销售DEMO业务包下的地区数据自助数据集，将待分析区域维度下的字段“省份”、“城市”拖入横轴中，将指标下的字段“合同金额”拖入纵轴中，在图表类型下选择矩形树图。

注：该矩形树图必须在横纵轴中有大于等于1个维度、1个指标字段才能选择，否则图表类型下的矩形树图将灰化无法点击。

此时多层饼图即创建成功，我们还可以为该多层饼图调整颜色、内径大小、标签、提示、设置组件样式等，如下图，详细操作步骤请参考 图形属性 和 组件样式 。横纵轴也可以拖入更多维度或指标字段以增加图表的展示内容。


过滤组件- FineReport帮助文档|报表开发|报表使用|学习教程

过滤组件

1、描述

FineBI提供了多种常用的条件过滤组件，用来展现数据和提供过滤的分析交互。主要包括文本类过滤组件，数值类过滤组件，树类型过滤组件，日期类型过滤组件，通用查询重置组件。其中文本类过滤组件仅用于文本字段的过滤；数值区间过滤组件仅用于数值字段的过滤；树过滤组件也仅用于文本字段的过滤；时间过滤组件仅用于时间类型字段的过滤。

2、索引

时间过滤组件

文本过滤组件

树过滤组件

数值区间过滤组件

其他过滤组件

过滤组件操作

过滤组件联动

日期过滤组件不绑定字段

过滤组件的参数用法


时间过滤组件- FineReport帮助文档|报表开发|报表使用|学习教程

时间过滤组件

1、描述

时间过滤组件在线视频学习请查看【时间过滤控件】

时间过滤组件为组件类型中的一种，是用于过滤时间的组件，数据来源只能是时间类型。根据时间的形式不同，时间控件可分为七种：年份、年月、年月区间、年季度、日期、日期面板、日期区间过滤组件，如下图：

2、添加时间过滤组件

1、在仪表板编辑界面，点击左侧的过滤组件栏，选择时间过滤组件下的组件类型。

2、进入过滤组件设置界面，选择业务包下的数据表，将自动获取该数据表中的时间字段，在字段框可拖入时间字段，则该过滤组件获取的就是该时间字段的时间；字段下方还可设置该时间控件默认过滤的时间。如下图为年月控件的过滤设置。

3、点击确认保存，在仪表板中可以看到该年月过滤组件。

4、在年月过滤组件使用时，除了选择绑定字段中的时间，还可以设置获取当前时间和动态时间。比如年月控件，就可以设置过滤时间为当前年月或者相对当前时间的“x年前/后，x月前/后”。

注：日期、日期面板和日期区间三个过滤组件在过滤组件设置界面可选择开启时分秒选项，默认不开启。开启后支持设置时、分、秒。如下图，勾选“显示时间”即可开启。

3、节假日智能过滤

除了常见的如“xx年前”、“xx年xx月前”之类的默认设置过滤时间之外，还支持节假日的智能过滤。

以2018年10月17日为例，求取8个工作日前的日期如下图：

注：对于不适用于国家通用节假日的企业可以通过修改文件中的节假日日期来匹配企业自身的节假日 。

节假日数据文件目录：\webapps\webroot\WEB-INF\assets\extdata

可通过删除或者增加日期，来实现节假日自定义：

4、时间过滤组件过滤多个维度

时间过滤组件可以绑定多个维度，即可以过滤多个维度的数据，主要用于筛选多个组件不同字段的结果。

4.1 添加组件

新建仪表板，进入仪表板编辑界面，为该仪表板添加一个明细表、一个柱形图，设置表格的维度为合同签约时间，值为合同金额，时间的分组依据为年份。同时将图表组件合同详细信息的合同签约时间的分组依据也设置为年份，如下图：

4.2 时间控件

拖拽一个年份过滤组件至仪表板中，如下图：

选择“合同事实表”中的注册时间和合同签约时间字段拖拽到过滤组件中，如下图：

注：时间过滤组件绑定2个维度，如果这两个字段之间有关联，那么仪表板组件数据过滤的时候，需要同时过滤2个字段所选的时间，即求交集，如果没有任何关联，只需要过滤相应字段即可。

4.3 查看

进入仪表板，年份选择2016年后过滤效果如下：

此处仅演示了年份过滤组件的使用，时间类型的其他过滤组件使用与其一致，这里不再详细介绍。

时间过滤组件的操作可参考过滤组件操作。

注：过滤组件只支持添加一张表的字段，若拖入其他表的字段，之前添加的字段将被清空。

时间过滤组件在线视频学习请查看 【时间过滤控件】


文本过滤组件- FineReport帮助文档|报表开发|报表使用|学习教程

文本过滤组件

1、描述

文本过滤组件在线视频学习请查看【文本过滤控件】

在业务查看和分析的过程中，往往需要根据不同的需求对页面上的一些图表进行过滤。例如通过过滤来查看“北京市”客户的详细信息，类似这种对文本字段进行筛选的需求，使用文本控件就能轻松实现。FineBI的文本过滤组件包含两种类型：文本下拉过滤组件和文本列表过滤组件，如下图：

2、添加文本过滤组件

1、在仪表板编辑界面，点击左侧的过滤组件栏，根据需要选择文本过滤组件下的组件类型。

2、进入过滤组件设置界面，选择业务包下的数据表，将自动获取该数据表中的文本字段。在字段框中拖入想要过滤的文本内容字段，则该文本控件获取的即为文本字段中的内容。字段下方可以设置选择过滤条件时是多选还是单选，和该文本控件的默认过滤内容。如下图为文本过滤组件的过滤设置。

3、点击确定保存，在仪表板中可以看到该文本过滤组件。

4、在文本过滤组件使用时，除了默认设置的过滤内容，还可以根据需要选择文本字段进行过滤。

文本过滤组件的操作可参考过滤组件操作。

3、示例

3.1 添加文本过滤组件

新建仪表板，在仪表板中新增分组表，并为分组表设置字段“访问平台”和“浏览量”。新增文本控件，设置过滤字段为“访问平台”并设置成“多选”，如下图：

修改过滤组件名称为“访问平台”，如下图：

3.2 效果查看

在文本过滤组件列表中选择过滤条件为Android和IOS，则组件过滤效果如下图所示：

注：过滤组件只支持添加一张表的字段，若拖入其他表的字段，之前添加的字段将被清空。

4、实际值、显示值

对于文本过滤组件，FineBI增加了实际值显示值功能，提供用户在文本过滤时易理解记忆的条件选择，如下图：

4.1 使用场景

当我们使用参数绑定控件，比如使用参数品牌编号来过滤品牌编号字段，如下图：

当在前端需要过滤该品牌编号时，文本过滤组件需要拖入字段并绑定对应参数，如下图：

但是对于普通用户来说，在筛选该品牌编号时，显示的都为编号，很难选择，如下图：

4.2 使用步骤

因此我们可以为该文本过滤组件的显示值和实际值中分别拖入字段，显示值为查看用户可理解的字段，实际值为做SQL运算时的实际计算值。如下图，分别拖入品牌描述和品牌编号至过滤组件的字段和实际值框中。

则查看用户在选择条件过滤时，能看到的均为较容易理解的字段，如下图：

用户选择该HANG TEN品牌，实际是通过该品牌信息表查找到对应的品牌编号的值，将该值返回给SQL数据集，即：select * from new_pp where 品牌编号 in ('B62250}')，筛选出为HANG TEN品牌的值。

注：该实际值、显示值仅对文本过滤组件生效，且实际值字段框和显示值字段框中的字段需要来自同一张表。

文本过滤组件在线视频学习请查看 【文本过滤控件】


树过滤组件- FineReport帮助文档|报表开发|报表使用|学习教程

树过滤组件

1、描述

树过滤组件在线视频学习请查看【树过滤控件】

树过滤组件，顾名思义，是指展示树形结构过滤数据的过滤组件。通过树过滤组件可以展示有层级关系的字段，例如国家-省份-城市的层级关系。在过滤的时候可以对国家城市等同时进行过滤，而且当国家和城市数量较多的时候，树形结构也便于查找。FineBI的树过滤组件包含三种类型：下拉树过滤组件、树标签过滤组件、树列表过滤组件，如下图：

2、添加树过滤组件

1、在仪表板编辑界面，点击左侧的过滤组件栏，根据需要选择树过滤组件下的组件类型。

2、进入过滤组件设置界面，选择业务包下的数据表，将自动获取该数据表中的文本字段。在字段框中拖入想要过滤的文本内容字段（注：可拖入多个字段，层级就是字段顺序），则该树控件获取的即为文本字段中的内容。字段下方可以设置选择该树控件的默认过滤内容。如下图为下拉树过滤组件的过滤设置。

3、点击确定保存，在仪表板中可以看到该下拉树过滤组件。

4、在拖入多个字段作为过滤条件的情况下，树过滤组件下拉列表就是按照字段添加的顺序组织树结构，如下图拖入的用户类型和年龄字段，年龄在用户类型之下形成树状结构。

树过滤的操作可参考过滤组件操作。

树过滤组件只支持添加一张表的字段，若拖入其他表的字段，之前添加的字段将被清空。

树过滤组件在线视频学习请查看 【树过滤控件】


数值区间过滤组件- FineReport帮助文档|报表开发|报表使用|学习教程

数值区间过滤组件

1、描述

数值区间过滤组件在线视频学习请查看【数值区间过滤控件】

数值区间过滤组件与文本过滤组件的用途类似，不同之处在于数值过滤组件是对数值进行的过滤操作。如在销售业务过程中，可以通过数值控件过滤得到销售额在100万以上的销售员的信息。FineBI提供的数值区间过滤组件包含两种类型：数值区间过滤组件和区间滑块过滤组件，如下图：

2、添加数值区间过滤组件

1、在仪表板编辑界面，点击左侧的过滤组件栏，根据需要选择数值区间过滤组件下的组件类型。

2、进入过滤组件设置界面，选择业务包下的数据表，将自动获取该数据表中的数值字段。在字段框中拖入想要过滤的数值内容字段（注：可拖入多个字段，过滤时为且条件），则该数值控件获取的即为数值字段中的内容。字段下方可以设置该数值过滤组件的默认过滤区间。如下图设置的数值区间过滤组件过滤条件为销售额在100万以上。

3、点击确定保存，在仪表板中可以看到该数值区间过滤组件。

数值区间过滤组件的操作可参考过滤组件操作。

3、过滤效果

我们在仪表板中加入包含销售数据的分组表，在数值区间过滤组件中设置“100万-200万”的过滤条件，则分组表会显示合同金额在该区间的合同数据。如图：

数值区间过滤组件在线视频学习请查看 【数值区间过滤控件】


其他过滤组件- FineReport帮助文档|报表开发|报表使用|学习教程

其他过滤组件

1、描述

其他过滤组件在线视频学习【其他过滤控件】

除了之前介绍的时间、文本、数值过滤组件外，FineBI还提供了复合过滤组件和查询重置按钮。复合过滤组件可直接添加条件进行过滤；查询和重置按钮实现手动触发查询和重置过滤组件过滤内容的功能。

注：复合过滤组件、查询和重置按钮在一个仪表板中最多只能添加一个。

2、复合过滤组件

1、在仪表板编辑界面，点击左侧的过滤组件栏，选择其他过滤组件下的复合过滤组件。

2、在仪表板中即出现该复合过滤组件，点击可添加过滤条件，需要选择字段并设置对应的过滤条件即可。

3、若添加多个条件，可设置条件之间的关系为“且条件”或“或条件”，如下图：

3、查询按钮

在仪表板中没有查询按钮的情况下，添加过滤组件后，组件内的数据会被自动过滤。当组件比较多的时候，数据量比较大，查询需要耗费的性能和时间都较多的时候，每进行一次条件设置后，就自动进行一次查询，非常不方便。此时可以添加查询按钮，实现手动触发查询功能。

如下图所示，仪表板中已经添加好了过滤组件和分组表，并绑定了字段。此时，将过滤组件的过滤条件设置后，分组表中的数据直接按条件过滤了。

我们在页面左侧的过滤组件栏，选择其他过滤组件下的查询按钮，添加到仪表板页面中。此时，只有在点击查询按钮，控件中的过滤条件才会生效。

同时查询按钮能够设置预览时自动查询，即在预览仪表板时，不需要点击查询按钮手动触发查询，预览即自动触发查询。

4、重置按钮

重置按钮的作用是清空页面中所有已选择的过滤条件，相应的数据图表也会回到未过滤之前的内容。比如为上面已添加查询按钮的仪表板新增重置按钮，在页面左侧的过滤组件栏，选择其他过滤组件下的重置按钮，添加到仪表板页面中。

其他过滤组件在线视频学习【其他过滤控件】


过滤组件操作- FineReport帮助文档|报表开发|报表使用|学习教程

过滤组件操作

1、描述

过滤组件操作在线视频学习请查看【过滤控件常用操作】

过滤组件的操作除了复制、删除等，还有升序、降序、自定义控制范围、登录名传递默认值、允许重叠、清空所选数据、重命名。下面我们对过滤组件的这些操作进行详细介绍。

2、升序/降序/自定义

过滤组件的升序/降序操作是对控件中的过滤内容进行的排序，仅文本过滤组件和树过滤组件支持该功能。比如我们的文本过滤组件过滤内容为用户名称，选择的是升序排列。

则文本过滤组件内容排序如下图所示，按照字母顺序进行升序排列。降序与之相似。

除了在过滤组件的下拉按钮处设置，还可以在过滤组件设置界面的过滤字段添加处进行设置，如下图，同时支持自定义的排序。

3、绑定字段过滤

过滤组件设置界面在添加了字段以后，可以对添加的字段内容进行过滤，比如添加了合同类型字段过滤，但是过滤时只想选择长期类型的协议字段，可以在过滤组件添加字段后下拉选择过滤，如下图：

添加过滤条件，合同类型字段属于长期协议和长期协议订单，如下图：

点击确定保存，此时可以看到该过滤组件仅能选择长期协议类型的字段，如下图：

注：时间与数值过滤组件不支持该字段过滤的功能。

4、自定义控制范围

自定义控制范围为设置过滤组件能够过滤生效的组件范围，时间过滤组件、文本过滤组件、树过滤组件、数值过滤组件均支持。若不进行过滤组件的自定义控制范围设置，则默认仪表板的所有组件均生效。

点击以后可以进行控制组件范围选择，如下图，勾选想要生效的组件即可。

5、登录名传递默认值

文本过滤组件及树过滤组件支持设置默认值，默认值仅支持设置登陆用户名所在表字段对应控件字段值。比如在数据表A中包含字段用户名和机构，过滤组件绑定机构，登陆用户名与表A中用户名匹配，当用户1登录后，过滤组件默认值直接勾选用户1所在机构并过滤。

6、允许重叠

允许重叠表示允许过滤组件与其他组件或者控件叠加显示，时间过滤组件、文本过滤组件、树过滤组件、数值区间过滤组件均支持。如下图，为文本过滤组件选择允许重叠。

则可以拖拽该组件至仪表板内任何地方，包括叠加到分组表组件内部。其中勾选允许重叠的过滤组件始终覆盖在不勾选重叠的组件/过滤组件上方。

7、清空所选数据

清空所选数据为清空过滤组件内已经选择的过滤条件，时间过滤组件、文本过滤组件、树过滤组件、数值区间过滤组件均支持。如下图，为已经选择过滤条件的文本过滤组件点击清空所选数据。

则所有已选条件都被清空，可以重新进行条件的选择。

8、重命名

重命名可以修改过滤组件显示的名称，控件默认的名称为时间过滤组件、文本过滤组件等，点击重命名进行名称的修改。比如我们将“文本控件”修改成“用户名称”。

过滤组件操作在线视频学习请查看 【过滤控件常用操作】


过滤组件联动- FineReport帮助文档|报表开发|报表使用|学习教程

过滤组件联动

1、描述

过滤组件联动是指后面过滤组件的可选值随着前面组件的选择变化而变化，在制作模板的过程中有时候会碰到不同组件之间有一定的对应关系，如下图：

。

2、默认联动

新建一个仪表板，在页面中添加两个文本过滤组件和一个分组表，分别为它们拖入数据，过滤组件重命名为省份、城市，如下图：

2.1 省份过滤组件

省份过滤组件的数据来源于地产行业>省市签约数据统计表中的省份字段：

2.2 城市过滤组件

城市过滤组件的数据来源于地产行业>省市签约数据统计表中的市字段（也可是省市签约数据统计关联表中的字段）：

2.3 效果查看

依次选择2个组件中的值，可以看到如上图的联动效果。

2.4 说明

FineBI支持默认的过滤组件联动效果，即只需要将数据跟过滤组件进行绑定，FineBI就会自动读取被绑定数据之间的关联关系，实现组件联动，数据之间的关联关系必须是以下两种关系中的一种：

1、联动组件中的数据来源于一张表；

2、联动组件前面的组件是主键表的任意字段，后面的组件内数据则是外键表中的任意字段。

3、参数联动

参数联动仅开启实时数据直连数据库的情况下支持，通过参数传递的方式联动过滤组件。

3.1 添加表

新建SQL数据集，写好带省份参数的SQL语句，并点击确定保存，如下图：

select * from DEMO_CUSTOMER where 1=1 <parameter> and 省份 in ('${省份}' ) </parameter>

另外新建一个不带参数的客户维度表，如下图：

实时数据直连数据库，如下图：

3.2 省份过滤组件

新建一个仪表板，在页面中添加文本过滤组件，将不带参数的客户维度表中的省份字段拖拽至过滤组件中，如下图：

确定保存。

注：为该文本过滤组件添加不带参数的省份字段，是为了在过滤组件选择字段时能选到所有的省份值。

3.3 城市过滤组件

在页面再添加一个文本过滤组件，为该组件绑定带参数的数据表中的城市字段，如下图：

确定保存。

3.4 效果查看

在页面新增一个明细表，添加带参数的数据表中省份、城市、客户名称等字段，如下图：

此时我们在省份过滤组件中选择江苏省，可以看到城市组件中联动出江苏省的城市，如下图：

且明细表中也过滤出对应省份城市的数据。


日期过滤组件不绑定字段- FineReport帮助文档|报表开发|报表使用|学习教程

日期过滤组件不绑定字段

1、描述

日期过滤组件不绑定字段指的是在dashboard中拖拽时间控件的时候，不为该过滤组件数据栏绑定字段，即时间过滤字段为空。而在需要过滤时间的组件中对指标进行时间控件的过滤，可以实现模板中单个组件的时间过滤。应用于根据日期过滤组件所选时间筛选不同的指标数据项，如下图，根据所选日期筛选出当前月、上一月、上两月、上三月的浏览量数据。

2、示例

日期过滤组件不绑定字段可以实现参数过滤的效果，达到筛选给定时间的同时展现和该时间有关联的其他时间的数据。

例如，我们在统计互联网访问量的时候，想用日期过滤查看各个渠道的月浏览量数据分布，同时想看该日期前一个月、两个月、三个月的浏览趋势变化，即可使用日期过滤组件不绑定字段来实现。

2.1 操作步骤

添加日期过滤组件

首先，在仪表板中拖入日期面板过滤组件，不绑定任何字段：

互联网行业>互联网渠道统计数据的渠道及浏览量数据，并复制多个浏览量字段，分别命名为上一月浏览量、上两月浏览量、上三月浏览量，如下图：

添加过滤条件

分别对浏览量、上一月浏览量、上两月浏览量、上三月浏览量字段进行过滤，浏览量字段需要过滤出所选日期过滤组件当月的数据，因此为浏览量字段添加过滤条件为“统计日期属于日期的全月”，其中日期为过滤组件值，全月选择的是0年前0月前的全月，如下图：

2.2 效果查看

此时我们进入仪表板，在日期面板过滤组件中选择一个时间，比如“2015-11-13”，点击确定，此时分组表中即分别过滤出2015年11月当月的浏览量、上一月的浏览量、上两月的浏览量、上三月的浏览量，如下图：

3、用法说明

3.1 条件属性

日期过滤组件不绑定字段，指标处选择过滤该控件时，支持的条件包含四中，分别为属于、不属于、某个日期之前、某个日期之后，分别可以过滤出属于日期控件所选时间、不属于日期控件所选时间、日期控件所选时间之前、日期控件所选时间之后的效果，如下图：

3.2 日期区间过滤组件

除了上面介绍的日期面板过滤组件支持不绑定字段实现参数过滤效果外，日期区间过滤组件也可以在使用时不绑定字段而在指标处过滤该控件，可以选择过滤出同一步长区间的其他时间值，比如过滤出1年前的该日期区间所选同一步长的浏览量，日期区间过滤组件选择2015年10月-12月，则过滤的浏览量为2014年10月-12月的数据。如下图：

而在选择过滤条件为某个日期之前/后时，对应的日期区间控件能够选择日期区间开始时间和日期区间结束时间，如下图：

对应的时间单位选择为对应单位的初/末，比如选择1年前，则可选择年初/年末；选择1季度前，则可选择季初/季末。

比如我们选择的添加过滤条件为“统计日期为日期区间开始时间1年前年初”，则在日期区间过滤组件选择2015年10月-12月时，该浏览量过滤出的为2014年1月1日的数据。


过滤组件的参数用法- FineReport帮助文档|报表开发|报表使用|学习教程

过滤组件的参数用法

1、描述

过滤组件的参数用法是实时数据（直连数据库）特有的功能，因为实时数据是将前端页面上的交互式拖拽操作转成不同数据库查询语言的过程，所以通过参数的功能，能实现返回动态SQL的效果。过滤组件绑定参数后，当输入或选择数据时，将参数带入sql实时传递给数据库执行，从而实现过滤效果，是一个向数据库重新请求结果的过程。

注：不支持表名或者字段名中等对表结构有影响的位置添加参数。目前仅有文本过滤组件和日期类过滤组件提供绑定参数功能。

2、参数使用示例

2.1 数据准备

在数据准备>业务包下选择添加SQL数据集，如下图：

select * from new_dian where 店性质 in ('${店性质}')），点击刷新获取参数并输入默认值，获取数据预览，如下图：

确定保存该数据表设置。为该表开启实时数据按钮，如下图：

2.2 过滤组件仅绑定参数

新建仪表板，在仪表板的组件中拖入刚刚创建的门店信息表中的字段，如下图，可以看到该组件显示数据为之前设置的店性质默认值自由店的数据。

注：此时所有sql数据集获取的参数都在这个下拉框中，因此不是一个作用的参数最好不要用一样的参数名。

确定保存该过滤组件设置，此时实现的效果是文本过滤组件不绑定字段。

回到仪表板界面，因为文本过滤组件没有绑定字段，所以文本过滤组件的下拉列表是空的。需要我们自己手动输入店性质。比如我们输入管理店，回车。此时下面的数据就变成了店性质为管理店的门店信息，如下图：

2.3 过滤组件绑定字段和参数

过滤组件绑定字段和参数是为了实现在过滤组件下拉时，可以直接选择数据进行参数过滤。

选择之前新建的文本过滤组件，进入其详细设置界面，为其绑定字段“店性质”，且该店性质字段不能为之前设置的带参数的字段（需要另外创建一张不带店性质参数的门店信息表，此处可直接使用零售行业(实时数据)>门店信息下的店性质字段）。如下图：

确定保存该文本过滤组件设置。

进入仪表板，可以看到该文本过滤组件中可以选择店性质的字段数据，如下图：

确定，出来的结果都是对应店性质的门店数据。

注：此处不用带参数的门店信息表的店性质字段拖入文本过滤组件中，是因为此时“门店信息表(有参数的)”取过来数据库的数据，是店性质为设置的默认值自有店的门店信息。所以文本框下拉出来的值也只有自有店。不包括所有店性质的字段值。

3、过滤组件的两种用法

过滤组件有两种用法：上面介绍的参数绑定的用法和普通过滤组件的用法，默认情况下过滤组件的功能为参数控件和普通控件只有一个生效。若想要同一个过滤组件两种功能同时实现的效果，可去管理系统>系统管理>常规中的BI参数设置框，开启参数控件过滤生效按钮，如下图：


文本组件- FineReport帮助文档|报表开发|报表使用|学习教程

文本组件

1、描述

文本组件在线视频学习请查看【其他组件】

文本组件可添加文字，主要用于对仪表板、组件等进行注释，或给查看仪表板的用户做出文字提示等。

2、添加文本组件

1、如下图，在左侧操作栏的其他中选择文本组件并拖拽至仪表板界面上；

2、直接在文本框中单击输入文本即可，文本组件可对输入的文字格式及颜色进行设置，如下图，支持选择字体、设置字号大小、字体颜色、设置文本组件背景、设置文字位置等功能。

对于输入的文本可针对不同的文字设置不同的样式，如下图：

3、动态文本显示

文本组件除了支持直接输入文本外，还支持选择字段添加。选择字段添加后可以联动其他组件（文本组件只能被联动，也就是只能点击其他组件中的数据，文本动态显示），即实现动态显示文本内容的功能。

如下图，点击文本组件最右侧的+按钮，即可选择仪表板中已添加组件的字段，我们为该文本组件添加“合同签约时间”字段。（注：必须点击字段添加进去，手动输入无效）

此时，我们点击统计组件中的合同签约时间2012年，该文本组件即动态显示当前选择的年份，显示文本为“2012年合同信息”。

文本组件同时支持允许重叠，单击该按钮即可。使用与组件允许重叠一样。

文本组件在线视频学习请查看 【其他组件】


图片组件- FineReport帮助文档|报表开发|报表使用|学习教程

图片组件

1、描述

图片组件在线视频学习请查看 【其他组件】

图片组件可用于上传图片至仪表板中，支持的图片类型jpg、png、bmp以及gif四种类型。

注：图片的名称不能有@，%，&等特殊符号，否则上传会报错。

2、图片组件工具栏

图片组件右上角分别为上传图片、图片尺寸、添加网页链接、删除。

上传图片

上传图片有两种方式：点击右上角的按钮和双击上传图片。若要更换组件中的图片，可点击右上角上传图片按钮重新上传。

图片尺寸

图片尺寸可设置原尺寸、等比适应、适应组件三种方式。原尺寸指不改变图片本身的大小进行导入；等比适应指按照图片的长宽比例自动去适应组件的大小，图片的大小会随着组件的改变等比例拉伸；适应组件指对导入的图片的大小进行拉伸，使得图片始终与组件大小相同。

添加网页链接

点击右上角添加超链按钮，可在该图片上添加超级链接，点击图片即可跳转至该链接地址。

允许重叠

图片组件支持允许重叠，单击该按钮即可。使用与 组件允许重叠 一样。

图片组件在线视频学习请查看 【其他组件】


Web组件- FineReport帮助文档|报表开发|报表使用|学习教程

Web组件

1、描述

Web组件在线视频学习请查看 【其他组件】

Web组件用于在仪表板界面中添加链接，展示网页等Web界面，使用简单便捷，为数据分析者提供了更加丰富的数据展示方式。

2、添加Web组件

1、如下图，在左侧操作栏的其他中选择Web组件并拖拽至仪表板界面上；

2、添加www.finebi.com以后组件展示效果如下图：

3、显示cpt报表

Web组件除了添加网页Web外还能填入相对路径以展示其他模板/报表，如下图，为web组件添加链接：/webroot/decision/view/report?viewlet=聚合报表.cpt，组件即可展示FineBI/webapps/webroot/WEB-INF/reportlets目录下的聚合报表.cpt。

Web组件在线视频学习请查看 【其他组件】


维度字段操作- FineReport帮助文档|报表开发|报表使用|学习教程

维度字段操作

1、描述

维度字段操作在线视频学习请查看【待分析区域维度字段操作】

用户在分析数据时，首先需要考虑的就是想要分析哪些数据，因此在组件详细配置页面提供了待分析字段区域，包括待分析的维度和指标字段。维度字段默认为所选取表中的文本和时间字段，指标字段默认为所选取表中的数值字段，如下图：

将鼠标悬浮在字段上会出现下拉按钮，下拉框中包含可对待分析字段做的操作，维度字段的操作包含：创建钻取目录、转化为地理角色、重命名和复制。

注：在维度字段最下方，统一添加了一个字段“指标名称”，在分析时，用来指代当前分析的指标字段的名称。如指标分别为11年销售额，12年销售额，13年销售额，想要以年份为维度分析每个销售人员的销售额情况，就需要提供一个新的维度（维度值为11年，12年，13年）来满足客户需求。

下面我们将分章节详细介绍待分析的维度字段下拉所支持的功能。

2、索引

创建钻取目录

维度转化为地理角色

维度字段复制

维度字段重命名

维度字段删除

维度转化为指标

指标名称

维度字段操作在线视频学习请查看 【待分析区域维度字段操作】


创建钻取目录- FineReport帮助文档|报表开发|报表使用|学习教程

创建钻取目录

1、描述

当使用数据钻取功能时，需要在待分析区域的维度字段创建钻取目录来实现数据的分层。

2、创建钻取目录

1、待分析区域的维度字段中，在字段的下拉菜单选择创建钻取目录；或者在列表中，将一个维度字段拖拽到另一个维度中，用以创建钻取目录。如下图：

方法1：

方法2：

确定该钻取目录即创建成功。钻取目录下会按照顺序显示组成的维度字段，各个维度字段可以调整上下顺序。

数据钻取。

4、创建成功的钻取目录中的字段若想移出钻取目录，在字段的下拉列表中选择移出钻取目录，或者直接将该维度字段拖拽出目录即可。


维度转化为地理角色- FineReport帮助文档|报表开发|报表使用|学习教程

维度转化为地理角色

1、描述

在FineBI中使用地图相关图表时，需要拖入地理维度字段（经度、纬度），而数据库中保存的往往是省份、城市、地区等等文本字段，因此在图表中使用时需要先将这些维度字段转换为地理角色经度、纬度字段。

2、转化为地理角色

1、在待分析区域的地理维度字段的下拉按钮中，选择地理角色，出现转化为地理角色的地理分类，包括国家/地区、省/市/自治区、城市、区/县、自定义图片，根据对应的维度字段选择对应的地理分类。如下图，在城市字段的下拉框中选择地理角色>城市。

确定，则城市字段即转化为地理角色的经度、维度字段，如下图：

创建填充地图。


维度字段复制- FineReport帮助文档|报表开发|报表使用|学习教程

维度字段复制

1、描述

对于待分析区域的维度字段，业务人员可以选择复制初始字段进行其他操作。

2、复制操作

1、在组件详细设置界面，将鼠标悬浮在维度字段上，选择下拉>复制，如下图：

2、默认复制后的字段名为原始字段名后加数字，如下图：

复制后的字段可以进行重命名、删除的操作，初始字段不支持这些功能。


维度字段重命名- FineReport帮助文档|报表开发|报表使用|学习教程

维度字段重命名

1、描述

若业务人员觉得待分析区域的维度字段不好理解，可以对该字段先复制后再进行重命名，以方便后续仪表板的展示。

注：只有复制的字段或者创建的计算指标字段可以重命名，初始字段不可重命名。因此下面的“合同付款类型”需要先复制才可重命名。

2、重命名操作

1、在组件详细设置界面，将鼠标悬浮在维度字段上，选择下拉>复制，如下图：

2、在已复制好的字段上，同样将鼠标悬浮，选择下拉>重命名，如下图：

即可在字段名处重新输入想要的新命名。比如我们将“合同付款类型”重命名为“客户付款方式”。

效果展示


维度字段删除- FineReport帮助文档|报表开发|报表使用|学习教程

维度字段删除

1、描述

若业务人员觉得之前复制或创建的维度字段不再需要使用了，可以将该维度字段删除。但是只有复制的字段或者创建的计算指标字段可以删除，初始字段不可删除。

2、删除操作

我们之前已经复制并重命名了维度字段“客户付款方式”，将鼠标悬浮在字段上，选择下拉>删除即可删除。

对于初始字段，其下拉功能中是没有删除功能的，比如初始字段“合同付款类型”。


维度转化为指标- FineReport帮助文档|报表开发|报表使用|学习教程

维度转化为指标

1、描述

对于之前将指标字段转换为维度字段的待分析区域的新维度字段，业务人员可以选择将它转换回指标字段。

指标转化为维度可以参考文档指标转换为维度 。

2、维度转化为指标

如下图，“总金额”属于维度字段，是从指标字段转化过来的。我们将鼠标悬浮在该字段上，可以看到下拉按钮下有转化为指标功能。

单击该按钮即可将“总金额”转换回指标，如下图：

注：只有先转化为维度字段的指标字段才有该维度转化为指标功能。


指标名称- FineReport帮助文档|报表开发|报表使用|学习教程

指标名称

1、描述

如果用户想以指标值的名称当做维度进行分析， 如指标分别为11年销售额，12年销售额，13年销售额，想要以年份为维度分析每个销售回款情况，此时就可以使用待分析区域下的“指标名称”字段来作为维度。该指标名称字段代表所有当前分析的图表类型对应的指标字段的名称。

注：在图表类型中选择表格组件后，待分析维度区域下将没有指标名称字段。

2、指标名称

2.1 拖入指标名称

1、比如我们新建组件实现按年份分析销售与回款金额，需要使用不同指标映射不同颜色，从而来直观查看不同维度指标的大小对比。可以将待分析区域的指标字段拖入图形属性下的颜色属性中，如下图：

2.2 指标名称字段操作

指标名称字段在图形属性下时支持复制和删除操作。

设置分类轴、复制、删除操作。


指标字段操作- FineReport帮助文档|报表开发|报表使用|学习教程

指标字段操作

1、描述

指标字段操作在线视频学习请查看【待分析区域指标字段操作】

组件详细配置界面中，待分析字段区域指标字段默认获取所选取表中的数值字段和记录数。

将鼠标悬浮在字段上会出现下拉按钮，下拉框中包含可对待分析字段做的操作，指标字段的操作包含：转化为地理角色、明细过滤、指标转化为维度、重命名、复制。

其中指标右上角的+按钮点击可以添加计算指标。

注：“记录数”字段为动态聚合值，根据当前分析的维度不同，对应的记录数数值也不同。下拉功能只支持复制，重命名，删除（需复制后的记录数字段才支持删除）。

下面我们将分章节详细介绍待分析的指标字段下拉所支持的功能。

2、索引

指标转化为地理角色

指标明细过滤

指标转化为维度

指标字段复制

指标字段重命名

指标字段删除

添加计算指标

指标字段操作在线视频学习请查看 【待分析区域指标字段操作】


指标转化为地理角色- FineReport帮助文档|报表开发|报表使用|学习教程

指标转化为地理角色

1、描述

对于文本字段中的地理维度我们可以使用维度转化为地理角色将其转化为地理的经度、维度来使用，而对于原先就保存在业务包中的经度维度数值字段，在FineBI中应该如何使用呢？

FineBI提供了指标转化为地理角色功能，对于保存在数据表中的数值经度、维度字段，可将其转化为地理角色，从而在地理图表中使用。

2、转化为地理角色

1、新建组件并选择销售DEMO业务包下的分公司维度表，可以看到该待分析区域的指标下面有“分公司经度”和“分公司纬度”字段。

直接拖拽该字段不能作为地理维度，因此可以点击字段的下拉，并选择转化为地理角色经度/纬度，如下图：

2、为“分公司经度”字段选择转换为地理角色>经度，“分公司纬度”字段选择转换为地理角色>纬度，如下图：

创建填充地图。


指标明细过滤- FineReport帮助文档|报表开发|报表使用|学习教程

指标明细过滤

1、描述

明细过滤为对对原始表中的明细数据进行过滤，业务人员如有需求可在待分析区域的指标字段下进行过滤操作，为指标添加过滤条件，包含添加条件和添加公式。

2、明细过滤操作

1、在组件详细设置界面，将鼠标悬浮在指标字段上，选择下拉>明细过滤，例如我们为“合同金额”字段添加明细过滤。

2、出现明细过滤设置界面，可以选择添加条件或者添加公式。

3、比如我们想要为“合同金额”字段添加：1、合同类型属于购买合同 2、产品单价大于10000，且两个条件之间是且的关系。

点击添加条件，选择字段“合同类型”属于"购买合同，如下图：

再点击添加公式，则默认两个条件为且关系，在左侧字段选择栏选择“合同金额”和“购买数量”字段，运算符选择“/”，条件输入“>10000”，如下图：

注：此处公式中的字段必须为从左侧字段选择栏点击选中的，手动输入无效。

4、若想要修改条件之间的关系，单击且并在“添加条件”或者“添加公式”处选择即可。

5、如果还想要添加更多条件/公式，点击添加条件或者添加公式并输入相应过滤条件选择并列关系即可。过滤条件添加完成后点击确定保存，该指标字段在被拖入分析区域后显示均为过滤后的数值，如下图，合同金额仅包含购买合同。


指标转化为维度- FineReport帮助文档|报表开发|报表使用|学习教程

指标转化为维度

1、描述

FineBI默认会将添加表中的数值字段获取到指标中，如果有数值字段想要放到待分析的维度中，可以选择将指标转化为维度。

2、指标转化为维度

1、在组件详细设置界面，将鼠标悬浮在指标字段上，选择下拉>转化为维度，如下图：

2、“总金额”字段即可转化为维度字段，如下图：

若在维度字段还想转换回指标，可以选择下拉>转化为指标即可。


指标字段复制- FineReport帮助文档|报表开发|报表使用|学习教程

指标字段复制

1、描述

对于待分析区域的指标字段，业务人员可以选择复制初始字段进行其他操作。

2、复制操作

1、在组件详细设置界面，将鼠标悬浮在指标字段上，选择下拉>复制，如下图：

2、默认复制后的字段名为原始字段名后加数字，如下图：

复制后的字段可以进行重命名、删除的操作，初始字段不支持这些功能。


指标字段重命名- FineReport帮助文档|报表开发|报表使用|学习教程

指标字段重命名

1、描述

若业务人员觉得待分析区域的指标字段不好理解，可以对该字段先复制后再进行重命名，以方便后续仪表板的展示。

注：只有复制的字段或者创建的计算指标字段可以重命名，初始字段不可重命名。因此下面的“购买的产品”字段需要先复制才可重命名。

2、重命名操作

1、在组件详细设置界面，将鼠标悬浮在指标字段上，选择下拉>复制，如下图：

2、在已复制好的字段上，同样将鼠标悬浮，选择下拉>重命名，如下图：

3、即可在字段名处重新输入想要的新命名。比如我们将“购买的产品”重命名为“产品序号”。


指标字段删除- FineReport帮助文档|报表开发|报表使用|学习教程

指标字段删除

1、描述

若业务人员觉得之前复制或创建的指标字段不再需要使用了，可以将该指标字段删除。但是只有复制的字段或者创建的计算指标字段可以删除，初始字段不可删除。

2、删除操作

我们之前已经复制并重命名了指标字段“产品序号”，将鼠标悬浮在字段上，选择下拉>删除即可删除。

注：对于初始字段，其下拉功能中是没有删除功能的，比如初始字段“购买的产品”，下拉中没有删除选项。


添加计算指标- FineReport帮助文档|报表开发|报表使用|学习教程

添加计算指标

1、描述

FineBI提供了添加计算指标的功能来实现对已存在的指标项进行再计算得到新的计算指标，计算指标只能是数值类型。包括的计算类型为：公式/函数、排名/组内排名、所有值/组内所有值、累计值/组内累计值。

2、计算指标

2.1 添加计算指标

1、在组件详细设置界面，点击待分析区域指标字段右侧的+按钮。

2、进入计算指标设置界面，可以选择指标计算的方式和对应的配置项，如下图为公式/函数计算指标的详细设置界面。

函数展开后，能够选择聚合、数值、文本等函数，具体函数使用请参考函数。

其中字段选择处能够选择当前表所有时间类型字段和所有日期过滤组件值，比如下图我们获取的年份控件的值可以进行选择。

3、在计算指标的公式中需要选择计算指标的函数、计算中的字段、运算符号等，并在预览框出现计算的公式，公式输入成功后可点击修改计算指标的名称，点击确定即可保存。

如下图，我们新增一个计算指标为产品单价，公式为总金额/购买数量。

注：此处公式中的数值字段需从左侧点击选择，手动输入无效。

4、点击确定保存后，在待分析区域的指标栏就会新增计算指标字段，如下图所示：

2.2 计算指标字段操作

新增的计算指标支持的功能包括：修改计算指标、转化为地理角色、转化为维度、重命名、复制、删除。

其中修改计算指标即为重新修改之前已配置的计算公式，从而重新生成计算结果。


记录数- FineReport帮助文档|报表开发|报表使用|学习教程

记录数

1、描述

用户在使用FineBI进行数据分析时，有时需要统计客户数、订单数、分公司数等等，而这些一般在数据库的表数据下没有字段直接记录，那么该如何实现统计呢？FineBI提供了记录数字段来记录数据表中的记录条数，同时还可切换记录统计时依赖的条件，来实现不同记录个数的统计。

2、记录数

新建仪表板和组件后，进入组件详细设置界面，在左侧的待分析区域指标下存在记录数字段。如下图，分公司维度表中存在“记录数”字段。

注：图表类型选择明细表后，没有该记录数字段，不支持记录数功能。

3、使用示例

比如想要统计公司每个客户经理签约的客户数，我们就可以使用记录数功能。在组件的维度和指标中分别拖入客户对应销售员和客户维度表记录数，如下图：

该记录数将根据销售员来统计客户维度表下每个销售员对应的明细数量，也即客户数量。

记录数默认会依赖数据表中的总行数，也可以选择切换依赖条件，可选的依赖条件与该数据表中包含的维度字段一致，如下图：

比如我们选择切换该记录数统计个数依赖省份，如下图：

则该记录数表示每个销售员的客户来源省份个数，如下图，比如allen的客户来源有1个省份、alvin的客户来自于3个省份。


时序预测（可视化）- FineReport帮助文档|报表开发|报表使用|学习教程

时序预测（可视化）

1、描述

时序预测（可视化）在线视频学习请查看【前端时序预测】

之前我们介绍过在数据加工时，可对数据进行较高级的处理方式--数据挖掘，数据挖掘为通过对数据所包含的深层内在的信息进行提取，为企业实现精准的数据聚类/预测，协助企业及时调整策略做出更好的决策，增强企业的可持续竞争性。而在前端仪表板分析时，FineBI直接提供了数据挖掘的入口，可直接在分析时选择对该维度对应的指标做出预测，包含时序预测和聚类。

时序预测主要是指在时间维度上的预测，基于历史数据来预测未来一定时间内的数据，例如根据过去两个月的销售额来预测未来一周的销售额；根据过去一年的发电量来预测未来一个月的发电需求。

2、时序预测

2.1 新建组件

新建仪表板并创建组件，选择样式数据下的火电数据，将待分析区域维度下的字段“年月日”拖入横轴中，将指标下的字段“FDL_DR”拖入纵轴中，将组件样式下的自适应显示切换为整体适应，并调整连线，如下图：

图表显示的为发电量随时间的变化，此时页面右上角的数据挖掘按钮可以点击，如下图：

注：在横纵轴有且只有一个时间类型字段，时间格式设置为'年月日'、'年周数'、'年月'、'年季度'、'年'，时间字段所在的轴无其他字段，且除时间字段外分析区域无其他维度字段，才可进行时序预测。

2.2 配置时序预测

单击该数据挖掘按钮，进入数据挖掘配置界面，可以选择数据挖掘类型，包含时序预测和聚类，如下图：

选择时序预测，可配置预测长度、周期数、考虑季节因素、考虑水平因素、是否缺失值填充、置信区间等，默认调用holt-winters算法作为算法，采用holt-winters算法配置项，时序预测的详细配置与自助数据集中的数据挖掘配置一样，可参考时序预测的介绍进行配置。

预测长度：预测长度指的是预测数据对应的时间段长度。默认为自动。自动时，根据时间字段的格式不同，对应的自动长度不同；自定义时，根据时间字段的格式不同，可设置的长度单位不同。

周期数：周期数指的是预测系数中的周期波动数，如预测帆软的每月销售总额，由于每年到2月份会出现波谷，则周期数可设置为1年。周期数默认为自动，会自动根据数据的波动周期判断是否采用周期以及设置对应的周期数。用户也可手动指定周期数，手动指定周期数的单元取决于时间格式。

考虑季节因素：单选无、累加、累乘，默认无。

考虑水平因素：单选有、无，默认无。

缺失值填充：可选择是否缺失值填充以及自定义填充值。默认填充值为0。

置信区间：可设置是否显示预测区间，以及对应的区间范围。默认范围为95%，可调整为<1的其他百分比值。

2.3 效果查看

配置时序预测对应的参数后，点击确定，图表中即按照预测长度出现预测的数据，且右上角的数据挖掘按钮变蓝，如下图：

注：此步骤若数据有问题，在点击确定后该数据挖掘按钮会标红，预测不出数据。数据详细要求可查看第三章节的注意事项。

若想要对数据挖掘预测的参数进行修改或删除，可以将鼠标悬浮在数据挖掘上，点击编辑或删除，如下图：

3、注意事项

3.1 缺失值

在进行挖掘预测的时候，预测指标有缺失值时需要勾选缺失值填充，否则无法预测出数据。且若缺失的数据大于5%时，尽管勾选缺失值填充，仍有可能预测不出，缺失数据不能过多。

3.2 时间列

时间列有NA值，比如某行记录时间列是空但是有对应的指标值，这种情况无法预测。

时间列不连续，比如2011-01-01，2011-01-03都有记录，但是没有2011-01-02这行的记录，这种情况下如果确实的不是太多，勾选缺失值填充后还是能预测的；但如果确实的太多，则可能预测不出。

3.3 置信区间

若不计算置信区间，数据个数需大于等于填入的周期数*2+1个数据。即数据个数 >= 周期数*2+1；比如周期数为12月，则需要有大于等于25个月的数据个数。

若计算置信区间，数据个数需大于等于填入周期数*2+1+预测长度，即数据个数 >=（周期数*2+1+预测长度）；比如周期数为7天，预测长度为7天，则需要有大于等于22天的数据个数。

时序预测（可视化）在线视频学习请查看 【前端时序预测】


聚类（可视化）- FineReport帮助文档|报表开发|报表使用|学习教程

聚类（可视化）

1、描述

聚类（可视化）在线视频学习请查看【聚类分析】

与时序预测类似，在前端仪表板分析时，FineBI直接提供了数据挖掘的入口，可直接在分析时选择对该维度对应的指标做聚类操作。聚类指的是根据指标的差异性，将明细数据细分为各个集群。

2、聚类

2.1 新建组件

1、新建仪表板并创建组件，选择样式数据下的鸢尾花聚类分析，将待分析区域指标下的字段“序号”转化为维度并拖入横轴中，将指标下的字段“SEPALLENGTH”、“SEPALWIDTH”拖入纵轴中，为序号字段选择相同值为一组，在图形属性下选择形状为点，如下图：

2、图表显示的为鸢尾花长宽的变化，此时页面右上角的数据挖掘按钮可以点击，如下图：

注：分析区域至少包含一个指标项，才可对数据进行聚类分析。

2.2 配置聚类

1、单击该数据挖掘按钮，进入数据挖掘配置界面，可以选择数据挖掘类型，包含时序预测和聚类，如下图，此时时序预测为灰化不可点击，默认即为聚类。

2、选择聚类，可配置聚类列名、聚类指标、聚类数等，聚类的详细配置与自助数据集中的数据挖掘配置一样，可参考 聚类 的介绍进行配置。

聚类列名：指的是新生成的聚类维度的列名，默认为“聚类”。可重命名。

聚类指标：聚类分解依据的指标列，默认为当前分析区域内所有指标，可设置采用哪些指标项进行分析。

聚类数：聚类数指的是聚类后生成的集群个数，默认为空，用户需自定义设置个数，必填项。

3、效果展示

配置聚类对应的参数后，点击确定，图表中即新增一列聚类的维度，该新增的聚类维度自动添加到图形属性的细粒度下，如下图：

注：默认“聚类”字段放置在颜色属性中，如果分析本身颜色有字段对应，则该字段放置在细粒度中。

222 可选择将该聚类移动到颜色属性下，在图表中点的颜色即按照聚类的分类来显示，如下图：

聚类（可视化）在线视频学习请查看【聚类分析】


组件操作- FineReport帮助文档|报表开发|报表使用|学习教程

组件操作

1、描述

在添加完组件后，还可以对组件进行一系列操作，包括：数据钻取、组件放大、组件复原、查看组件过滤条件、组件维度切换、组件跳转、组件手动设置联动、组件重叠、组件标题、组件导出Excel、组件复用等，下面我们将对这些功能进行详细的介绍。

2、索引

数据钻取

组件放大

组件复原

查看组件过滤条件

组件维度切换

组件跳转

组件手动设置联动

组件重叠

组件标题

组件导出Excel

组件复用

组件查看明细


数据钻取- FineReport帮助文档|报表开发|报表使用|学习教程

数据钻取

1、描述

数据钻取在线视频学习请查看【数据钻取&&维度切换】

在实际使用仪表板时，我们往往会先通过统计图表从宏观层面把握业务问题所在，通过一个页面内的钻取联动逐级向下钻取，直到明细数据，定位到具体的问题。数据钻取通常指向下钻取即下钻，是指将某特定分组数据按第二维度继续细化的方式，比如说我们用坐标轴图展现了各个省份的销售额，点击具体某个省份的数据按各个城市下钻即可查看到该省份下的各个城市的销售额，这就是钻取，下面我们就以省份销售额为例讲述数据钻取的实现方式。

2、数据钻取

2.1 创建钻取目录

1、在仪表板中新建组件，选择销售DEMO业务包下的地区数据自助数据集，进入组件详细设置界面，如下图：

2、因为我们要实现的是从省份向下钻取查看对应数据，因此在待分析的维度下找到“省份”字段，点击下拉并选择创建钻取目录，如下图：

3、钻取目录的名称默认即为“省份”名称，点击确定。

4、则该省份的钻取目录即创建成功，如下图：

5、因为想要从省份向下钻取城市等维度，因此将维度下的“城市”、“客户名称”字段移至刚刚创建的钻取目录下，

2.2 字段配置

1、此时的钻取目录我们创建成功了，将该钻取目录字段“省份”拖拽至横轴，指标下的“合同金额”字段拖至纵轴，如下图所示：

2、单击省份字段的下拉框，可以设置钻取顺序为固定和不固定，如下图，分别表示在钻取的时候固定按照钻取目录中的字段顺序钻取或者钻取时自定义选择下钻字段。

2.3 效果展示

点击右上角的进入仪表板按钮，回到仪表板分析主体界面，图表中显示的即为各个省份对应的合同金额，如下图：

随意点击任意一个柱子，即出现钻取框，如下图：

单击下钻按钮，因为我们之前选择的选取顺序为不固定，因此可以随意选择下钻的字段，如下图：

比如我们选择下钻到客户名称字段，则图表即显示广东省的客户合同金额统计。

单击钻取框的全部按钮，即可以回到省份统计维度。

3、地图钻取

上面我们介绍了数据钻取一般的操作步骤，但是地图钻取与其他图表稍微有点区别，需要将创建的钻取目录字段拖入图形属性下的任意栏，包括颜色、标签、提示或细粒度任意一个即可。

3.1 创建钻取目录

1、比如我们想要创建从省份钻取到城市的客户分布数据，新建组件后选择销售DEMO业务包下的客户维度表，选择待分析维度下的省份字段，将其转换为地理角色，如下图，详细操作步骤可参考维度转化为地理角色。

2、生成省份的经纬度字段，同样为城市字段转换为地理角色，生成城市的经纬度字段，如下图：

3、经纬度字段转化好以后，将城市字段拖至省份字段处，创建省份-城市的钻取目录，如下图：

4、自动生成钻取目录的名称，如下图，点击确定保存。

5、此时省份和城市也自动生成了经纬度的钻取字段，如下图：

3.2 创建图表

1、将省份,城市（经度）和省份,城市（纬度）字段拖至横纵轴中，并在图表类型中选择区域地图显示，如下图：

2、此时图表中显示了客户覆盖的省份，但还没能实现钻取的效果，需要我们将创建的钻取目录字段“省份,城市”拖至图形属性下，比如我们将该字段拖至细粒度下，如下图：

3.3 效果查看

此时单击地图中的任意省份区域，即会出现钻取框，如下图：

单击下钻按钮，即钻取至对应省份查看城市的数据。

数据钻取在线视频学习请查看【数据钻取&&维度切换】


组件复原- FineReport帮助文档|报表开发|报表使用|学习教程

组件复原

1、描述

组件复原用于在图表被局部放大/缩小查看后的恢复原状，针对于会有缩放情况的图表，比如柱状图、条形图、折线图、面积图、力学气泡图、点图、地图等，表格组件不支持该功能。点击恢复按钮后，组件内的图标样式恢复调整前的样式。

2、组件复原

1、比如针对上面的柱状图，签约时间较多，我们可以框选部分柱子进行放大查看，直接用鼠标框选范围即可，如下图：

2、此时该部分被框选的柱子即被放大显示。

3、要想恢复原先的所有签约时间的合同金额显示，点击右上角的复原按钮即可。

图表无论在编辑还是预览状态下均支持该复原功能。


组件放大- FineReport帮助文档|报表开发|报表使用|学习教程

组件放大

1、描述

有时仪表板中放的组件较多，每个组件占据的位置较小，查看不了组件展示的详细数据信息。此时我们就可使用组件放大功能，对组件进行最大化查看（包括图表和表格）；放大以后组件会全屏显示，效果如下图：

点击放大

放大效果

恢复原状态

若想要恢复到原状态，可点击放大后的仪表板右上角的“缩小”按钮即可。


查看组件过滤条件- FineReport帮助文档|报表开发|报表使用|学习教程

查看组件过滤条件

1、描述

前面我们介绍了表格和图表均能设置过滤，在仪表板上直接显示经过过滤的数据，比如销售额前10、签约时间在2017年等等。FineBI提供了在组件状态中直接查看过滤条件的功能。

2、过滤条件查看

1、比如我们为上图中的分组表在组件分析区域设置了过滤条件为合同类型为服务协议和购买合同，总金额为TOP10。

2、此时我们进入仪表板，点击该组件的查看过滤条件按钮，即可看到组件中已经设置的过滤条件。（注：仪表板中若有过滤组件并对该分组表设置了过滤，也会同样显示过滤条件）

3、除了上面直接点击该过滤图标按钮，还可在组件按钮中选择下拉>查看过滤条件，效果是一样的。

4、除了上述查看过滤条件的地方，在组件列字段右侧图标选择过滤，还可查看该字段已设置的过滤条件，并新增过滤条件。

如下图，显示了合同类型已有过滤条件并可新增条件。


组件维度切换- FineReport帮助文档|报表开发|报表使用|学习教程

组件维度切换

1、描述

组件维度切换在线视频学习请查看 【数据钻取&&维度切换】

组件维度切换功能用于图表/表格的旋转分析，通过快捷切换设置窗口切换维度，实现图表/表格数据观察角度的旋转。

2、维度切换

维度切换的组件配置与数据钻取一样，需要创建钻取目录，并将需要切换的维度字段添加到创建的钻取目录中，详细创建步骤可参考创建钻取目录。

1、创建好后将该钻取目录及指标字段拖入横纵轴中，并选择图表类型，如下图：

进入仪表板，回到仪表板分析主体界面。点击组件右上角的维度切换按钮，即可以选择刚刚创建的钻取目录下的其他维度，比如“品类描述”、“品牌描述”。

组件维度切换在线视频学习请查看【数据钻取&&维度切换】


URL参数的传递使用- FineReport帮助文档|报表开发|报表使用|学习教程

URL参数的传递使用

1、描述

在开启了实时数据，使用直连数据库时，FineBI支持在在SQL数据集中添加参数，添加的参数在前端仪表板中能够绑定使用，且能够通过参数的创建传递来实现部分指标的过滤功能。

在FineBI5.0版本中默认支持该功能，不需要任何的配置修改。比如我们想要在打开门店相关仪表板URL的时候，直接添加相关参数，就可以实现仪表板过滤出管理店数据的效果。下面我们介绍一下如何添加并使用参数传递。

注：该URL参数传递功能仅使用开启实时数据的仪表板支持，更新到本地的数据不支持。

2、参数添加

在业务包中新建带参数的SQL数据集，如select * from new_dian where 店性质 in ('${店性质}')，SQL数据集的创建请参考添加SQL数据集。如下图，在输入带参数的SQL语句后，点击刷新按钮，参数设置框会自动获取SQL语句中的参数，可以修改参数的字段类型和默认值，右侧为该SQL语句的数据预览框。比如我们设置店性质参数的默认值为自有店，则数据预览处即为通过SQL语句获取的所有自有店的数据。

select * from new_dian where 店性质 in ('${店性质}')

确定按钮，该SQL数据集即创建成功。需要为该SQL数据集开启实时数据，如下图，点击开启门店数据表右侧的实时数据按钮。

注：若未开启实时数据直连数据库，则不能进行后续前端的参数传递实现指标过滤。

3、参数使用

3.1 参数默认值

新建一张仪表板，选择刚刚创建的带参数的SQL数据表，拖入“店性质”和“记录数”字段，选择分组表，如下图：

3.2 公共链接参数传递

若要实现在URL中的参数传递过滤，首先需要获取该仪表板的URL。进入仪表板节点，对新建的仪表板选择创建公共链接，如下图：

&参数名称=参数值，比如获取的链接为：http://120.27.40.246:37799/webroot/decision/v5/design/report/share/7352147fc403469596a2a61b1c6b111f?link=eyJhbGciOiJIUzI1NiJ9.eyJyZXBvcnRJZCI6IjczNTIxNDdmYzQwMzQ2OTU5NmEyYTYxYjFjNmIxMTFmIiwidXNlcklkIjoiYjVmMGMyZWUtNjQwZi00MDM5LWE0ZDQtOTE4YjU1MzU0ODk4IiwianRpIjoiand0In0.49ETHgp71zXVeosRoxVV-re77-6HPyM-mSUrsm4QVp8

在最后添加&店性质=管理店，如：

http://120.27.40.246:37799/webroot/decision/v5/design/report/share/7352147fc403469596a2a61b1c6b111f?link=eyJhbGciOiJIUzI1NiJ9.eyJyZXBvcnRJZCI6IjczNTIxNDdmYzQwMzQ2OTU5NmEyYTYxYjFjNmIxMTFmIiwidXNlcklkIjoiYjVmMGMyZWUtNjQwZi00MDM5LWE0ZDQtOTE4YjU1MzU0ODk4IiwianRpIjoiand0In0.49ETHgp71zXVeosRoxVV-re77-6HPyM-mSUrsm4QVp8&店性质=管理店

在地址栏输入添加参数后的URL，可以看到通过URL中的参数传递，实现了管理店的过滤，如下图：

注：若浏览器不支持中文参数，即该参数传递过滤不生效，就需要把json类型的url参数值先进行编码encodeURIComponent()。比如edge浏览器。

3.3 预览链接参数传递

除了上述通过公共链接获取URL添加参数传递外，还可以在仪表板预览的时候直接加上?参数名称=参数值，来进行参数的传递。

比如，对于之前创建的仪表板，直接点击预览后可以获取预览的URL，如下图：

?店性质=管理店，如下图：

可以看到下方的分组表中过滤出了管理店的数据，实现了参数的传递功能。


组件跳转- FineReport帮助文档|报表开发|报表使用|学习教程

组件跳转

1、描述

组件跳转在线视频学习请查看【组件跳转】

当在浏览某些汇总数据仪表板时，用户往往想要通过点击组件直接跳转到介绍该类型详细数据的仪表板B中，并且仪表板B中的数据根据点击的数据实现了过滤，就像在浏览网页时的超链接功能一样。例如点击仪表板互联网数据分析概况的新媒体渠道字段，跳转到仪表板公司综合运营管理驾驶舱中，且数据过滤为新媒体渠道。

FineBI为用户提供了组件跳转来实现该功能，跳转分为分析模板和网页链接。分析模板跳转支持了对跳转的分析模板设置过滤字段，实现FineBI中仪表板之间的过滤跳转；网页链接跳转支持了在网页URL地址中可拼接动态字段值作为参数传递给目标地址，实现页面之间的过滤跳转。下面分别对两种跳转进行详细介绍。

2、跳转示例

2.1 分析模板

1、新建一张仪表板并添加组件后，为该组件选择下拉>跳转设置（组件默认为开启跳转状态），如下图：

若下拉中的开启跳转未勾选的话，需要先勾选开启跳转，才能点击跳转设置。

2、进入跳转详细设置界面，单击添加跳转+，出现两个跳转选项：分析模板和网页链接，选择分析模板，如下图：

3、进入跳转分析模板设置界面，可选择跳转的目标仪表板、是否传值即设置过滤字段、字段的选择等：

4、我们想要对“一级渠道名”进行过滤跳转，因此选择对应“公司综合运营驾驶舱”模板，勾选“对跳转目标传值”并设置传值源字段及目标字段均为互联网渠道统计数据下的“一级渠道名”，打开位置选择“新窗口”（如果想要直接在本页面/对话框打开可选择“当前窗口“或者“对话框”），点击确定保存，如下图：

5、若需同时设置多个过滤字段值，可点击添加按钮新增。且源字段和目标字段可选的字段只能是源模板和目标模板对应的业务包内字段，没有其他未添加字段可选。

注：若填了目标字段及源字段的传值关系，必须勾选“对跳转目标传值”，否则设置无效。

若勾选了“对跳转目标传值”，但未添加条件，则在跳转时将当前模板的控件过滤条件、联动钻取条件、维度与指标的过滤条件、触发条件值等全部传递给目标模板。

效果查看

如上设置完成后，点击柱形图中的任一柱子，均会出现跳转到按钮。如下图，我们选择点击新媒体营销柱子，点击跳转到后出现分析模板按钮，点击该跳转链接：

在新窗口跳转出了“公司综合运营驾驶舱”，且该仪表板过滤出了新媒体营销的数据，如下图：

2.2 网页链接

网页链接可跳转显示正常的网页或者拼接动态字段值作为参数传递给其他系统cpt／表单的网页URL，下面我们分别介绍。

简单的网页

1、在跳转设置中选择添加网页链接，如下图：

2、进入跳转网页链接的设置界面，如下图：

3、我们在跳转URL中直接输入www.finebi.com，并选择打开位置为对话框，点击确定保存：

4、此时随意点击组件中的某个元素，出现跳转到框，可以看到有网页链接可以选择：

5、点击网页链接，对话框即跳出跳转的FineBI网页窗口，如下图所示：

参数传递

跳转到其他系统URL的分为普通cpt/表单或者带参数的cpt/表单。

1）带参数的cpt/表单

带参数的跳转为选择拼接动态字段值作为参数传递给普通cpt/表单。书写规则是在对应的url位置中在左边选中字段填入，可填写绝对路径如：http://120.27.40.246:37799/webroot/decision/view/report?viewlet=供应商信息查询.cpt&para=​公司名称或相对路径：/webroot/decision/view/report?viewlet=供应商信息查询.cpt&para=​公司名称​

点击确定保存后，在组件中选择产品进行网页链接跳转，则跳转URL显示为：

http://120.27.40.246:37799/webroot/decision/view/report?viewlet=供应商信息查询.cpt&para=妙生，如下图所示：：

2）普通cpt/表单

普通cpt/表单的跳转即直接在URL处填写该cpt的url即可，如下图：

组件跳转在线视频学习请查看【组件跳转】


组件手动设置联动- FineReport帮助文档|报表开发|报表使用|学习教程

组件手动设置联动

1、描述

组件手动设置联动在线视频学习请查看【组件联动】

当业务员在实际使用时，在一个仪表板中添加了多个组件，但这些多个组件使用的数据管理员之前并没有为它们配置关联关系，实际数据之间存在相同的字段，此时业务人员该如何为这些数据手动配上关联关系呢？FineBI提供了组件手动设置联动功能，通过手动配置主联动组件需要传递过滤的字段和被联动组件需要接受过滤的字段的匹配关系，实现无关联的数据联动。下面我们详细介绍一下如何手动设置联动。

2、手动设置联动

1、在仪表板编辑界面添加了多个组件以后，单击选择组件右上角下拉>手动设置联动，如下图：

注：明细表和文本组件不能作为主联动组件设置，只能作为被联动组件设置联动。即明细表和文本组件的下拉中没有手动设置联动的选项，只有在其他组件手动设置联动时可以选择明细表和文本组件被联动。

2、进入联动设置界面，点击添加联动组件右侧的+，出现该仪表板中存在的所有组件，如下图：

3、选择想要设置的被联动组件，比如，此处我们选择各年销售统计组件，则组件中存在的相同的字段会默认被添加为联动依赖字段。

4、若不想要自动获取的联动依赖字段，可点击右侧的删除按钮，并选择添加联动依赖字段，进行字段的添加，可选字段为当前组件所在表的所有字段。联动依赖的两个字段必须保证字段类型一致，可以配置多条联动依赖条件，多个依赖条件之间为且的关系。

5、联动依赖字段添加完成后点击确定，组件之间的联动关系即添加成功。确保联动分组在一组内，即可以在仪表板中单击组件并查看到联动的数据过滤效果。

组件手动设置联动在线视频学习请查看【组件联动】


组件标题- FineReport帮助文档|报表开发|报表使用|学习教程

组件标题

1、描述

组件标题在线视频学习请查看 【组件其他操作】

之前我们介绍过在组件详细设置>组件样式处可对标题内容、格式进行设置，参考表格组件样式和图表组件样式。

而在组件状态下拉栏中也可以快捷选择是否显示组件标题。

组件的标题默认为勾选，若不想显示，去掉勾选即可。

组件标题在线视频学习请查看 【组件其他操作】


组件导出Excel- FineReport帮助文档|报表开发|报表使用|学习教程

组件导出Excel

1、描述

组件导出Excel在线视频学习请查看 【组件其他操作】

当我们做好业务分析以后，想要将分析的数据从系统中全部导出，就可以使用FineBI提供的组件导出为Excel功能。该功能支持将组件中的全部数据导出到Excel中保存在本地。

2、导出Excel

2.1 导出操作

在仪表板编辑界面中，选中对应组件，点击组件右上角的下拉按钮，选择导出Excel。

若在仪表板预览界面，则直接点击组件右上角的导出图标即可。

2.2 导出的文件

生成的Excel文件不仅包含组件数据，还包含组件数据中设置的过滤条件，如下图：

导出的excel分为两张sheet

sheet1

名称：组件名过滤条件

内容：在表格中显示，点击该组件查看过滤条件后的所有条件，如下图：

sheet2

名称：组件名

内容：在表格中显示该组件详细数据，表格类按展开所有节点后的形式展示

组件导出Excel在线视频学习请查看 【组件其他操作】


组件复用- FineReport帮助文档|报表开发|报表使用|学习教程

组件复用

1、描述

组件复用在线视频学习请查看【组件其他操作】
在使用FineBI进行即时分析的时候，很多时候会重复创建同一个组件(主要是数据配置)，当重复量很大的时候，这种重复劳动非常浪费时间，影响工作进度，为了减少工作量，加快工作效率，FineBI提出了复用的功能，即重复使用。

组件复用是指在一个分析中创建的组件可以重复使用到另一个分析中，即如果两个分析用到了同一个组件，且其想要的数据和分析效果也一样，那么，为了方便，可以直接使用组件复用，无需进行重复设置，节约时间，方便快捷。

组件复用包括不同模板之间的复用，还包括同一个模板之间的组件复制。

2、不同仪表板间选择

1、新建一个仪表板，在组件列表中点击最后一个复用，就会在侧面展示出当前系统登录用户所创建的、分享给我的所有仪表板和分析目录，分析目录下为挂载到目录中的所有仪表板（需要用户有该目录节点模板的查看权限）。点击某一个仪表板，即可显示该仪表板下所创建的所有组件、过滤组件、其他组件，直接拖曳就可以在新的仪表板中直接复用，比如说，单击点开公司综合运营驾驶舱仪表板，如下图：

2、直接拖拽组件至当前仪表板中即可，如下图：

3、在组件复用的搜索框可进行模糊搜索，如下图，显示的是标题中包含“行业”的组件。

注：复用后的组件就成为一个独立的组件个体了，可再次修改，对原组件没有任何影响。

3、同一个仪表板内的复用

在同一个仪表板中，可能存在需要将同一个组件显示多次，或者说同样的数据配置，用不同的组件类型显示，此时可以使用复制来快速实现。

点击组件右上角的下拉框，选择复制按钮，即可将该组件复制一个至当前仪表板中，如下图：

组件复用在线视频学习请查看 【组件其他操作】


组件查看明细- FineReport帮助文档|报表开发|报表使用|学习教程

组件查看明细

1、描述

在查看仪表板的时候，图表组件在预览状态下可以点击查看明细来查看该图表对应的明细数据。比如我们创建的随时间变化的合同金额折线图，在预览状态下右上角存在查看明细按钮，如下图：

X即可关闭明细的查看。


二次计算- FineReport帮助文档|报表开发|报表使用|学习教程

二次计算

1、描述

二次计算在线视频学习请查看【二次计算】

在FineBI的指标区域支持在前端快速进行对指标项的计算，而二次计算的功能就提供了针对维度过滤结果的再次计算。

2、二次计算

针对不同的快速计算方式，FineBI可提供的二次计算方式不一样。

对于快速计算中的所有值、组内所有值、累计值、组内累计值、排名、组内排名这些计算方式，默认开启指标的二次计算。即表示在维度设置了过滤条件以后，该指标将针对过滤结果进行再次计算。比如，按照省份统计的合同金额所有值求和，在为省份添加过滤条件以后，该合同金额的所有值将进行二次计算，重新计算维度过滤后的所有值求和。

其中所有值、组内所有值、排名、组内排名的计算方式支持取消二次计算，比如取消以后，该合同金额的求和为所有值求和，不为维度过滤后的结果。

累计值、组内累计值不支持取消二次计算。

二次计算在线视频学习请查看【二次计算】


仪表板- FineReport帮助文档|报表开发|报表使用|学习教程

仪表板

1、描述

仪表板在线视频学习请查看【仪表板概述】

仪表板为展示进行数据分析而创建的可视化组件的面板，在仪表板中可以添加任意的组件，包括表格、图表、控件等。而一张精心设计的仪表板不仅能够协调组织工作，帮助发现问题的关键，还能让别人一眼了解您想表达的内容，或者在你的基础上发散思维，拓展分析。下面我们介绍如何创建仪表板并进行一些管理操作。

2、新建仪表板

登录到FineBI数据决策系统，选择仪表板>新建仪表板，选择新建仪表板的位置，并为该仪表板命名，如下图：

点击确定仪表板即创建成功，进入仪表板编辑界面，添加可视化组件进行数据分析。

新建好的仪表板可以进行一系列操作，包括：分享、挂出、 预览、重命名、公共链接、删除。

3、新建文件夹

当系统中创建的仪表板较多时，管理起来会比较不方便，此时可以使用文件夹功能，新建不同文件夹保存不同类型的仪表板。比如销售文件夹保存销售相关的数据分析仪表板。

在仪表板节点，点击新建文件夹即可建立文件夹。

文件夹新建以后可以修改名称和删除，还可以将该文件夹分享给其他用户查看，详细信息请参考分享仪表板 。

4、移动到

对于已经创建的仪表板/文件夹，可以将其移动到其他目录下面。比如我们将上图中的“销售”文件夹和“test”仪表板一起移动到“新建文件夹”下，勾选销售和test前面的复选框，点击移动到按钮。

选择移动到新建文件夹，并点击确定即可成功移动。

5、仪表板排序

在目录中显示的多张仪表板可以选择排序方式：按时间排序或按字母排序。默认为按时间排序，如下图所示单击可切换排序方式。

仪表板也可选择列表或图标方式在目录显示。

6、搜索仪表板

当目录中仪表板较多的时候，提供搜索功能根据关键字直接搜出想要的仪表板，如下图：

7、索引

下面链接介绍了一些优化仪表板的方式。

仪表板样式

仪表板布局

仪表板联动分组

仪表板预览

仪表板另存为

仪表板导出

仪表板在线视频学习请查看 【仪表板概述】


仪表板样式- FineReport帮助文档|报表开发|报表使用|学习教程

仪表板样式

1、描述

仪表板样式在线视频学习请查看【仪表板样式】

仪表板样式可设置整张仪表板中背景、标题、组件、图表/表格风格和配色、过滤组件主题等，可从全局对模板进行风格配色的调整。

2、预设样式

FineBI为用户内置了六种预设样式，在仪表板编辑界面可选择想要的风格；同时也支持用户进行自定义样式设置并一键保存为预设样式，方便后面使用。

3、自定义样式

自定义仪表板样式设置包含了仪表板、标题、组件、图表、表格和过滤组件的背景主题等设置。

3.1 仪表板

仪表板样式设置包含了仪表板的背景和组件间隙的设置，背景可设置为指定颜色和上传的图片。

组件间隙，顾名思义，即设置组件与组件之间有没有间隙，有无间隙的效果如下面所示。

若组件设置了允许重叠，那么尽管在仪表板样式处设置组件之间有间隙，但组件仍然可以重叠展示。

3.2 标题

标题可统一设置仪表板中组件标题的背景和文字，背景分为颜色和图片，如下图：

标题文字分为自动和自定义，在自定义中可设置标题字体、大小、显示位置、加粗等属性。

3.3 组件

组件中可统一设置仪表板中所有组件的背景，分为颜色和图片两种，如下图：

3.4 图表

图表为设置仪表板中的图表配色和图表中的文字样式，如下图，图表配色即代表图表中的组件元素颜色，可点击修改该配色。

文字可配置图表中字体的样式，包含横纵轴、分类轴、值轴的文字等，分为自动和自定义，如下图：

3.5 表格

在表格下可统一设置仪表板中所有表格组件的样式，包括风格、主题色和文字，其中文字自定义中可分别设置表头和表身的字体样式。

3.6 过滤组件

过滤组件中可统一设置该仪表板中所有过滤组件的主题色，如下图：

仪表板样式在线视频学习请查看 【仪表板样式】


仪表板布局- FineReport帮助文档|报表开发|报表使用|学习教程

仪表板布局

1、描述

仪表板布局在线视频学习请查看【仪表板布局】

仪表板的布局方式为网格布局，只支持纵向延伸，不支持横向延伸。网格布局把平面按规则划分成多个单元格，每个组件占据一定数量的单元格，当屏幕大小发生变化时，随着屏幕实际宽高划分单元格，组件相对整个屏幕的比例不变。在默认布局方式下，组件之间有间隙，始终吸顶放置，组件之间不能重叠。即下图所示的布局规则：

2、无间隙

在仪表板设置界面的仪表板样式中可以设置组件间隙为“无间隙”。

组件之间无间隙的仪表板布局效果如下图：

3、允许重叠

在组件/控件的下拉属性中可设置允许重叠，组件即可叠加放置。

组件允许重叠的仪表板布局效果如下图，其中文本组件与下方的图表均存在重叠。

仪表板布局在线视频学习请查看 【仪表板布局】


组件允许重叠- FineReport帮助文档|报表开发|报表使用|学习教程

组件允许重叠

1、描述

组件允许重叠在线视频学习请查看【组件其他操作】

在FineBI的仪表板中组件存在默认布局方式，也可设置组件之间是否有间隙。除此之外，还提供了单个组件/过滤组件设置是否可重叠的功能，该功能允许了组件叠加到一起形成如下图的叠加效果。

2、设置允许重叠

默认不勾选“允许重叠”，此时组件不支持重叠，按照模板布局规则来分布。

1、点击组件（包括控件）下拉按钮中的允许重叠按钮，此时组件可以与其他组件重叠，且该组件可自由拖拽调整组件大小。

2、可直接拖拽组件至仪表板中任意位置，勾选允许重叠的组件始终覆盖在没勾选允许重叠组件的上方。

3、若两个组件均勾选了允许重叠，则后添加的组件覆盖在先添加的组件上方。

组件允许重叠在线视频学习请查看 【组件其他操作】


仪表板联动分组- FineReport帮助文档|报表开发|报表使用|学习教程

仪表板联动分组

1、描述

仪表板联动分组在线视频学习请查看【组件联动】

在之前的组件操作中，我们介绍过组件可手动设置联动，除此之外，在仪表板配置界面还有联动分组功能，用于对仪表板中所有组件的联动进行分组设置。在同一分组内的组件才能进行联动，若组件A与组件B不在同一分组内，尽管它们之间存在关联关系，也不能进行联动。

2、联动分组

进入仪表板配置界面，选择上方的联动分组按钮。

进入联动分组配置界面，默认仪表板中所有的组件均在同一分组内，即默认所有存在关联关系的组件均可联动。

若不想要某个组件与其他组件联动，将其拖拽至其他分组即可。如下图，我们想要组件3不与任何组件联动，组件1和组件5联动，但不与仪表板的其他组件联动，组件2和组件4联动，但不与仪表板的其他组件联动。则拖拽分组为三组，分别为组件1和组件5，组件2和组件4，组件3单独一组。

注：联动分组对所有图表、表格、文本组件有效，对其他组件中的图片组件和Web组件、过滤组件均无效。

仪表板联动分组在线视频学习请查看 【组件联动】


仪表板预览- FineReport帮助文档|报表开发|报表使用|学习教程

仪表板预览

1、描述

仪表板预览在线视频学习请查看【模板预览】

创建并优化好仪表板后，如果想要查看效果，可以使用仪表板预览功能。

仪表板预览包含两种方式：在编辑界面预览或者在仪表板节点预览查看。

2、编辑界面预览

在仪表板编辑界面上方的操作栏，存在预览按钮，如下图：

单击该按钮可查看仪表板预览效果，如下图，进入该仪表板的预览界面，在预览界面存在另存为、 导出、编辑仪表板按钮。

2、仪表板节点预览

选择数据决策系统的仪表板节点，在不进入该仪表板编辑界面可直接点击预览按钮查看该仪表板效果，如下图：

仪表板在预览状态时组件支持的操作有：组件复原、组件放大、查看过滤、查看明细、导出Excel。

仪表板预览在线视频学习请查看 【模板预览】


仪表板另存为- FineReport帮助文档|报表开发|报表使用|学习教程

仪表板另存为

1、描述

仪表板另存为在线视频学习请查看【模板另存为】

用户若想在已做好的仪表板的基础上做些改动且不影响原先仪表板的话，可以使用另存为功能，将当前仪表板另存到指定位置，进行修改编辑。

在仪表板的预览界面，同样可以单击另存为，修改另存的名称及位置保存。

点击确定后即可去仪表板节点指定文件夹位置找到另存的仪表板并进行编辑等操作。

仪表板另存为在线视频学习请查看 【模板另存为】


仪表板导出- FineReport帮助文档|报表开发|报表使用|学习教程

仪表板导出

1、描述

仪表板导出在线视频学习请查看【模板导出】

用户做好的数据分析仪表板可以选择全部导出到Excel或者PDF中，可以进行一些其他处理或报告使用。如下图，在仪表板编辑/预览界面，点击上面菜单栏的导出按钮，可以看到导出Excel和导出Pdf选项。

2、导出Excel

选择导出Excel后，会生成Excel文件，支持将整个数据分析模板的dashboard界面都导出到excel中。可以在excel看到整体模板的分析效果及各组件的明细数据结果。

2.1 dashboard模板页面

在导出的excel中，默认第一页sheet就是dashboard整体界面。页面中会包括各个组件图形效果，且布局安全按照PC端对应布局。如果界面上使用了各种过滤组件，那么对应导出时也会收到组件相应的过滤效果。即导出的内容都与当前用户所查看到的分析结果一致。具体效果可以直接参照导出效果图对比查看。

2.2 单个组件明细数据页面

在导出的excel中，除了第一页的模板整体页面以外，excel还会把每个组件的明细数据以一个单独的sheet形式导出并存储。单个组件明细数据的sheet中，都会按照每个组件中所有维度聚合后的汇总结果以明细形式展示出来，如果是明细表组件则按照实际数据中最底层明细的形式展示出来。有了这些明细数据结果后，用户可以对导出的excel数据进行进一步加工汇总等操作，以满足其他使用需要。如下图：

3、导出Pdf

选择导出Pdf后，导出的PDF只会展示整体dashboard界面效果。该界面上图表等各组件位置会完全按照PC端布局展示，同时对应组件等过滤条件也会导出。即导出的效果就是用户在PC端看到的数据和图形对应效果。

仪表板导出在线视频学习请查看 【模板导出】


仪表板迁移- FineReport帮助文档|报表开发|报表使用|学习教程

仪表板迁移

1、描述

之前客户在测试系统中做了模板而到正式系统上就必须得重新制作，比较麻烦，而FineBI提供了模板迁移功能，能够支持用户进行单个或多个.fbi模板文件的拷贝和迁移，只需要业务包中表名称和字段名称保持一致及系统版本相同即可。从而增强了工程可移植性，提高项目开发效率。下面我们介绍下如何进行模板迁移操作。

2、仪表板迁移

2.1 准备

不同系统之间模板迁移需要有两个条件：

1、两个系统内数据准备>业务包下的表名和字段的原始名相同（数据连接名也要相同）；

2、两个系统的版本相同；

注：若不同系统数据源分别为Excel数据集和数据库表/sql数据集，尽管表名和字段名均相同，仍不能进行模板迁移。因其在系统中保存的数据结构不一致。

2.2 迁移操作

满足迁移条件的模板从A系统的目录FineBI/webapps/webroot/WEB-INF/dashboards内的账号文件夹下拷贝出来，如下图为管理员账号的模板文件夹（可根据模板的修改时间来获取想要迁移模板的相应.fbi文件）：

文件夹名必须为migrate-direct），如下图，比如需要迁移模板到B系统的管理员账户下，则在B系统的FineBI/webapps/webrootWEB-INF/biReport/b5f0c2ee-640f-4039-a4d4-918b55354898 目录下创建migrate-direct文件夹。随后将需要迁移的模板从A系统拷贝至B系统中新建的文件夹内，如下图：

注：在FineBI5.0版本中，无论是否开启实时数据直连数据库，均拷贝至migrate-direct文件夹即可。

3、注意事项

1、仅挂出的模板支持模板迁移操作，且挂到目录树的模板迁移之后不会自动挂到目录，需要重新操作挂出；

2、在迁移时要确保迁移的模板名字与目标系统内已存在的模板名字不能重复，否则会覆盖原先的模板。（可对迁移的fbi文件进行重命名后再拷贝）

3、在FineBI5.0版本中，无论是否开启实时数据直连数据库，所有的模板均拷贝至migrate-direct文件夹进行迁移；


分享仪表板- FineReport帮助文档|报表开发|报表使用|学习教程

分享仪表板

1、描述

在完成数据分析的仪表板以后，FineBI提供了几种共享仪表板的方法，包括创建公共链接给别人访问、申请挂出到目录节点或者直接分享给其他人查看。申请挂出表示业务人员向管理员申请挂出该仪表板到目录节点，管理员继而可以分配权限给用户查看该目录的仪表板；直接分享表示将该仪表板直接分享给指定的用户查看，不需要通过管理员操作；用户在查看分享过来的仪表板时也可以保存到本地进行修改等操作。

仪表板共享的详细操作请参考下面链接。

2、索引

仪表板链接分享

挂出仪表板

仪表板直接分享

另存分享的仪表板


仪表板创建公共链接- FineReport帮助文档|报表开发|报表使用|学习教程

仪表板创建公共链接

1、描述

业务人员共享仪表板给其他人可以通过创建公共链接的方式实现，创建公共链接是指创建访问该仪表板的公共链接，此公共链接任何人都可以访问，不需要登录，也不需要有任何权限。

2、创建公共链接

1、在做好仪表板以后，进入FineBI数据决策系统的仪表板节点，将鼠标悬浮在仪表板上方，可以看到创建公共链接按钮。

复制按钮可复制该链接分享给其他人，关闭该窗口直接点击右上角的X即可。

3、关闭公共链接

若之前创建的公共链接不想要其他人再访问，可同样至创建公共链接处，点击关闭该公共链接按钮。按钮关闭后，生成的链接即消失。且之前分享给其他人的链接将不能再访问。

注：创建的公共链接没有时间限制，在关闭链接之前均可生效。


挂出仪表板- FineReport帮助文档|报表开发|报表使用|学习教程

挂出仪表板

1、描述

前面我们介绍过，业务员共享仪表板可以采用申请挂出的方式，申请挂出表示业务人员向管理员申请挂出该仪表板到目录节点。下面我们演示下如何进行仪表板挂出的操作。

2、业务人员申请挂出

业务人员在做好数据分析，完成仪表板的配置以后，可以进入仪表板节点，选择仪表板的操作：申请挂出，如下图：

仪表板在申请挂出后，会提示申请挂出成功，且仪表板图标将会出现挂出标志，如下图：

3、管理员挂出仪表板

在业务人员做出申请以后，管理员登录数据决策系统，进入管理系统>模板管理，可以查看到当前申请挂出的模板个数和具体模板，如下图：

管理员可对该申请挂出的仪表板做的操作包括快速挂出、创建公共链接、查看仪表板信息，如下图：

点击快速挂出按钮。

选择挂出的目录节点，输入挂出仪表板的显示名称，输入仪表板描述，选择展示终端，如下图：

点击确定保存该挂出，则该仪表板即显示为已挂出的状态。

点击目录下刚刚挂出的节点，可以看到该仪表板，点击即可查看。

管理员在挂出该仪表板以后，普通用户想要查看的话，需要管理员分配该目录节点下仪表板的查看权限，参考权限管理。

4、其他人访问

管理员挂出并为目录下该仪表板分配查看权限以后，有权限的人员登录自身账号，在目录下即可查看挂出的模板。比如为demo用户分配该仪表板的查看权限，则demo用户登录系统后在目录节点中即可查看，如下图：

5、取消申请挂出

若业务人员之前申请挂出的模板不想要再挂出，在管理员未操作挂出前，业务员可至仪表板节点该仪表板处选择取消申请挂出。

管理系统>目录管理下将该挂出的仪表板删除，如下图：

管理员删除挂出后，业务人员不需要再做任何操作，该仪表板即取消挂出了。


仪表板直接分享- FineReport帮助文档|报表开发|报表使用|学习教程

仪表板直接分享

1、描述

业务员除了链接分享、申请挂出仪表板到目录节点外，还可以直接分享该仪表板给指定用户，无需通过管理员实现。下面我们详细介绍业务员如何进行仪表板分享。

2、分享仪表板给指定用户

1、业务员做好仪表板以后，进入仪表板节点，选择仪表板操作中的分享，如下图：

2、进入分享仪表板的指定用户选择界面，支持分享给部门、角色和用户。

3、选择要分享的指定用户，比如分享给一线技术支持，将该部门后的分享给按钮解锁，如下图：

则该部门即分享成功。若要取消分享，在同一个页面选择对应用户将分享给加锁即可。

除了仪表板可以选择分享给其他用户外，文件夹也可以选择分享，分享方法与上述一致。

3、用户查看分享的仪表板

在上面Alice用户分享仪表板给一线技术支持以后，我们登录一线技术支持人员的账号，点击目录>分享给我的，能看到分享者和分享过来的模板，如下图：

点击该仪表板即可查看数据，即使一线技术支持人员demo用户没有仪表板中数据/该仪表板的权限，也可以直接查看，其查看该仪表板的权限来自于分享者。

demo用户也可另存该分享过来的仪表板进行编辑，但此时则需要拥有仪表板数据的使用权限，否则无法编辑。具体操作请参考另存分享的仪表板。


另存分享的仪表板- FineReport帮助文档|报表开发|报表使用|学习教程

另存分享的仪表板

1、描述

用户除了可以直接查看分享给自己的仪表板外，还可以保存该仪表板到本地进行编辑修改等操作，在该仪表板的基础上加上自己想要修改的维度指标等进行数据分析。

2、另存分享过来的仪表板

比如demo用户登录到FineBI数据决策系统查看Alice分享给自己的仪表板，如下图：

点击另存为按钮，输入仪表板名称和保存的位置。

进入仪表板保存对应位置下，可以看刚刚另存的仪表板，点击该仪表板进入编辑状态就可以根据需要自行修改该仪表板。

注：demo用户需要有该仪表板用到的数据的使用权限，否则即使保存，也无法对该仪表板进行编辑等操作。


管理系统- FineReport帮助文档|报表开发|报表使用|学习教程

管理系统

1、描述

管理系统在线视频学习请查看 【管理平台整体介绍】

随着平台管理系统的功能丰富，如何让用户知道我们有哪些功能，以及如何找到这些功能也慢慢成为问题。因此管理系统增加首页，加入快捷功能导航和帮助文档导航。

管理系统为FineBI数据决策系统的管理员对系统进行属性配置的地方，包括目录管理、用户管理、权限管理、系统管理、智能运维、外观配置、数据连接、注册信息、插件管理、定时调度、移动平台。如下图，管理员账号登录后点击管理系统节点，有所有系统配置、常用设置和常用帮助，常用帮助可查看对应的帮助文档。

2、管理系统

登录数据决策系统，选择管理系统，默认展示管理系统的首页，如下所示：

2.1 常用设置

即快捷功能导航，点击进入功能选项，如下所示：

2.2 常用帮助

即帮助文档导航，点击进入帮助文档说明，如下所示：

3、索引

目录管理--管理系统首页及目录节点展示的仪表板；

用户管理--管理系统中的企业员工信息、机构部门、角色等；

模板管理--对当前系统中的所有普通用户创建的模板进行管理；

权限管理--系统设置的安全规则或安全策略，管理系统中用户能够使用、查看的范围；

外观配置--系统外观的个性化设置，包括登录页、平台主题、平台样式；

系统管理--系统设置项，包含登录设置、短信、邮箱、缓存等配置；

定时调度--设定系统的定时任务，方便快捷的设置日报、月报、季报、年报等任务；

移动平台--对移动端进行设置的地方，可进行设备绑定和二维码配置；

注册信息--查看当前数据决策系统的版本信息以及购买的功能列表；

智能运维--智能管理系统，查看当前系统内哪些模板有问题，哪些模板有出问题的风险，系统的硬件和软件配置是否能支撑当前实际场景，是否存在宕机的风险等等信息；

数据连接--定义数据来源，配置连接本地数据库信息处；

插件管理--管理从应用商城购买的插件，包括安装、删除、更新、启动、禁用等；

安全管理--安全性的管理，分为三大块：安全防护、访问控制、SQL防注入；

地图配置--地图自定义设计，包括地理地图、自定义图片地图、自定义GIS地图背景、地理位置和经纬度自定义匹配等功能，从而帮助用户进行快速自定义地图编辑设计。

管理系统在线视频学习请查看 【管理平台整体介绍】


系统管理员- FineReport帮助文档|报表开发|报表使用|学习教程

系统管理员

1、描述

用户系统中全局性的配置如用户管理、权限分配等设置不是所有用户都可以进行修改的，需要分配一个管理员账号，只有该账号登陆才能够进行设置。

2、初始化管理员用户名密码

部署好FineBI工程后，启动服务器，第一次登陆数据决策系统http://ip:端口/webroot/decision，设置引导，点击开始设置，会出现配置管理员账号界面，如下：

3、管理员账号管理

登陆进决策分析平台后，还能够修改管理员信息的用户名、密码、绑定邮箱、绑定手机，点击右上角的账号设置即可。
普通用户登录系统后，也可以通过同样的方法配置自己的个人信息及密码。

3.1 修改用户名
点击账号设置，输入新的用户名，点击确认，这样用户名就修改完成了，再次登录决策系统，用户名已更新。

3.2 绑定手机
点击手机后面的绑定，输入手机，点击确定，弹出手机绑定成功，这样手机就绑定好了。如果需要修改手机，可以点击修改进行修改。

3.3 绑定邮箱
点击邮箱后面的绑定，输入邮箱，点击确认，弹出邮箱绑定成功，这样邮箱就绑定好了。如果需要修改邮箱，可以点击修改进行修改。

3.4 修改密码
点击修改密码，按照提示输入旧密码、新密码、新密码，点击确认，这样密码就修改好了。


收藏夹- FineReport帮助文档|报表开发|报表使用|学习教程

收藏夹

1、收藏经常访问的模板

对于经常需要访问的模板，希望设置一个标记方便再次查看，因此FineBI数据决策系统在展示过程中可以标记到具体哪个模板，并且把标记的模板放到收藏夹里面，如下图：

1）收藏模板
在数据决策系统里打开模板，对于想收藏的模板，将鼠标放到tab标签上，会自动悬浮出刷新按钮和收藏按钮，点击收藏按钮即可，如下图：

2）查看收藏的模板

点击目录界面右上角的收藏夹按钮，即可查看当前用户收藏的所有模板，如下图：

2、取消已收藏的模板

对于一些模板，在一段时间内可能是经常访问的，所以将其收入到收藏夹中，但是过完这段时间后，就不经常使用，需要从收藏夹删除。
方法一：打开已经收藏的模板，将鼠标放到tab标签上，会自动悬浮出刷新按钮和取消按钮，点击取消按钮即可
方法二：打开收藏夹，选中需要删除的模板，点击后面的删除按钮即可，如下图：


目录管理- FineReport帮助文档|报表开发|报表使用|学习教程

目录管理

1、描述

目录管理在线视频学习请查看 【目录管理】

虚拟目录树可以有效管理您的所有模板，设置目录树是在数据决策系统 http://localhost:37799/webroot/decision左侧的管理系统下，再点击目录管理即进入虚拟目录树面板。

目录管理包括管理首页和管理目录。

管理首页：支持添加模板/平台目录/URL作为首页；

支持添加多个首页，并为不同用户设置不同首页；

支持设置PC、手机、平板的首页；

管理目录：支持对虚拟目录的增删改；

支持在当前目录下调整顺序，还支持将目录整体移动到其他非父目录下；

针对某个目录，支持为该目录批量添加模板、批量删除模板；

针对某个目录，支持不同类型可以混合排序；

支持将模板移动到其他目录下。

2、索引

详细的首页及目录管理操作与FineReport一致，介绍请参考下面链接。

目录树

管理首页

管理目录

BI模板

添加模板

添加链接

目录管理批量删除

调整目录树顺序

目录管理在线视频学习请查看 【目录管理】


管理首页- FineReport帮助文档|报表开发|报表使用|学习教程

管理首页

1、描述

首页就是指用户登录数据决策系统之后首页的链接。

PC、手机和平板可以分别设置首页。

2、默认首页

数据决策系统默认首页是系统的一张模板，可以自定义设置其首页名称、类型等，PC和移动端设备首页可以单独设置，如下图：
注：决策系统首页默认所有部门的用户都能看到，权限配置可参考：根据部门职位分配权限。

2.1 修改PC端的默认首页
默认首页的类型可以选择模板、平台目录或者链接，例如，这里选择类型为链接，在pc后面的文本框中直接输入网页地址如：http://www.finebi.com，点击保存。

注：地址里必须加上http://。
点击保存，刷新页面，pc端可以看到首页页面变成了FineBI官网，如下图：
注：这里设置的是pc端的首页，所以对手机和平板是没有效果的，手机和平板是看不到这里设置的首页。
注：若设置BI模板显示为首页，则该模板在首页将自动隐藏仪表板上方的另存为和导出的按钮。
2.2 修改移动端的默认首页
这里以手机为例，平板设置方法相同。
在手机后面的文本框中直接选择模板地址对应模板，点击保存，如下所示：

在手机上登录服务器，可以看到手机上的首页变成了上面设置的BI模板，如下图：


BI模板- FineReport帮助文档|报表开发|报表使用|学习教程

BI模板

1、描述

根据上一节的添加目录方法，选中该目录，在该目录下面添加BI模板（支持批量添加模板）。

2、添加BI模板

2.1 添加模板

选中目录，在节点管理面板右侧点击 BI模板按钮，弹出选择路径页面，在此可搜索、选择路径，支持多选，如下图：

点击下一步，在每个模板的配置项组上方都有对应的标题栏，这里显示第一个模板全部和第二个模板的标题栏，点击标题栏可关闭或打开模板，如下图：

注：标题栏名称根据“名称”配置项自动同步；当“名称”为空时，标题栏为空

鼠标悬停在标题栏时，在标题栏右侧出现删除按钮，点击直接删除自动查询模板，如下图：

在该模板设置界面可修改路径、设置名称和描述等配置项，三种终端分别是PC、平板、手机，默认为全选。

2.2 效果查看

确定后，在目录下就新增该模板，如下图：

点击目录下的BITest图标，左侧目录树中显示刚刚添加的BI模板，如下图：


用户管理- FineReport帮助文档|报表开发|报表使用|学习教程

用户管理

1、描述

用户管理在线视频学习请查看【用户管理】

FineBI数据决策系统支持对企业员工信息、机构部门、角色及平台使用分配的管理，设置方便，操作简单。

管理员有两种添加用户的方式：手动添加和同步数据集。

手动添加：是指在决策系统中直接添加配置用户信息；

同步数据集：是指在FineReport设计器中新建一个服务器数据集，该数据集从数据库中获取用户信息，然后将该数据集中数据同步至数据决策系统中。

支持用户列表按用户名/姓名等进行升序、降序展现。

2、索引

详细的手动添加用户、同步数据集、用户身份验证等功能请参考下面链接。

手动添加用户

BI查看用户

BI设计用户

用户同步数据集

从数据库导入部门间层级关系

用户身份验证

用户管理lic控制

用户管理在线视频学习请查看 【用户管理】


BI查看用户- FineReport帮助文档|报表开发|报表使用|学习教程

BI查看用户

1、描述

购买FneBI时，License中限定了设计用户数和查看用户数。设计用户，顾名思义，就是可对仪表板进行设计，可新建模板；查看用户，顾名思义，即是可对模板进行查看但无法编辑模板；此小节中我们先介绍查看用户。

注：一个用户只能被添加到BI查看用户与BI设计用户中的一个，用户添加到BI设计用户中默认会拥有查看的权限。

2、添加BI查看用户

1、点击管理系统>用户管理>平台使用用户，可以看到当前系统许可文件支持的用户数，分别包含平台使用用户、BI查看用户、BI设计用户、移动平台用户。在添加用户为BI查看用户前，该用户需要先添加至平台使用用户中，否则用户无法登陆数据决策系统。如下图，将demo用户添加至平台使用用户中。

编辑用户，如下图：

完成按钮，在BI查看用户下即可看到该用户，如下图：

3、效果查看

demo用户已为其添加为BI查看用户，此时，我们登录demo用户的账号，可以看到该用户可以查看有权限的目录仪表板，但是没有仪表板节点，不能创建仪表板，如下图：

注：若注册文件为不限制用户数，则在平台使用用户中不能进行用户的编辑，默认所有的用户均有平台使用、BI查看、BI设计及移动平台权限。


BI设计用户- FineReport帮助文档|报表开发|报表使用|学习教程

BI设计用户

1、描述

在上节我们添加了一个查看用户，接下来我们继续介绍BI设计用户的功能。添加BI设计用户可创建仪表板，并进行仪表板编辑等一系列操作。

注：一个用户只能被添加到BI查看用户与BI设计用户中的一个，用户添加到BI设计用户中默认会拥有查看的权限。

2、添加BI设计用户

1、点击管理系统>用户管理>平台使用用户，同样，在添加用户为BI设计用户前，该用户需要先添加至平台使用用户中，否则用户无法登陆数据决策系统。如下图，将demo用户添加至平台使用用户中。

编辑用户，如下图：

完成按钮，在BI设计用户下即可看到该用户，如下图：

3、效果查看

demo用户已为其添加为BI设计用户，此时，我们登录demo用户的账号，可以看到该用户不仅可以查看有权限的目录仪表板，还存在仪表板节点，可以创建仪表板。且在数据准备下也可以根据业务包的权限进行创建自助数据集的操作。

注：若注册文件为不限制用户数，则在平台使用用户中不能进行用户的编辑，默认所有的用户均有平台使用、BI查看、BI设计及移动平台权限。


模板管理- FineReport帮助文档|报表开发|报表使用|学习教程

模板管理

1、描述

管理系统的模板管理下显示的是当前系统中的所有普通用户创建的模板，申请挂出的模板也在其中。用于管理员对系统中所有的模板进行统一的管理，比如挂出到目录中、筛选查看等。

2、模板管理操作

2.1 筛选模板

当模板管理中显示的模板较多时，想要找到对应的模板较困难，此时可以使用筛选模板功能。筛选模板可根据部门、角色、人员、状态和最近修改日期来搜索显示模板，方便快速找到模板。如下图，点击筛选模板右侧的下拉按钮，将出现模板筛选的条件。

2.2 挂出模板

普通用户申请挂出的模板有申请挂出的标识，管理员在模板管理节点可对其进行快速挂出的操作。如下图，申请挂出的模板在所有模板中有申请挂出的黄色标识，且在页面左上方会显示当前申请挂出模板个数。

快速挂出按钮。

确定即可快速挂出。

2.3 其他操作

对于业务人员创建的模板，管理员还能进行创建公共链接和查看模板信息的操作，模板信息包括人员、角色、部门和最近修改日期。

创建公共链接功能一致。


权限管理- FineReport帮助文档|报表开发|报表使用|学习教程

权限管理

1、描述

权限管理在线视频学习请查看【权限管理】

权限管理就是指系统设置的安全规则或安全策略，用户可以且仅能访问被授予权限的内容。管理员在管理系统下的权限管理中对各用户的权限范围进行管理。

FineBI数据决策系统中的权限管理从权限项和权限受体两个方面来分类描述。

1）权限项

权限项就是指被分配的对象，FineBI数据决策系统中的权限项包括模板、目录和业务包；

2）权限受体

权限受体就是指将权限分配给谁，FineBI数据决策系统中的权限受体不仅包括部门、角色，还为特殊权限分配的需求提供了基于单个用户的权限设置功能。

使用管理员账号登录FineBI数据决策系统，点击管理系统>权限管理，如下图：

2、权限管理说明

进入权限管理后，能看到可以进行权限分配的权限项和权限受体，还有全局设置、权限复用等按钮，如下图：

全局设置中包含用于分级授权的分级权限管理和数据连接权限控制。

2.1 权限分配

根据权限受体的不同我们可以将权限分配分为根据部门职位分配权限、根据角色分配权限和为用户分配权限。

根据部门职位分配权限：部门职位是指从用户管理中的机构部门列表中加载过来的所有职位列表，以部门关系树状显示，其权限分配过程请查看根据部门职位分配权限 ；

根据角色分配权限：角色是指从用户管理中角色选项加载过来的角色列表，其权限分配过程请查看根据角色分配权限 ；

为用户分配权限：用户是指从用户管理中加载过来的所有系统用户，其权限分配过程请查看为单个用户分配权限 ；

根据权限项的不同，我们可以将权限分为目录权限、导出权限和业务包权限。

2.2 分级权限管理

分级权限管理包括分级授权和报表编辑两个选项。

分级授权：是指总的管理员将一些权限进行下放，是普通用户拥有分配权限的功能，将该普通用户所拥有授权权限的权限项分配给别的用户，一般是下属，详细请查看分级权限分配 ；

2.3 权限复用

该功能可以帮助管理员克隆某个部门/职位/角色/用户的权限，能极大的提升权限分配效率。详细请查看权限复用 。

2.4 数据连接控制

数据连接的权限配置是指分配下级用户是否拥有数据连接的设置权限，包括增删数据连接信息等，详细请查看数据连接控制 。

索引：

根据部门职位分配权限

根据角色分配权限

根据用户分配权限

导出权限管理

业务包权限管理

分级权限分配

数据连接控制

权限复用

权限管理在线视频学习请查看 【权限管理】


导出权限管理- FineReport帮助文档|报表开发|报表使用|学习教程

导出权限管理

1、描述

用户在生产环境上，数据把控的比较严格，大部分用户是不允许导出数据的；需要可根据部门、职位、角色分配导出权限，对数据安全性进行把控。因此FineBI提供了模板导出权限控制来实现该功能。

2、导出权限

登录FineBI数据决策系统，选择管理系统>权限管理，在权限配置界面，选择需要配置导出权限的职位/角色/用户，在右侧选择导出权限。如下图，我们选中技术支持部长这个职位，单击右侧的导出权限。

注：分配导出权限前必须为该用户分配该目录的查看权限，否则无法查看该模板也无法导出。

单击解锁管理驾驶舱的整个文件夹的选项，如下图：

解锁后自动保存。

3、效果查看

此时我们登录技术支持部长的账号，查看该管理驾驶舱下的仪表板，可以看到上方的操作栏有导出按钮，可导出该模板。


业务包权限管理- FineReport帮助文档|报表开发|报表使用|学习教程

业务包权限管理

1、描述

业务包是BI分析的数据源，业务包权限是从数据源来控制不同的用户能够查看使用不同的业务包数据，包括编辑用户在制作BI分析时使用业务包数据和查看用户在查看分析时，查看数据内容的权限控制。FineBI业务包权限的分配是根据不同用户所处的部门职务或角色来分配的。
业务包使用权限分配分为两种，根据是否设置过滤条件来分类：
1、直接将某个业务包的使用权限赋给部门角色，不设置过滤条件，即只要拥有该业务包权限的角色可看到的数据是一样的；
2、在分配业务包使用权限的同时设置滤条件，即部门角色看到的数据是满足业务包权限配置中的过滤条件的。

2、步骤

业务包权限配置的步骤大体如下：

用户同步数据集为将已有的用户信息直接导入到数据决策系统中，并且与数据库中数据保持一致；
添加业务包为向数据库中取数，连接数据库所获取的数据表保存到业务包中；
业务包权限分配为为导入的用户分配保存数据表的业务包权限；
注：给用户角色配置业务包的使用权限即是配置数据表的使用权限，如果业务包1中有数据表1，将该业务包权限给了角色A，另外一个业务包2中也有数据表1，而角色A对于业务包2没有使用权限，在使用业务包2的时候，该角色A还是可以使用数据表1的。
下面分别讲解这两种分类的具体使用方式。

索引:

业务包权限分配（不设置过滤条件）

业务包权限分配（设置过滤条件）


业务包权限分配（不设置过滤条件）- FineReport帮助文档|报表开发|报表使用|学习教程

业务包权限分配（不设置过滤条件）

1、示例

以业务包销售DEMO为例，为FineBI中的销售部分配销售DEMO业务包的使用权限，不设置任何过滤条件，那么销售部员工在登录系统时即可使用业务包销售DEMO中的所有数据。

1.1 配置用户

使用同步数据集的方式，以管理员账号登录，点击管理系统>用户管理，点击开启同步数据集，为BI系统配置同步数据集添加用户，详细的配置方式请查看 用户同步数据集 。

同步数据集之后的所有用户：

1.2 添加业务包

这里以销售DEMO为例，就不再赘述，详细请查看 业务包创建 。

1.3 分配业务包权限

点击管理系统>权限管理，进入权限配置界面，选中部门下的销售部，右侧选择业务包权限，如下图：

解锁后自动保存。

注：使用权限包含创建仪表板、自助数据集可以使用该销售DEMO业务包，且该业务包中新增的数据都默认有相应使用权限。但是不能在该业务包中添加任何表，包括基础表和自助数据集，也不能对业务包进行重命名、删除、移动分组的操作。

注：拥有管理权限可以在该业务包中添加任何表，包括基础表和自助数据集。对于该业务包中基础表有管理权限，自助数据集权限取决于是否为创建者本人，可以对业务包进行重命名，删除，移动分组的操作。

1.4 效果查看

使用销售部普通sale账号登录，点击数据准备>销售DEMO，可以看到普通sale账户可以使用该业务包下的表创建自助数据集和创建组件，但不能进行任何修改操作。

数据准备>销售DEMO，可以看到saleLeader可以对该业务包下的基础表及自身创建的自助数据集做管理操作。

1.5 取消业务包权限

如果要取消某业务包权限中已设置的角色，同样在业务包权限配置界面，选中该角色，单击该业务包权限加锁即可。


业务包权限分配（设置过滤条件）- FineReport帮助文档|报表开发|报表使用|学习教程

业务包权限分配（设置过滤条件）

1、示例

以地产行业业务包为例，为FineBI中的销售部分配地产行业业务包的使用权限，并设置该部门角色只能看到合同状态为激活的数据。
同步数据集与业务包添加的步骤同业务包权限分配（不设置过滤条件）一样，这里不再赘述。

1.1 分配业务包权限

点击管理系统>权限管理，进入权限配置界面，选中部门下的销售部，右侧选择业务包权限，如下图：

我们要为销售部分配地产行业业务包的权限，因此选择解锁地产行业业务包的使用权限，解锁后自动保存。如下图：

1.2 添加过滤条件

因为要设置该部门角色只能看到合同状态为激活的数据，因此点击该地产行业后的权限设置按钮，如下图：

行权限下的添加条件，并选择地产行业>合同维度表>销售状态，选择属于激活，如下图：

1.3 效果查看

保存成功后，我们可以使用销售部Lisa的账号登录，进入数据准备>地产行业，点击合同维度表，可以看到Lisa仅能查看销售状态为激活的合同。


行列权限- FineReport帮助文档|报表开发|报表使用|学习教程

行列权限

1、描述

在前面我们介绍了业务包的权限管理，业务包权限分配的是对应人员使用整个业务包数据的权限，不能对业务包里面的数据再做细化的权限分配。比如对于东南区的销售主管，想分配其使用零售门店数据的业务包权限，但零售门店业务包包含所有地区门店数据，此时就需要行列权限来对该业务包做细化的权限分配。下面我们详细介绍下如何进行行权限、列权限的设置。

2、行权限

行权限支持添加过滤条件对所属业务包中的数据进行过滤显示。比如上面介绍的对东南区销售主管分配的零售门店数据业务包权限，可选择行权限添加条件，过滤出东南区数据给对应销售主管。

2.1 添加行权限

进入管理系统>权限管理，为销售部的saleLeader分配零售门店数据业务包的使用权限，如下图：

权限设置按钮，如下图：

添加条件，如下图：

确定保存。

2.2 效果查看

登录saleLeader的账号，进入数据准备>零售门店数据，如下图：

门店信息数据表，在数据预览区看到所属大区仅包含东南区的数据，该saleLeader账号仅能查看和使用东南区的销售数据，实现了行权限的条件过滤效果。

3、列权限

列权限可直接控制对应权限人员的能否使用业务包数据表下的某个字段，比如对于普通的销售人员，想让他们使用零售门店数据进行数据分析，但不想他们了解公司的所有毛利数据，可选择列权限控制，为销售人员取消一些字段的权限。

3.1 列权限操作

进入管理系统>权限管理，为销售部的sale分配零售门店数据业务包的使用权限，如下图：

权限设置按钮，如下图：

列权限，此时显示了该业务包中sale能使用的所有数据表和字段，如下图：

详细销售数据表，取消勾选毛利字段，如下图，表示普通销售人员无法查看和使用到该毛利字段。

确定保存。

3.2 效果查看

登录普通sale的账号，进入数据准备>零售门店数据，如下图：

详细销售数据，在数据预览区不显示毛利字段数据，该sale账号仅能查看和使用除毛利外的销售数据，实现了列权限的字段限制效果。


权限与系统用户名绑定- FineReport帮助文档|报表开发|报表使用|学习教程

权限与系统用户名绑定

1、描述

访问BI分析仪表板内容的权限是指不同用户在使用同一张数据表中的字段进行数据分析时可使用的数据不同，从而最后看到的数据分析内容也不一样的效果。比如说员工的工资表，管理员创建工资表模板，将所有员工的工资信息都添加进去，但是当公司员工用自己的账号登录公司系统时，只能看到自己的工资信息，这就是控制访问仪表板内容的权限，是根据登录用户来控制访问权限的。下面我们介绍下如何进行权限与系统用户名的绑定。

2、权限与系统用户名绑定示例

BI数据分析中用表格组件展现了各个员工的工资信息，需要设置为用户登陆后只能看到自己的工资信息。

2.1 数据准备

登录FineBI数据决策系统，在数据准备>业务包中新建一张工资表，表中包含有用户名和对应的工资字段，如下图：

2.2 用户同步数据集

按照权限的描述，用户是按自身的登录用户名作为权限依据的，因此我们的权限控制表就需要拥有登录用户名的表。

我们通过用户同步数据集获取用户信息，并同步到管理系统下的用户管理中。如下图：

注：此处一定要先把用户表添加到业务包中，因为业务包按用户权限过滤选择权限表只能在业务包中进行选择。

2.3 登录用户名所在字段配置

登录用户名所在字段配置是指将系统的登录用户与该用户名所在字段建立联系起来，以便于对用户进行权限控制。

进入管理系统>权限管理，选择业务包权限，点击登录用户所在字段处的请选择，如下图：

用户表，选择username字段即可。

2.4 业务包权限配置

在管理系统>权限管理界面，选中需要限制权限的指定用户，先分配给其工资表所在业务包的使用权限，如下图：

权限设置按钮，如下图：

属于>登录者信息选项，如下图：

username字段，如下图：

确定保存该权限设置。表示当工资表中的usename与当前登录用户的username相同时，才会显示相应数据，即只显示与当前登录用户相关的信息。

注：若用户有统一的部门和角色，可直接使用部门/角色进行统一的权限条件设置。 若有用户为部门领导，可不对其做业务包的权限限制，则其可以查看业务包所有的数据。

2.5 新建仪表板

新建一个仪表板，数据来源于业务包中的工资表的字段，数据绑定如下图：

2.6 效果查看

我们使用Lion账号登录系统，查看之前创建的工资表仪表板，可以看到Lion只能看到自己的工资，如下图：

对于部门领导Wind，我们之前没有为其设置业务包的权限限制，则登录Wind账号，可以看到他能够看到所有人的工资，如下图：


新增用户的权限配置- FineReport帮助文档|报表开发|报表使用|学习教程

新增用户的权限配置

1、描述

对于管理员在管理系统>用户管理下新添加的用户，若没有做任何权限的操作，那新增的用户登录账号以后，不能查看任何节点。比如新增的用户test，如下图：

管理系统>用户管理>平台使用用户中将其添加到平台使用用户中，添加步骤可参考手动添加用户，如下图：

注：在新增用户后必须将其添加到平台使用用户中，否则新增用户将无法登录FineBI数据决策系统。

2、目录

若要为用户分配目录的查看权限，则该用户首先应该是BI查看用户。使用管理员账号进入管理系统>用户管理>平台使用用户，添加test用户到BI查看用户中（操作可参考BI查看用户），如下图：

管理系统>权限管理>目录权限，根据部门职位/角色/用户为其分配目录的查看权限。如下图：

3、仪表板

普通用户账号登录系统若要有仪表板节点，则该用户需要是BI设计用户，即可以新建仪表板。使用管理员账号进入管理系统>用户管理>平台使用用户，添加test用户到BI设计用户中（操作可参考BI设计用户），如下图：

注：此处在添加test用户至BI设计用户之前，需要将其从BI查看用户中移除，因为BI设计用户默认即有查看仪表板的权限，因此用户仅能添加为BI设计/查看二者中的一个。

注：BI设计用户不仅包含创建仪表板权限，也包含创建自助数据集权限。

4、数据准备

上面我们介绍了添加新用户为BI设计用户后，该用户可在数据准备下根据可使用的业务包创建自助数据集，如下图：

管理系统>权限管理>业务包权限，为test用户解锁指定业务包的管理权限，如下图：

数据准备>销售DEMO业务包，可以看到test用户能对该业务包进行编辑管理等操作，如下图：

5、管理系统

普通用户账号登录系统若要有管理系统节点，需要管理员为其分配平台管理下的查看权限。登录管理员账号，进入管理系统>权限管理，点击全局设置，选择开启分级授权，如下图：

为test用户分配管理系统下的指定节点的查看权限，如下图：

登录test账号后，在界面中可以看到管理系统节点，且该节点下存在之前为其配置查看权限的管理项，如下图：


多层级权限需求实例- FineReport帮助文档|报表开发|报表使用|学习教程

多层级权限需求实例

1、描述

需求场景描述：

银行机构有层级关系：总行、分行、支行，实现效果为总行可以看到所有的数据，分行看到所在分行数据和分行所辖支行所有数据，支行只看自己的数据。这时我们需要根据所在机构配置用户的数据权限，下面将介绍具体实现步骤。

2、所需数据

因为我们需要根据所在机构配置用户的数据权限，所以需要有包含所有银行机构数据的机构表，如下图，该机构表包含了总行、分行、支行，及他们对应的机构码和上级机构码。

注：该用户表需要注意，一个用户账号只能属于一个机构，不能同时属于好几个机构。

而对应机构人员能看到的交易数据包含在银行交易表中，如下图：

样式数据。

3、多层级权限需求实现步骤

3.1 数据准备

1、导入需要的带有层级关系的机构表、用户登录权限表和业务流水表（上述表），配置它们之间的关联关系如下图所示，添加关联关系操作可参考添加表间关联。

注：导入数据时机构、上级机构、机构号等字段需要选择为文本字段，否则在下面的自循环列设置中无法选择机构为显示值。

+>自循环列。

显示值选择机构和机构名称，分层依据ID为机构，ParentID列为上级机构。如下图：

构建关系，可看到如下的分层和数据预览。

确定保存该自循环列操作。

3.2 导入用户

服务器数据集导入用户，这里使用的是用户登录权限表。

参考服务器数据集，在FineReport设计器中建立服务器数据集，建立一个服务器数据集的用户表－user（对于上述给出的Excel文件可使用文件数据集方式创建），如下图：

管理系统>用户管理>所有用户，点击导入用户，如下图：

确定导入用户。需要去管理系统>用户管理>平台使用用户中，将这些导入的用户全部添加为平台使用用户，如需用户有编辑和查看的权限，可去BI设计用户与BI查看用户下配置，参考BI设计用户、BI查看用户。BI中有内置用户，不需要可以清空里面的用户。

注：若lic文件为无限制用户的权限则不需要添加为平台使用用户此步骤，默认所有用户均有权限。

3.3 权限配置

1、进入管理系统>权限管理>业务包权限，点击登录用户所在字段处的请选择，如下图：

使用权限，并点击权限设置按钮，如下图：

确定保存设置。

使用权限，并点击权限设置按钮，如下图：

点击确定保存该行权限设置。

4、效果查看

使用上面创建的业务包1中的三张表机构表、用户登录权限表和业务流水表创建自助数据集，如下图，包含了

管理系统>权限管理中将该仪表板的查看权限分配给分行长、支行长及柜员。

分别使用支行长、分行长、柜员账号登录，查看上述创建的仪表板。

分行长（账号为99）显示为所有地区号为22，查看仪表板显示包括下属地区的数据：

支行长（账号为101）显示为所有机构号为22701（即A支行）的数据：

柜员（账号为6159）显示仅为本柜员号6159的数据：


外观配置- FineReport帮助文档|报表开发|报表使用|学习教程

外观配置

1、描述

外观配置在线视频学习请查看【外观配置】

每一家企业都不会只有一个系统，希望每个系统都能够有统一的UI规范。因此在使用FineBI数据决策系统时，也希望能够统一风格，比如登录页、主题样式等，FineBI提供了外观配置功能，最大程度上的支持用户的个性化设置。

2、索引

详细的登录页、平台主题、平台样式功能设置与FineReport一致，请参考下面链接。

登录页

平台主题

平台样式

外观配置在线视频学习请查看 【外观配置】


系统管理- FineReport帮助文档|报表开发|报表使用|学习教程

系统管理

1、描述

系统管理在线视频学习请查看【系统管理】

管理员登录FineBI数据决策系统，选择管理系统>系统管理，可以看到数据决策系统的系统设置项，提供包括登录设置、密码设置、邮件服务器、短信平台、缓存、rserve链接等功能。

其中登录设置支持单一登录、登录地提示、忘记密码设置等丰富的功能选项；rserve链接为支持FineBI中R语言的应用而提供的Rserve的连接入口。

2、索引

详细的各功能操作与FineReport一致，请参考下面链接。

登录

常规

打印

短信

邮箱

缓存

Rserve连接管理

系统管理在线视频学习请查看 【系统管理】


BI参数- FineReport帮助文档|报表开发|报表使用|学习教程

BI参数

1、描述

FineBI在系统管理里提供了配置BI参数的功能，方便系统管理和项目实施人员简单快捷的了解当前系统配置，并在界面上进行快速设置。

如下图，管理员登录FineBI数据决策系统，进入管理系统>系统管理>常规，可以看到BI参数配置的页面。

2、参数介绍

BI参数 | 参数描述 | 参数说明 | 默认值 | 修改后是否需要重启
数据类型识别 | 是否开启正确识别类型但是可能丢失精度的配置 | 默认数值类型精度超出BI可读取范围（1~19位）时，转为文本进行读取，默认为false，修改为true之后，能正确识别数值类型，但是当数值本身精度超出BI范围时，会丢失精度。 | 默认关闭 | 是
数据访问量 | 设置预览时访问数据库的数据量。 | 这个参数会影响到缓存，更改时需谨慎，设置太大很容易将内存撑爆。分布式要求改动参数需要重启。 | 1000000 | 是
缓存设置 | 开启关闭缓存设置 |  | true | 否
缓存时间（秒） | 缓存时间，单位秒（除去关联维表缓存和分页缓存的其他缓存），默认不配置，大数据缓存10分钟，小数据集缓存5分钟 | 设置成0，表示缓存始终生效。 | 不配置 | 是
缓存个数 | 缓存个数（除去关联维表缓存和分页缓存的其他缓存），默认不配置时，大数据集缓存100个，小数据集缓存10000个。 | 设置成0，表示缓存个数无限制 | 不配置 | 是
参数控件过滤生效 | 控件绑定参数功能与过滤功能是否同时生效 |  | false | 否
中文排序 | 是否使用中文排序 | 设置后，抽取数据的表需要重新抽数 | false | 是
关联缓存依据值 | 设置关联维度表缓存划分大小的依据值，默认1000000，判断依据为 行*列 >= 依据值，为大缓存 ， 行* 列 < 依据值，为小缓存。 |  | 1000000 | 是
维表存放数量-largeCache | 设置放入存放大数据量数据的缓存中的维表的存放数量。默认100 |  | 100 | 是
维表存放数量-littleCache | 设置放入存放小数据量数据的缓存中的维表的存放数量。 默认10000 |  | 10000 | 是
维表失效时间-largeCache | 设置存放大数据量数据的缓存的缓存失效时间长度（单位秒）。 默认600 |  | 600 | 是
维表失效时间-littleCache | 设置存放小数据量数据的缓存的缓存失效时间长度（单位秒）。 默认300 |  | 300 | 是
内存化过滤In条件个数 | 内存化维表过滤条件转化为事实表时允许的in条件个数 |  | 10000 | 否
多指标计算线程数 | 控制多指标计算时的线程数 |  | 20 | 是
分页缓存 | 是否开启分页缓存 |  | true | 否

管理员可以参照上方对参数的详细介绍和说明对BI参数进行配置，对于修改后需要重启的参数，在修改配置后需要重启FineBI才能生效；对于修改后不需要重启的参数，修改后直接生效。


定时调度- FineReport帮助文档|报表开发|报表使用|学习教程

定时调度

1、描述

定时调度在线视频学习请查看【定时调度】

企业用户可能面临这样的情况，有的数据分析需要定期产生、定期发布，不得不定期的做同样的事情来得到用户要的分析。FineBI的定时调度功能可以让用户从不厌其烦的重复操作中解脱，可以方便快捷的设置日报、月报、季报、年报等任务，无需额外工作，定时任务设定后服务器便会在指定的时间自动完成设定的任务，生成所需的仪表板，甚至可以将生成的结果以邮件、短信、平台消息通知的方式通知您，让您及时的进行分析与决策。

该章节我们将详细描述定时任务的设置方法及结果的查看。

在创建定时任务的时候，总共分为四步，这四步设置的所有信息也都保存在数据库中，在服务器调用的时候都会从数据库中已经创建的表中选择之前保存的设置信息。

2、定时器

FineBI定时器功能作为一个独立的功能模块，既可以在FineBI数据决策系统平台中对模板进行定时任务设置，如下图，点击管理系统>定时调度即可进入定时调度设置界面：

2.1 任务管理

包含任务名称、使用模板（模板全路径）、上次运行时间、下次运行时间、运行状态，如下图：

文本框支持搜索任务名称和模板，如下图：

下拉框可选择指定任务名称、模板、输出方式、上次运行时间和下次运行时间进行搜索，如下图

任务操作包括继续／暂停、运行、编辑、复制、查看、删除，如下图：

1）继续／暂停：继续／暂停任务

2）运行：点击运行一次按钮，该任务开始执行一次

3）编辑：编辑任务

4）复制：复制的新任务，主体内容与原任务一致，也可重新编辑

5）查看：可以快速概览任务情况

6）删除：删除任务

2.2 运行监控

运行监控为对运行中的任务状态的展示，如下图：

a.高级搜索

文本框支持搜索任务名称，如下图：

下拉框内包括任务名称、运行时刻、运行类型和状态，如下图：

b.将运行信息拆分为运行类型和状态，同时运行时刻、运行类型和状态表头支持点击排序，默认按照运行时刻倒叙排列。如下图，按照运行时刻顺序排列。

3、定时器设置

运行失败提醒，包括短信、平台通知、邮件，提醒里包含任务名称和运行失败的时间。

点击定时调度页面上的全局设置按钮，即可看到运行失败提醒的设置，可勾选短信提醒、平台消息、邮件提醒，如下图：

注：失败提醒，若设置了重启，当重启成功时就不发信息了，只有重启依然失败才发出消息。

点击开启短信功能，详细设置请查看短信提醒，同时邮件提醒也需要配置发件人，详细设置请查看邮箱、 短信。

然后勾选“短信提醒”、“平台消息”、“邮件提醒”，再分别设置设置收件人，设置完成后点击保存，如下图：

当定时任务运行失败时，会发送提醒，如下图：

平台消息：

4、执行过程

定时任务执行过程流程图如下图，定时任务开始时，首先进行条件判断，判断为真则生成快照，判断为假则确定是否设置了重启，如果设置了重启，则延时重新开始定时任务，又重新开始进行条件判断，没设置任务重启，则直接结束定时任务；

生成快照成功则进入附件发送，失败则判断是否设置任务重启，设置了就重新进入条件判断，没设置则结束定时任务；

附件发送成功就可以结束定时任务，如果发送失败暂时也只能直接结束定时任务。

注：定时任务中的条件判断、生成快照和附件发送如果失败则都需要进行判断是否设置了任务重启

5、设置步骤

完整的定时任务分为如下几个部分：

定时任务基本设置>调度周期>本地文件>文件处理

详细点击定时任务设置步骤。

定时调度在线视频学习请查看 【定时调度】


定时任务设置步骤- FineReport帮助文档|报表开发|报表使用|学习教程

定时任务设置步骤

1、基本设置

基本设置中包括了任务名称和默认用户组。

默认用户组，将定时调度任务中可能用于多处的用户（生成结果报表所用的参数、通知的对象:挂载平台、平台通知、邮件通知、短信通知、客户端通知）提取成公共设置，方便使用。

最终的用户组取用户、部门、角色并集，并去重，三项随意组合使用，如下图：

注：默认用户组可以为空，比如FineReport报表填报的时候不需要用户时，可以不设置默认用户组。

2、调度周期

配置结束立即执行：则开始时间为任务完成创建的时间

设定开始时间：则开始时间为具体设置的时间

只执行一次：任务执行一次，此后不再执行

简单重复执行：设置每隔n分钟／小时／天／周执行一次

明细频率设置：增加多种组合选择，添加明细频率，可以设置具体的执行时间／执行日／执行月，如下图：

表达式设定：表达式设定的文本框可自己手动填写cronExpression，也可通过点击旁边的“预置表达式”按钮来直接选择相应的表达式——点击“预置表达式”按钮时，展开预置表达式窗口，点击其中的文字说明，则其上的文本框显示并保存相应的cronExpression，再次点击“预置表达式”按钮时收起预置表达式窗口，详细请查看 表达式设定。

只执行一次
简单重复执行
明细频率设置
表达式设定
任务执行一次后即结束 任务实际结束时间 - - - 无限期 - 无结束时间，定时更新任务会一直定时执行 无结束时间，定时更新任务会一直定时执行 无结束时间，定时更新任务会一直定时执行 设定结束时间 - 根据设定的结束时间 根据设定的结束时间 根据设定的结束时间 额外重复执行次数 - - 在设置的开始时间执行了定时任务之后会在间隔时间达到后再执行任务的次数 -

4）执行条件

执行条件是指在执行定时任务之前进行判断，满足条件才执行定时任务，不满足则不执行或者延迟一段时间后再校验执行。

5）任务重启

勾选，如果任务中断按以下频率重新启动，设置频率和次数。

a. 如果快照生成失败，那么对应的附件发送不会执行；
b. 重启策略适用于条件判断、快照生成、附件发送三个方面的判断，逐一进行判断，如果不成功则进行确定是否采用了重启策略；
c. 重启时遵循任务最小化原则，即：如果快照生成正常、附件发送有问题，那么只需要重新发送附件，并且只需要重新发送之前发送失败的项目（邮件、ftp、自定义附件处理，哪个失败发送哪个即可）。
点击提交。

3、本地文件

文件名称：生成结果文件的名称，包括了结果报表、附件（excel、word、pdf）。对于FineReport报表来说支持公式输入，比如${now()}；但FineBI不支持；

4）附件存档：可选择生成的附件类型，包含excel和pdf可选；

5）文件处理：可配置文件处理的逻辑，默认选中“不清理”；

4、文件处理

4.1 邮件通知

收件人：默认只能使用【默认用户组】

抄送和密送：只支持用户选择

主题：邮件的主题

文件描述：对于该发送邮件文件的描述

注：使用附件，按照本地文件的设置，若本地文件中附件存档没有生成任何附件（包括excel、pdf），则此选项灰化，不可选。

4.2 客户端通知

勾选APP通知，填写主题和内容，选择链接，如下图：

注：消息推送给app，必须把该仪表板挂到虚拟目录上，且推送的人必须是虚拟目录有权限看的人（超级管理员除外，此处指的是除去超级管理员之后的其他用户）。

[通用]定时任务推送消息至APP。


移动平台- FineReport帮助文档|报表开发|报表使用|学习教程

移动平台

1、描述

移动平台在线视频学习请查看【移动平台】

移动平台是对移动端进行设置的地方，可进行移动端设备绑定、二维码配置等。

管理员登录FineBI数据决策系统后，点击管理系统>移动平台，可以看到设备绑定、二维码配置等操作。

2、索引

详细的如何绑定移动设备、配置服务器二维码等功能与FineReport一致，请参考下面链接。

移动平台

移动平台在线视频学习请查看 【移动平台】


注册信息- FineReport帮助文档|报表开发|报表使用|学习教程

注册信息

1、描述

注册信息在线视频学习请查看【注册管理】

注册信息用于查看当前数据决策系统的一些版本信息以及购买的功能列表。

2、版本信息

版本信息里面包含是否注册、可访问模板的IP个数、服务器所有Mac地址列表、应用工程名、版本号、jar包信息等。

2.1 没有注册版本信息

提示：请尽快注册，未注册版本并发数（同时可访问模板IP数）限制为2个，即数据决策系统的默认访问个数为2。

应用工程名：自动绑定Web工程名；

模块：分为数据源模块、核心模块、平台模块、报表模块和BI模块；

版本号：自动获取注册时使用的版本号如9.0、10.0.0、5.0.0等；

JAR包：代表决策系统工程版本生成日期；

管理员登录FineBI数据决策系统，点击管理系统>注册信息，未注册时，注册信息标签显示如下图：

2.2 已注册版本信息

相对于未注册版本信息，已注册版本信息多了以下几个内容：

认证方式：注册信息的认证方式；

机器信息：mac地址以及机器码；

版本号：注册FineBI时的平台版本号；

应用工程名：所注册的应用工程名；

过期时间：注册的lic文件能够使用到的最后一天；

同时访问模板的IP个数：即该工程的并发数；

3、功能列表

注册信息里面列出所有注册了的报表功能，没有注册的话，所有功能都可以使用。

4、功能点解释

上述截图中，license里的各个功能点具体用来实现什么效果，解释如下。

1）仪表板：支持FineBI中的仪表板创建分析等；

2）数据准备：支持FineBI中的数据准备，可用于连接数据库、添加数据表、数据加工等；

3）数据挖掘：支持FineBI中自助数据集的数据挖掘功能；

4）BI-分布式引擎：支持FineBI抽取数据到本地的功能；

5）BI-直连引擎：支持FineBI实时数据功能；

6）短信平台：支持发送短信，可用于身份验证、定时调度失败提醒、定时调度任务通知、内存阀值通知。
7）智能运维：
支持内存管理：系统状态实时监控系统（内存、模板），并及时给出系统管理员预警；展现当前系统内的session情况，并提供手动关闭的入口；并优化内存释放算法，智能释放；
支持智能检测：通过智能检测功能查出问题并提供建议方案。
如果没有够买，则智能运维里没有内存管理和智能检测，只能能看到和使用备份还原和系统情况；如果购买了，则能看到全部。
8）AlphaFine:
支持智能搜索：搜索设置、帮助文档、模板包含模板名称和模板内容、帆软市场的内容。
支持模板智能检测：在做模板的过程中，遇到报错，根据报错给出相应的解决方案。
9）打印导出：包括了所有的打印和导出，以及接口
10）集团权限控制：多部门共用系统、各个部门有其自己的管理员，并给其部门员工分配权限，即实现多级管理员层层分配，分级管理员只能管理自己职责范围内的模板权限分配。
11）数据多级上报：支持简单配置即可实现数据的多级上报功能。
12）决策报表：通过灵活的组件拖拽操作方式快速制作组件式报表，比传统格子报表更美观，可以自适应屏幕的大小和分辨率，智能排布组件布局，交互效果更佳，极适合构建驾驶舱。
13）移动决策平台：在IOS和android移动端查看报表的APP，是用于综合查看报表的门户，本身不支持报表移动端展现。报表的增减、管理需要在PC端决策平台上配置。
14）决策平台：包含用户管理、文件管理、数据配置、主页配置及用户信息监控的综合门户。
15）Excel导入：通过直接导入或填报录入的方式，将excel中的数据导入到数据库中。包括在线导入excel和批量导入excel。
16）移动终端报表展现:把报表内容从PC端显示到移动设备上，同时有自适应、手势操作等移动端特有效果，主要用于把报表集成到用户自主开发的APP上。
17）数据分析：在web页面中对展现数据进行筛选、过滤和排序等分析操作。
18）地图：将与地理位置有关的属性、指标等直观地反映在地图上，支持内置地图、自定义地图，让数据以地图的形式展现出来。
19）高级图表交互：图表联动，闪烁动画，图表监控刷新。
图表联动：在确定报表图样后，点击某个图表的不同系列，其他图表数据发生相应的变化。
闪烁动画：开启后标记点有频率的闪烁
图表监控刷新：当后台数据变化时，前端图表在当前基础上刷新图形，并提示变化的数据内容。
20）聚合报表：以画板方式放置报表元素，并能对任意报表元素进行编辑和组合。
21）远程设计：采用三层结构来实现设计器在远程服务上创建和修改报表模板。
22）定时调度：支持定时生成报表，定时转换数据，定时发送邮件，能指定报表生成目录，并以Web方式查看报表生成结果。
23）H5动态图表：采用html5技术在浏览器端生成动态图表。
24）增强分析统计模块：支持自定义分组(包括条件分组和公式分组)，以及层次坐标公式(包括同比，环比，排名，占比和累计等需要层次坐标比较的模板制作)。
25）数据录入：
支持填报（非多源）：一个填报报表中的数据能录入到一张表里。
支持多源填报：一个填报报表中的数据能录入到同一数据库的不同表或者不同数据库中。
26）模板权限集成：指系统设置的安全规则或者安全策略，用户可以访问而且只能访问自己被授权的资源，不多不少。
27）参数查询界面：通过拖拽参数来布局参数查询页面，支持文本，数字，日历，下拉框，下拉复选框、下拉树，下拉多选树、单/复选框组，密码框，网页框，列表、表格树、多文件上传等二十多种编辑器，报表参数页面和报表内容合二为一。
28）多数据源关联：同一张报表可以从多个数据库或者多个数据表中取数；并且在报表中允许对多个数据集进行关联运算。
29）多报表运行环境：能在多个报表运行环境中切换设计报表。
30）多sheet报表设计：支持在设计器中创建多Sheet报表，导入导出多Sheet的Excel文件。
31）EssBase数据库：支持对多维数据库essbase的连接取数。
32）SSAS数据库：支持对多维数据库微软-ssas的连接取数。
33）Hana数据库：支持对多维数据库sap-hana的连接取数。

注册信息在线视频学习请查看 【注册管理】


智能运维- FineReport帮助文档|报表开发|报表使用|学习教程

智能运维

1、描述

智能运维在线视频学习请查看【智能运维】

当前系统内哪些模板有问题，哪些模板有出问题的风险，系统的硬件和软件配置是否能支撑当前实际场景，是否存在宕机的风险等等，即如何保证系统健康强壮稳定的运行，这些信息对于系统管理员来说，至关重要。智能运维即提供系统管理的这些信息，包括：内存管理、集群配置、备份还原、智能检测、平台日志。

2、索引

详细的运维信息管理功能与FineReport一致，请参考下面链接。

内存管理

集群配置

备份还原

智能检测

平台日志

智能运维在线视频学习请查看 【智能运维】


数据连接- FineReport帮助文档|报表开发|报表使用|学习教程

数据连接

1、描述

数据连接 在线视频学习 请查看【数据连接】

我们在数据准备阶段已经介绍了如何配置数据连接，除了快捷创建数据连接外，管理员在管理系统下的数据连接中可对连接数据源的连接信息进行管理，包括增删改等操作。

详细数据连接使用功能介绍请参考数据准备中的配置数据连接。

数据连接 在线视频学习 请查看 【数据连接】


安全管理- FineReport帮助文档|报表开发|报表使用|学习教程

安全管理

1、描述

安全管理在线视频学习请查看【安全管理】

安全管理为FineBI提供给管理员管理系统安全的地方，包括安全防护、访问控制、SQL防注入功能。管理员登录数据决策系统选择管理系统>安全管理。

2、索引

详细的安全防护、访问等设置功能与FineReport一致，请参考下面链接。

安全防护

访问控制

SQL防注入

安全管理在线视频学习请查看 【安全管理】


地图配置- FineReport帮助文档|报表开发|报表使用|学习教程

地图配置

1、描述

地图配置为FineBI提供的在数据决策系统进行地图自定义设计，包括地理地图、自定义图片地图、自定义GIS地图背景、地理位置和经纬度自定义匹配等功能，从而帮助用户进行快速自定义地图编辑设计。管理员登录FineBI数据决策系统，点击管理系统>地图配置，进入地图配置界面，可进行地理信息、自定义图片和GIS背景三个方面的设置。

2、索引

详细的地图配置请参考下面链接。

地理信息

自定义图片

GIS背景


地理信息- FineReport帮助文档|报表开发|报表使用|学习教程

地理信息

1、描述

地理信息是配置地图的区域边界和点经纬度信息的地方，即设置实际地理信息的入口。可以新增地理信息文件，也可以对内置的地理信息进行修改。

如下图所示，地理信息编辑界面左侧为地图层级目录，右侧为对应的地图编辑界面，分为形状区域和点，点击可进行切换。

2、层级目录

在地图层级目录中，点击右上角的

+按钮，出现创建地理信息地图设置，输入文件名。

确定保存该文件名，则在world层级下即新增美国层级，如下图：

3、区域

点击左侧对应的文件位置，右侧则切换成对应的地图编辑区域界面，比如我们点击内置的中国上海市，则右侧区切换成上海市的区域范围。

3.1 放大缩小

放大缩小即查看该地图时显示的大小缩放的功能，比如我们对显示的上海市区域图单击放大按钮，则该地图即放大显示，如下图：

3.2 编辑地图区域

编辑形状区域地图时，只能添加多边形或矩形形状。添加时，选择需要添加的形状，在地图中单击输入各个点连成具体形状，画成以后需输入区域名和区域中心点经纬度（标签显示的位置），输入以后点击保存即添加成功。

比如，单击画多边形后，鼠标出现下面提示“点击并开始”，如下图：

3.3 编辑/删除层级

点击编辑层级则可以编辑当前地图中已存在的区域，如下图，单击编辑层级后，到地图中拖拽已存在的点即可修改区域范围，修改完成后单击保存按钮（点击取消来撤销更改），层级修改成功。

保存或取消按钮，用来保存/取消之前的操作。

设置完成后需点击右上角的

4、点

单击地图编辑界面的点框即可切换到点界面，包括地图点编辑区域及数据单元格编辑区域，如下图的内置上海市地图：

点界面可进行的操作与区域类似，包含放大缩小地图、编辑删除层级、添加标记点等，其中添加标记点可以在地图点编辑区域操作或者数据单元格区域编辑。层级操作则与上节区域操作类似，这里不再重复介绍。

4.1 画标记点

单击画标记点按钮以后，鼠标处即出现标记点符号，将标记点拖动到需要放置在地图中的位置，点击来放置并输入区域名，单击保存则新增成功。

右侧数据单元格即出现刚刚新增的单元格信息，并自动获取该设置点的经纬度，如下图：

若不想要该设置，点击点区域内的删除按钮即可。如下图：

4.2 单元格操作

若想要从数据单元格操作的话，单击单元格时，即选中该单元格所在的整行表格。当该行表格处于被选中状态时，再次点击该行表格中的任一单元格，可对该单元格内容进行编辑。

只有当点击了表格行以外区域时，该行表格才为取消选中状态。

除了编辑还可以添加或删除行，单击

单击单元格，选择

单击导入数据按钮即可导入点数据信息，只可选择excel对应的文件格式。导入excel文件需要的格式为三列数据，第一列为名称，第二列为经度，第三列为纬度。用户导入的点信息必须按照以上规则才能正确导入。

单击以后选择对应文件，点击打开，则出现导入数据预览界面，点击确定导入该数据，如下图：

导入成功后在单元格即出现导入的数据，左侧地图中显示导入点数据对应的标记，如下图：

5、效果查看

地图信息编辑并保存成功以后，在组件编辑中匹配地理角色时，即可以选择匹配到刚刚设置的地理信息，如下图：

且区域地图中匹配到的是对应画的区域，点地图中匹配到的是对应的标记点。


自定义图片- FineReport帮助文档|报表开发|报表使用|学习教程

自定义图片

1、描述

自定义图片指的是自定义图片地图。界面也包含自定义图片目录和图片编辑界面，如下图：

注：自定义图片需要为其设置区域/点及区域名/标记点名才能在地理角色中匹配到。

2、自定义图片目录

在自定义图片目录中，点击

+，输入文件名为华北，如下图：

确定保存，则在中国下新增华北目录，如下图：

3、图片编辑

3.1 导入图片

对于之前新增的华北目录，FineBI支持导入自定义的地图图片。比如我们选择导入一张中国地图，如下图，选中华北，在图片编辑处单击导入图片。

打开，如下图：

3.2 增加区域/点

在导入自定义图片后，编辑界面可做的操作与地理信息相似，也包括放大缩小、画多边形矩形标记点、编辑删除层级等。

区域类似，单击画多边形后，点击地图中的某个点即开始画区域，连续绘制点形成区域，最后再点击第一个点形成区域，即完成绘制形状。

如下图，我们通过画多边形的方式在图片中标识出华北区域。

保存按钮，保存该自定义图片设置。

4、效果查看

在设置好华北区域后及标记点以后，在组件编辑中匹配地理角色时，选择自定义图片，如下图：

进入地理角色匹配编辑界面，在自定义图片下即可选择之前自定义的华北进行匹配，会直接匹配到在图片中标记的对应点。如下图：


GIS背景- FineReport帮助文档|报表开发|报表使用|学习教程

GIS背景

1、描述

GIS背景界面包含GIS背景目录、背景设置及图层显示，如下图：

注：若用户为内网环境，则无法加载在tile layer中输入的URL GIS背景，即FineBI内置的GIS背景也无法加载。需要用户开放外网环境，或参考下面3.2章节使用WMS服务。

2、GIS背景目录

与地理信息及自定义图片类似，GIS背景目录可进行新增、编辑及删除操作，不同的是目录中的各个不同背景均为同层级，不存在多层级的情况。鼠标悬浮到目录处即出现编辑和删除操作按钮。

3、GIS背景设置

GIS背景设置包含两种方式：tilelayer和wms。下面我们分别介绍这两种方式。

3.1 tilelayer

选中tilelayer后，url需要自行查找（推荐两个地图供应厂商： https://www.mapbox.com 和 http://thunderforest.com/），这里使用的URL为：

https://api.mapbox.com/styles/v1/doreen0813/cj9qh3mfi06p32rquai7tmsfe/tiles/256/{z}/{x}/{y}@2x?access_token=pk.eyJ1IjoiZG9yZWVuMDgxMyIsImEiOiJjajlxZHd2eTc1cG1tMndsZ3B4cHcxNjJsIn0.qHIKyNWEzkGWItCv1MVbZQ

在网站上找到自己想要的gis图层，找到Use-Third party-Fulcrum，将url复制下来。如下图，就可以在我们的地图中，使用各种样式的gis图层了，mapbox具体使用方法可参考mapbox的注册和使用。

注：如果有需要的话，可以直接购买使用。在一定范围内，可以免费使用。

在tilelayer中输入URL后点击加载图层按钮，右侧即显示编辑后的URL图层效果，如下图：

保存按钮。

3.2 WMS

利用arcgis等地图工具发布的wms服务（如何搭建自行百度），用户可以在局域网内实现离线地图展示。

测试地址：https://demo.boundlessgeo.com/geoserver/ows?service=wms&version=1.3.0，如提示WMS服务无效，可以到网上搜索其他可用的wms使用。

选中wms后，输入URL，单击加载图层按钮，则加载图层按钮变化为正在加载图标，直至请求到所有wms图层后，URL输入框的下方即显示所有wms图层的复选框组（默认选中全部），根据需要勾选图层即可，如下图：

保存按钮。

4、效果查看

新增GIS背景设置完成后，在仪表板图形选择为填充地图的情况下，在组件样式>背景>GIS中可以选择之前设置的自定义GIS背景，如下图：

选择以后，图表中的背景即切换为自定义的GIS背景，如下图：


如何修改FineBI端口号- FineReport帮助文档|报表开发|报表使用|学习教程

如何修改FineBI端口号

1、描述

在服务器启动后，FineBI数据决策平台默认的登陆地址为http://localhost:37799/webroot/decision，默认端口号为37799，如果我们想改成其他端口访问，那应该如何设置呢？

2、步骤

1. 修改端口号

因为FineBI自带Tomcat的配置环境，因此我们跟tomcat中修改端口号一样的步骤即可。在FineBI安装目录%FineBI%/server/conf下找到server.xml，在该配置文件下，有端口号相关的配置如下图：

port="80"

保存配置修改。

2. 重启FineBI

在修改完该配置文件后，需要重启FineBI。重启以后即能以新设置的端口访问数据决策系统，如下图：


权限管理常见问题- FineReport帮助文档|报表开发|报表使用|学习教程

权限管理常见问题

1、描述

用户在使用FineBI数据决策系统是常常会遇见各种权限管理的问题，本章我们将详细介绍下常见权限的报错及解决方案。

2、用户名不可用

问题描述：

管理员明明创建了用户，但是用户在登录FineBI数据决策系统时还是提示该用户名不可用，如下图：

3、登录后页面一片空白

问题描述：

普通用户登录系统后，页面显示一片空白，没有任何权限，如下图：

新增用户的权限配置为用户分配指定节点的权限。

4、您暂时无权限查看该组件数据

问题描述：

当用户登录系统查看模板时，页面显示“您暂时无权限查看该组件数据”，如下图：

统>权限管理>业务包权限，为该用户分配指定业务包的权限，如下图：

此时再登录Alice用户的账号，该用户可以看到仪表板的所有内容，不再提示该报错信息。


Web服务器部署- FineReport帮助文档|报表开发|报表使用|学习教程

Web服务器部署

1、描述

FineBI是一个Servlet应用。

Servlet是一种服务器端的Java应用程序，具有独立于平台和协议的特性，可以生成动态的Web页面。它担当客户请求（Web浏览器或其他HTTP客户程序）与服务器响应（HTTP服务器上的数据库或应用程序）的中间层。Servlet是位于Web服务器内部的服务器端的Java应用程序，由Web服务器进行加载，该Web服务器必须包含支持Servlet的Java虚拟机。

因此FineBI必须部署在Web应用服务器如Tomcat、Weblogic、Websphere等下面，启动Web应用服务器时就会加载FineBI这个Servlet，从而交互式地浏览和修改数据，整个过程如下：

服务器部署将FineBI系统置于服务器上，大家通过IP地址访问同一个BI系统，从而实现系统平台的作用，达到企业整体工作的业务活动需求。

2、索引

下面将详细介绍各类主流服务器下FineBI的部署过程。
Tomcat服务器部署
Tomcat部署相关问题
Weblogic服务器部署
Weblogic部署相关问题
Jboss服务器部署
Websphere服务器部署
Websphere部署相关问题
常见部署问题
注：FineBI仅支持JDK1.8，在部署时需按照对应服务器和JDK版本部署，否则将无法使用。

3、注意事项

1、若部署在非Tomcat的服务器中，在部署完成后，需要修改%FineBI%/webapps/webroot/WEB-INF/lib下的FineLog.properties文件，将log4j.appender.ServerDailyRollingFile.File的地址修改为对应服务器中的地址，如下图，否则FineBI正常使用将打印不了日志。

平台hsql默认迁移，则连接对应数据库），路径为%FineBI%\webapps\webroot\WEB-INF\embed，在数据库中的表fine_conf_entity中增加字段LoginConfig.loginTimeout，并为其设置对应的值，单位为毫秒。


Tomcat服务器部署- FineReport帮助文档|报表开发|报表使用|学习教程

Tomcat服务器部署

1、描述

Tomcat服务器是免费且性能相对稳定的web应用服务器，在许多中小型企业中很受欢迎。FineBI支持的Tomcat版本及对应的JDK版本：

Tomcat版本 | JDK版本
Tomcat8.0及以上版本 | jdk1.8

注：1、Tomcat版本与JDK版本需要与操作系统对应；不支持32位系统；

2、FineBI5.0仅支持JDK1.8版本，需要使用对应版本，否则无法部署成功并使用。

2、独立部署

独立部署就是将FineBI应用集成到新的Web工程。

1、把FineBI目录中%FineBI%\webapps下的webroot文件拷贝到%Tomcat_HOME%/webapps/下，如下图：

%Tomcat_home%/lib或%Tomcat_home%/webapps/webroot/WEB-INF/lib任一位置，如下图：

找到tools.jar文件：

%Tomcat%/lib下：

%Tomcat_HOME%/bin目录下启动tomcat服务器，根据不同系统，执行startup.bat或者startup.sh便可以在客户端浏览器中访问了。

4、在客户端浏览器中输入访问地址http://localhost:8080/webroot/decision可成功看到如下图所示的访问界面，证明部署成功。8080端口可根据需要进行修改。

注：访问地址由“服务器IP”+“端口”+“工程文件名”+“decision”组成；若Web应用服务器可以在外网进行访问，我们就可以在外网访问FineBI数据决策系统了。

3、注意事项

在Linux的Tomcat下部署了FineBI以后，若要导出Excel（包含组件导出Excel和仪表板导出Excel），则需在Tomcat的目录%tomcat%/bin找到配置文件catalina.sh，打开该文件并搜索RUNJAVA，在所有类似如下所示的内容后都增加一行Djava.awt.headless=true \。

Djava.awt.headless=true \

修改文件后保存并重启FineBI，即可导出Excel。


Tomcat部署相关问题- FineReport帮助文档|报表开发|报表使用|学习教程

Tomcat部署相关问题

1、描述

在Tomcat部署过程中可能存在各种问题导致最终无法使用，下面我们介绍一下这些问题及对应的解决方法。

注：在文档中提及的FineReport目录及文件找到FineBI对应的即可。

索引：

Tomcat端口配置

Tomcat设置服务的访问路径

tomcat服务器部署后500错误解决方案


Weblogic服务器部署- FineReport帮助文档|报表开发|报表使用|学习教程

Weblogic服务器部署

1、描述

FineBI支持的Weblogic版本及对应的JDK版本：

Weblogic版本 | JDK版本
Weblogic12.2.1.* | JDK1.8

注：部署前请先确认服务器环境的JDK版本，默认下载的FineBI安装包为JDK1.8版本，若与环境不符，需确保环境为JDK1.8版本，否则无法部署成功并使用。

支持的操作系统包括Windows、Linux、Unix操作系统，Linux、Unix下的Weblogic管理控制台和Windows下的界面是一致的，即实现步骤是一样的，下面我们以Windows系统下的实现做介绍。

2、部署步骤

以下示例环境为Windows Server2008R2+Weblogic12c+jdk1.8，其他版本步骤基本相同，可能每个版本功能位置不同，需要找到自身版本环境的对应位置。

2.1 前期准备

1、删除Weblogic安装目录%weblogic%\wlserver\modules 下的org.slf4j.jdk*.jar，如下图：

%weblogic%/oracle_common/modules/下的com.fasterxml.jackson.core.jackson-databind、com.fasterxml.jackson.core.jackson-core、com.fasterxml.jackson.core.jackson-annottations三个jar包，如下图：

%weblogic%/Oracle/Middleware/oui/modules目录下jackson-annotations-2.7.9.jar包，如下图：

%weblogic%/Oracle/Middleware/oracle_common/modules/thirdparty目录下的jackson-annotations-2.7.9.jar、jackson-core-2.7.9.jar、jackson-databind-2.7.9.1.jar三个jar包，如下图：

3、在此处下载web.xml 文件，并将其放入FineBI安装目录%FineBI%/webapps/webroot/WEB-INF 下。

4、在FineBI安装目录%FineBI%/webapps/webroot/WEB-INF/embed/finedb 下找到db.script文件，在文件最后为其增加如下内容：

DELETE FROM FINE_CONF_ENTITY WHERE ID='DistributedOptimizationConfig.spiderConfig.spider_namenode_mode' INSERT INTO FINE_CONF_ENTITY VALUES('DistributedOptimizationConfig.spiderConfig.spider_namenode_mode','master') COMMIT

2.2 复制目录

拷贝FineBI安装目录%FineBI%\webapps下的webroot文件夹至服务器（Weblogic所在的服务器）任意目录，如服务器的C:\webroot。

将环境上安装的JDK目录lib下面的tools.jar拷贝到%weblogic_home%/lib或%webroot%/WEB-INF/lib任一位置，比如拷贝至C:\webroot\WEB-INF\lib下。

2.3 Weblogic部署FineBI应用

启动Weblogic服务器，打开Weblogic管理控制台，默认地址为http://localhost:7001/console，选择左边的部署菜单，点击右侧的安装按钮进行部署，如下图：

C:\webroot，选定webroot，点击下一步：

将此部署安装为应用程序”），点击下一步：

完成（也可根据需求点击下一步逐步进行设置）：

注：在部署weblogic过程中，无需更改编码方式，FineBI在定义数据连接时已经对编码进行了处理。

默认会自动激活所有更改，若没有激活，点击左侧的激活更改按钮进行提交：

应用>启动：

2.4 检测是否部署成功

打开浏览器，输入访问地址http://localhost:7001/webroot/decision可成功看到访问界面，7001端口可根据需要进行修改。

注：地址由“服务器IP”+“端口”+“工程文件名”+“decision”；


Weblogic部署相关问题- FineReport帮助文档|报表开发|报表使用|学习教程

Weblogic部署相关问题

1、描述

在Weblogic部署过程中可能存在各种问题导致最终无法使用，下面我们介绍一下这些问题及对应的解决方法。

注：在文档中提及的FineReport目录及文件找到FineBI对应的即可。

索引：

weblogic部署问题

Weblogic10内存和端口号修改

weblogic类冲突报错

weblogic10.3部署报Servlet

Weblogic服务器war包部署

weblogic12c安装和配置过程分解


Websphere服务器部署- FineReport帮助文档|报表开发|报表使用|学习教程

Websphere服务器部署

1、描述

Websphere服务器（WebSphere Application Server）简称WAS，是IBM出的高性能的应用服务器，FineBI支持该服务器的部署，且支持的Websphere版本及对应的JDK版本如下：

Websphere版本 | JDK版本
websphere8.5.5.13版本 | JDK1.8

注：部署前请先确认服务器环境的JDK版本，默认下载的FineBI安装包为JDK1.8版本，且FineBI5.0版本仅支持JDK1.8。

2、部署步骤

以下示例环境为Windows Server 2008+ Websphere 8.5.5.13 + jdk 1.8，其他版本步骤基本相同，可能每个版本功能位置不同，需要找到自身版本环境的对应位置。

2.1 升级Websphere

因为FineBI内置Spider引擎不支持JDK 1.6，因此需要升级到 8.5.5.9 或最新 8.5.5.13，才可以配置JDK 1.8。任何低于8.5.5.13的版本都需要先升级到8.5.5.13，参考Websphere升级。

2.2 升级SDK

在上一步我们已经确保了websphere版本为8.5.5.13，此时需要升级SDK版本到8.0.5.17，这里采用直接替换的方法升级。

参考Websphere升级最新的SDK。

2.1 打war包

使用命令cmd进入%FineBI%\webapps\webroot所在的目录，在出现的命令提示符窗口中键入jar cvf webroot.war *，把webroot这个文件夹压缩成webroot.war包。（注：系统中需要安装JDK才能使用命令jar cvf webroot.war *）

注：1、需打的war包，可根据需要命名，如：可改为"FineBI"，"websphereweb"等等；

2.2 Websphere部署

将webroot.war拷贝至websphere所在的服务器，这里我们将其复制到C:\webroot.war。

1)启动服务器，登陆管理控制台
websphere的部署是在管理控制台进行部署，跟tomcat等差别很大，如下图，进入管理控制台登陆界面，输入用户名密码：

管理控制台界面：

应用程序，点击新建应用程序，选择右侧显示框中的新建企业应用程序，如下图：

选择“详细-显示所有的安装选项和参数”，点击下一步

应用程序>应用程序类型>websphere企业应用程序，勾选部署的工程名，点击启动，如下图：

2.3 检测是否部署成功
输入访问地址http://localhost:9080/webroot/decision可成功看到访问界面，9080端口可根据需要进行修改。

注：地址由“服务器IP”+“端口”+“工程文件名”+“decision”。


Websphere部署相关问题- FineReport帮助文档|报表开发|报表使用|学习教程

Websphere部署相关问题

1、描述

在Websphere部署过程中可能存在各种问题导致最终无法使用，下面我们介绍一下这些问题及对应的解决方法。

注：在文档中提及的FineReport目录及文件找到FineBI对应的即可。

索引：

Websphere6.1服务器部署


Websphere升级- FineReport帮助文档|报表开发|报表使用|学习教程

Websphere升级

1、描述

因为FineBI内置spider引擎不支持JDK 1.6，且Websphere版本仅支持8.5.5.13、JDK1.8，因此我们需要将Websphere选择升级到8.5.5.13。

2、查看内置JDK

前台查看JDK环境，如下图，点击对应应用程序服务器>Java SDK。

3、升级步骤

安装包下载链接:https://pan.baidu.com/s/1JQYnpGD7DmbzQ---cPHZSw 密码:tg0f

3.1 安装IIM

执行命令解压agent.installer.linux.gtk.x86_64_1.8.9000.20180313_1417.zip文件。

unzip agent.installer.linux.gtk.x86_64_1.8.9000.20180313_1417.zip

解压到任意路径，并执行install即可，点击next即可。

3.2 使用IIM升级WAS容器

使用unzip命令解压三个part包（解压至任意目录，如/soft/was/update）后，执行/opt/IBM/InstallationManager/eclipse/launcher。

/opt/IBM/InstallationManager/eclipse/launcher

打开IIM，按照下图选择repository文件，该文件在上面的解压路径下：

确定后选择更新。

3.3 安装jdk1.8

解压java包，打开IIM，按照下图选择repository文件：

选择安装包后点击next即可。

IBM/WebSphere/AppServer/profiles/AppSrv01/bin，执行 ./managesdk.sh -listAvailable。

./managesdk.sh -listAvailable

看到jdk 1.8_64即表示JDK1.8安装成功。

3.4 配置JDK

进入Websphere目录IBM/WebSphere/AppServer/bin，使用如下配置环境命令：

./managesdk.sh -listAvailable ./managesdk.sh -getNewProfileDefault ./managesdk.sh -setNewProfileDefault -sdkName ./managesdk.sh -enableProfileAll -sdkName 1.8_64
执行如下图所示：

应用程序服务器>Java JDK，将1.8_64用作缺省值即可。


Websphere升级最新的SDK- FineReport帮助文档|报表开发|报表使用|学习教程

Websphere升级最新的SDK

1、描述

前面我们介绍了如何将Websphere的版本升级至8.5.5.13，还需要将SDK升级至版本8.0.5.17才能进行FineBI应用部署。这里采用直接替换的方法升级。

2、升级步骤

2.1 下载SDK安装包

从IBM官网下载最新的SDK安装包（需要用8.0.5.10及以后版本的）。

官网下载地址：https://developer.ibm.com/javasdk/downloads/sdk8/

已经下载好的bin文件： https://pan.baidu.com/s/19XMvqCrfUs-aWeLDBhMQig 密码: smmu

2.2 执行安装

将bin文件放到Linux中任意目录下，并进入相应的目录下执行命令：

./ibm-java-sdk-8.0-5.17-x86_64-archive.bin

按照提示一步一步往下安装，安装路径可随意填入地址。

2.3 查看启动日志

进入安装程序目录，执行如下命令：

cd /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/ tail -1000f startServer.log
可以看到如下图SDK的安装路径，然后将刚刚安装好的8.0.5.17的文件夹重命名为java_1.8_64，替换/opt/IBM/WebSphere/AppServer/路径下的java_1.8_64文件夹即可。

2.4 查看结果

启动Websphere，查看启动日志，看到如下内容，说明SDK安装成功。

查看日志的命令同样为：

cd /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/ tail -1000f startServer.log


常见部署问题- FineReport帮助文档|报表开发|报表使用|学习教程

常见部署问题

1、索引

部署过程中常见的问题及解决方案如下：

注：在文档中提及的FineReport目录及文件找到FineBI对应的即可。

访问ip直接进入平台系统界面

部署初始化修改内存

部署初始化修改字符集

linux服务器部署常见问题

部署到服务器常见错误

修改访问网址中的ReportServer

部署在服务器的日志查看

服务器中设置FineBI日志级别

开机自启动web应用服务器

访问服务器上的FineBI缓慢

64位tomcat的部署问题

Tomcat服务器日志文件过大的解决方案


访问ip直接进入平台系统界面- FineReport帮助文档|报表开发|报表使用|学习教程

访问ip直接进入平台系统界面

1、问题描述

把整个BI作为一个独立的系统，访问FineBI数据决策系统，需要输入http://localhost:端口号/应用名称/decision进行访问，这样路径比较长，输入比较麻烦，那么能不能输入简单的地址 如http://localhost地址就能访问了呢，效果图如下：

2、实现原理

web服务器安装成功后，访问http://localhost:端口号弹出默认欢迎界面，通过修改配置文件调用自定义的欢迎界面。在jsp里面调用iframe集成，从而访问欢迎界面显示平台系统产品演示内容。

注：本地部署下目前不支持访问ip直接进入平台系统界面，tomcat及weblogic下的操作可操作下面链接。

索引：

tomcat下访问ip直接进入平台系统界面

weblogic下访问ip直接进入平台系统界面


部署初始化修改内存- FineReport帮助文档|报表开发|报表使用|学习教程

部署初始化修改内存

1、描述

FineBI在最初部署初始化的时候，经常会有需要修改最大jvm的情况。FineBI可以适应的环境多且复杂，因此修改内存的方式也会有很多种，下面详细介绍。

2、本地部署修改内存

如果是安装包直接安装的FineBI，可以直接在%FineBI%\目录下的FineBI.vmoptions文件中修改内存的大小。Windows以及linux/unix系统均修改该文件（这里是以M为单位的）。

注：Xmx与数字之间不要有空格！

3、部署在Tomcat中修改内存

部署在Tomcat中的FineBI修改内存有两种方法：1）修改catalina文件 2）修改start文件，下面分别介绍。

3.1 修改Catalina文件

修改Tomcat的../bin目录之下的catalina文件，添加命令: JAVA_OPTS=-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】。

a、Windows之下修改catalina.bat文件，需要的命令如下：

set JAVA_OPTS=-Xms1024m -Xmx4096m

b、linux/unix修改catalina.sh文件，添加的命令如下：

JAVA_OPTS=”-Xms1024m -Xmx4096m”

3.2 修改Start文件

可直接修改start.bat(windows)或start.sh(linux/unix)，修改的方法与上面一致。

4、部署在Weblogic中修改内存

部署在Weblogic中的FineBI修改内存有两种方法：1）修改startWebLogic文件 2）修改commEnv文件，下面分别介绍。

4.1 修改startWebLogic文件

修改Weblogic安装目录../domains/自己的工程名/下的startWebLogic文件。

a、Windows之下修改startWebLogic.bat文件，将这段命令添加进去：

set MEM_ARGS=-Xms1024m –Xmx4096m

b、Linux/unix修改startWebLogic.sh文件, 将这段命令添加进去：

MEM_ARGS=”-Xms1024m -Xmx4096m”

4.2 修改commEnv文件

也可修改/common/bin之下的commEnv.bat或者commEnv.sh文件，方法和上面的一样。

5、部署在Websphere中修改内存

部署在Websphere中的FineBI修改内存有两种方法：1）修改server.xml文件 2）通过控制台修改，下面分别介绍。

5.1 修改server.xml文件

修改Websphere安装目录下的配置文件server.xml中的initialHeapSize和maximumHeapSize参数，如下图：

initialHeapSize----初始化内存

maximumHeapSize----最大可用内存

5.2 通过控制台修改

在控制台中选择服务器>应用程序服务器>进程定义>java虚拟机进行设置，如下图，先选择sever1：

点击java和进程管理>进程定义：

点击java虚拟机：

设置jvm参数，设置完确定并保存即可：

注：1、如果遇到有java.lang.OutOfMemoryError: PermGen space 这种异常抛错，可以在所有修改内存的地方加上一个命令语句：-XX:MaxPermSize=256m来进行限制；

2、所有调整内存的数字都要根据自己的数据量来进行调整。


部署初始化修改字符集- FineReport帮助文档|报表开发|报表使用|学习教程

部署初始化修改字符集

1、描述

将FineBI安装到Linux/Unix系统中，部署到Tomcat服务器上时，如果不修改环境的字符集为utf-8，就会出现乱码的错误。如输出乱码，导出excel乱码等等情况，下面以常用的服务器举例介绍如何修改字符集。

注：FineBI自带安装包安装的不存在修改字符集的问题。

2、Tomcat中修改字符集

FineBI部署到Tomcat服务器中时，需要在Tomcat的安装路径../conf下找到server.xml文件，修改配置tomcat端口的标签”connector”，为其添加URIEncoding属性：URIEncoding="utf-8" 。代码如下：

<Connector port="8090" protocol="HTTP/1.1"
   maxThreads="150" connectionTimeout="20000"
   redirectPort="8443" URIEncoding="utf-8" />

3、WebLogic中修改字符集

FineBI部署到Weblogic服务器中时，需要在Weblogic安装目录../domains/自己的工程名/下找到startWebLogic.sh文件，在其中添加-Dfile.encoding=utf-8即可。

4、WebSphere中修改字符集

FineBI部署到Websphere服务器中时，需要在Websphere安装目录下找到配置文件server.xml文件，修改该文件。

genericJvmArguments="-Dfile.encoding=utf-8 -Ddefault.client.encoding=utf-8"

注：以上修改字符集的地方，均可在修改内存的地方进行配置。参考部署初始化修改内存。


单点登录- FineReport帮助文档|报表开发|报表使用|学习教程

单点登录

1、描述

单点登录是指在多系统的时候，用户只需要登录一次即可完成所有系统的登录。

在用户自己的登陆页面使用FineBI提供了系统用户认证地址接口进行用户认证，包含多种单点登录方式，下面详细介绍。

注：在文档中提及的FineReport目录及文件找到FineBI对应的即可，对应FineBI的默认端口为37799。

索引：

平台系统单点登录接口

自定义登录界面

ajax跨域异步单点登录

iframe跨域单点登录

决策系统action提交登录

单点登录时可以使用加密后的密码

Java客户端程序集成FineBI单点登录

C/S架构单点登录


FineBI工程迁移- FineReport帮助文档|报表开发|报表使用|学习教程

FineBI工程迁移

1、描述

客户在实际使用FineBI过程中，往往是先在测试服务器上部署工程，等工程稳定后再将其迁移到正式服务器上。那么测试工程应该怎么迁移到正式服务器上呢？下面将会详细介绍操作步骤。

2、操作

在迁移工程之前我们首先要确保两个服务器部署的FineBI版本是一致的，可去管理系统>注册信息下查看，如下图：

重新安装新版本。

2.1 全局迁移

1）将测试系统目录FineBI/webapps下的webroot文件夹拷贝至正式系统中替换，替换前先关闭FineBI，注意备份原文件。

2）重新启动正式系统的服务器，启动完成在正式系统即可正常使用。

2.2 增量迁移

若在测试系统中只是做了一些新的模板想要放到正式系统上，此时可以使用FineBI的仪表板迁移功能。但在迁移之前需要确保两个系统的版本相同，即都为FineBI5.0版本，若不是可参考FineBI升级指南进行升级。同时要在正式系统的数据准备处加上测试系统模板内用到数据连接及对应数据表，需要确保模板用到的表名及字段原始名在两个系统中完全相同。

2.3 部分文件迁移

若只想要保留原系统的部分配置/数据信息的时候，可以根据FineBI工程目录结构查看FineBI的文件介绍，将想要保留的信息拷贝至新系统对应文件夹，同样在拷贝的时候注意备份。

例如：想要在新系统保留原系统的内置数据库配置等信息，就可以将原系统的FineBI/webapps/webroot/WEB-INF目录下的embed文件夹拷贝至新系统中替换，替换前注意备份。

注：FineBI4.1至5.0版本升级指南待后续更新。


FineReport集成到FineBI- FineReport帮助文档|报表开发|报表使用|学习教程

FineReport集成到FineBI

1、描述

在实际使用过程中存在需要将FineReport工程集成到FineBI数据决策系统上使用的情况，该如何操作呢？下面我们将分别介绍FR工程为空（即没有模板）和不为空情况下的集成步骤。

2、FR不为空，BI不为空

2.1 确定FineReport版本

首先查看FineReport的版本（可以通过管理系统>注册管理查看FR的版本，如下图）。FineReport若为8.0版本，需要与FineBI4.0.2版本工程匹配；若FineReport为9.0版本，需要与FineBI4.1版本工程匹配；若FineReport为10.0版本，需要与FineBI5.0版本工程匹配。且不仅需要大版本匹配，小版本jar日期也需要一致，否则可能存在问题。若版本不匹配需要升级，可以参考FineReport升级指南。

2.2 确定FineBI版本

查看FineBI的版本，检查方法与FineReport相同，都是在注册信息中查看版本，如果版本不一致需要升级的，升级方法见FineBI升级指南。或者使用新安装的FineBI5.0/4.1/4.0.2版本。

注：FineBI4.1暂时不能升级至5.0，待后续更新，目前仅能新安装5.0版本。

2.3 文件拷贝

1）确保FineBI和FineReport的jar包同步之后，将FineReport安装目录..\WebReport\WEB-INF\lib下的所有jar包拷贝至FineBI工程目录的..\WebReport\WEB-INF\lib文件夹中（若有相同的jar包，保留原先FineBI里的不替换），如下图中所示为拷贝后的FineBI lib文件夹：

注：若原FineReport的lib下存在驱动，集成的时候需要判断集成后使用的数据连接需要哪种驱动，从而保留对应版本，如上图中的mysql、ojdbc和sqljdbc驱动，不需要的驱动版本需要删除。

2）将FineReport安装目录..\WebReport\WEB-INF\plugins下的所有文件拷贝至FineBI目录..\WebReport\WEB-INF\plugins下，若有相同的文件，保留BI的不替换。

3）embed文件夹里面存储了数据决策系统中除平台属性配置以外的所有信息，包括目录树设置、模板定时任务信息等，若要在集成后的系统中保留原先FineReport中的配置信息，那需要将FineReport安装目录..\WebReport\WEB-INF下的embed文件夹拷贝至FineBI目录..\WebReport\WEB-INF内替换BI原先的文件夹。若想保留FineBI的设置信息，则这一步可不操作，即不替换embed文件夹。

注：若FineReport中的finedb做过迁移操作且想保留，则可将迁移的路径直接指向FineBI，将finedb数据迁移过来。若FineBI中的finedb做过迁移操作且想保留，则不更改即可。

4）logs文件夹是FineBI日志监控开启之后保存日志的内置数据库。因此用户若想保留FineReport系统中的日志数据，则需要将FineReport安装目录..\WebReport\WEB-INF下的log文件夹拷贝至FineBI目录..\WebReport\WEB-INF内替换BI原先的文件夹。若想保留FineBI的日志信息，则这一步可不操作，即不替换logs文件夹。

5）resources文件夹保存了报表信息、配置信息等，若想要在集成后保留原先FineReport中的此类数据，可参考 FineBI工程目录结构查看配置文件详细介绍，将想要保存的配置文件从FineReport安装目录..\WebReport\WEB-INF\resources中拷贝至FineBI目录..\WebReport\WEB-INF\resources内替换即可。

需要根据客户的需求看保存FineReport还是FineBI的embed、logs、resources文件夹。文件夹详细介绍请查看 FineBI工程目录结构 。

2.4 效果展示

将jar包拷贝覆盖后，重新启动FineBI，可以看到，BI的管理系统中会增加FineReport管理系统内已安装的节点。比如，在FineReport中安装了HTML5报表节点，那集成到FineBI中以后，管理系统下就会新增HTML5报表节点。

注：若在FineReport管理系统下没有单独安装自定义的节点，则在集成后，FineBI的管理系统下没有任何变化。

2.5 显示报表

因为FineReport不为空，那原先在FR中已制作的报表如何在集成到FineBI中显示呢？下面给出详细说明。

1、首先需要在BI中添加FineReport已制作报表使用到的数据连接，且数据连接名称要相同，可参考配置数据连接。

2、从FineReport的模板路径..\WebReport\WEB-INF\reportlets中将需要显示的报表拷贝至FineBI工程目录..\WebReport\WEB-INF\reportlets中。如下图，拷贝FineReport的报表GettingStarted.cpt至FineBI中：

3、登陆FineBI数据决策系统，在管理系统>目录管理中选择添加模板，能看到之前拷贝过去的报表在路径下可以选择，如下图：

下一步设置模板显示的名称、描述等，点击确定完成设置。

确定后刷新页面，即可在目录节点看到添加的FineReport报表。

注：在集成时，FineReport与FineBI的license需统一，统一使用FineBI的license。

3、FR为空，BI不为空

若我们新安装了FineReport且没有在上面做任何操作，也即FR工程为空没有模板时，在集成的时候比较简单，只需要操作第二章节的2.1至2.4小节，且在2.3小节中只需要操作1、2步骤，即不用拷贝替换embed、logs文件夹，操作完成后即可像在FR内一样使用数据决策系统。

4、FR不为空，BI为空

在集成过程中若FineBI为空，是新安装的版本没有做任何操作，可完全按照第二章节操作。其中2.3章节拷贝FR文件夹lib、plugins、embed、logs直接到BI中替换。

5、FR为空，BI为空

当FR和BI都为新安装且没有做任何操作时，在集成时我们仅需操作第二章节的2.1至2.3小节，且在2.3小节中只需操作第一步骤，即拷贝lib下的jar包即可。


Web页面集成- FineReport帮助文档|报表开发|报表使用|学习教程

Web页面集成

1、描述

FineBI通过各种样式如表格、图表等来呈现数据，进行统计分析。这样的数据表格或图表，用户在开发系统的时候也可以自己编程来实现，但是工作量大，维护难。

用户往往选用现成的软件开发，最后将制作好的FineBI模板嵌入到自己的系统中，以节省项目开发周期。

现在用户开发的系统基本上趋于BS架构的浏览器/服务器模式，因此需要将制作好的模板嵌入到系统的某一个页面中，做为页面的一部分。

本章节我们将详细介绍Web页面集成方法。

2、索引

Web页面嵌入式集成

Web页面简单集成例子

Web页面集成DEMO


Web页面嵌入式集成- FineReport帮助文档|报表开发|报表使用|学习教程

Web页面嵌入式集成

1、描述

FineBI是基于B/S架构的浏览器/服务器模式，现在用户开发的系统基本上趋向于B/S架构的浏览器/服务器模式，因此有些页面完全可以直接采用web页面嵌入式集成的简易方式完成集成。通过集成，用户从自己的系统通过链接使用浏览器访问FineBI的服务器，从而在自己系统内调用BI的web页面，来实际嵌入式集成。这种集成通常会有两种方式：一种是直接使用URL链接，另一种方式是通过js的调用json来获得分析模板。下面先提供各部分的URL链接接口、json格式的API。

因为FineBI中URL上面传的是json对像，若有些服务器不支持json的url，就需要把json类型的url参数值先进行编码encodeURIComponent()。

例如：dir={"name":"新建仪表板12","catalog":[]} 需要

encodeURIComponent(JSON.stringify({"name":"新建仪表板12","catalog":[]}))

变成

dir=%7B%22name%22%3A%22%E6%96%B0%E5%BB%BA%E4%BB%AA%E8%A1%A8%E6%9D%BF12%22%2C%22catalog%22%3A%5B%5D%7D

注：由于平台安全限制，FineBI在集成时需要将管理系统>安全管理>安全防护中的Security Headers关闭才可跨域。

2、API

2.1 登录API

作用：使用该接口可以登录BI系统

URL：/login/cross/domain?fine_username=name&fine_password=password&validity=-1&callback=myfunction

参数说明：

参数 | 说明 | 示例
fine_username | 登录用户名 | fine_username=admin
fine_password | 登录密码 | fine_password=123456

请求方式：GET

请求示例：localhost:37799/webroot/decision/login/cross/domain?fine_username=admin&fine_password=123456&validity=-1&callback=myfunction

2.2 模板管理节点API（JSON）

作用：使用该接口可以获取模板管理节点下所有模板相关信息

URL：/v5/api/dashboard/search?page=1&count=30

请求方式：GET

请求示例：localhost:37799/webroot/decision/v5/api/dashboard/search?page=1&count=30

2.3 模板管理节点API（界面）

作用：使用该接口可以获取模板管理节点下所有模板相关信息的可视化界面

URL：/dashboard/management

请求方式：GET

请求示例：localhost:37799/webroot/decision/dashboard/management

返回示例：

2.4 创建仪表板API

作用：使用该接口可以新建一个仪表板

URL：/v5/api/platform/dashboard/reports?dir=xxx

参数说明：

参数 | 说明 | 示例
dir | 创建到的目录结构 | dir={"name":"新建仪表板12","catalog":["新建文件夹"]}

请求示例：localhost:37799/webroot/decision/v5/api/platform/dashboard/reports?dir={"name":"新建仪表板12","catalog":["新建文件夹"]}

返回数据示例：

{ "code": "200", "data": { "applyTime": 0, "createBy": "b5f0c2ee-640f-4039-a4d4-918b55354898", "folder": false, "hangout": "NORMAL", "id": "0ba9d9496aee4bba95fcf60d78473115", "initTime": 1539157863240, "lastUpdateTime": 1539157863241, "mountedDirIds": null, "name": "新建仪表板12", "pId": "d5a78c3fc1f643059f02ff43fbdd44a9", "publicLink": { "reportId": "0ba9d9496aee4bba95fcf60d78473115", "shared": false, "uri": null, "userId": null } }, "detailErrorMsg": null, "errorCode": null, "errorMsg": null, "message": "success", "success": true }

2.5 分享仪表板API

作用：使用该接口可以分享模板给其他用户

URL：/v5/api/dashboard/share/user/result?entityId=xxx&userId=xxx

参数说明：

参数 | 说明 | 示例
entityId | xx模板对应的reportId，传多个的话，用逗号分隔 | entityId=14523
userId | 想要分享给其他用户的用户ID，传多个的话，用逗号分隔 | userId=b5f0c2ee

请求方式：GET

请求示例：localhost:37799/webroot/decision/v5/api/dashboard/share/user/result?entityId=14523&userId=b5f0c2ee

注意：只能分享给某个用户，不能分享给部门或者角色。

其中entityId可以通过模板编辑页面获取，如下图：

2.6 当前目录下模板及文件夹列表API（Json）

作用：我的（当前登录者）仪表板下对应目录的详细数据信息（包括文件夹和模板）

URL：/v5/api/platform/dashboard/list?dir=xxx

参数说明：

参数 | 说明 | 示例
dir | 创建到的目录结构 | dir={"catalog":["新建文件夹"]}

请求示例：localhost:37799/webroot/decision/v5/api/platform/dashboard/list?dir={"catalog":["新建文件夹"]}

返回数据示例：

{ "code": "200", "data": [ { "applyTime": 0, "createBy": "b5f0c2ee-640f-4039-a4d4-918b55354898", "folder": false, "hangout": "NORMAL", "id": "0ba9d9496aee4bba95fcf60d78473115", "initTime": 1539157863240, "lastUpdateTime": 1539157863241, "mountedDirIds": [], "name": "新建仪表板12", "pId": "d5a78c3fc1f643059f02ff43fbdd44a9", "publicLink": { "reportId": "0ba9d9496aee4bba95fcf60d78473115", "shared": false, "uri": null, "userId": null } }, { "applyTime": 0, "createBy": "b5f0c2ee-640f-4039-a4d4-918b55354898", "folder": false, "hangout": "NORMAL", "id": "7e6382e9fe5448b38bb0bc3f50913b5d", "initTime": 1539157797060, "lastUpdateTime": 1539157797061, "mountedDirIds": [], "name": "新建仪表板", "pId": "d5a78c3fc1f643059f02ff43fbdd44a9", "publicLink": { "reportId": "7e6382e9fe5448b38bb0bc3f50913b5d", "shared": false, "uri": null, "userId": null } } ], "detailErrorMsg": null, "errorCode": null, "errorMsg": null, "message": "success", "success": true }

2.7 当前目录下模板及文件夹列表API（界面）

作用：我的（当前登录者）仪表板下对应目录的详细数据信息（包括文件夹和模板）

URL：/dashboard

请求方式：GET

请求示例：localhost:37799/webroot/decision/dashboard

返回示例：

2.8 当前用户信息API

作用：使用该接口可以获取当前用户的所有详细信息。目前包括departs、roles、users、reports

角色：所有用户均可以使用

URL：/v5/api/dashboard/user/info

请求方式：GET

请求示例：localhost:37799/webroot/decision/v5/api/dashboard/user/info

返回数据示例：

{ "data": { "userInfo": { "displayName": "1(1)", "postNames": null, "departmentNames": null, "customRoleNames": ["superusers"], "departmentPosts": null }, "dashboards": [{ "name": "新建仪表板", "folder": false, "initTime": 1537768614423, "lastUpdateTime": 1538032909774, "id": "b63ae18862c0424d983865cbaa0dc7c4", "pId": "53968b8b-14f4-4ec1-b9e0-347b1105af2d", "createBy": "53968b8b-14f4-4ec1-b9e0-347b1105af2d", "hangout": "NORMAL", "publicLink": { "shared": false, "uri": null, "reportId": "b63ae18862c0424d983865cbaa0dc7c4", "userId": null }, "mountedDirIds": [], "applyTime": 0 }, { "name": "新建仪表板1", "folder": false, "initTime": 1537768667041, "lastUpdateTime": 1538032909810, "id": "af0835a860c1460da5d78f5a871ccc05", "pId": "53968b8b-14f4-4ec1-b9e0-347b1105af2d", "createBy": "53968b8b-14f4-4ec1-b9e0-347b1105af2d", "hangout": "NORMAL", "publicLink": { "shared": false, "uri": null, "reportId": "af0835a860c1460da5d78f5a871ccc05", "userId": null }, "mountedDirIds": [], "applyTime": 0 }] }, }

2.9 获取模板相关信息API

作用：使用该接口可以获取模板相关信息。输入：模板ID和创建者ID；返回：模板信息

URL：/v5/api/platform/dashboard/reports/info?info=xxx

参数说明：

参数 | 说明 | 示例
info | 需要查看的模板目录 | info={"index":[ { "id":"7e6382e9fe5448b38bb0bc3f50913b5d" }] }

请求示例：localhost:37799/webroot/decision/v5/api/platform/dashboard/reports/info?info={"index":[ { "id":"7e6382e9fe5448b38bb0bc3f50913b5d" }] }

返回数据示例：

{ "code": "200", "data": { "index": [ { "createBy": "1", "folder": false, "id": null, "initTime": 1539157797060, "lastUpdateTime": 1539157797061, "name": "新建仪表板", "pId": "d5a78c3fc1f643059f02ff43fbdd44a9" } ] }, "detailErrorMsg": null, "errorCode": null, "errorMsg": null, "message": "success", "success": true }

2.10 分享给我的模板信息API

作用：使用该接口可获取分享给我（当前登录用户）的所有模板信息

URL：/v5/api/dashboard/share

请求示例：localhost:37799/webroot/decision/v5/api/dashboard/share

返回数据示例：

{ "code": "200", "data": [ { "buildUrl": true, "createBy": "b5f0c2ee-640f-4039-a4d4-918b55354898", "description": null, "id": "e5bc1ae63f944050b43d031c21d01847", "originType": "isShared", "pId": "-2", "text": "用指标解析银行数据" } ], "detailErrorMsg": null, "errorCode": null, "errorMsg": null, "message": "success", "success": true }

2.11 模板分享到的用户API

作用：使用该接口可以获取xx模板分享给了哪些用户

URL：/v5/api/dashboard/share/user?entityId=xxx

参数说明：
参数 | 说明 | 示例
entityId | xx模板对应的reportId | entityId=14523

请求示例：localhost:37799/webroot/decision/v5/api/dashboard/share/user?entityId=14523

2.12 触发全局更新API

作用：使用该接口触发全局更新，根据当前业务包的状态选择是全局更新/Check更新/配置更新

URL：/v5/api/conf/update/generate

请求示例：localhost:37799/webroot/decision/v5/api/conf/update/generate

返回数据：

{ "success": true }

2.13 触发单表更新API

作用：根据业务包名对业务包中所有的表进行更新，或者根据表转义名进行单表更新。 无论是业务包还是单表的更新，都进行的是业务包表或单表的全量的更新。 在不加表的转义名时候，进行的就是对这个业务包的更新，加了之后，进行的是对这个表的更新

URL：/v5/api/conf/update/pack/table?info=xx

参数说明：

参数 | 说明 | 示例
info | 需要更新的表信息 | info={"packageName":"业务包","tableName":"表转义名"}

请求示例：localhost:37799/webroot/decision/v5/api/conf/update/pack/table?info={"packageName":"业务包","tableName":"产品销售表"}

返回数据：

{ "success": true }

2.14 获取所有业务包信息API

作用：在做集成的时候，不能自己一个个手动输入业务包名字或者表的名字来做相应的单更新，就需要有个接口来获取到这些信息

URL：/v5/api/conf/packs/{packageId}

请求示例：localhost:37799/webroot/decision/v5/api/conf/packs/{packageId}

返回数据示例：

{ "code": "200", "data": { "editable": true, "errorTable": [], "missTable": [], "name": "销售DEMO", "tables": [ { "connectionName": "BI Demo", "createBy": "1", "editable": true, "fields": [ { "enable": true, "engineType": "Direct", "fieldGroupType": 0, "id": "DEMO[5f]PRODUCT_[4ea7][54c1]ID", "name": "产品ID", "primaryKey": false, "size": 32, "transferName": "产品ID", "type": 32, "usable": true }, { "enable": true, "engineType": "Direct", "fieldGroupType": 0, "id": "DEMO[5f]PRODUCT_[4ea7][54c1][540d][79f0]", "name": "产品名称", "primaryKey": false, "size": 32, "transferName": "产品名称", "type": 16, "usable": true } ], "initTime": 1539161534282, "memorize": true, "name": "DEMO_PRODUCT", "operators": null, "pack": "18d26ef06d1f4e91adaa12c80feb2daa", "realTimeData": false, "selected": 0, "tableName": "DEMO_PRODUCT", "transferName": "产品名称维度", "type": 1, "usedSpace": 0.0007028579711914062 }, ] }, "detailErrorMsg": null, "errorCode": null, "errorMsg": null, "message": "success", "success": true }

返回的数据包括两部分：

1. 获取所有的分组的名字，以及对应业务包的名字

a. 返回当前用户有权限的所有的分组的名字，以及对应业务包的名字;

2. 获取某个业务包之下所有表的名字（转义之后的名字）以及表id

  1. 输入参数：业务包的名字;
  2. 返回这个业务包之下所有表的名字（转义之后的名字）以及表id

2.15 数据准备界面API

作用：获取数据准备界面

URL：/v5/api/conf/page

请求示例：localhost:37799/webroot/decision/v5/api/conf/page

返回示例：

注：FineBI在嵌入式集成时一般分为两步：获取token和调用其他相关API，具体可参考Web页面简单集成例子；

Web页面集成的相关DEMO及返回参数可参考Web页面集成DEMO；


Web页面简单集成例子- FineReport帮助文档|报表开发|报表使用|学习教程

Web页面简单集成例子

1、描述

FineBI是基于B/S架构的浏览器/服务器模式，现在用户开发的系统基本上趋向于B/S架构的浏览器/服务器模式，因此有些页面完全可以直接采用web页面嵌入式集成的简易方式完成集成。通过集成，用户从自己的系统通过链接使用浏览器访问FineBI的服务器，从而在自己系统内调用BI的web页面，来实际嵌入式集成。

2、实现思路

FineBI在嵌入式集成时一般分为两步：获取token和调用其他相关API。

2.1 获取token

API在调用需要先获取token信息。FineBI通过jsonp获取跨域数据，可以通过登录api先获取token。

登录URL为：/login/cross/domain?fine_username=name&fine_password=password&validity=-1&callback=myfunction

method为：GET

2.2 调用其他相关API

获取到token后可以调用其他api。只需要将token放入请求头中：

注：因为bi中url上面传的是json对像，有些服务器不支持json 的url，所以需要把json类型的url参数值先进行编码encodeURIComponent()。如：

3、操作步骤

3.1 html文件编写

以获取业务包内表信息的API为例，根据上述的实现思路编写HTML文件，内容如下：

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>业务包内所有表信息</title>
</head>
<body>
<div id="app"></div>
</body>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>

<script>

    var url = "http://demo.finebi.com/webroot/decision";
    var userName = "demo", password = "demo";

    function getPackTables(data) {
        var header = {};
        header.Authorization = "Bearer " + data.accessToken; // 请求头中带上token
        $.ajax({
            type: "GET",
            url: url + "/v5/api/conf/packs/dac1c0f5b11f46fcb9eb03280a4c26c5",
            headers: header,
            success: function (result) {

                var htm = "", data = result.data;
                htm += "<div>当前业务包名：" + data.name + "</div>";
                htm += "<div>该业务包下有如下表:</div>";
                htm += "<ul>";
                data.tables.forEach(function (table) {
                    htm += "<li>原始名：" + table.name + "， 转义名为：" +table.transferName + "</li>";
                });
                htm += "</ul>";
                var app = document.getElementById("app");
                app.innerHTML = htm;

            }
        });
    }

    //先通过登录接口获取到token信息
    $.ajax({
        type: "GET",
        url: url + "/login/cross/domain?fine_username=" + userName + "&fine_password=" + password + "&validity=-1",
        dataType: "jsonp",
        success: function (data) {
            getPackTables(data);
        }
    });
</script>

</html>

注：以上文件中写的URL地址为FineBI的demo地址demo.finebi.com，可根据需要修改为自身工程的地址及端口。

3.2 启动BI服务器

启动上述地址中书写的对应FineBI服务器。

3.3 效果查看

输入文件的访问地址，比如http://demo.finebi.com/webroot/getPackTables.html，可以看到该html文件获取的业务包内表信息数据，如下图：

4、注意事项

由于平台安全限制，FineBI在集成时需要将管理系统>安全管理>安全防护中的Security Headers关闭才可跨域，如下图：


Web页面集成DEMO- FineReport帮助文档|报表开发|报表使用|学习教程

Web页面集成DEMO

1、描述

前面我们已经介绍了Web页面嵌入式集成的API接口及简单的集成例子，本章我们给出一些集成的DEMO及相关返回信息的说明。

2、相关API的DEMO

注：以下DEMO均以FineBI的DEMO地址为例，URL可根据自身需要修改为指定服务器工程地址。

2.1 获取业务包内表信息

HTML文件内容：

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>业务包内所有表信息</title>
</head>
<body>
<div id="app"></div>
</body>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>

<script>

    var url = "http://demo.finebi.com/webroot/decision";
    var userName = "demo", password = "demo";

    function getPackTables(data) {
        var header = {};
        header.Authorization = "Bearer " + data.accessToken; // 请求头中带上token
        $.ajax({
            type: "GET",
            url: url + "/v5/api/conf/packs/dac1c0f5b11f46fcb9eb03280a4c26c5",
            headers: header,
            success: function (result) {

                var htm = "", data = result.data;
                htm += "<div>当前业务包名：" + data.name + "</div>";
                htm += "<div>该业务包下有如下表:</div>";
                htm += "<ul>";
                data.tables.forEach(function (table) {
                    htm += "<li>原始名：" + table.name + "， 转义名为：" +table.transferName + "</li>";
                });
                htm += "</ul>";
                var app = document.getElementById("app");
                app.innerHTML = htm;

            }
        });
    }

    //先通过登录接口获取到token信息
    $.ajax({
        type: "GET",
        url: url + "/login/cross/domain?fine_username=" + userName + "&fine_password=" + password + "&validity=-1",
        dataType: "jsonp",
        success: function (data) {
            getPackTables(data);
        }
    });
</script>

</html>

HTML文件下载地址：

getPackTables.html

结果预览：

2.2 获取业务包分组信息

HTML文件内容：

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取业务包分组信息</title>
</head>
<body>
<div id="app"></div>
</body>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>

<script>
    var url = "http://demo.finebi.com/webroot/decision";
    var userName = "demo", password = "demo";

    function getPackGroups(data) {
        var header = {};
        header.Authorization = "Bearer " + data.accessToken; // 请求头中带上token
        $.ajax({
            type: "GET",
            url: url + "/v5/api/conf/groups",
            headers: header,
            success: function (result) {

                var htm = "", data = result.data;
                data.forEach(function (group, index) {
                    if(group.id !== "__no_group__" ){
                        htm += "<div>当前分组名：" + group.name + "</div>";
                    }
                    htm += "<ul>";
                    group.packs.forEach(function (pack, i) {
                        htm += "<li>" + pack.name + "</li>";
                    });
                    htm += "</ul>";
                });

                var app = document.getElementById("app");
                app.innerHTML = htm;

            }
        });
    }

    //先通过登录接口获取到token信息
    $.ajax({
        type: "GET",
        url: url + "/login/cross/domain?fine_username=" + userName + "&fine_password=" + password + "&validity=-1",
        dataType: "jsonp",
        success: function (data) {
            getPackGroups(data);
        }
    });
</script>

</html>

HTML文件下载地址：

getPackGroups.html

结果预览：

2.3 获取指定目录下模板与文件夹列表

HTML文件内容：

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>获取当前目录下模板与文件夹列表</title>
</head>
<body>
<div id="app">
    <span>当前节点为： /仪表板</span><br>
    <span>该节点下有如下文件（展示前20条数据）：</span><br>
    <ul id="list"></ul>
</div>
</body>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>

<script>
    var url = "http://demo.finebi.com/webroot/decision";
    var userName = "demo", password = "demo";

    function getCurFolderFile(data) {
        var header = {};
        header.Authorization = "Bearer " + data.accessToken; // 请求头中带上token
        var info = {
            catalog: [], // 当前目录路径。如是根节点则catalog是[],如果是'/根目录/新建文件夹/test'，则catalog为['新建文件夹', 'test']
            name: "" // name不重要
        };
        $.ajax({
            type: "GET",
            url: url + "/v5/api/platform/dashboard/list?dir=" + encodeURIComponent(JSON.stringify(info)),
            headers: header,
            success: function (result) {

                var htm = "", data = result.data;

                data.splice(0, 20).forEach(function (file) {
                    var isFolder = file.folder ? '是' : '否';
                    htm += "<li>文件名：" + file.name + "，是否为文件夹：" + isFolder + "</li>";
                });
                var app = document.getElementById("list");
                app.innerHTML = htm;

            }
        });
    }

    //先通过登录接口获取到token信息
    $.ajax({
        type: "GET",
        url: url + "/login/cross/domain?fine_username=" + userName + "&fine_password=" + password + "&validity=-1",
        dataType: "jsonp",
        success: function (data) {
            getCurFolderFile(data);
        }
    });
</script>

</html>

HTML文件下载地址：

getCurFolderFile.html

结果预览：

3、返回参数说明

3.1 业务包表信息

返回值示例：

KEY 含义 备注 errorTable 该table字段丢失 在BI中标红显示 missTable 原始表被删除 在BI中灰化显示 name 当前业务包名称 tables 正常table

注：errortable和misstable 不会同时存在tables中。

table属性：

KEY | 含义 | 备注
fields | 当前表字段信息 |
name | 表的原始名 |
operators | 表的相关操作 | 基础表（除自助数据集以外的表）的行列转换和自循环列操作，自助数据集的相关操作
pack | 业务包id |
realTimeData | 是否是实时数据 |
sourcename | 可以忽略 |
transfername | 转义名 |
type | 表类型 | 1： 基础表（数据库中直接读取的表）； 2： SQL表； 3： EXCEL表； 4： 分析表；

3.2 业务包分组信息

返回值示例：

KEY 含义 备注 myAnalysisTables 我的自助数据集 每个分组都有这个属性，但是只有默认分组（__no_group__）里的myAnalysisTables属性才有意义。里面的值只是为了计算我的自助数据集里面表的个数； name 分组名称 __no_group__ 为默认分组 packs 业务包 除我的自助数据集以外的业务包

3.3 仪表板相关

返回值示例：

KEY 含义 取值 备注 folder 是否是文件夹，如为true，则表示是文件夹 true；
false；

hangout 仪表板挂出状态 NORMAL：未申请挂出

APPLYING: 申请挂出中

HANGOUT： 已挂出

只对dashboard有意义 pId 当前所在文件夹ID 如果位于根节点，则pId为当前登录的用户id


企业级集成方案- FineReport帮助文档|报表开发|报表使用|学习教程

企业级集成方案

1、描述

注：在文档中提及的FineReport目录及文件找到FineBI对应的即可。

索引：

与.NET集成方案

与JBPM工作流集成方案

CAS单点登录


CAS单点登录- FineReport帮助文档|报表开发|报表使用|学习教程

CAS单点登录

1、描述

注：在文档中提及的FineReport目录及文件找到FineBI对应的即可。

索引：

配置SSL

安装配置CAS

实现基于数据库的身份验证

配置FineBI作为CAS客户端

CAS登出方案

CAS报错解决方案


Web集群- FineReport帮助文档|报表开发|报表使用|学习教程

Web集群

1、索引

服务器集群原理

Tomcat集群部署

Weblogic集群部署

Websphere集群部署


Web服务器集群原理- FineReport帮助文档|报表开发|报表使用|学习教程

Web服务器集群原理

1、前述

Windows集群同J2EE的集群不同，因为它是操作系统自带的集群支持，它没有J2EE集群对java的web应用的良好支持，例如session粘滞。所以对Windows集群，需要特别配置一下，以此来支持集群的功能。

2、原理

均衡负载会根据情况，将外部请求分配给集群内的服务器处理。当一个会话（Session）在A服务器上产生并开始，产生了一部分会话信息将保存到A服务器的内存中。假如这次会话中的一次请求被均衡负载调度器分配到了B服务器去处理，那么问题就产生了，B服务器中的内存中并没有这个会话的信息，那么就会报查询超时(session time out)。而我们通过配置文件的配置，会在集群的服务器间建立联系。当B服务器收到请求，发现这个请求的会话不是自己产生的，那么它会根据请求中的信息，判断出这个会话是由哪台服务器产生。接着它会将这个请求通过内网转发给相应的那台服务器去处理。这样相当于就实现了J2EE集群的会话粘滞的功能。简单的说，会话粘滞就是保持一个会话中的多次交互都由一台集群中的服务器处理。这样就不会再产生上述的问题。

3、前提

集群的服务器间，需要有内网间通信的支持。不同服务器上的FineBI应用必须是一致的。

4、支持

支持: 多个tomcat/weblogic部署在多个机器上，部署多个webroot，或者局域网内共享的一个webroot，判断依据: ip

暂不支持: 多个tomcat/weblogic，同一台机器，共享一个war/webroot，无法寻找互斥的地方


Tomcat集群部署- FineReport帮助文档|报表开发|报表使用|学习教程

Tomcat集群部署

1、部署FineBI

参考Tomcat服务器部署在Tomcat中部署FineBI应用。

2、状态和文件服务器准备（都仅需一个）

2.1 搭建redis服务器

1. 使用如下命令在服务器上安装依赖包和常用包。

yum install gcc gcc-c++ make zlib-devel readline readline-devel tkutil tk tkutil-devel tk-devel openssl openssl-devel wget vim ntp -y

2. 使用如下命令下载redis

wget http://download.redis.io/releases/redis-3.2.11.tar.gz

3. 解压redis

tar -zxvf redis-3.2.11.tar.gz

4. 重命名redis

mv redis-3.2.11 /opt/redis

5. 编译安装redis

cd /opt/redis make & make install

6. 进入目录启动

cd /opt/redis-3.2.11/src nohup ./redis-server & ./redis-cli CONFIG SET protected-mode no

启动完成后可以通过ps aux | grep redis查看reids 是否在运行。

2.2 搭建FTP或者SFTP服务器

1. 下载FTP的安装jar，在jar的同目录执行java -jar FineFTPServer.jar命令运行。

java -jar FineFTPServer.jar

2. 设置ftp根目录、端口、用户名密码，并点击启动。

注：目前不支持21端口。

注：要求账号有读写权限，路径可访问，并且保证网络可靠。

注：因为在FineBI中开启集群必须配置FTP服务器，若在此步骤不想安装FTP服务器，可在FineBI安装目录%FineBI%/webapps/webroot/WEB-INF/embed/finedb下找到db.script文件，为fine_conf_entity表并添加FineClusterConfig.params.cluster，值为true，用于手动配置集群开启。

3、数据库准备

新建一个mysql数据库，用来做数据迁移，此处不再详细介绍。

4、集群启动

1. 启动一台节点，进入平台（如localhost:37799/webroot/decision），如果数据库中没有数据，会要求配置管理员账户密码，然后配置数据库，此时填入第二章节准备好的数据库配置。

2. 进入管理系统>智能运维>集群设置，配置启动好的状态服务器和文件服务器信息，保证测试连接成功后，打开集群开关并重新启动此节点；

注：若配置状态服务器连接redis时出现“DENIED Redis is running in protected mode”，需要在redis.conf添加“protected-mode no”或者去“搭建redis服务器"步骤中执行./redis-cli CONFIG SET protected-mode no。

3. 把上述已启动节点安装目录%FineBI%/webapps/webroot/WEB-INF/config下的db.properties文件拷贝到各个节点的对应目录下，依次启动各个节点；

5、修改集群转发端口

集群转发中，默认转发到58312端口中，如果tomcat起的端口不是58312的话，需要去FineBI管理系统>集群配置页面修改每个节点的端口号。如下图：

6、安装配置nginx

6.1 安装nginx

1. 使用如下命令安装依赖软件：

yum -y install gcc gcc-c++ autoconf automake make yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

2. 下载nginx

wget http://nginx.org/download/nginx-1.13.7.tar.gz

3. 解压并创建安装目录

tar zxvf nginx-1.13.7.tar.gz mkdir -p /usr/local/nginx

4. 修改配置

cd nginx-1.13.7 ./configure --prefix=/usr/local/nginx

5. 安装nginx

make && make install

6. 进入nginx目录，启动nginx

cd /usr/local/nginx/sbin ./nginx

7. 防火墙开放80端口

iptables -I INPUT -p tcp --dport 80 -j ACCEPT /etc/init.d/iptables save /etc/init.d/iptables restart

6.2 配置nginx

在nginx的安装目录下找到nginx.conf，并参考如下代码配置：

#tomcat的各节点：
upstream lb {
            server 192.168.1.117:18080 max_fails=5 fail_timeout=200s;
            server 192.168.1.133:18080 max_fails=5 fail_timeout=200s;
    }
#websocket的各节点：
#这里加了ip_hash，就可以写多个节点
upstream lbs {
            server 192.168.1.117:38888 max_fails=5 fail_timeout=1000s;
            server 192.168.1.133:38888 max_fails=5 fail_timeout=1000s;
            ip_hash;
   }
#http端口的监听：
server {
        listen 80;
        server_name 192.168.1.133;
        location / {
             #如果最后访问nginx端口的fs时遇到报错“Nginx 502 Bad Gateway ”，可以在下面增大缓冲区设置：
           ###############添加这3行
               proxy_buffer_size 64k;
              proxy_buffers   32 32k;
              proxy_busy_buffers_size 128k;
           ###############添加这3行
             proxy_http_version 1.1;
             proxy_set_header Connection "";
             proxy_set_header Host $host:80;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_pass http://lb;
             proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
            }
        }
#websocket端口的监听（默认为38888）：
#这边要是配了非默认的38885，在数据库就需要手动增加一个字段，如下（2）
server {
        listen 38885;
        server_name 192.168.1.133;
        location / {
             proxy_pass http://lbs;
             proxy_connect_timeout 600;
             proxy_read_timeout 600;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "upgrade";
             }
        }

在FineBI的目录%FineBI%/webapps/webroot/WEB-INF/embed/finedb下找到db.script文件，为fine_conf_entity表中添加一行字段：WebSocketConfig.requestPort，如下：

注：如果启动时Tomcat服务器时发现websocket服务器没有正确启动，可能需要开放端口（Linux），使用如下命令开放对应websocket端口即可：

iptables -A INPUT -ptcp --dport 38888 -j ACCEPT

再次重启各节点，全部启动完成后，访问配置的nginx转发ip即可访问集群。（访问时是随机访问集群的某个节点）

至此，Tomcat的集群即搭建完毕。


Weblogic集群部署- FineReport帮助文档|报表开发|报表使用|学习教程

Weblogic集群部署

1、部署FineBI

参考Weblogic服务器部署 在Weblogic服务器中部署FineBI应用。

2、集群部署步骤

状态和服务器准备

数据库准备

集群启动

修改集群转发端口

安装配置nginx


Websphere集群部署- FineReport帮助文档|报表开发|报表使用|学习教程

Websphere集群部署

1、部署FineBI

参考 Websphere服务器部署 在Websphere服务器中部署FineBI应用。

2、集群部署步骤

状态和服务器准备

数据库准备

集群启动

修改集群转发端口

安装配置nginx


Spider分布式引擎介绍- FineReport帮助文档|报表开发|报表使用|学习教程

Spider分布式引擎介绍

1、描述

Spider分布式引擎介绍 在线视频学习 请查看【Spider数据引擎】

在计算模式中我们介绍过，FineBI的Spider引擎包含了三种数据计算模式：本地模式、分布式模式和直连模式，本地模式和分布式模式都是通过抽取数据到引擎来实现数据的保存，本地模式用于小数据量下的分析展示，对于大数据量，推荐使用分布式模式。

Spider分布式引擎利用HADOOP大数据处理思路，以最轻量级的架构实现大数据量高性能分析。此分布式方案集成了ALLUXIO 、SPARK、 HDFS、ZOOKEEPER等大数据组件，结合自研高性能算法，列式存储、并行内存计算、计算本地化加上高性能算法，解决大数据量分析问题与在FineBI中快速展示的问题。同时从架构上保证计算引擎系统全年可正常使用。

FineBI的web端服务器可以直接对接用户的数据库服务器取数，也可以将数据更新到Spider数据引擎中使用，业务部分的浏览依赖于客户端的浏览器。其中Web服务器与FineBI的spider计算引擎均可做横向扩展，如下图：

2、引擎定位

FineBI的Spider分布式引擎定位于更先进、高可用、高扩展、高性能的一个引擎。下面我们分别详细介绍一下。

（1）更先进：分布式架构本身的先进性，并结合hadoop、spark、alluxio等大数据组件，以及分布式并行计算、内存加速、列式存储等先进的大数据技术为企业提供强力数据引擎；

（2）高可用：Spider分布式引擎的架构设计，保证了数据引擎的高可用。先进的大数据组件与先进的架构整合保证了系统的高可用，系统中节点数在3台及以上，即可实现数据引擎全年7*24小时持续可用。数据存储与计算上，完善灾难备份机制可保证数据不丢失，集群节点中过半机器挂掉也不影响计算，实现引擎系统的持续可用；

（3）更高扩展：分布式在使用时，存在多节点，多节点可以根据数据与系统需要扩展更多节点。动态弹性扩展计算存储节点，用低廉的成本提供更强的计算性能，让企业未来不再担心数据量的爆发式增长；

（4）更高性能：多节点分布式计算，内存加速，列式存储，高性能算法保证强劲的计算性能，突破FineBI旧引擎亿级数据量的瓶颈；

（5）更灵活：实时数据与数据抽取可以灵活切换，用户可以灵活控制数据是否需要做抽取，解决了不同数据展示类型下相同数据还需要做两遍前端展示的麻烦，帮助项目前期测试节省更多时间。同时实时数据与大数据量历史数据可以在一个dashboard中展示，满足更多分析需求；

（6）更稳定：先进清晰的构架，本身就为系统的稳定性能提供了有力支撑；

3、服务器推荐

3.1 介绍

Spider引擎的计算依赖并行计算能力与内存加速，所以CPU核心越多，内存越大，性能就更好。内存所有机器加起来能装载所有数据最好，不用频繁与磁盘交换数据，达到最佳性能；硬盘没有特别要求，只要足够大，能装载5倍以上的原始数据(分布式数据冗余与备份)即可。

下面我们推荐的分布式引擎服务器配置以实现秒级响应为准，当需要分析的数据量比较大的情况下，理论上是需要抽取的最大单表数据量过亿（这边的数据量以最大单表的行来计算，这里指的是要抽取到分布式做分析的单表，并非数据库中的最大单表），或需要抽取的数据总量超过100G，就需要扩展数据存储的节点数，以便应对大数据量的分析计算。为保证数据引擎的高可用，推荐3台及3台以上的机器。由于Spider引擎（分布式）是数据计算密集型程序，因此需保证只运行这一个资源占用最多的程序。并且建议装在物理机上，不建议VM虚拟机。

系统环境要求必须是linux，要求必须是root用户。支持的详细版本可参考Spider分布式服务器配置（备注：docker下的暂不支持）。推荐使用centOS7。

3.2 服务器推荐

这里的服务器推荐不考虑FineBI的Web端。但是BI的web端服务器若与Spider分布式引擎的服务器共用的话，机器需要的资源为二者需要的资源之和，BI服务器推荐可参考硬件配置。每个表在引擎中数据占用空间大小 = 数据行数*列数* 8 * 4 * 2 （单位：字节），因此数据大小预估时候以格子数（数据行数*列数）最大的来预估。

1）分布式最低配置要求

应用场景：适用于测试阶段的最低要求，不符合要求系统无法正常运行。不能用作正式业务系统，抽取数据无法建立索引。

数据量 | 内存 | CPU | 机器数 | 硬盘
1亿~3亿 | 16G | 1~2亿可以8核，2~3亿最好16核。2.5GHz以上 | 3台 | 1T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可
3亿~5亿 | 16G | 16核，2.5GHz以上 | 3~5台 | 1T~2T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可
5亿~10亿 | 16G | 16核，2.5GHz以上 | 5~9台 | 1T~2T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可

2）分布式推荐运行配置要求

数据量 | 内存 | cpu（推荐至强E5系列，2.5GHz以上） | 硬盘 | 台数 | 网卡
1亿~3亿 | 64G（推荐128G） | 2*8核 | 1T~2T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可 | 3台 | 千兆以上网卡
3亿~5亿 | 64G（推荐128G） | 2*8核 | 2T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可 | 3~5台（推荐5台） | 千兆以上网卡
5亿~10亿 | 64G（推荐128G） | 2*8核 | 2T~3T/台，所有机器合计可用磁盘空间能装载5倍以上的原始数据即可 | 5~9台 | 千兆以上网卡
超大数据量 | 联系FineBI构架师根据场景推荐

CPU推荐Intel Xeon E5-2697 v2 *2。如果内存不足够容纳一份抽取过来的数据大小，则可以增加SSD，使得所有SSD的空间+所有内存空间可以满足数据总大小。

3.3 服务器推荐示例
1）机器情况已知，对应支撑数据量

某公司有32g内存、500g硬盘、8核心、最多4台。要求达到的计算速度在10s之内。机器之间为千兆网络。能支撑的数据量如下：

 | 最大单表行数*列数 | 数据总物理体量 | 备份系数 | 查询用户数（单web的情况）
2台 | 2亿*30列 | 100G | 2 | 200
3台 | 3亿*30列 | 150G | 2 | 200
4台 | 4亿*30列 | 200G | 2 | 200

某公司有64g内存500g硬盘，8核心，最多4台。达到的计算速度在10s之内。机器之间为千兆网络。能支撑的数据量如下：

 | 最大单表行数*列数 | 数据总物理体量 | 备份系数 | 查询用户数（单web的情况）
2台 | 3亿*30列 | 100G | 2 | 200
3台 | 5亿*30列 | 150G | 2 | 200
4台 | 7亿*30列 | 200G | 2 | 200

说明：数据总的物理体量，依赖于磁盘的大小。最大单表支撑与展示速度依赖于内存和CPU。

2）机器的详细配置示例

数据需求：最大单表10亿，日增30万，总量在6T左右

机器台数：5台，以下为每台机器的配置。

组件 | 型号要求 | 数量
独立阵列卡 | 支持raid1就行 | 不要也行，用于操作系统盘。系统不需要raid也很健壮。
内联网卡 | 千兆网卡及以上 | 1
CPU | Intel Xeon 主频2.6GHz以上 | 20core及以上
SSD | 256G~512G | 256G~512G
内存 | 128GB | 128GB
磁盘 | 10k rpm 600/900/1000GB SAS | 12+（总量保持每台12T左右即可）

Spider分布式引擎介绍 在线视频学习 请查看【Spider数据引擎】


Spider分布式引擎架构- FineReport帮助文档|报表开发|报表使用|学习教程

Spider分布式引擎架构

1、描述

在Spider分布式引擎介绍中我们已经简单介绍了分布式引擎，那么其内部各大数据组件之间的架构又是怎样的呢？本章我们来介绍一下。

Spider分布式引擎包含了HDFS、Alluxio、Spark、Zookeeper等模块，各模块之间的工作如下图所示，包含了持久化层、内存加速层、作业调度层和上层FineBI应用等。

2、持久化层（HDFS）

持久化层用于存储数据，相当于电脑的硬盘，常用的持久化层包括HDFS、Ceph、S3等，在Spider分布式结构中选用的持久化层为HDFS。HDFS为Hadoop分布式文件系统，是一个高度容错性的系统，且HDFS高可用的稳定性较好，并因为来自Hadoop所以生态上支持也较好。

虽然HDFS在在处理大数据量时有很高的可靠性，但它的缺陷也很明显，其设计是基于磁盘的，I/O性能难以满足流式计算所要求的延时，而频繁的网络数据交换进一步拖累了计算处理过程，因此我们引入Alluxio作为分布式存储系统的核心存储系统。

3、内存加速层（Alluxio）

内存加速层相当于电脑的内存，读取速度比持久化层要快，在Spider分布式结构中使用的是Alluxio。Alluxio是世界上第一个以内存为中心的虚拟分布式存储系统，并将多样化的上层计算框架和底层存储系统连接起来，统一数据的访问方式。Alluxio以内存为中心的存储特性使得上层应用的数据访问速度比现有常规方案块几个数量级。

我们在Spider分布式中利用了Alluxio的分层存储特性，综合利用内存、SSD和磁盘等多种存储资源，通过Alluxio提供的LRU、LFU等缓存策略可以保证热数据一直保留在内存中，冷数据则被持久化到level2甚至level3的存储设备上。下层其他的存储设备可以是SSD、普通HDD等，而HDFS就是最后一层长期的文件备份系统。

4、作业调度层（Spark）

计算和调度层使用的是Spark，Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎，Spark是一种与Hadoop相似的开源集群计算环境，但是两者之间还存在一些不同之处，这些有用的不同之处使Spark在某些工作负载方面表现得更加优越，换句话说，Spark 启用了内存分布数据集，除了能够提供交互式查询外，它还可以优化迭代工作负载。

在计算的时候，可以认为这里有个客户端（FineBI）向Spark发起请求，Spark根据请求拉起一个或几个会话，然后将计算结果返回给请求的客户端。

5、集群管理模块（Zookeeper）

Zookeeper在Spider分布式结构中的作用是框架整合与通信调度，可以理解为一个质量监督者，为各个组件在自己岗位上正常运行进行监督的角色。主要用于各组件的管控、主节点的选举、分布式节点间通信调度。


Spider分布式部署准备- FineReport帮助文档|报表开发|报表使用|学习教程

Spider分布式部署准备

1、描述

在前面我们介绍了Spider分布式引擎包含HDFS、Alluxio、Spark、Zookeeper等各个模块，那么在部署时就需要分别部署这些模块才能使用。而FineBI提供的分布式部署是改造了Ambari工具来进行安装部署的，部署过程分为：环境准备>ambari安装>界面组件安装。

环境准备：环境准备为准备部署各个模块的服务器、用户、服务器检查及配置相互之间的免密登录等，机器环境的检查是为了避免准备的环境不充分或不满足，导致部署或者正式使用过程中出现各种问题，包括执行检查脚本来对环境做一个检测。

Ambari安装：在集群环境的部署中，使用的是Apache Ambari来做集群环境的快速可视化安装部署，Apache Ambari是一种基于Web的工具，支持Apache Hadoop集群的供应、管理和监控。除了做可视化安装部署外，还将其作为集群环境的可视化管理界面的工具，因此在部署各模块前需要先安装Ambari模块。主要分为ambari-server和ambari-agent两个部分，在部署过程中指定一台机器为集群部署主节点（ambari-server），集群中的所有节点均为ambari-agent节点，如下图所示：

界面组件安装：利用Ambari的可视化管理界面工具在各节点分别部署HDFS、Alluxio、Spark、Zookeeper等模块；

下面我们来介绍一下环境的准备工作。示例使用的系统版本为CentOS7.3.1611，安装用户为root，包含三个服务器。
注意：Hostname的命名不能出现下划线（“_”），比如xx_xx的命名是不被允许的。
 | 服务器A | 服务器B | 服务器C
作用 | ambari-server、ambari-agent、应用服务器、分布式数据存储与计算节点 | ambari-agent、分布式数据存储与计算节点 | ambari-agent、分布式数据存储与计算节点
Hostname | FineBI1 | FineBI2 | FineBI3

2、环境准备

2.1 服务器版本

分布式部署要求必须是linux环境，其中支持的版本如下所示，推荐CentOS7、RedHat7。此处示例我们使用的服务器为CentOS7.3.1611。

型号 | 详细版本
Centos6 | 6.5,6.6,6.7,6.8,6.9
Centos7 | 7.0,7.1,7.2,7.3,7.4
RedHat6 | 6.5,6.6,6.7,6.8,6.9
RadHat7 | 7.0,7.1,7.2,7.3,7.4
Suse11sp4 |
Suse12sp3 |

注：仅支持JDK1.8版本。服务器A、B、C提供的完成部署过程的用户必须是root用户。注：不是有root用户权限的其他用户，必须是root用户。且仅需部署时为root用户，在部署完成后的运维普通用户即可。

2.2 内存硬盘说明

部署分布式环境服务器内存和硬盘的最小要求：

A、部署主节点（A节点）上任意目录需要单独预留15G可用磁盘空间存放安装软件；

B、集群中机器（A、B、C节点）：

注：综合一下，就是要求各机器的根目录空间至少55G以上。另外分一个目录的空间是放数据的，磁盘空间根据数据量预估空间来考虑。

目录 | 要求 | 用途
/var | 至少保证有10G空余可用空间 | 系统安装软件默认路径，基础服务安装路径。
/usr | A节点至少保证有15G空余可用空间，BC节点至少保证有10G空余可用空间 | 安装集群的各个组件，默认日志存放路径，A节点上还多一个离线的yum源需要空间。
/ （根目录） | 至少保证有30G空余可用空间 | 系统使用中的临时缓存地址。 注：这里需要的空间不包括/usr和/var路径需要的空间。
非/home的任意目录（自定义） | 按照数据量预估需要的空间 | hdfs服务存储数据的空间。

C、上述要求hdfs的存储数据的空间，注意不能把存储数据的大磁盘空间挂载在/home之下；

D、为保证系统可以正常运行，系统的内存每台要求至少在8G以上，CPU要求2核以上。（注：这里是至少的，正式的企业级应用系统，内存要求至少16G，8核以上）。

2.3 服务器环境要求

1、A,B,C集群节点之间网络要求千兆网及以上。

2、开放端口情况与说明（包括BI的服务器）：

开放端口的机器 | 开放情况 | 开放对象 | 端口 | 说明 | 备注
FineBI | 必须开放 | 浏览器1~N（业务部门使用的） | 37799、8005、8009、4040、17777、17778、38888等 | BI的web端对外开放的端口等，端口开放同单机 | 端口可修改
分布式服务器A | 必须开放 | 浏览器x（运维使用） | 8080 | 访问的是集群管理的端口，包括分布式的部署，各组件状态的管理等 | 端口可修改
分布式服务器A,B,C | 推荐开放 | 浏览器x（运维使用） | 50070 | HDFS的访问端口，用于查看持久化数据状态UI |
 |  |  | 7877 | spark的访问端口，用于查看任务执行的状态UI |
 |  |  | 19999 | alluxio的访问端口，内存管理状况的UI |
FineBI | 必须开放 | 分布式服务器A，B，C | 不限制端口 |  |
分布式服务器A,B,C之间 | 不限制端口，机器间访问不受限制

2.4 系统环境配置确认

需要确认系统是否配置好各个节点之间的Hostname和IP信息，使用ping Hostname的方式检查是否配置好。如下图所示，表示无法ping通集群节点之间的hostname。

注意：Hostname的命名不能出现下划线（“_”），比如xx_xx的命名是不被允许的。

需要在每个服务器的/etc/hosts文件中都配置上如下图的IP和hostname，保证每个机器可以ping通集群内所有节点的Hostname。

如下图为可以ping通集群节点。

2.5 部署注意点

1、系统推荐干净新安装的系统。如果用户已经在使用的系统，在自动化安装过程中可能会发生不可预知的错误；

2、/etc/hosts文件要填写集群中所有机器的ip和hostname。文档中示例的每个节点的文件都如下配置。需要保证的是ip是静态ip，不能使用127.0.0.1等特殊地址，集群中各个节点的hostname和ip可以互相ping通；（注：有些操作系统的hostname配置之后要重启机器或者相关的服务才会起效）

要注意：集群节点的hostname不能起相同的名字，且 Hostname的命名不能出现下划线（“_”），比如xx_xx的命名是不被允许的。

192.168.10.1 FineBI1 192.168.10.2 FineBI2 192.168.10.3 FineBI3

3、集群中所有机器都必须安装sshserver和sshclient。保证a) 机器可以被ssh远程连接，并且可以ssh连接其他机器；b) 机器之间可以scp拷贝文件（如不确认可以手动执行scp和ssh命令测试）。

这是因为：1）部署时候是通过一个主节点（ambari-server)登陆到其他节点操作进行的，包含各个节点的文件拷贝以及命令操作；2）正式使用中，组件HDFS的操作控制需要节点间做到免密登录。

4、机器间免密登录部分用户可以自行进行配置，也可以输入密码通过脚本自动配置，参考Ambari部署步骤四。免密登录需要做部署主节点到集群间所有节点（包括部署主节点）的免密登录，而且需要是root用户，且要保证文件权限如下所示，权限不对可以按照下面说明修改文件权限：

chmod 0755 ~ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

5、确认系统环境编码，输入locale，查看是否有zh_CN不是UTF-8的。如果存在zh_CN不是UTF-8编码，需要就输入export LANG=zh_CN.UTF-8；另外需要检查/etc/locale.conf文件查看是否与设置的一致；

6、检查~/.bashrc 是否有root用户的写权限，没有写权限需要给这个文件写权限；

7、部署脚本执行用户必须是root用户，后期维护可以是普通用户；

8、selinux和防火墙需要关闭。注：脚本执行期间，会自动关闭防火墙。

2.6 获取安装包

填写Spider分布式引擎安装包获取申请获取分布式引擎需要的安装包文件。

2.7 前置环境检查

按照上述准备好安装文件以及硬件与系统环境后，就可以开始安装部署工作了。在此之前，需要先进行前置环境的检查，这部分环境检查只需要在ambari-server节点的机器上执行操作。将所有安装文件上传到ambari-server节点，如下图：

编辑上传文件中的all_hosts文件，在文件中增加三个参数，填写集群中所有机器的ip hostname root用户密码，比如填写如下内容：

192.168.10.1 FineBI1 123456 192.168.10.2 FineBI2 123456 192.168.10.3 FineBI3 123456

编辑完成后保存该配置。在当前目录下执行命令操作命令：

sh pre_env_check_centos7.sh 当前目录绝对路径 | tee check.log 2>&1

注：此处必须填写当前目录绝对路径，脚本需要输入当前目录的绝对路径。比如当前上传文件的目录为/opt/test，则执行的脚本命令为sh pre_env_check_centos7.sh /opt/test | tee check.log 2>&1，如下图：

执行该脚本命令后，查看输出的日志check.log，如：

Verifying archive integrity... 100% All good.

Uncompressing spider autoDeploy precheck 100%

...................................................................

system requirement check is [[successful]]!

当看到最后输入如上的successful内容，表示检测通过，可以进行下一步操作。如果有任何warning和error的提示，则查看对应提示，对照上述部署前环境准备的内容，查看系统环境/硬件等准备是否足够。比如，如下则提示磁盘空间检测失败。

注：需要在上述环境检查通过后，才能进行下面的分布式引擎部署步骤。

3、索引

环境准备好后，就可以进行后续的ambari和界面组件安装步骤了。参考如下索引：

Ambari部署

界面组件安装

配置高可用（HA）

Ambari服务组件常见问题


Ambari部署- FineReport帮助文档|报表开发|报表使用|学习教程

Ambari部署

1、Ambari步骤操作

在环境检查通过（输出successful！）的基础上，在计划做ambari-server的节点上执行下面的操作。

1.1 文件编辑与移动

1、将ansible.tar.gz安装包拷贝至主机服务器上任意位置，使用以下命令解压并进入该文件夹。

tar -zxf ansible.tar.gz

2、将除了ansible之外的tar文件移动到%/ansible/packages之下，最后文件列表如下图所示：

并将%/all_hosts和%/env_config这两个文件全部移动到%/ansible下面。

1.2 基础环境安装

1、在ansible目录下执行如下安装脚本：

sh main_centos7.sh |tee install.log 2>&1

2、执行脚本后，会有如下内容的输出。其中括号内的都为默认值，直接使用默认值即可（如需调整，参考下面介绍的参数含义，自行调整）。

内容 是否必填 含义 Do you wish to install this program(y/n)？ 是 （1）输入y表示同意开始自动化部署的步骤；
（2）输入n表示结束，不进行部署； path_jvm(/opt) 否 jdk的安装目录，实际jdk会安装到path_jvm/jvm/jdkxxx httpPort(6173) 否 默认会在集群节点之间搭建一个离线的源文件资源库。这个端口表示离线源文件的访问端口，可以任意修改为一个没有被占用的端口 docRoot(/var/www/html) 否 离线源文件的具体路径，可以选择一个有足够空间的目录填写。（至少10G，默认的/var在前面已说明空间） sshPort(22) 否 集群节点的ssh端口 Do you wish to autossh to remote hosts(y/n)? 是 （1）输入y表示程序会自动进行集群节点之间的免密登录步骤。要求all_hosts中必须填写root用户的密码，否则不能成功执行ambari安装步骤；
（2）输入n表示已经做了集群节点自身与节点之间的免密登录。all_hosts中没有root密码一栏。如果选择n，但是有免密步骤没有做好，则会抛出异常，不能成功执行ambari安装步骤；

3、上述步骤执行完成后，输入如下内容，表示安装成功。

1.3 状态检查

此时我们在ambari-server机器上执行如下命令检查启动状态，或查看启动端口状态，默认为8080。

service ambari-server status

在浏览器中输入ambari-server节点的ip:8080可以访问Ambari界面，如下图：

2、常见问题及解决方案

1、压缩包解压问题，报如下图的invalid compressed data–format violated错误。

解决方案：重新拷贝压缩包并重新解压。

2、在脚本执行时报解压缩jdk报问题，如下图所示。

解决方案：重新执行自动化部署脚本。

3、在脚本执行时报all_hosts文件密码错误，拒绝访问，如下图：

解决方案：修改all_hosts文件，输入正确的root用户密码。


界面组件安装- FineReport帮助文档|报表开发|报表使用|学习教程

界面组件安装

1、初始进入ambari服务

Ambari部署完成以后，就可以进入服务并配置集群环境了。在浏览器打开master的ip和端口号，其中端口号为8080，即可进入ambari服务登录界面，如下图：

初始登录用户名和密码分别为admin和admin，点击Sign in即可登录。

2、配置集群环境

1、登录成功后，点击界面上的 Launch Install Wizard，如下图：

2、此时我们进入集群配置界面，设置集群名称（任意名称），此处我们命名为FineBI。

3、点击Next，选择HDP2.6（注：这一步可能看不到HDP2.6，点击一下左下方的“back”按钮，回到上一步，再点Next后就可以看见了）。

在页面下方对应操作系统给的URL中输入本地源的地址，如下图，默认已经根据集群环境自动配置，无需更改，点击下一步即可，如果想要自己填写，请按照如下格式修改。

不同操作系统HDP-2.6的对应Base URL：

cnetos7/redhat7：http://ambari_server_所在机器的ip:port/HDP/centos7

centos6/redhat6：http://ambari_server所在机器的ip:port/HDP/centos6）

Suse11：http://ambari_server所在机器的ip:port/rpms/HDP/suse11sp3

Suse12：http://ambari_server所在机器的ip:port/rpms/HDP/sles12

此处的port为一开始基础环境配置时设置的port，默认为80（默认端口可以）

不同操作系统HDP-UTILS-1.1.0.21的对应Base URL：

centos6/centos7/redhat6/redhat7：http://ambari_server_ip:port/HDP-UTILS

Suse11/Suse12：http://ambari_server_ip:port/rpms/HDP-UTILS

此处的port也为一开始基础环境配置时设置的port，默认为80。

4、设置好Base URL后，点击Next，进行Install Options的设置，该页面填写集群中的节点host信息，这个页面分为了三个部分。

a、如下图，其中Target Hosts处填入集群所有机器的hostname（包括ambari所在机器），根据自己的实际内容填写即可。

b、下面的HostRegistration Information，填写的是ssh免密的主机私钥，默认已经填写；

c、ssh用户名和端口的部分，用户名默认就是root，端口一般默认为22，修改过的话，填写修改之后的端口号。

填写完成后点击Register and Confirm即可。过程中可能会出现如下图所示的提示，这是由于Ambari推荐的是Fully Qualified Domain Name格式的hostname，如果hostname不满足格式要求，会出现如下图的提示，点击ok即可。

5、之后等待配置完成即可。这个等待的过程是在对系统环境做检查。

a. 如果环境完全没有问题，下面的next按钮会是正常的绿色，直接点击next即可。

b. 如果环境检查有异常的情况，会有相应的提示，点开详细的提示查看异常信息并按照异常信息提示解决即可。

6、配置组件信息，到Choose Services节点直接点击Next即可，如下图：

到Assign Masters步骤时，将所有的“+”号都选择上。

到Assign Slaves and Clients节点时，按如下图处理，NFSGateway部分不做选择，其他部分全部勾选上。

注：过程中如遇到Next不能点的情况，直接刷新浏览器页面即可。

3、用户自定义服务

进入Customize Services步骤，必须填写如下必选项。

1）HDFS

NameNode | DataNode
/data/hdfs/namenode | /data/hdfs/datanode

注：这里的地址写专门为存储数据准备的路径地址，一般是预留的磁盘空间最大的路径。

2）Ambari Metrics

这个是Ambari自带的集群服务监控系服务，它主要为系统管理员提供了集群性能的检查功能。只需要填写管理ambari metrics的用户名密码即可，这里注意不是登录ambari界面的用户名密码。

其他组件直接使用默认值即可，根据系统资源配置的调优，会在后续调优文档中详细说明。

4、后续安装

到下一步的Review>Install Start and Test，都直接点击Next即可。如下图：

注：此处若机器配置比较差的话，安装会较慢。

看到如下的界面，表示安装完成了。

5、常见问题及解决方案

1、注册集群步骤时出现faied失败，如下图：

解决方案：会由于机器性能以及网络问题导致超时，节点注册失败，可以点击Retry Failed按钮重试即可

2.使用360或者低版本的IE 打开ambari界面，加载不出来登陆页，出现一些奇怪的内容，比如下图所示：

解决方案：低版本IE需更换火狐、谷歌等浏览器，360浏览器需要关闭兼容模式。


配置高可用（HA）- FineReport帮助文档|报表开发|报表使用|学习教程

配置高可用（HA）

1、描述

Spider分布式引擎三台及以上的机器都需要配置高可用（HA），从而保证整个系统的高可用。

2、配置高可用步骤

1、在Ambari服务主界面选择HDFS服务，并在右上角点击Service Actions，选择Enable NameNode HA，如下图：

2、在Get Started步骤的Nameservice ID中输入ns（也可自定义其他名字），如下图：

3、点击Next，按照提示使用root用户登录到对应hostname的机器上，依次执行界面提示中的2和3命令。如下图，按照提示1登录到hostname为master的机器上，执行红框中提示2和3的命令。

在FineBI1上执行命令2中对应的操作，如下：

出现上图所示情况后，执行接下来的命令3，如下图：

执行完成后，点击Next即可。

注：执行成功后才能点击Next按钮，没有成功的话，Next按钮不能被点击。

4、等待组件配置：

配置完成后，如下图，点击Next按钮。

5、用root登录到界面提示的hostname的主机，并且执行第二点中的命令，完成后点击Next。

命令执行完成后的结果如下图所示：

执行成功后Next按钮才可以点击。

6、等待组件启动完成后点击Next。

7、按照界面的提示，登录到提示1中的hostname机器上，执行提示2中的命令；登录到提示3中的hostname机器上，执行提示4中的命令。（注：提示1与提示3中登录的是不同机器）

去提示1的机器中执行提示2的命令结果如下图所示：

去提示3的机器中执行提示4的命令结果如下图所示：

完成后点击Next。

8、等待组件配置启动完成后点击Done。

完成后可以在hdfs的服务界面上看到对应的JournalNode启动了，如下图：

至此，安装过程全部完成。Ambari界面显示如下。


Spider分布式引擎调优- FineReport帮助文档|报表开发|报表使用|学习教程

Spider分布式引擎调优

1、描述

Spider分布式引擎在部署完成后需要对引擎进行调优的操作，分为Ambari界面调优和分布式参数调优。本章我们介绍Ambari的界面调优，主要调整Ambari各个服务组件的配置项。分布式的参数调优在Spider分布式与BI对接以后进行设置，参考Spider分布式与BI对接和Spider分布式参数配置方法。

2、数据占用大小预估

2.1 占用空间计算公式

FineBI数据占用空间的大小存在如下计算公式：

占用总空间大小 = 总单元格数 * 8字节 * 4份

总单元格数 = 所有单表单元格 + 所有关联所占单元格

关联所占单元格 = 事实表行数 * 维度表列数

总空间大小需要再乘以关联系数，这个系数一般为1.5~2。对于上面计算公式中所涉及到的概念在下面给出说明：

a. 分布式数据空间占用是指存储在Alluxio中数据占用的内存+磁盘空间，以及备份在HDFS中数据所占用的磁盘空间；

b. HDFS会对数据进行备份，默认为3分，可修改配置。因此总数据（压缩后）默认存储为4份；

c. 单元格的概念，比如一个10行* 5列的表，就有50个单元格；

d. 每个单元格平均占用空间大概为8个字节。如果原始数据重复值很多导致压缩效果好，那么这个值会进一步缩小，甚至趋近于1；

2.2 示例

某客户需要对一张2亿行*20列的单表进行抽取分析，则建议总空间为 2亿*20列*8压缩比*4份*2索引系数 = 256GB （注：这里是总的数据，一份数据是64G）。

若该客户还需要让这张表和一张100万行*10列的维度表进行关联，维度表的大小可以忽略，则建议总空间为 （128GB+2亿*10列*8压缩比*4份）*2索引系数 = 512GB（注：这里是总的数据，一份数据是128G）。

注：如果原始数据重复值多，且本身字符相对大，会压缩数倍。如果原始数据单元格本身很小，并且需要生成大量关联缓存，则导入数据会膨胀。

3、各组件配置调整

3.1 Spark

Spark部分，主要需要修改的是内存和核心数。在如下图所示位置修改：

配置项 推荐值 说明 spark_worker_cores 单个机器CPU的所有核心数 假设机器A、B、C的CPU核心数都是12，这里写12即可。（操作方法：在linux机器执行命令 cat /proc/cpuinfo查看个数，如下图所示为12个）

3.2 Alluxio

Alluxio主要修改的为内存虚拟路径、内存、磁盘路径、空间等，在如下图所示位置修改：

配置项 推荐值 说明 alluxio.worker.tieredstore.level0.dirs.path 路径，默认即可 内存虚拟路径，可不做修改 alluxio.worker.tieredstore.level0.dirs.quota 机器剩余可用内存 内存大小，机器可提供剩余内存。比如这里ABC环境是64G，其中A机器还需要装FineBI应用，需要占用16G（单独一个group），ABC都需要为spark提供8G。那么A剩余：64-8-16=40G，B和C剩余：64-8=56G。其中系统运行还需要内存，因此A机器所在分组提供35G，B、C机器所在分组提供50G。 alluxio.worker.tieredstore.level1.dirs.path 路径，多个盘的话可以多个路径，以英文逗号分隔 磁盘路径，可以和HDFS一样的路径，有足够大的空间即可。 alluxio.worker.tieredstore.level1.dirs.quota 磁盘空间，注意这里是数字+GB 磁盘空间，（磁盘空间+上述内存大小）*节点数 这个大小要能存放一份数据，减少磁盘交换时间，达到性能最优。建议是内存的两倍，比如按照上面描述，就可以配置100G。

4、配置示例与原则

分别根据如下图的结构，给出不同FineBI、分布式节点、web服务器数量及配置的示例。

注：下述的服务器硬件资源全部为可用资源。

4.1 一个BI，三个Spider分布式节点，BI服务器与计算引擎服务器分开

示例图分解：web服务器的N为1，web服务器与计算引擎服务器分开，合计4台服务器

配置示例：

服务器 | 硬件资源
web服务器1 | 32G，8c，200G
Spider引擎服务器1，2，3 | 64G，16c，1T硬盘挂载在/data目录

配置分解：

1. BI部分

（1）JVM内存配置16G即可，配置方法见Linux中修改jvm内存；

（2）分布式配置文件：Spider分布式与BI对接；

参数项 | 推荐配置值
DistributedOptimizationConfig.spiderConfig.spark_executor_memory | 8G
DistributedOptimizationConfig.spiderConfig.spark_executor_cores | 16
DistributedOptimizationConfig.spiderConfig.spark_cores_max | 48

配置方法详见：Spider分布式参数配置方法。

2. Spider引擎服务器部分

配置方法：参考上面第三章节；

配置分解：

分类 | 参数项 | 推荐配置值
spark | spark_worker_cores | 16
 | spark_worker_memory | 8192
alluxio | alluxio.worker.tieredstore.level0.dirs.path | /data/hdfs/data/alluxio/ramdisk
 | alluxio.worker.tieredstore.level0.dirs.quota | 50GB
 | alluxio.worker.tieredstore.level1.dirs.path | /data/hdfs/data/alluxio/hdd1
 | alluxio.worker.tieredstore.level1.dirs.quota | 100GB

4.2 两个BI，三个Spider分布式节点，BI服务器与计算引擎服务器分开

示例图分解：

web服务器的N为2，web服务器与计算引擎服务器分开，合计5台服务器

配置示例：

服务器 | 硬件资源
web服务器1，2 | 32G，8c，200G
Spider引擎服务器1，2，3 | 64G，16c，1T硬盘挂载在/data目录

配置分解：

1. BI部分

（1）两个web服务器的JVM内存都配置16G即可，配置方法见Linux中修改jvm内存；

（2）两个web服务器的分布式配置文件：Spider分布式与BI对接；

参数项 | 推荐配置值
DistributedOptimizationConfig.spiderConfig.spark_executor_memory | 4G
DistributedOptimizationConfig.spiderConfig.spark_executor_cores | 16
DistributedOptimizationConfig.spiderConfig.spark_cores_max | 48

配置方法详见：Spider分布式参数配置方法。

2. Spider引擎服务器部分

配置方法：参考上面第三章节；

配置分解：

分类 | 参数项 | 推荐配置值
spark | spark_worker_cores | 32
 | spark_worker_memory | 8192
alluxio | alluxio.worker.tieredstore.level0.dirs.path | /data/hdfs/data/alluxio/ramdisk
 | alluxio.worker.tieredstore.level0.dirs.quota | 50GB
 | alluxio.worker.tieredstore.level1.dirs.path | /data/hdfs/data/alluxio/hdd1
 | alluxio.worker.tieredstore.level1.dirs.quota | 100GB

延伸：假设现在是三个BI应用，三个spider分布式节点，也就是总共6台机器，此时，BI的分布式配置项需要如下：

参数项 | 推荐配置值
DistributedOptimizationConfig.spiderConfig.spark_executor_memory | 8/3G（2.5G）
DistributedOptimizationConfig.spiderConfig.spark_executor_cores | 16
DistributedOptimizationConfig.spiderConfig.spark_cores_max | 48

Spider引擎配置项需要如下：

分类 | 参数项 | 推荐配置值
spark | spark_worker_cores | 48
 | spark_worker_memory | 8192

4.3 一个BI，三个分布式节点，BI在其中一个节点

示例图分解：

web服务器的N为1，web服务器与计算引擎服务器放在一起，合计3台服务器，三台服务器配置不同

配置示例：

服务器 | 硬件资源
web服务器1，Spider引擎服务器1 | 96G，16c，200G硬盘挂载在/opt盘，1T硬盘挂载在/data盘
Spider引擎服务器2，3 | 64G，16c，1T硬盘挂载在/data目录

配置分解：

1. BI部分

（1）JVM内存配置16G即可，配置方法见Linux中修改jvm内存；

（2）分布式配置文件：Spider分布式与BI对接；

参数项 | 推荐配置值
DistributedOptimizationConfig.spiderConfig.spark_executor_memory | 8G
DistributedOptimizationConfig.spiderConfig.spark_executor_cores | 16
DistributedOptimizationConfig.spiderConfig.spark_cores_max | 48

配置方法详见：Spider分布式参数配置方法。

2. Spider引擎服务器部分

配置方法：参考上面第三章节；

配置分解：

分类 | 参数项 | 推荐配置值
spark | spark_worker_cores | 16
 | spark_worker_memory | 8192
alluxio | alluxio.worker.tieredstore.level0.dirs.path | /data/hdfs/data/alluxio/ramdisk
 | alluxio.worker.tieredstore.level0.dirs.quota | 50GB
 | alluxio.worker.tieredstore.level1.dirs.path | /data/hdfs/data/alluxio/hdd1
 | alluxio.worker.tieredstore.level1.dirs.quota | 100GB

4.4 一个BI，三个分布式节点，BI在其中一个节点，配置相同

示例图分解：

web服务器的N为1，web服务器与计算引擎服务器放在一起，合计3台服务器，三台服务器配置相同

配置示例：

服务器 | 硬件资源
web服务器1，Spider引擎服务器1 | 64G，16c，1T硬盘挂载在/data目录
Spider引擎服务器2，3 | 64G，16c，1T硬盘挂载在/data目录

配置分解：

1. BI部分

（1）JVM内存配置8G即可，配置方法见Linux中修改jvm内存；

（2）分布式配置文件：Spider分布式与BI对接；

参数项 | 推荐配置值
DistributedOptimizationConfig.spiderConfig.spark_executor_memory | 8G
DistributedOptimizationConfig.spiderConfig.spark_executor_cores | 16
DistributedOptimizationConfig.spiderConfig.spark_cores_max | 48

配置方法详见：Spider分布式参数配置方法。

2. Spider引擎服务器部分

配置方法：参考上面第三章节；

（1）Spider引擎服务器1

分类 | 参数项 | 推荐配置值
spark | spark_worker_cores | 16
 | spark_worker_memory | 8192
alluxio | alluxio.worker.tieredstore.level0.dirs.path | /data/hdfs/data/alluxio/ramdisk
 | alluxio.worker.tieredstore.level0.dirs.quota | 35GB
 | alluxio.worker.tieredstore.level1.dirs.path | /data/hdfs/data/alluxio/hdd1
 | alluxio.worker.tieredstore.level1.dirs.quota | 100GB

（2）Spider引擎服务器2、3

分类 | 参数项 | 推荐配置值
spark | spark_worker_cores | 16
 | spark_worker_memory | 8192
alluxio | alluxio.worker.tieredstore.level0.dirs.path | /data/hdfs/data/alluxio/ramdisk
 | alluxio.worker.tieredstore.level0.dirs.quota | 50GB
 | alluxio.worker.tieredstore.level1.dirs.path | /data/hdfs/data/alluxio/hdd1
 | alluxio.worker.tieredstore.level1.dirs.quota | 100GB

注：由于默认所有节点都在一个分组，参数设置一个，所有节点都一样。而这个示例中Spider引擎服务1 与23的alluxio内存设置不一致，因此需要将1作为一个分组，23作为一个分组，分别配置。详见 Ambari界面组件使用介绍。

4.5 配置原则
上面示例可以看出：

1、从4.1和4.3的示例，可以看到4.1和4.3配置是一致的。因此，装BI的部分与装引擎的部分，内存相加之和一致，就不管是否放在同一个机器上，效果一致；

2、从4.2的部分，随着web个数的增加，核心部分：web端的spark核心参数可以不更改，而对应spider引擎参数（ambari界面要修改的内容）里，spark的spark_worker_cores需要乘以web个数。内存部分则正好相反，spider引擎部分内存参数不做修改，web端的内存参数需要除以web个数；

3、从4.4的部分，结合4.1和4.3，内存与alluxio、BI均相关，而为了保证资源最大化利用，剩余可用内存都尽量给alluxio。

由此得出如下分配原则：

Spider引擎服务内存分配原则：alluxio所需内存（alluxio的alluxio.worker.tieredstore.level0.dirs.quota参数值） =系统可用内存 -Spark需要的内存（建议是cpu核心数/2）- [BI的jvm所需内存*2] - 系统运行所需内存（一般是6G~8G，可调整）

Spider引擎服务cpu分配原则：cpu全部给spark分配即可，内存随着核心数做调整。即spark的核心参数spark_worker_cores参数在对接的web端是1个的情况下，推荐写服务器的核心数。在需要对接的BI应用增加为N的情况下，就填写服务器核心数*N。spark的内存参数spark_worker_memory 就是系统核心数/2，无论对接的BI应用有几个，内存参数均不修改；

Spider引擎服务磁盘分配原则：这里只说数据存储的alluxio和hdfs部分。首先hdfs部分的配置在安装时候就填写好了，参考界面组件安装。其中DataNode部分就是数据存储路径，需要填写专门为数据存储挂载的磁盘路径。而alluxio部分，则是在alluxio的如下参数体现，其中路径也填写最多的可用路径，大小的话，就建议是alluxio内存*2。理论上是所有节点alluxio内存之和+所有节点配置的磁盘之和=一份数据的大小。

alluxio.worker.tieredstore.level1.dirs.path | /为数据存储准备的大磁盘路径
alluxio.worker.tieredstore.level1.dirs.quota | xxGB

大小预估可参考第二章节：数据占用大小预估

BI端分布式配置项配置原则：

参数项 | 推荐配置原则
DistributedOptimizationConfig.spiderConfig.spark_executor_memory | 看Spider引擎服务的spark内存配置 spark_worker_memory/N即可，其中N为BI的web应用个数。（注意在BI端单位是GB）
DistributedOptimizationConfig.spiderConfig.spark_executor_cores | 看Spider引擎服务的spark核心配置 spark_worker_cores的参数/N即可，其中N为BI的web应用个数
DistributedOptimizationConfig.spiderConfig.spark_cores_max | 最大可用spark核心数，DistributedOptimizationConfig.spiderConfig.spark_executor_cores * spider引擎服务节点数


Spider分布式与BI对接- FineReport帮助文档|报表开发|报表使用|学习教程

Spider分布式与BI对接

1、描述

在部署完分布式引擎的各组件以后，就需要BI与分布式引擎环境进行对接。在分布式引擎服务器推荐中我们介绍过FineBI与分布式服务器是否部署在一起的服务器推荐，用户可以根据自己的实际情况决定是否将BI与分布式机器部署在一起。FineBI单机或web集群与分布式引擎的对接方式一致，下面我们将介绍单机版与Spider引擎分布式环境的对接。

注：若FineBI与分布式机器不是部署在同一机器时，需要在对接前确保BI机器能够ping通每个集群机器的主机名，否则无法成功对接。

2、步骤

如果没安装过FineBI，参考FineBI安装与启动安装FineBI。

2.1 Windows下安装bash

注：FineBI若部署在Windows环境下，则需安装bash，可参考下面步骤安装，安装完成后再执行后续的修改配置文件操作。

1）在Windows机器中打开cmd；

2）输入bash命令检查，若如下图显示说明电脑上有安装bash；若提示没有bash命令，则需要安装bash；

3）此处使用gitBash。下载地址：Git-2.9.3-32-bit.exe。

安装在某个目录之下，配置其环境变量。此处以win10环境变量配置为例（安装GitBash的地址在D:\Git）：

打开电脑的属性>控制面板主页>高级系统设置>环境变量，如下图：

使用系统变量>编辑Path>新建>输入地址D:\Git\bin，之后确定保存；

打开cmd，输入bash检查，如下面图中所示表示安装配置成功。

2.2 分布式引擎对接

1、在安装完成FineBI并启动后，进入管理系统>智能运维>集群配置，点击计算引擎集群，默认为FineSpider本地版，如下图：

保存按钮，则出现提示框，在节点配置以后需要重启FineBI才能生效。

Running Applications下看到成功运行的BI，对接了几个FineBI，此处即存在几个运行的app，如下图：

注：上述第二步中若在Windows下未安装bash，点击切换成FineSpider分布式引擎时会出现bash尚未配置成功的提示，如下图，需要先安装bash才能继续配置对接信息。

3、分布式引擎参数

注：默认对接的应用内存是6G，核心是12，这个配置最好与Ambari界面上Spark应用分配的内存与核心一致，不能比其大。

比如：

（1）有一个BI应用对接，Ambari界面分配spark内存8G、核心16，那这里默认的参数即可满足。也可以进行修改，修改为内存8G，核心16；

（2）有一个BI应用对接，Ambari界面分配spark内存2G、核心4，那这里必须对参数进行修改，修改为内存2个、核心4。

详细Spider分布式引擎参数及配置请参考配置示例与原则，修改方法请参考分布式引擎参数配置方法，修改的参数如下所示：

配置项 | 说明 | 默认值
DistributedOptimizationConfig.spiderConfig.spark_executor_memory | 分布式引擎中，每个节点给SparkApp分配的计算内存。如果集群节点内存较为紧张，可适当降低，但不要低于4G | 6G
DistributedOptimizationConfig.spiderConfig.spark_executor_cores | 分布式引擎中，每个节点给SparkApp分配的计算核心数。如果节点核心多，可适当提高增加并发 | 12
DistributedOptimizationConfig.spiderConfig.spark_cores_max | 分布式引擎中，所有节点给SparkApp分配的计算总核心数。上一个配置无论多大也不会超过该值。如果节点多核心多，可适当提高 | 36


Spider分布式参数配置方法- FineReport帮助文档|报表开发|报表使用|学习教程

Spider分布式参数配置方法

1、描述

该部分提供针对Spider引擎相关的系统参数配置方法，包括内置数据库和迁移数据库分别的配置方法。

2、配置方法

配置方法分为内置数据库与迁移数据库，内置或迁移数据库为在安装FineBI首次启动的时候提示进行配置的，详细操作请参考 初始化设置。

下面分别介绍它们的配置方法。

2.1 内置数据库

配置文件路径：%FineBI%\webapps\webroot\WEB-INF\embed下的finedb中，如下图：

可通过客户端连接该hsql数据库（参考 如何使用第三方管理软件连接报表内置hsql数据库finedb），通过SQL语句来修改表配置参数。

比如我们需要将spark_executor_memory参数新增或更改为8G，就可输入SQL语句修改FINE_CONF_ENTITY表，先删除该对应参数再为其新增参数值。

输入SQL语句如下图：

DELETE FROM FINE_CONF_ENTITY WHERE ID='DistributedOptimizationConfig.spiderConfig.spark_executor_memory' INSERT INTO FINE_CONF_ENTITY VALUES('DistributedOptimizationConfig.spiderConfig.spark_executor_memory','8G') COMMIT

注：先delete再insert的操作可以保证无论原先这个参数是否存在，均可以增加，保证正确性。

修改以后需要重启FineBI生效。

2.2 迁移数据库

1）若为迁移数据库的话，需要在数据表地址中找到迁移数据库中的表fine_conf_entity，如下图：

在该表中数据均以id、value的形式存放，如下图：

2）比如需要将spark_executor_memory参数新增或更改为8G，以MySQL为例，使用如下命令修改：

#查找是否存在参数spark_executor_memory select * from fine_conf_entity where id="DistributedOptimizationConfig.spiderConfig.spark_executor_memory" #插入参数与参数值 INSERT into fine_conf_entity(id,`value`) VALUE("DistributedOptimizationConfig.spiderConfig.spark_executor_memory","8G")

3）重启FineBI生效。


Ambari服务组件常见问题- FineReport帮助文档|报表开发|报表使用|学习教程

Ambari服务组件常见问题

1、Ambari重启

在集群主节点上（安装了ambari-server的机器）使用root用户执行如下操作：

ambari-server 启动：ambari-server start

ambari-server 关闭：ambari-server stop

amabri-server 重启：amabri-server restart

注：这边只是控制ambari-server服务，并不会控制ambari下安装的服务（spark，hdfs，zookeeper，alluxio，这些服务需要在amabri-server的web页面上操作）。

重启服务顺序：依次启动ZooKeeper->HDFS->Spark2->Alluxio。

2、集群服务器开机自启动设置

默认情况下，集群环境中只有ambari-server会自动重启，如果想要设置其他服务的自启动，需要手动配置。

在ambari主界面上点击右上角的Admin标签，下拉框中选择Service Auto Start，如下图：

确保Auto-Start Service按钮处于Enabled的状态，如下图所示：

点击下面ALLUXIO，HDFS，Spark2以及ZooKeeper的标签，将这几个服务中所有的组件都设置成Enable的状态：

Alluxio：

HDFS：

Spark2：

ZooKeeper：

若安装了Ambari Metrics，请同样配置开机自启动。设置完毕后，点击右上角的Save按钮即可，如下图，这些设置过的服务会在机器启动的时候自动启动。

3、服务安装完启动后一开始显示为启动，过一会显示服务停止

可能原因：

由于ambari是通过每隔一段时间检测进程是否存在来判断服务是否正在运行的，服务状态检测存在一定的延迟。有些服务,例如zookeeper等，可能启动的时候进程是存在的，但是由于一些原因报错，之后也会结束zookeeper自己的进程。因此，如果如果服务启动不正常，会出现过一会服务停止的情况。

解决方案：

没有启动的服务，通过Ambari的UI界面手动启动一下看看，如果依旧如此，就请检查各个服务的日志（HDFS, ZOOKEEPER，HDFS，SPARK2的日志目录默认是在/var/log下，alluxio日志的默认目录是在/home/hdfs/data/alluxio/log下），查看失败原因，具体原因具体解决。

4、关于预警问题

目前不用管Ambari Metrix 和 Smart Scense的预警和报错（服务处于stop也没有影响），其他的服务(Zookeeper, HDFS, SPARK2, Alluxio)的预警和报错需要具体情况具体分析，可以点开alert查看具体内容，例如hdfs的datanode剩余空间百分比过低时会有如下提示：

这种问题需要根据实际情况考虑是否处理。

5、关于服务状态问题

最基础的服务状态就是检查每一个服务标签页中的各个组件状态，如下图的Spark2:

Started就是处于工作状态，其他的红色状态就表示未工作状态（目前只需要保证HDFS、ZooKeeper、Spark2、Alluxio的组件处于Started状态）。如果服务是stoped的状态，可以手动点击stop的组件进去，手动启动该组件。

6、Postgresql问题

Ambari底层依赖postgre sql来保存集群中的各个节点和服务的信息，默认节点机器的postgre sql服务是处于正常开启状态，但是有的系统中postgre sql并不处于正常状态，所以就需要手动重启postgre sql服务。

7、安装HDFS配置界面NameNode和DataNode Directories报错提示

由于Ambari默认不允许把这两个文件夹的路径放置在/home路径下，因此安装的时候可能会遇到类似如下图所示的问题：

解决方案：

一般情况下只需要留第一个非/home的路径即可，如果不可以的话，请按照下面的方式创建软链接来处理这个问题。

以图中的/hadoop路径为例（在集群中每台机器中都要操作）：

1、将/hadoop复制到/home/hadoop（带上权限）

cp -rp /hadoop /home/hadoop

2、删除/hadoop

rm -rf /hadoop

3、将/home/hadoop软连接到根目录/

ln -s /home/hadoop /

8、系统环境检查

在集群各个节点安装服务之前，Ambari会对集群中的各个机器做一个环境检查。如果不是新装的操作系统，可能会有一些环境问题，点击后可以详细查看警告内容，手动解决即可。如下图所示：

点击warnings后会有详细信息，如：

按照详细提示信息解决即可。

9、安装服务过程中弹出的红色警告

安装过程中，Ambari会检测集群机器的状态以及配置服务的信息，会给出一些相应的建议提示和警告，如下图所示：

Ambari Metrix的相关警告可以忽略，其他服务的警告需要根据具体内容具体分析是否忽略还是做出配置上的调整。


Ambari界面组件使用介绍- FineReport帮助文档|报表开发|报表使用|学习教程

Ambari界面组件使用介绍

1、描述

本章基于下面的机器环境与服务拓扑结构配置，分小节介绍分布式引擎各组件UI界面的介绍与命令的使用。

服务器A 服务器B 服务器C 作用 Ambari-server、Ambari-agent、应用服务器FineBI、分布式节点 Ambari-agent、分布式节点 Ambari-agent、分布式节点 配置 64G内存、16核CPU、2T磁盘挂载在/data之下 64G内存、16核CPU、2T磁盘挂载在/data之下 64G内存、16核CPU、2T磁盘挂载在/data之下 HDFS DataNode DataNode DataNode ZooKeeper ZK Server、ZK Client ZK Server、ZK Client ZK Server、ZK Client Spark2 master、worker master、worker master、worker ALLUXIO master、worker master、worker master、worker

配置了HA，其中NameNode和Standby NameNode是存在选举的。在这个系统中，只要存在三个机器，就会有一个NameNode节点和Standby NameNode节点，但在哪个机器不确定。Alluxio和Spark的master管理节点在哪个机器上也是随机选举的，在哪个机器也不确定。

2、Ambari使用介绍

2.1 Ambari命令使用

ambari分两种类型的服务操作：ambari-server和ambari-agent。

分类 | 操作机器 | 启动 | 重启 | 关闭 | 查看状态
ambari-server | A | ambari-server start | ambari-server restart | ambari-server stop | ambari-server status
ambari-agent | A、B、C | ambari-agent start | ambari-agent restart | ambari-agent stop | ambari-agent status

操作示例：

假设ambari服务在运行中，此时需要重启整个ambari服务。则要在A、B、C三个服务器上分别执行操作如下：

在A、B、C三个机器上分别执行ambari-agent stop > 在A机器上执行ambari-server restart > 在A、B、C三个机器上分别执行ambari-agent start。

注：这边只是控制ambari-server服务，并不会控制ambari下安装的服务。

2.2 Ambari界面

在Ambari界面（http://ambari-server-ip:8080/）上可以看到部署的各服务状态及服务器的使用情况等，如下图：

点击对应服务，可以在页面右侧看到服务状态的一个汇总，包括状态、提醒、警告信息、内存使用、磁盘使用等信息。在页面右上角点击“Hosts”可以看到部署的服务器的使用情况，如下图，包括核、内存、磁盘使用情况、版本等信息。

右上角的”Alerts“显示各组件的提醒及警告信息，如果有服务出现需要点击查看具体信息并解决。“Admin”则是一些基本的配置项，可以配置服务的开机自启动等等。

如下图所示，绿色的状态表示组件状态是正常的情况。

如下图所示，若有红色三角标识，标识组件状态并不正常，需要具体查看。

3、各组件界面使用介绍

各个服务组件在Ambari界面上可以进行操作，组件与节点的组合如下图所示，可以横向全部重启、纵向全部重启以及单独启动。

3.1 针对单个组件所有节点的操作

针对整个集群中某个组件的界面操作，如下图所示，点击左侧的组件名字，到右侧的“Service Actions”下点击操作。这个针对的是A、B、C三个的某个组件的操作，操作的结果会在界面上显示。

示例：

如下图所示，选择Spark2，点击Restart ALL的操作，那么这个集群中的spark服务将会被重启，也即A、B、C机器的spark master和spark worker都会被重启。

3.2 针对单个节点的某个组件的操作

细化到某个节点的某个组件的操作，可以如下图点击Spark2 > Spark2 Workers。

显示是Spark2 Workers的组件是如下三个节点：

点击到相应节点里，也可以看到每个节点上运行的服务。

示例：

如下所示，发现Spark的状态不正常，那就可以点进去，点击启动即可。

最后看到界面上显示如下图所示，表示启动成功。等待一段时间，状态还是正常的，就表示这个是正常的情况。

3.3 常见操作示例

描述 | 步骤
假设此时服务没有运行，需要启动服务 | 需要按照顺序依次启动：zookeeper > hdfs > spark2 > alluxio的所有服务，界面上按照2.1的方式启动所有节点的组件；
假设此时需要停掉所有服务

停止服务有更简单的方法，如下图所示：

注：所有组件启动之后需要等待一段时间，如果启动不久服务就有问题，说明服务未正常启动，可以直接查看ambari界面上的启动日志进行查看，启动日志查看过程如下图所示。

3.4 各个组件UI界面查看
 | 端口（默认） | 访问IP | 说明
HDFS | 50070 | A_IP: 50070 或者B_IP: 50070 或者C_IP: 50070 | 可以查看hdfs存入数据的状态
Alluxio | 19999 | A_IP: 19999 或者B_IP: 19999 或者C_IP: 19999 | 可以查看抽取之后数据的情况、大小等
Spark | 7877 | A_IP: 7877 或者B_IP: 7877 或者C_IP: 7877 （Status: ALIVE） | 可以查看spark中运行进程的情况等

其中访问IP是不固定的，是因为我们将所有节点都设置为既是master又是worker，而每个节点是否是master为zookeeper选举的，并不固定。这样也是降低宕机或机器问题引起系统不可用的风险，保证系统高可用。

4、设置组件开机自启动

默认情况下，集群环境中只有ambari-server会自动重启，如果想要设置其他服务的自启动，需要手动配置。在ambari主界面上点击左上角的admin标签，在下拉框中选择Service Auto Start，如下图：

点击下面各个标签，将这几个服务中所有的组件都设置成Enable的状态。

设置完成以后，点击右上角的save按钮即可，这些设置过的服务会在机器启动的时候自动启动。

5、修改各组件的分组

在ambari管理组件中，有分组的概念。安装的时候通常会默认将所有组件分为一组，此时配置文件使用的都是一样的内容。但是假设如前面的环境所说，A、B、C三个机器都是一样的配置，然而A节点上要装BI应用服务，那么此时，A节点能为分布式提供的内存就会变少，就只能将A节点归为一组，B、C节点归为一组。

示例：

1）通过Manage Config Groups将group分为多组。A机器一组，B、C一组；

2）然后需要修改B、C机器的配置内容，选择非BIgroup的机器进行配置（点击

6、修改配置文件

经常存在已经配置好的内容需要重新修改的情况，按照如下图直接修改保存，按照提示操作即可。

有的情况下无法直接修改，存在


分布式引擎维护常见问题- FineReport帮助文档|报表开发|报表使用|学习教程

分布式引擎维护常见问题

1、Alluxio问题类

1.1 hdfs租约未释放，alluxio无法启动

现象：

其他分布式引擎服务（hdfs,spark,zookeeper）可以正常启动，但是ALLUXIO服务无法启动

场景：

Alluxio服务无法启动，查看Alluxio Master的日志（日志默认的路径为/home/hdfs/data/alluxio/logs/master.log）中有如下显示：ERROR logger.type (HdfsUnderFileSystem.java:open) - 1 try to open hdfs://ns/alluxio/journal/BlockMaster/completed/log.00000000000000000001 : Cannot obtain block length for LocatedBlock

日志截图：

执行如下命令：hdfs debug recoverLease -path /alluxio/journal/BlockMaster/completed/log.00000000000000000001，释放文件租约。

注意需要切换到hdfs用户，上述文件是示例实际文件按照具体的日志文件，可能会存在多个文件的情况。

备注：如上述方案解决不了请联系帆软技术支持。（现有的alluxio中已经处理过这个问题，不在会出现租约问题。）

1.2 alluxio启动，master的WebUI可以访问，但是没有worker

现象：alluxio启动，master的WebUI可以访问，但是没有worker。

问题原因分析：alluxio启动的时候主节点存在切换的情况，而workers依旧连接的旧的master。导致新的master没有注册到worker。worker需要等待超时才会重新连接，而默认的超时时间为10min，可用过ambari页面配置该时间。

解决方案：用过ambari页面配置时间alluxio.security.authentication.socket.timeout.ms=30000

1.3 alluxio写入不成功

现象：

其他分布式引擎服务（hdfs,spark,zookeeper）正常，但是ALLUXIO写入失败

场景：

当alluxio内存快用完的时候，alluxio无法写入

2017-12-13 14:33:06,762 ERROR logger.type (BlockDataServerHandler.java:handleBlockWriteRequest) - Error writing remote block : Failed to allocate 983018 bytes after 3 retries for blockId 18155783061504

日志截图：

1.4 alluxio block id已经存在

现象：

其他分布式引擎服务（hdfs,spark,zookeeper）正常，但是ALLUXIO写入失败

场景：

spider 的 log 中Failed to cache: java.io.IOException: Error writing blockId: 3058218041344, sessionId: 3591269729003750361, address: BIDB114/91.12.75.114:29999, message: Failed to write block.

日志截图：

1.关闭 BI，关闭 Allxuio；

2.在每台机器上执行

alluxio getConf alluxio.worker.tieredstore.level1.dirs.path

获得 HDD 的路径

（如果 alluxio 路径不存在，尝试执行：/usr/hdp/2.6.2.0-205/alluxio/bin/alluxio getConf alluxio.worker.tieredstore.level1.dirs.path）

3.该路径下会有一个 alluxioworker 文件夹，删除该文件夹下的全部文件；

4.重启 alluxio，重启BI；

注：1.没有抽取完成的需要重新抽取，已经抽取完的不影响； 2.可以对 Master 进行 format，不需要对 Worker 做 format。Worker 的 format会将 HDFS 中持久化的数据一并删除，这样需要重写导数。

2、HDFS问题类

2.1 做过了HA的HDFS服务无法正常启动

现象：

Ambari启动做过HA的HDFS以后出现了两个NameNode都是StandBy的情况，hdfs服务无法正常启动

场景：

ambari启动后，发现两个NameNode都是StandBy的，并且无法正常启动

日志截图：

由于HDFS异常结束，JouranlNode状态异常导致，在JournalNodes中有edits_inporgress_xxxxxx的文件存在，这写文件需要被移除

解决方案：

在所有的hdfs安装JouranlNodes的节点上查看 /hadoop/hdfs/journal/ns/current/ 文件目录是否有edits_inporgress_xxxxxx这样的文件，移除即可

rm /hadoop/hdfs/journal/ns/current/edits_inporgress_xxxxxx

3、Spark问题类

3.1 分布式计算的时候spark获取不到资源

现象：

alluxio抽数正常，但是在分布式计算的时候spark获取不到资源（在memory和cores都配置正确的情况下）

场景：

获取不到worker资源，控制台不停的输出以下warning：WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

日志截图：

3.2 Spark界面发现有存在遗留的app占用着资源

现象：

FineBI连接了分布式，在关闭BI并重新打开后，发现BI登录不上有报错，此时检查Spark界面发现有存在遗留的app占用着资源。

3.3 分布式锁和spark资源不足，导致互锁

现象：

用kettle删除数据，正常流程删除几万大概在10多s，偶尔会出现卡住， 然后报错，修改默认锁等待时间为10min，卡住时间也变为大概10min

场景：

多个应用一起操作一个分布式引擎的时候，spark资源不足。

spark资源是application级别的，kettle启动 -> 资源占用 kettle关闭 -> 资源释放

lock资源是运行级别的 开始运行 -> 加锁 运行完毕 -> 解锁

1. 先启动 kettle1 -> (运行一下，会成功) 它会先占用spark的资源 (运行的时候加锁，运行完成锁释放)
2. 然后再启动 kettle2，spark内存不够，等待资源
3. kettle2 点执行 -> kettle2会取得锁，但是取到锁之后想拉spark任务，是等待状态
4. kettle1再点执行 -> kettle1虽然有spark资源，但是呢，取不到锁
锁等待时间配置为了10min，10分钟过后报错。 （第二次执行失败）
如果有人把别处的kettle2关闭了，这时候kettle1 就又好了

上面的kettle1和kettle2可能不是同一个人，也可以不是同一个机器，只要是操作同一个表就有问题

解决方案：有如下很多种

1. 保证不会同时运行两个kettle应用。根据客户现场实际情况，一般不会出现多个kettle同时导入的场景，如果有此情况，想办法在不同的时间运行；如果客户比较特殊，不得不同时，见下

2. Kettle采用本地spark，不用共享的spark资源：在分布式配置文件(distributed.properties)文件中设置：distributed.spark.local.mode=true

3. 减少Kettle的Spark资源占用，令spark server的资源可以同时启动多个kettle而不需要等待: 在分布式配置文件(distributed.properties)文件中，根据spark服务器的实际资源，配置内存( 如distributed.spark.executor.memory=2g) 和 核心数(如 distributed.spark.executor.cores=4)

注：此问题并不是只在kettle场景下出现，比如部署多台FineBI分布式引擎，spark资源分配不足，导致有FineBI机器没有分配到spark资源，也极有可能出现上述问题 (解决方案同上第3点，修改分布式配置文件，改内存和核心数占用，或者联系开发人员，重新规划spark server的整体资源分配)。

3.4 spark 临时目录空间不足

现象：

FineBI连接了分布式，抽数失败。并且日志中报错如下：

14:40:23 http-nio-37799-exec-24 ERROR [standard] Job aborted due to stage failure: Task 0 in stage 2454.0 failed 4 times, most recent failure: Lost task 0.3 in stage 2454.0 (TID 18375, i-8m7ope9g, executor 2): java.io.FileNotFoundException: /tmp/spark-903244ba-4d5a-446f-b67e-8e95309c68b6/executor-cd591197-d452-4421-a776-93c6404d18b9/blockmgr-3deab159-41ec-472f-86ee-5a7626e85622/31/shuffle_1121_0_0.data.4d7755e7-0a8f-49d0-88e2-58b8daeb46c2 (No such file or directory)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(FileOutputStream.java:270)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    at org.apache.spark.storage.DiskBlockObjectWriter.initialize(DiskBlockObjectWriter.scala:103)
    at org.apache.spark.storage.DiskBlockObjectWriter.open(DiskBlockObjectWriter.scala:116)
    at org.apache.spark.storage.DiskBlockObjectWriter.write(DiskBlockObjectWriter.scala:237)
    at org.apache.spark.util.collection.WritablePartitionedPairCollection$$anon$1.writeNext(WritablePartitionedPairCollection.scala:56)
    at org.apache.spark.util.collection.ExternalSorter.writePartitionedFile(ExternalSorter.scala:699)
    at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:72)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:96)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:53)
    at org.apache.spark.scheduler.Task.run(Task.scala:109)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)

原因分析：

spark 临时目录空间不足；

解决方案：

1、登录ambari页面；

2、找到spark的配置页面；

3、确认spark_worker_dir的路径是不是在最大的磁盘下（不在的话，重新配置到最大空间的路径下）；

4、在spark-env中的content内加入，如果存在则改为如下，不存在则直接新增：
export SPARK_WORKER_DIR={{spark_worker_dir}}
export SPARK_LOCAL_DIRS={{spark_worker_dir}}

如下图：

注：如果已经是配置在最大磁盘空间，且磁盘空间不足。则需要沟通扩容。

4、其他分类

4.1 Windows系统安装BI，连接分布式引擎，可以抽数但是模板编辑、预览出不来数据

现象：

4.2 BI所有的组件，正常运行后崩溃，进程退出

现象：

BI所有的组件（BI本身，分布式引擎组件（spark，alluxio，hdfs）），正常运行后崩溃，进程退出，检查崩溃日志，发现是mmap失败，提示内存不足

场景：

以BI崩溃为例，容易发生在抽数过程中，BI的tomcat进程崩溃了，检查日志发现是mmap失败，并且可能出现BI启动会立刻崩溃，同样是mmap失败，提示内存不足，但是free检查发现系统有足够的内存

修改内存申请限制策略为0

编辑/etc/sysctl.conf ，改vm.overcommit_memory=1，然后sysctl -p 使配置文件生效

或者sysctl vm.overcommit_memory=1

4.3 Ambari启动任一服务都报错

现象：

用ambari启动分布式引擎的任一服务都启动失败，报错如下：

/usr/hdp 目录下放置了非ambari配置的文件

解决方案：

检查报错机器的/usr/hdp目录，应该只有两个文件夹，如下图：

将多余文件删除即可。

4.4 spark任务失败，报错Remote RPC client disassociated

现象：

spark运行过程中，出现任务失败的情况，具体报错是Remote RPC client disassociated。检查linux系统日志（/var/log/messages）,对应时间点有杀死进程日志

4.5 Ambari添加节点，连不上ambari repo

现象：

ambari添加节点，连接ambari repo时失败

http服务未启动

解决方案：

执行service httpd start命令启动http服务，如果启动失败，可能是selinux未关闭。通过getenforce来进行检查，setenforce 0 进行selinux的关闭

注：该设置为自动化部署脚本问题，在新版本中已经修复。


各组件日志路径查看- FineReport帮助文档|报表开发|报表使用|学习教程

各组件日志路径查看

1、描述

HDFS、ZooKeeper、Ambari Metrics、Spark2、ALLUXIO的日志路径默认都在/var目录、根目录下，如果空间不足可以修改这些路径。

下面我们详细介绍下如何在界面查看和修改各组件的日志路径。

2、HDFS

HDFS日志路径界面位置如下图所示：

3、Zookeeper

ZooKeeper日志路径界面位置如下图所示：

4、Spark

Spark2日志路径界面位置如下图所示：

5、Alluxio

ALLUXIO日志路径界面位置如下图所示：


分布式引擎常用Linux命令- FineReport帮助文档|报表开发|报表使用|学习教程

分布式引擎常用Linux命令

1、常用命令

1. jps、jps -l 可以用来查询进程；

2. alluxio指令

直接在Linux中执行 ./alluxio ；

./alluxio

如果报找不到命令，进入目录/usr/hdp/current/alluxio/bin 之下执行该命令；

3. hdfs指令

直接在Linux中执行 ./hadoop dfs；

./hadoop dfs

如果报找不到命令，进入目录/usr/hdp/current/hadoop-client/bin 之下执行该命令。


Spider引擎增加分布式节点- FineReport帮助文档|报表开发|报表使用|学习教程

Spider引擎增加分布式节点

1、描述

当用户已经通过自动化部署脚本部署过分布式引擎，但是当前分布式机器的性能不够需要添加机器时，可以通过脚本向已有集群中扩展新的机器。

2、增加节点操作

1） 配置ansible目录下的add_hosts文件（all_hosts文件不需要修改），将新加的机器ip和hostname写入文件；

a、【建议的做法】示例1，表示允许脚本自动执行集群节点的免密登录；

192.168.10.4 FineBI4 123456

b、 示例2，表示ABC三个机器做好了自身免密以及节点之间互相免密登录的配置；

192.168.10.4 FineBI4

2） 执行脚本完成增加节点；

操作系统 | 执行脚本
Centos6、RedHat6 | sh main_addhost_centos 6.sh |tee install.log 2>&1
Centos7、RadHat7 | sh main_addhost_centos7.sh |tee install.log 2>&1
Suse11sp4 | sh main_addhost_suse11.sh |tee install.log 2>&1
Suse12sp3 | sh main_addhost_suse12.sh |tee install.log 2>&1

等待执行完毕即可。

3） 界面的安装参考Spider分布式部署的安装步骤


Spider分布式引擎FAQ- FineReport帮助文档|报表开发|报表使用|学习教程

Spider分布式引擎FAQ

1、分布式集群部署两台，如果挂一台，Spider分布式引擎直接就用不了，为什么？

分布式架构中， 各个服务hdfs，spark，alluxio的高可用都依赖于zookeeper进行重新选举主节点。而zookeeper服务自身有高可用限制：2n+1台机器，超过n台机器挂掉就无法使用。2台机器，n等于0.5，所以挂掉1台机器，zookeeper服务则无法提供服务。相应的上层应用hdfs，spark，alluxio则无法重新选举。

为何分布式的节点数，推荐3台及3台以上？

推荐3台及3台以上。原因也是zookeeper服务的高可用限制，2n台机器与2n-1台机器的高可用性是一样的。也就是2台机器的高可用性和1台机器一样。4台机器的高可用性与3台机器一样。

2、Spider分布式环境下，数据在每台引擎都备份完整的一份，还都是部分？

1. 一份完整的数据一般是存在多个节点上的，因此研究某一台机器是不是完整没有意义；

2. 配置的完整份数(replication，即备份系数) 和实际的完整份数：系统总是会自动向配置的完整份数还原，只要实际存在1份完整数据，就认为数据是完整的可用的；

3. 数据完整性，和系统可不可以运行是两回事，因为还有计算的完整性，只有两者同时满足，系统才可以正常运行；

例如：

有ABCDE 5个节点，配置的数据完整份数是3，存入数据之后，实际的数据完整份数也是3。

1）在取数据时：

如果任意取出四台机器，不论是ABCD也好 ACDE也好，都可以保证有2份完整的数据；

如果任意取出三台机器，比如 ACD 或者 ABE 都可以保证有1份完整数据，你不用关心这一份数据具体是怎么个分部的，反正只要取三个节点，一定是有完整数据的；

如果任意取出两台节点，那就不能保证有一份完整数据了。此时数据可能不完整。

2）在宕机时，如果直接同时挂了2台机器 ( 挂掉的机器永不恢复 )：

剩余的三台一定会有一份完整数据 (理由同上述)；由于系统配置的完整份数是3，当前实际完整份数是1；

系统会自动同步，保证实际的完整份数还是3，此时，一共有三个节点，并且实际完整数量为3，所以只有在这种情况下，每个节点才都会有完整的数据一份；

当系统完成同步之后，其实还可以继续挂掉两台机器，最后只剩余一台，数据本身也是完整的。

综上所述：

如果配置的备份数量是n，那么每次可以同时宕机n-1台，允许不连续地宕机多次，不影响数据的完整性；

如果慢慢地宕机，即宕机完之后，给系统时间让其调整，那么最终即使只剩余一台，数据也是完整的。

3、系统可用性：到底挂了多少节点，系统就不可用了呢？

分析挂了多少个节点问题比较复杂，要根据各种情况，取最小值：

（1）数据管理节点(NameNode): 目前只能有两个，安装时指定，挂掉任意一个都没有问题，但是不能同时挂掉。

即表示如果系统挂掉两个节点，又刚好是NameNode，那系统无法正常运行。

（2）数据存储节节点(DataNode): 参考上述第二章节，关于数据完整性的分析；

（3）计算完整性：参考下面第四章节系统高可用说明中，关于如何选举部分。存活节点数过半，宕机节点数不足一半的情况下，计算是可以计算的。（此时假如数据是不完整的，系统并不能正常运算）；

例如：

有9个节点，配置完整数据份数为2，这样挂1台可以保证无问题 (其实挂2-3台，有可能也没问题，需要具体分析宕机的情况) -> 受数据完整性的影响；

有9个节点，配置完整数据份数为6，那可以宕机4台，且2台NameNode不能同时宕机 -> 受计算完整性影响；

推荐的分布式配置：

3个节点，配置数据完整份数replication（即备份系数）为2 (配多了也没效果)，允许宕机一台；

5个节点，配置数据完整份数为3，允许宕机两台；

4、系统高可用是什么意思？

高可用：系统在其中几台机器宕机的时候，可以正常工作，数据不会丢失，业务不会中止；

高可用的系统结构大概有两种：

（1）平行结构：每个节点都是平等的，没有主节点，不存在离不开谁的问题，谁走了系统照常运行；

优点：真正的高可用，没有特殊节点，不论挂掉哪个节点，系统都可以运行，加减节点很容易；

缺点：每个节点都不依赖别的节点，自己顾自己的业务，容易冲突，只能搞搞小系统，复杂点的逻辑无法实现；

（2）主从结构：当前主流的结构，有一个主节点，负责任务调度，解决冲突，加锁等操作；

优点：功能强大，大系统不得不采用这种结构，是唯一选择。从节点为平行节点，从节点挂掉几台，系统可以正常工作；

缺点：主节点为特殊节点，如果主节点挂了，系统就无法正常工作；

随着系统变大，主从结构是必然，那么解决主从结构的问题迫在眉睫：比如可以采用热备的方法，或者配置两个主节点等双机切换的方法。这些都是高可用的策略，可以缓解这方面的问题。但是上面的策略并不好，还是有特殊节点存在，只能算半高可用，它做不到任意节点可挂。

因此我们的系统结构：

在使用主从结构的前提下，希望吸收平行结构的优点，任意节点可挂，力求实现比较好的高可用方案：

系统中每个节点都是平行节点，通过选举，决定谁是主节点，每个节点都有可能成为主节点。如果当前的主节点挂了，可以通过选举，自动找出一个新的老大；如何选举呢？ 这和选人大代表是一样的，由半数投票选举产生，节点宕机等于弃权；如果弃权过半，是无法选出人大代表来的，系统也是如此，不能宕机半数节点。因此推荐奇数节点数量：2N+1 只允许挂N台，剩下的N+1过半，系统可以正常运行；(偶数节点数据其实也可以，原则一样，过半存活 2N台机器，必须存活N+1台，可以挂掉N-1台)。通过这个选举机制，同时实现了平行节点和主从结构，结合了两者的优点。

5、Spider引擎的分布式节点数是否可以无限扩展？

理论上是可以无限扩展，没有限制的。目前内部以及客户方最多测过的节点是6个节点，在20台节点之内不用考虑集群之间的通信问题。

注：考虑到机器更多（“更多”暂无量化标准，不做限制）之后，集群之间的通信问题，推荐节点数还是要控制在一定范围内的。

6、数据量过亿，现在要购买服务器，是主频低一点，核心数多好；还是核心数少，主频高一些好？

由于该性能指标依赖于具体场景以及没有相关测试过，因此无法给出量化值。一般来说，参考性能测试服务器Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz (16核32线程)即可。

为什么依赖于具体场景？

这和游戏性能的原理类似，很多游戏都是1～4线程运行的，超过这个值核心数再多也用不到。同理，BI的场景分类繁多，并不是所有场景都能用到所有的线程。对于单线程处理的场景，越高的主频越好；对于多线程处理的场景，多个核心优势就能体现出来。

当然，大部分的场景会使用多核优化，因此一般还是推荐常见的多核心服务器CPU。


授权注册- FineReport帮助文档|报表开发|报表使用|学习教程

授权注册

1、描述

从FineBI官网下载的FineBI软件是未注册版本，用户可以进行试用，但是为了正常使用，需要进行购买注册。

索引：

FineBI注册与未注册的区别

FineBI服务器注册步骤


FineBI注册与未注册的区别- FineReport帮助文档|报表开发|报表使用|学习教程

FineBI注册与未注册的区别

1、描述

从FineBI官网下载的FineBI软件是未注册版本，为便于用户进行FineBI功能测试，没有注册的版本包含所有功能，但是会存在以下的问题。

2、注册与未注册区别

登录FineBI数据决策系统http://localhost:37799/webroot/decision，点击管理系统>注册信息>版本信息，则可查看当前访问的服务器是否注册。下面分别介绍未注册与注册的区别。

2.1 未注册

未注册的，显示当前版本未注册，如下图：

因此我们建议用户购买FineBI并注册，再使用。注册方法见 FineBI服务器注册步骤 。

2.2 注册成功

注册成功时，在版本信息页面显示注册成功，如下图：

2.3 注册失败

注册失败时，提示注册失败，同时显示注册失败的原因，如下图：


FineBI服务器注册步骤- FineReport帮助文档|报表开发|报表使用|学习教程

FineBI服务器注册步骤

1、查看是否注册

管理员登录FineBI数据决策系统：http://localhost:37799/webroot/decision，点击管理系统>注册信息>版本信息，可查看当前访问的FineBI是否注册，未注册版本显示如下图：

2、注册步骤

FineBI有三种认证方式：

1）本地机器信息认证；

2）私有云认证，如何认证请参考私有云认证；

3）公有云认证，如何认证请参考公有云认证；

下面我们详细介绍如何进行本地机器信息认证。

2.1 导出注册信息

进入管理系统>注册信息>版本信息，点击立即注册。

认证方式选择本地机器信息认证，点击导出注册信息，如下图：

导出的结果为一个名为RegistrationInformation.rif的文件，文件中存储了BI工程的版本信息。将该注册信息发送给帆软商务邮箱business@fanruan.com。

2.2 给商务发送邮件

邮件格式如下：

标题：XXX公司注册FineBI正式授权文件

附件：上述导出的rif文件

注册方式：本地机器信息认证

注：1、不要打开生成RegistrationInformation.rif文件，否则会损坏文件，如果再将其发送给帆软商务，就会导致注册不成功。
2、在发送注册信息给帆软商务business@fanruan.com时，请务必注明公司名称，否则不予注册；
3、如果导出注册信息不成功，可直接将版本信息页面截图邮件发送给商务。

2.3 获取授权文件进行注册

商务收到邮件，核实无误后会为您生成一个FanRuan.lic授权文件，以邮件方式发送给您。

打开管理系统>注册信息>版本信息，点击上传lic文件，导入FanRuan.lic授权文件，如下图：

注：1、上传成功后，FineBI会自动将FanRuan.lic保存到您当前工程%FineBI%/webapps/webroot/WEB-INF/resources下。

2、如果服务器之前已经有lic，要更换lic的话，需先把服务器关掉，删除对应目录下的lic然后再重新导入。

3、验证是否注册成功

成功上传文件后刷新页面，在管理系统>注册信息>版本信息处，会显示注册成功，如下图：

FineBI产品的功能点以lic文件的形式控制。在注册成功后，点击功能列表，可以看到注册版本支持的功能，如下图：


移动端应用- FineReport帮助文档|报表开发|报表使用|学习教程

移动端应用

1、描述

FineBI的仪表板除了可以在PC端查看之外，还可以在移动端，如手机、pad端进行查看，让最终用户可以不通过PC就可以方便地用手指触摸的方式浏览查看系统中的模板。而查看的方式也有很多种，包括有数据分析app、微信、钉钉、手机浏览器等，下面将分章节介绍。

2、索引

移动端APP

移动设备绑定与撤销

APP仪表板查看

移动端集成

移动端Html5


移动端APP- FineReport帮助文档|报表开发|报表使用|学习教程

移动端APP

1、描述

FineBI不仅支持在PC端访问，同时还支持在移动端访问，其中包含ios、android、pad端。为了方便讲解，这边我们以IOS手机端为例，给大家介绍下该如何下载安装以及添加服务器。

2、操作步骤

2.1 下载安装

在FineBI官网下载APP,直接扫描二维码安装即可，安装完之后，对于ios来说，直接点开app会提示“未受信任的企业级开发者”，我们需要在“设置-通用-描述文件与设备管理”将“finereport software co.Ltd”添加信任项，添加之后如下图所示：

2.2 默认demo服务器加载

首次安装打开app，出现界面可选择“新建服务器”还是“查看demo”，这两者的区别是，如果选择“新建服务器”，则不加载FineReport和FineBI的demo服务器，反之则是加载且加载后不可删除这两个内置的demo服务器，除非将软件卸载重装，切记。如下图所示：

2.3 新建服务器

点击新建服务器，有两种添加服务器的方式，扫描二维码或者手动输入服务器地址，如下图，下面将分别介绍。

1）手动输入

选择手动输入的方式需要输入服务器名称和服务器地址，名称可以自定义，服务器地址：http://IP:端口/webroot/decision，如下图所示：

2）扫码输入

在PC端打开BI数据决策系统http://IP:端口/webroot/decision，点击管理系统>移动平台>二维码配置，输入服务器名称和服务器地址，如下图：

其中服务器名称可自定义，服务器地址就是http://IP:端口/webroot/decision。

生成二维码，右侧即可生成该服务器信息对应的二维码，如下图：

2.4 服务器列表

点击左下角的服务器，进入服务器列表，可以看到我们已经添加的服务器，支持同时添加多服务器。

深信服VPN选项，也就是移动端也支持vpn访问，如下图所示：

深信服VPN。

2.5 切换服务器

当登录一个服务器之后，如果想要切换成另一个服务器，直接在该服务器页面左滑即可进入服务器登录界面，如下图：

在登录界面选择左下角的服务器，进入服务器列表，选择其他服务器切换即可。


移动端设备绑定与撤销- FineReport帮助文档|报表开发|报表使用|学习教程

移动端设备绑定与撤销

1、描述

为了增强移动端的登录机制验证，保证数据的安全性，FineReport提供了移动设备绑定的功能，每个系统用户在除了首次登录的移动端设备不需要授权，使用第二台及以后的设备需要管理员授权，将用户的移动设备与系统绑定起来，如果管理员没有给设备授权，则无法登录。

注：给移动设备授权，需要配合用户使用，也就是说用户只能使用固定的一台或几台设备登录系统，如果使用别的设备登录，但是该设备没有授权，也是无法登陆的，如果在一台已授权的设备上切换账号登录，还需再次给该切换的账号授权。

另：一个新的工程，第一个用户使用移动端登录时，不需要管理员授权，比如说，用户Anna是整个工程第一个用户使用移动端登录的，那么Anna使用的这台设备不需要授权，可以直接连接，以后的别的设备使用用户Anna登录就需要授权了。

2、移动设备绑定

2.1 开启移动设备绑定

FineBI的移动设备绑定功能默认是关闭的，使用之前先要开启，在PC端的浏览器地址栏中输入http://IP:端口/webroot/decision（根据实际服务器地址输入），使用管理员账号登录，点击管理系统>移动平台>设备绑定，开启移动设备绑定，如下图：

2.2 第一个设备登录

先在一台机器上使用管理员账号连接该工程，可以直接登录，不需要给设备授权。管理员在PC端登录数据决策系统，进入管理系统>移动平台>设备绑定，可以看到已授权设备上显示了已经有用户绑定的设备的mac地址，如下图：

注：第一次用移动端登录系统的用户不一定要管理员，任何用户第一次登录的时候都会自动绑定。

另：A用户在第一台a设备登录时不需要授权，B用户在第二台b设备登录也不需要授权；当A用户在第二台b设备登录时，才需要授权。

2.3 第二个设备登录

单个帐号第一台设备登录系统之后，使用相同帐号在第二个及以后的设备上的移动端登录系统就需要管理员授权。当在另外一台设备上，根据添加服务器配置好服务器之后，使用相同账号登录，点击登录，会弹出下图的警告框：

未授权设备中新增了一条记录，表示该用户在另外一台设备上登录系统，需要给该设备授权。

点击后面的解锁按钮，将未授权设备移动到已授权设备面板中，即对未授权设备授权：

3、移动设备授权撤销

在实际应用中，一个用户基本上只会绑定一个设备，如果该设备遗失或者损坏的时候才会使用另外一个设备，那么，如果某用户经常使用的设备丢失了，要将移动端绑定在另外一个设备上，但是已丢失的设备是跟系统绑定的，这样会导致数据不安全。

拥有移动平台使用权限的用户，一般是管理员，在PC端登录系统，进入管理系统>移动平台>设备绑定，可直接删除未授权设备和已授权设备下面的设备，如下图：


APP模板查看- FineReport帮助文档|报表开发|报表使用|学习教程

APP模板查看

1、描述

配置好服务器，管理员对该设备授权之后，就可以在移动设备上查看模板了。当前教程就使用IOS系统的页面样式，如果使用平板或者安卓的也基本类似。

2、操作步骤

移动端登录系统之后，进入平台目录选择界面，如下图：

目录>模板即可查看对应模板。

2.1 模板批注

在查看模板的时候点击下方的

选择下方的工具可以在模板上进行批注，同时还可以撤销前面所作操作，如下图所示：

2.2 模板分享

进入模板批注界面后，在右上角有一个向上的箭头按钮， 点击后可以通过邮件/微信的方式分享给其他人，如下图所示：


移动端集成- FineReport帮助文档|报表开发|报表使用|学习教程

移动端集成

1、索引

移动端sdk集成

Html5集成：

移动端Html5

微信集成

钉钉集成


移动端sdk集成- FineReport帮助文档|报表开发|报表使用|学习教程

移动端sdk集成

1、描述

客户有自己的app，希望把我们的移动端功能集成到他们的app里面去，而不需要安装两个app。或者想要修改 app的图标、logo、内置服务器等OEM操作。可以调用提供的sdk接口进行个性化定制。Android端和IOS端的集成接口是不一样的。(只适用数据分析8.0)

IOS资源包下载：http://dn-finereportmobiledemo.qbox.me/ios.html
Android资源包下载：http://dn-finereportmobiledemo.qbox.me/android.html

2、具体步骤

详细请查看appoem。


微信集成- FineReport帮助文档|报表开发|报表使用|学习教程

微信集成

1、索引

旧版微信升级企业微信

企业微信(新微信企业号)集成


企业微信(新微信企业号)集成- FineReport帮助文档|报表开发|报表使用|学习教程

企业微信(新微信企业号)集成

1、创建企业微信应用

企业微信中创建微信应用的方法参考创建企业微信应用。

2、插件安装

2.1 版本

FineBI版本 | jar包版本 | 微信管理插件版本
4.1 | 2018-4-26 | v3.0.0

2.2 FineBI服务器要求

您的FineBI所在服务器必需是能够访问外网的，如果是http协议则访问端口推荐使用80，如果是https协议访问端口推荐使用443。

2.3 微信管理插件安装

为了简化微信集成，FineBI开发了微信管理插件，将微信的相关配置从后台转为前台可视化界面操作，实现了微信集成基本信息配置、内置回调URL验证、同步微信通讯录并与报表用户关联实现单点登录以及定时发送消息至微信成员。FineBI还在继续开发常用的管理界面。

a. 安装微信插件

插件安装方法参考插件安装

b. 安装后的效果

安装微信管理插件后，打开FineBI数据决策系统，管理系统下会增加“微信管理”节点，微信相关的配置管理都将会放在这个节点中去配置：

文件处理>客户端通知中，会增加“微信通知”，如下图：

微信管理插件的使用我们在回调模式配置及定时推送消息至微信中详细介绍。

2.4 移动端浏览器插件

FineBI同时开发了手机浏览器HTML5浏览方式，实现手机浏览器中模板的自适应等效果。详细请查阅 移动端Html5。

3、索引

插件安装完成后可进行微信集成的操作，具体操作请参考下面链接：

微信管理

企业微信应用配置

个人微信查看企业应用

推送微信消息

微信单点登录及权限控制

升级兼容说明

注：其中推送微信消息中的定时任务>本地文件目前只支持FineReport的cpt模板，暂时不支持FineBI的模板。


钉钉集成- FineReport帮助文档|报表开发|报表使用|学习教程

钉钉集成

1、索引

钉钉集成插件

钉钉集成多个应用会导致access token冲突的问题


钉钉集成插件- FineReport帮助文档|报表开发|报表使用|学习教程

钉钉集成插件

1、描述

除了微信企业号外，企业用钉钉的也比较多，因此FineBI对应开发了一个钉钉集成插件，类似微信一样，可以实现单点登陆查看模板。

2、钉钉管理插件安装

2.1 插件安装

目前FineBI集成到钉钉中，除了钉钉管理插件外，还需要安装H5插件。

插件地址：钉钉管理插件

FineBI安装插件方法参照：插件安装

Html5插件安装方法参照：移动端Html5

注：钉钉集成不需要修改xml文件。

2.2 安装插件后效果

钉钉管理插件安装并重启FineBI后，登录FineBI数据决策系统，管理系统下会增加钉钉管理节点，钉钉相关的配置管理都将会放在这个节点中去配置。

同时，设置定时调度的任务里最后一步文件处理设置中，客户端通知里会增加推送钉钉消息，如下图：

3、钉钉企业应用

钉钉企业应用的详细设置可参考钉钉企业应用，其中在2.5章节定时任务的消息推送中本地文件目前只支持FineReport的cpt模板，不支持FineBI模板。


函数- FineReport帮助文档|报表开发|报表使用|学习教程

函数

1、描述

FineBI使用过程中，在自助数据集、仪表板驾驶舱中均存在添加公式/函数，FineBI支持多种函数，包括数值、文本、时间、数组等。

2、自助数据集函数

在创建自助数据集进行数据加工时，在新增列、过滤等操作中，可添加公式进行数据处理，在添加公式的时候FineBI提供了添加函数到公式的功能。支持的函数下图所示，包括常用函数、数值函数、文本函数、时间函数、数组函数、逻辑函数、其他函数。

3、计算指标函数

在驾驶舱编辑仪表板添加计算指标的时候，同样可以添加函数到公式中对数据进行处理，与自助数据集不同的是，计算指标中增加了聚合函数。支持的函数如下图所示，包括聚合函数、数值函数、文本函数、时间函数、数组函数、逻辑函数和其他函数。

4、函数操作

在使用函数的时候，点击“>>”可展开所有支持的函数，如下图：

5、索引

详细的各函数的释义请查看下面索引：

常用函数

聚合函数

数值函数

文本函数

时间函数

数组函数

逻辑函数

其他函数


常用函数- FineReport帮助文档|报表开发|报表使用|学习教程

常用函数

1、IF

IF(boolean,number1/string1,number2/string2)：判断函数，boolean为true时返回第二个参数，为false时返回第三个。

boolean：用于判断的布尔值，true或者false。

number1/string1：第一个参数，如果boolean为true，返回这个值。

number2/string2：第二个参数，如果boolean为false，返回这个值。

示例：

IF(true,2,8)等于2；

IF(false,"first","second")等于second；

IF(true,"first",7)等于first。

2、SUM

SUM(number1,number2,...)：求一个指定单元格区域中所有数字之和。Number1,number2,...：1到30个参数或指定单元格区域中所有数字。
备注：函数将直接键入参数中的数值、逻辑值及文本表达式计算在内。若参数是数值或引用，则只有数组或单元格引用中的数值进行计算。
示例：
SUM(70,80)等于150；
SUM("70",80,TRUE)等于151，逻辑值“TRUE”作为1来计算；“FALSE”作为0计算；文本“70”作为70来计算。

3、ABS

ABS(number)：返回指定数字的绝对值。绝对值是指没有正负符号的数值。Number：需要求出绝对值的任意实数。
示例：
ABS(-1.5)等于1.5；
ABS(0)等于0；
ABS(2.5)等于2.5。

4、ROUND

ROUND(number,num_digits)：返回某个数字按指定位数舍入后的数字。number：需要进行舍入的数字。num_digits：指定的位数，按此位数进行舍入。如果num_digits大于0，则舍入到指定的小数位。如果num_digits等于0，则舍入到最接近的整数。如果num_digits小于0，则在小数点左侧进行舍入。
示例：
ROUND(2.15,1)等于2.2；
ROUND(2.149,1)等于2.1；
ROUND(-1.475,2)等于-1.48；
ROUND(21.5,-1)等于20。
因浮点数存在精度计算丢失的问题，导致计算结果可能带上9999，0000这些，因此加入第三个参数true来控制是否需要去除9999，true表示需要过滤9999，0000这些数据。

5、INT

INT(number)：返回数字下舍入（数值减小的方向）后最接近的整数值。Number：需要下舍入为整数的实数。
示例：
INT(4.8)等于4；
INT(-4.8)等于-5；
INT(4.3)等于4；
INT(-4.3)等于-5。
公式INT(A1)将返回A1单元格中的一个正实数的整数部分。


聚合函数- FineReport帮助文档|报表开发|报表使用|学习教程

聚合函数

1、描述

当在添加计算指标，需要先进行汇总，再进行二次计算时，在添加计算字段的时候通过聚合函数提供了不同汇总方式选择，包括求和，平均，中位数，最大值，最小值，标准差，方差，去重计数，计数。当将包含聚合函数的计算指标添加到组件的指标栏后，随着用户分析维度的切换，计算字段数据会自动跟随维度动态调整。

如某公司明细数据为日期、销售额、工作时间。按照日分析单位工作时间产出时，需要按照日统计销售额汇总值，再除以按照日汇总的工作时长；而有时需要按照月分析单位时间产出，此时需要按照月统计销售额汇总值，再除以按照月汇总的工作时长。此时可利用聚合函数创建计算字段 sum_agg(销量)/sum_agg(时长)，然后随着用户分析的维度日或月切换时，计算字段数据自动跟随维度调整为日产出或月产出。

2、MIN_AGG

MIN_AGG(array)：根据当前分析维度，动态返回指标字段的最小值，生成结果为一动态数据列，行数与当前分析维度行数一致。

array必须为非聚合函数公式返回的结果，可以是某指标字段、维度或指标字段与普通公式的计算结果。

示例：

用户横轴为维度字段'日'时，纵轴的计算字段MIN_AGG(销量)返回的值为每日的最小值销量；

当用户横轴为维度字段'月'时，MIN_AGG(销量)返回的值为每月的最小值销量。

3、COUNT_AGG

COUNT_AGG(array)：根据当前分析维度，动态返回某字段的计数，生成结果为一动态数据列，行数与当前分析维度行数一致。

array必须为非聚合函数公式返回的结果，可以是某指标字段、维度或指标字段与普通公式的计算结果。

示例：

用户横轴为维度字段'日'时，纵轴的计算字段COUNT_AGG(销量)返回的值为每日的销量的个数；

当用户横轴为维度字段'月'时，COUNT_AGG(销量)返回的值为每月的销量的个数。

4、MAX_AGG

MAX_AGG(array)：根据当前分析维度，动态返回指标字段的最大值，生成结果为一动态数据列，行数与当前分析维度行数一致。

array必须为非聚合函数公式返回的结果，可以是某指标字段、维度或指标字段与普通公式的计算结果。

示例：

用户横轴为维度字段'日'时，纵轴的计算字段MAX_AGG(销量)返回的值为每日的最大值销量；

当用户横轴为维度字段'月'时，MAX_AGG(销量)返回的值为每月的最大值销量。

5、MEDIAN_AGG

MEDIAN_AGG(array)：根据当前分析维度，动态返回指标字段的中位数，生成结果为一动态数据列，行数与当前分析维度行数一致。

array必须为非聚合函数公式返回的结果，可以是某指标字段、维度或指标字段与普通公式的计算结果。

示例：

用户横轴为维度字段'日'时，纵轴的计算字段MEDIAN_AGG(销量)返回的值为每日的中位数销量；

当用户横轴为维度字段'月'时，MEDIAN_AGG(销量)返回的值为每月的中位数销量。

6、COUNTD_AGG

COUNTD_AGG(array)：根据当前分析维度，动态返回某字段的去重计数，生成结果为一动态数据列，行数与当前分析维度行数一致。

array必须为非聚合函数公式返回的结果，可以是某指标字段、维度或指标字段与普通公式的计算结果。

示例：

用户横轴为维度字段'日'时，纵轴的计算字段COUNTD_AGG(销量)返回的值为每日的销量的去重个数；

当用户横轴为维度字段'月'时，COUNTD_AGG(销量)返回的值为每月的销量的去重个数。

7、VAR_AGG

VAR_AGG(array)：根据当前分析维度，动态返回指标字段的方差，生成结果为一动态数据列，行数与当前分析维度行数一致。

array必须为非聚合函数公式返回的结果，可以是某指标字段、维度或指标字段与普通公式的计算结果。

示例：

用户横轴为维度字段'日'时，纵轴的计算字段VAR_AGG(销量)返回的值为每日的销量方差；

当用户横轴为维度字段'月'时，VAR_AGG(销量)返回的值为每月的销量方差。

8、AVG_AGG

AVG_AGG(array)：根据当前分析维度，动态返回指标字段的汇总平均值，生成结果为一动态数据列，行数与当前分析维度行数一致。

array必须为非聚合函数公式返回的结果，可以是某指标字段、维度或指标字段与普通公式的计算结果。

示例：

用户横轴为维度字段'日'时，纵轴的计算字段AVG_AGG(销量)返回的值为每日的平均销量；

当用户横轴为维度字段'月'时，AVG_AGG(销量)返回的值为每月的平均销量。

9、STDEV_AGG

STDEV_AGG(array)：根据当前分析维度，动态返回指标字段的标准差，生成结果为一动态数据列，行数与当前分析维度行数一致。

array必须为非聚合函数公式返回的结果，可以是某指标字段、维度或指标字段与普通公式的计算结果。

示例：

用户横轴为维度字段'日'时，纵轴的计算字段STDEV_AGG(销量)返回的值为每日的销量标准差；

当用户横轴为维度字段'月'时，STDEV_AGG(销量)返回的值为每月的销量标准差。

10、SUM_AGG

SUM_AGG(array)：根据当前分析维度，动态返回指标字段的汇总求和值，生成结果为一动态数据列，行数与当前分析维度行数一致。

array必须为非聚合函数公式返回的结果，可以是某指标字段、维度或指标字段与普通公式的计算结果。

示例：

用户横轴为维度字段'日'时，纵轴的计算字段SUM_AGG(销量)返回的值为每日的汇总销量；

当用户横轴为维度字段'月'时，SUM_AGG(销量)返回的值为每月的汇总销量。

11、示例

比如当要在数据分析时添加平均销售额的计算指标，该平均销售额由合同金额除以购买数量得到，就需要先进行合同金额的汇总再计算。

如下图，添加计算指标后，选择SUM_AGG函数，用户汇总合同金额，并添加计算符除以用户汇总的购买数量字段。

确定保存该计算指标，此时我们将该平均销售额拖入轴中显示，该平均销售额中的合同金额及购买数量会根据维度的不同先进行汇总，再计算得出不同维度下的平均销售额数值。如下图为根据不同年份动态生成平均销售额的计算数据。


数值函数- FineReport帮助文档|报表开发|报表使用|学习教程

数值函数

1、描述

数值函数包含绝对值，平均，二进制取反运算，位运算，取整，组合，余弦，双曲线余弦，求个数，弧度转化为度，偶数，指数，阶乘，取整，四舍五入，对数，最大值，最小值，余数，取余，奇数，pi，乘幂，角度转换成弧度，随机数，随机整数，奇进偶不进，平方根，求和，平方和，加权平均。

所有函数使用范围为数值字段，部分函数允许添加一些指定参数数值。

2、RAND

RAND()：返回均匀分布的随机数。每计算一次工作表，函数都会返回一个新的随机数值。
备注：要生成一个位于a和b之间的随机数，可以使用以下的公式：C=RAND()*(b-a)+a。如果要使一个随机产生的数值不随单元格的重计算而改变，可以在编辑框中输入=RAND()并保持编辑状态，然后按F9，将公式永久性的改为随机数。
示例：
假如需要生成一个大于等于0，小于60的随机数，使用公式：=RAND()*60。
假如需要生成一个大于等于0，小于19的随机数，使用公式：=RAND()*19。

假如需要生成一个大于等于0，小于50的随机数，使用公式：=RAND()*50。

3、SQRT

SQRT(number)：返回一个正数的平方根。Number：要求其平方根的任一正数。
备注：Number必须是一个正数，否则函数返回错误信息*NUM!。
示例：
SQRT(64)等于8；
SQRT(-64)返回*NUM!。

4、LOG10

LOG10(number)：返回以10为底的对数。number：用于常用对数计算的正实数。
示例：
LOG10(86)等于1.934498451；
LOG10(10)等于1；
LOG10(1E5)等于5。

5、FLOOR

FLOOR(number)：将参数number沿绝对值减小的方向去尾舍入。Number：待舍入的数值。
示例：
FLOOR(-2.5)等于-2；
FLOOR(2.5)等于2。

6、LOG

LOG(number,base)：按指定的任意底数，返回数值的对数。Number：需要求对数的正实数。Base：对数的底数。如果省略底数，默认值为10。
示例：
LOG(16,2)等于4；
LOG(10)等于1；
LOG(24,3)等于2.892789261。

7、SUM

SUM(number1,number2,...)：求一个指定单元格区域中所有数字之和。Number1,number2,...：1到30个参数或指定单元格区域中所有数字。
备注：函数将直接键入参数中的数值、逻辑值及文本表达式计算在内。若参数是数值或引用，则只有数组或单元格引用中的数值进行计算。
示例：
SUM(70,80)等于150；
SUM("70",80,TRUE)等于151，逻辑值“TRUE”作为1来计算；“FALSE”作为0计算；文本“70”作为70来计算。

8、MIN

MIN(number1,number2,...)：返回参数列表中的最小值。Number1,number2,...：1到30个需要找出最小值的参数。
备注：若参数中没有数字，函数MIN将返回0。
参数应为数字、空白单元格、逻辑值或是表示数值的文本串。如果参数是错误值时，MIN将返回错误信息。如果数组或引用参数中包含可解析文本值、逻辑值、零值或空白单元格，这些值都将参与计算，而不可解析的文本值忽略不计。
示例：
如果B1:B4包含3，6，9，12，则MIN(B1:B4)等于3；MIN(B1:B4,0)等于0。

9、COUNT

COUNT(value1,value2,...)：计算数组或数据区域中所含项的个数。Value1,value2,...：可包含任何类型数据的参数。

10、EVEN

EVEN(number)：返回沿绝对值增大方向取整后最接近的偶数。使用该函数可以处理那些成对出现的对象。number：所要取整的数值。不论正负号如何，数值都朝着远离0的方向舍入。如果number恰好是整数，则不须进行任何舍入处理。
示例：
EVEN(1.5)等于2；
EVEN(3)等于4；
EVEN(2)等于2；
EVEN(-1)等于-2。

11、MAX

MAX(number1,number2,...)：返回参数列表中的最大值。Number1,number2,...：1到30个需要找出最大值的参数。
备注：参数可以是数字、空白单元格、逻辑值或数字的文本表达式。
如果数组或引用参数中包含可解析文本值、逻辑值、零值或空白单元格，这些都将参与计算，而不可解析的文本值忽略不计。如果参数中没有任何数字，MAX将返回0。
示例：
MAX(0.1,0,1.2)等于1.2。

12、TRUNC

TRUNC(number,num_digits)：将数字的小数部分截去，返回整数。number：需要截尾取整的数字。num_digits：用于指定取整精度的数字。
示例：
TRUNC(8.9)等于8；
TRUNC(-8.9)等于-8；
TRUNC(PI())等于3。

13、FACT

FACT(number)：返回数的阶乘，一个数的阶乘等于1*2*3*...*该数。number：要计算其阶乘的非负数。如果输入的number不是整数，则截尾取整。
示例：
FACT(1)等于1；
FACT(1.9)等于FACT(1)等于1；
FACT(0)等于1；
FACT(5)等于1*2*3*4*5等于120。

14、RANDBETWEEN

RANDBETWEEN(value1,value2)：返回value1和value2之间的一个随机整数。
示例：
RANDBETWEEN(12.333,13.233)只会返回13；
RANDBETWEEN(11.2,13.3)有可能返回12或者13。

15、ABS

ABS(number)：返回指定数字的绝对值。绝对值是指没有正负符号的数值。Number：需要求出绝对值的任意实数。
示例：
ABS(-1.5)等于1.5；
ABS(0)等于0；
ABS(2.5)等于2.5。

16、SUMSQ

SUMSQ(number1,number2,...)：返回所有参数的平方和。number1,number2,...：为1到30个需要求平方和的参数，也可以使用数组或对数组的引用来代替以逗号分隔的参数。
示例：
SUMSQ(3,4)等于25。

17、LN

LN(number)：返回一个数的自然对数。自然对数以常数项e（2.71828182845904）为底。number：是用于计算其自然对数的正实数。
示例：
LN(86)等于4.45437；
LN(2.7182818)等于1；
LN(EXP(3))等于3；
EXP(LN(4))等于4。

18、DECIMAL

DECIMAL(number)：返回number的大数类型，常用于精确计算。

19、SIGN

SIGN(number)：返回数字的符号。当数字为正数时返回1，为零时返回0，为负数时返回-1。Number：为任意实数。
示例：
SIGN(10)等于1；
SIGN(4-4)等于0；
SIGN(-0.00001)等于-1。

20、CEILING

CEILING(number)：将参数number沿绝对值增大的方向，舍入为最接近的整数。Number：指待舍入的数值。
示例：
CEILING(-2.5)等于-3；
CEILING(0.5)等于1。

21、ROUNDDOWN

ROUNDDOWN(number,num_digits)：靠近零值，向下（绝对值减小的方向）舍入数字。number：为需要向下舍入的任意实数。num_digits：舍入后的数字的位数。函数ROUNDDOWN和函数ROUND功能相似，不同之处在于函数ROUNDDOWN总是向下舍入数字。
示例：
ROUNDDOWN(3.2,0)等于3；
ROUNDDOWN(76.9,0)等于76；
ROUNDDOWN(3.14159,3)等于3.141；
ROUNDDOWN(-3.14159,1)等于-3.1；

ROUNDDOWN(31415.92654,-2)等于31400。

22、ROUND

ROUND(number,num_digits)：返回某个数字按指定位数舍入后的数字。number：需要进行舍入的数字。num_digits：指定的位数，按此位数进行舍入。如果num_digits大于0，则舍入到指定的小数位。如果num_digits等于0，则舍入到最接近的整数。如果num_digits小于0，则在小数点左侧进行舍入。
示例：
ROUND(2.15,1)等于2.2；
ROUND(2.149,1)等于2.1；
ROUND(-1.475,2)等于-1.48；
ROUND(21.5,-1)等于20。
因浮点数存在精度计算丢失的问题，导致计算结果可能带上9999，0000这些，因此加入第三个参数true来控制是否需要去除9999，true表示需要过滤9999，0000这些数据。

23、WEIGHTEDAVERAGE

WEIGHTEDAVERAGE(A1:A4,B1:B4)：返回指定数据的加权平均值。加权平均数是不同比重数据的平均数，加权平均数就是把原始数据按照合理的比例来计算。A1:A4,B1:B4：用于计算平均值的参数，A1~A4为数据，B1~B4为权值。
示例：
如果A1:A4为10,9,8,7，B1:B4为0.2,0.1,0.3,0.4，则WEIGHTEDAVERAGE(A1:A4,B1:B4)等于8.1。

24、INT

INT(number)：返回数字下舍入（数值减小的方向）后最接近的整数值。Number：需要下舍入为整数的实数。
示例：
INT(4.8)等于4；
INT(-4.8)等于-5；
INT(4.3)等于4；
INT(-4.3)等于-5。
公式INT(A1)将返回A1单元格中的一个正实数的整数部分。

25、AVERAGE

AVERAGE(number1,number2,...,countstring)：返回指定数据的平均值。Number1,number2,...：用于计算平均值的参数；countstring：文字、逻辑值是否参与计数。
备注：参数必须是数字，或是含有数字的名称、数组或引用。
如果数组或引用参数中含有文字、逻辑值，默认参与计数，countstring为false则不参与计数；空单元格始终不参与计数，但是，单元格中的零值参与。
示例：
如果A1:A6被命名为“ages”，分别等于10,23，文字，29,33及25，则：AVERAGE(A1:A6)等于20；AVERAGE(A1:A6,false)等于24；AVERAGE(ages)等于20。如果还有一个年龄为27的，求所有年龄的平均值为：AVERAGE(A1:A6,27)等于21。

26、MOD

MOD(number,divisor)：返回两数相除的余数。结果的正负号与除数相同。number：为被除数。divisor：为除数。
示例：
MOD(3,2)等于1；
MOD(-3,2)等于1；
MOD(3,-2)等于-1；
MOD(-3,-2)等于-1。

27、ROUND5

ROUND5(number,num_digits)：这个是四舍五入，奇进偶不进。number：需要进行舍入的数字。num_digits：指定的位数，按此位数进行舍入。如果num_digits大于0，则舍入到指定的小数位。如果num_digits等于0，则舍入到最接近的整数。如果num_digits小于0，则在小数点左侧进行舍入。
示例：
ROUND5(2.125,2)等于2.12；
ROUND5(2.135,2)等于2.14。

28、ROUNDUP

ROUNDUP(number,num_digits)：远离零值，向上（绝对值增大的方向）舍入数字。number：为需要向上舍入的任意实数。num_digits：舍入后的数字的位数。函数ROUNDUP和函数ROUND功能相似，不同之处在于函数ROUNDUP总是向上舍入数字。
示例：
ROUNDUP(3.2,0)等于4；
ROUNDUP(76.9,0)等于77；
ROUNDUP(3.14159,3)等于3.142；
ROUNDUP(-3.14159,1)等于-3.2;
ROUNDUP(31415.92654,-2)等于31500。

29、PROMOTION

PROMOTION(value1,value2)：返回value2在value1上提升的比例。
示例：
PROMOTION(12,14)等于0.166666666，即提升了16.6666666%；
PROMOTION(-12,14)等于2.166666666，即提升了216.6666666%。

30、EXP

EXP(number)：返回e的n次幂。常数e为自然对数的底数，等于2.171828182845904。Number：为任意实数，作为常数e的指数。
备注：如果要返回其他常数作为底数的幂，可以使用指数运算符（^）。例如在4^2中，4是底数，而2是指数。EXP函数与LN函数互为反函数。
示例：
EXP(0)等于1；
EXP(3)等于20.08553692；
EXP(LN(2))等于2。


文本函数- FineReport帮助文档|报表开发|报表使用|学习教程

文本函数

1、TRIM

TRIM(text)：清除文本中所有空格，单词间的单个空格除外，也可用于带有不规则空格的文本。
Text：需要清除空格的文本。
示例：
TRIM(" Monthly Report")等于Monthly Report。

2、FORMAT

FORMAT(object,format) : 返回object的format格式。
object：需要被格式化对象，可以是String，数字，Object(常用的有Date, Time)。format：格式化的样式。
示例：
FORMAT(1234.5, "#,##0.00") => 1234.50
FORMAT(1234.5, "#,##0") => 1234
FORMAT(1234.5, "￥#,##0.00") => ￥1234.50
FORMAT(1.5, "0%") => 150%
FORMAT(1.5, "0.000%") => 150.000%
FORMAT(6789, "##0.0E0") => 6.789E3
FORMAT(6789, "0.00E00") => 6.79E03
FORMAT(date(2007,1,1), "EEEEE, MMMMM dd, yyyy") => 星期一，一月 01，2007
FORMAT(date(2007,1,13), "MM/dd/yyyy") => 01/13/2007
FORMAT(date(2007,1,13), "M-d-yy") => 1-13-07
FORMAT(time(16,23,56), "h:mm:ss a") => 4:23:56 下午
注：format对日期的操作，日期的大小写必须按照年份小写yy或yyyy，月份大写M或MM，日期小写d或dd。

3、ENDWITH

ENDWITH(str1,str2)：判断字符串str1是否以str2结束。 备注: str1和str2都是大小写敏感的。
示例：
ENDWITH("FineReport","Report")等于true
ENDWITH("FineReport","Fine")等于false。
ENDWITH("FineReport","report")等于false。

4、NUMTO

NUMTO(number,bool)或NUMTO(number)：返回number的中文表示。其中bool用于选择中文表示的方式，当没有bool时采用默认方式显示。
示例：
NUMTO(2345,true)等于二三四五；
NUMTO(2345,false)等于二千三百四十五；
NUMTO(2345)等于二千三百四十五。

5、ENMONEY

ENMONEY(value)：将给定的BigDemical类型的数字转换成英文金额字符串。
示例：
ENMONEY(23.49)等于TWENTY THREE AND CENTS FORTY NINE。

6、LEFT

LEFT(text,num_chars)：根据指定的字符数返回文本串中的第一个或前几个字符。
Text：包含需要选取字符的文本串或单元格引用。
Num_chars：指定返回的字符串长度。
备注： Num_chars的值必须等于或大于0。如果num_chars大于整个文本的长度，LEFT函数将返回所有的文本。如果省略num_chars，则默认值为1。
示例：
LEFT("Fine software",8)等于“Fine sof”；
LEFT("Fine software")等于“F”；
如果单元格A3中含有“China”，则LEFT(A3,2)等于“Ch”。

7、SUBSTITUTE

SUBSTITUTE(text,old_text,new_text,instance_num)：用new_text替换文本串中的old_text。
Text：需要被替换字符的文本，或含有文本的单元格引用；
Old_text：需要被替换的部分文本；
New_text：用于替换old_text的文本。
Instance_num：指定用new_text来替换第几次出现的old_text。如果指定了instance_num，则只有指定位置上的old_text被替换，否则文字串中出现的所有old_text都被new_text替换。
备注： 如果需要替换字段值中的指定文本，则使用SUBSTITUTE函数；如果需要替换字段值中指定位置上的任意文本，则使用REPLACE函数。
示例：
SUBSTITUTE("data base","base","model")等于“data model”；
SUBSTITUTE("July 28, 2000","2","1",1)等于“July 18, 2000”；
SUBSTITUTE("July 28, 2000","2","1")等于“July 18, 1000”；
SUBSTITUTE("July 28, 2000","2","1",2)等于“July 28, 1000”。

8、MID

MID(text,start_num,num_chars)：返回文本串中从指定位置开始的一定数目的字符，该数目由用户指定。
Text：包含要提取字符的文本串；
Start_num：文本中需要提取字符的起始位置。文本中第一个字符的start_num为1，依此类推；
Num_chars：返回字符的长度；
备注： 如果start_num大于文本长度，MID函数返回“”（空文本）。
如果start_num小于文本长度，并且start_num加上num_chars大于文本长度，MID函数将从start_num指定的起始字符直至文本末的所有字符。
如果start_num小于1，MID函数返回错误信息*VALUE!。
如果num_chars是负数，MID函数返回错误信息*VALUE!。
示例:
MID("Finemore software",10,8)返回“software”；
MID("Finemore software",30,5)返回“”（空文本）；
MID("Finemore software",0,8)返回*VALUE!；
MID("Finemore software",5,-1)返回*VALUE!。

9、EXACT

EXACT(text1,text2)：检测两组文本是否相同。如果完全相同，EXACT函数返回TRUE；否则，返回FALSE。EXACT函数可以区分大小写，但忽略格式的不同。同时也可以利用EXACT函数来检测输入文档的文字。
Text1：需要比较的第一组文本。
Text2：需要比较的第二组文本。
示例:
EXACT("Spreadsheet","Spreadsheet")等于TRUE。
EXACT("Spreadsheet","S preadsheet")等于FALSE。
EXACT("Spreadsheet","spreadsheet")等于FALSE。

10、TOINTEGER

TOINTEGER(text)：将文本转换成Integer对象。
Text：需要转换的文本。
示例：
TOINTEGER("123")等于 new Integer(123)。

11、REPEAT

REPEAT(text,number_times)：根据指定的次数重复显示文本。REPEAT函数可用来显示同一字符串，并对单元格进行填充。
Text：需要重复显示的文本或包含文本的单元格引用。
Number_times：指定文本重复的次数，且为正数。如果number_times为0，REPEAT函数将返回“”（空文本）。如果number_times不是整数，将被取整。REPEAT函数的最终结果通常不大于32767个字符。
备注：该函数可被用于在工作表中创建简单的直方图。
示例：
REPEAT("$",4)等于“$$$$"；
如果单元格B10的内容为“你好”，REPEAT(B10,3)等于“你好你好你好”。

12、SPLIT

SPLIT(String1,String2 )：返回由String2分割String1组成的字符串数组。
String1：以双引号表示的字符串；
String2：以双引号表示的分隔符。例如逗号","。
备注： 如果只有一个参数，则返回一个错误。如果有多个参数，则只有前两个起作用。
示例：
SPLIT("hello,world,yes",",") = ["hello","world","yes"]。
SPLIT("this is very good"," ") = ["this","is","very","good"]。

13、UPPER

UPPER(text)：将文本中所有的字符转化为大写。
Text：需要转化为大写字符的文本，或是包含文本的单元格引用。
示例：
UPPER("notes")等于“NOTES”；
如果单元格E5的值为“Examples”，则UPPER(E5)等于“EXAMPLES”。

14、RIGHT

RIGHT(text,num_chars)：根据指定的字符数从右开始返回文本串中的最后一个或几个字符。
Text：包含需要提取字符的文本串或单元格引用；
Num_chars：指定RIGHT函数从文本串中提取的字符数。Num_chars不能小于0。
如果num_chars大于文本串长度，RIGHT函数将返回整个文本。如果不指定num_chars，则默认值为1。
示例：
RIGHT("It is interesting",6)等于“esting”；
RIGHT("Share Holder")等于“r”；
RIGHT("Huge sale",4)等于“sale”。

15、TODOUBLE

TODOUBLE(text)：将文本转换成Double对象。
Text：需要转换的文本。
示例：
TODOUBLE("123.21")等于 new Double(123.21)。

16、INDEXOF

1）INDEXOF(str1,index)：返回字符串str1在index位置上的字符。
备注： index是从0开始计数的。
示例：
INDEXOF("FineReport",0)等于'F'；
INDEXOF("FineReport",2)等于'n'；
INDEXOF("FineReport",9)等于't'；
2）INDEXOF(array,index)：返回数组在index位置上的元素。
备注：index是从1开始计数的。
示例：
String[] array = {"a","b","c"} INDEXOF(array,1)等于"a"。

17、FIND

FIND(find_text,within_text,start_num)：从指定的索引(start_num)处开始，返回第一次出现的指定子字符串(find_text)在此字符串(within_text)中的索引。
Find_text：需要查找的文本或包含文本的单元格引用；
Within_text：包含需要查找文本的文本或单元格引用；
Start_num：指定进行查找字符的索引位置。
within_text里的索引从1开始。如果省略start_num，则假设值为1。备注：如果find_text不在within_text中，FIND函数返回值为0。如果start_num不大于0，FIND函数返回错误信息*VALUE!。如果大于within_text的长度，FIND函数返回值为0。如果find_text是空白文本，FIND函数将在搜索串中匹配第一个字符（即编号为start_num或1的字符）。
示例：
FIND("I","Information")，返回"I"在"Information"中的位置即返回值为1；
FIND("i","Information")，返回"i"在"Information"中的位置即返回值为9；
FIND("o","Information",2)等于4；
FIND("o","Information",12)等于0；
FIND("o","Information",-1)等于*VLAUE!。

18、REPLACE

1）REPLACE(text,textorreplace,replacetext)：根据指定的字符串，用其他文本来代替原始文本中的内容。
text：需要被替换部分字符的文本或单元格引用；
textorreplace：指定的字符串或正则表达式；
replacetext：需要替换部分旧文本的文本。
示例：
REPLACE("abcd","a","re")等于"rebcd"；
REPLACE("a**d","**d","rose")等于"arose"；
2）REPLACE(old_text,start_num,num_chars,new_text)：根据指定的字符数，用其他文本串来替换某个文本串中的部分内容。
Old_text：需要被替换部分字符的文本或单元格引用；
Start_num：需要用new_text来替换old_text中字符的起始位置；
Num_chars：需要用new_text来替换old_text中字符的个数；
New_text：需要替换部分旧文本的文本。
示例：
REPLACE("0123456789",5,4,"*")等于“0123*89”；
REPLACE("1980",3,2,"99")等于“1999”。

19、CONCATENATE

CONCATENATE(text1,text2,...)：将数个字符串合并成一个字符串。
Text1,text2,...：需要合并成单个文本的文本项，可以是字符，数字或是单元格引用。
示例：
CONCATENATE("Average ","Price")等于“Average Price”；
CONCATENATE("1","2")等于12。

20、CNMONEY

CNMONEY(number,unit)：返回人民币大写。
number：需要转换的数值型的数；
unit：单位，"s","b","q","w","sw","bw","qw","y","sy","by","qy","wy"分别代表“拾”，“佰”，“仟”，“万”，“拾万”，“佰万”，“仟万”，“亿”，“拾亿”，“佰亿”，“仟亿”，“万亿”。
备注：单位可以为空，如果为空，则直接将number转换为人民币大写，否则现将number与单位的进制相乘，然后再将相乘的结果转换为人民币大写。
示例：
CNMONEY(1200)等于壹仟贰佰圆整；
CNMONEY(12.5,"w")等于壹拾贰万伍仟圆整；
CNMONEY(56.3478,"bw")等于伍仟陆佰叁拾肆万柒仟捌佰圆整；
CNMONEY(3.4567,"y")等于叁亿肆仟伍佰陆拾柒万圆整。

21、LOWER

LOWER(text)：将所有的大写字母转化为小写字母。
Text：需要转化为小写字母的文本串。LOWER函数不转化文本串中非字母的字符。
示例：
LOWER("A.M.10:30")等于“a.m.10:30”；
LOWER("China")等于“china”。

22、ENNUMBER

ENNUMBER(value)：将给定的BigDecimal类型的数字（100以内）取整后转化成英文金额的字符串。
示例：
ENNUMBER(23.49)等于TWENTY THREE；
备注：若出现结果为空，需要将数字强制转换为BigDecimal类型，例如ENNUMBER(TOBIGDECIMAL(80))。

23、LEN

LEN(args)：返回文本串中的字符数或者数组的长度。需要注意的是：参数args为文本串时，空格也计为字符。参数args为数组时，直接返回数组长度。
示例：
LEN("Evermore software")等于17；
LEN(" ")等于1；
LEN(['a','b'])等于2。


时间函数- FineReport帮助文档|报表开发|报表使用|学习教程

时间函数

1、描述

凡函数中以日期作为参数因子的，其中日期的形式都必须是yyyy/mm/dd或yyyy-MM-dd。而且必须用英文环境下双引号(" ")引用。

2、MONTH

MONTH(serial_number)：返回日期中的月，月是介于1和12之间的一个数。
Serial_number：含有所求的月的日期。
备注： FineBI将日期保存为系列数，一个系列数代表一个与之匹配的日期，以方便用户对日期进行数值式计算。
在1900年日期系统中，FineBI电子表格将1900年1月1日保存为系列数2，将1900年1月2日保存为系列数3， 将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统，1998年1月1日存为系列数35796。
示例：
MONTH("2000/1/1")等于1；
MONTH("2006/05/05")等于5；
MONTH("1997/04/20")等于4；
MONTH("2000-1-1","yyyy-MM-dd")等于1；
MONTH("2006-05-05","yyyy-MM-dd")等于5；
MONTH("1997-04-20","yyyy-MM-dd")等于4；
MONTH(35796)等于1。

3、DAYSOFYEAR

DAYSOFYEAR(year)：返回某年包含的天数。
示例：
DAYSOFYEAR(2008)等于366，等价于：DAYSOFYEAR("2008-01-01")。

4、YEAR

YEAR(serial_number)：返回日期中的年。Year是介于1900和9999之间的一个数。
Serial_number：含有所求的年的日期。
备注： FineBI将日期保存为系列数，一个系列数代表一个与之匹配的日期，以方便用户对日期进行数值式计算。
在1900年日期系统中，FineBI电子表格将1900年1月1日保存为系列数2，将1900年1月2日保存为系列数3，将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统，1998年1月1日存为系列数35796。
示例：
YEAR("2000/1/1")等于2000；
YEAR("2006/05/05")等于2006；
YEAR("1997/04/20")等于1997；
YEAR("2000-1-1","yyyy-MM-dd")等于2000；
YEAR("2006-05-05","yyyy-MM-dd")等于2006；
YEAR("1997-04-20","yyyy-MM-dd")等于1997；
YEAR(35796)等于1998。

5、DATEINWEEK

DATEINWEEK(date, number)：函数返回在某一个星期当中第几天的日期。
示例：
dateInWeek("2008-08-28", 2)等于2008-08-26；
dateInWeek("2008-08-28",-1)等于2008-08-31。如果最后一个参数为-1，返回该日期所在星期的最后一天。

6、MONTHDELTA

MONTHDELTA(date,delta)：返回指定日期date后delta个月的日期。
示例：
MONTHDELTA("2008-08-08", 4)等于2008-12-08。

7、DATEDIF

DATEDIF(start_date,end_date,unit)：返回两个指定日期间的天数、月数或年数。
Start_date：代表所指定时间段的初始日期。
End_date：代表所指定时间段的终止日期。
Unit：函数返回信息的类型。
若unit=“Y”，则DATEDIF返回指定时间段的年差数。
若unit=“M”，则DATEDIF返回指定时间段的月差数。
若unit=“D”，则DATEDIF返回指定时间段的日差数。
若unit=“MD”，则DATEDIF忽略年和月，返回指定时间段的日差数。
若unit=“YM”，则DATEDIF忽略年和日，返回指定时间段的月差数。
若unit=“YD”，则DATEDIF忽略年，返回指定时间段的日差数。
示例：
DATEDIF("2001/2/28","2004/3/20","Y")等于3，即在2001年2月28日与2004年3月20日之间有3个整年。
DATEDIF("2001/2/28","2004/3/20","M")等于36，即在2001年2月28日与2004年3月20日之间有36个整月。
DATEDIF("2001/2/28","2004/3/20","D")等于1116，即在2001年2月28日与2004年3月20日之间有1116个整天。
DATEDIF("2001/2/28","2004/3/20","MD")等于8，即忽略月和年后，2001年2月28日与2004年3月20日的差为8天。
DATEDIF("2001/1/28","2004/3/20","YM")等于2，即忽略日和年后，2001年1月28日与2004年3月20日的差为2个月。
DATEDIF("2001/2/28","2004/3/20","YD")等于21，即忽略年后，2001年2月28日与2004年3月20日的差为21天。

8、DATEDELTA

DATEDELTA(date, deltadays)：返回一个日期date后deltadays的日期。deltaDays可以为正值，负值，零。
示例：
DATEDELTA("2008-08-08", -10)等于2008-07-29；
DATEDELTA("2008-08-08", 10)等于2008-08-18。

9、WEEKDATE

WEEKDATE(year,month,weekOfMonth,dayOfWeek)：返回指定年月的指定周的周几的具体日期。
示例：
WEEKDATE(2009,10,2,1)返回的是2009年的10月的第二个周的第一天即星期天的日期，返回的是2009-10-04；
最后一个参数dayOfWeek为-1时，表示这个周的最后一天。
示例：
WEEKDATE(2009,12,1,-1)返回的是2009年的12月的第一个周的最后一天即星期六的日期，返回的是2009-12-05。

10、DATEINMONTH

DATEINMONTH(date, number)：函数返回在某一个月当中第几天的日期。
示例：
DATEINMONTH("2008-08-08", 20)等于2008-08-20；
DATEINMONTH("2008-08-08",-1)等于2008-08-31。

11、DAYS360

DAYS360(start_date,end_date,method)：按照一年360天的算法（每个月以30天计，一年共计12个月），返回两日期间相差的天数，这在会计计算中将会用到的。如果财务系统是基于一年 12个月，每月 30天，可用此函数帮助计算支付款项。
Start_date和 end_date ：是用于计算期间天数的起止日期。
Method：它指定了在计算中是采用欧洲方法还是美国方法。
Method定义：FALSE或忽略 美国方法 (NASD)。如果起始日期是一个月的 31号，则等于同月的 30号。如果终止日期是一个月的31号，并且起始日期早于 30号，则终止日期等于下一个月的 1号，否则，终止日期等于本月的 30号。
TRUE欧洲方法。无论是起始日期还是终止日期为一个月的 31号，都将等于本月的 30号。
备注：
FineBI将日期保存为系列数，一个系列数代表一个与之匹配的日期，以方便用户对日期进行数值式计算。
在1900年日期系统中，FineB电子表格将1900年1月1日保存为系列数2，将1900年1月2日保存为系列数3，将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统，1998年1月1日存为系列数35796。
示例：
DAYS360("1998/1/30", "1998/2/1")等于 1。

12、TODATE

TODATE()函数可以将各种日期形式的参数转换为日期类型。
它有三种参数的形式：
1. 参数是一个日期型的参数，那么直接将这个参数返回。
示例：
TODATE(DATE(2007,12,12))返回2007年12月12日组成的日期。
2. 参数是以从1970年1月1日0时0分0秒开始的毫秒数，返回对应的时间。
示例：
TODATE("1023542354746")返回2002年6月8日。
3. 参数是日期格式的文本，那么返回这个文本对应的日期。
示例：
TODATE("2007/10/15")返回2007年10月5日组成的日期。
TODATE("2007-6-8")返回2007年6月8日组成的日期。
4. 有两个参数，第一个参数是一个日期格式的文本，第二个参数是用来解析日期的格式。
示例：
TODATE("1/15/07","MM/dd/yy")返回07年1月15日组成的日期。
注意：此处的格式中月份必须大写MM，年份小写：yy(不可以为yyyy)。天份小写：dd。
特别的，"yyyyMMdd"是用来解析形如"20081230"之类的日期格式的。比如TODATE("20110830","yyyyMMdd")返回11年08月30日组成的日期。
5. 有三个参数，第一个参数是一个日期格式的文本，第二个参数是用来解析日期的格式，第三个参数为解析日期的语言，如：zh（中文），en（英文）。
示例：
TODATE("星期三 1/15/07","EEE mm/dd/yy","zh")返回07年1月15日组成的日期，使用“zh（中文）”才能够正常解析“星期三”这个字符串。

13、DAY

DAY(serial_number)：返回日期中的日。DAY是介于1和31之间的一个数。
Serial_number：含有所求的年的日期。
备注：FineBI将日期保存为系列数，一个系列数代表一个与之匹配的日期，以方便用户对日期进行数值式计算。
在1900年日期系统中，FineBI电子表格将1900年1月1日保存为系列数2，将1900年1月2日保存为系列数3，将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统，1998年1月1日存为系列数35796。
示例：
DAY("2000/1/1")等于1；
DAY("2006/05/05")等于5；
DAY("1997/04/20")等于20；
DAY("2000-1-1","yyyy-MM-dd")等于1；
DAY("2006-05-05","yyyy-MM-dd")等于5；
DAY("1997-04-20","yyyy-MM-dd")等于20；
DAY(35796)等于1。

14、LUNAR

LUNAR(year,day,month): 返回当前日期对应的农历时间。year,month,day：分别对应年月日。
示例:
如果需要查询2011年7月21日对应的农历时间，则：
LUNAR(2011,7,21)结果将显示为：辛卯年六月廿一。

LUNAR(2001,7,21)结果显示：辛巳年六月初一 。本公式支持的时间段为1900-2100年。

15、MINUTE

MINUTE(serial_number)：返回某一指定时间的分钟数，其值是介于0与59之间的一个整数。
Serial_number：包含所求分钟数的时间。
示例：
MINUTE("15:36:25")等于36；
MINUTE("15:36:25","HH:mm:ss")等于36。

16、DATESUBDATE

DATESUBDATE(date1,date2,op)：返回两个日期之间的时间差。
op表示返回的时间单位："s"，以秒为单位；"m"，以分钟为单位；"h"，以小时为单位；"d"，以天为单位；"w"，以周为单位。
示例：
DATESUBDATE("2008-08-08", "2008-06-06","h")等于1512。

17、DAYSOFMONTH

DAYSOFMONTH(date)：返回从1900年1月后某年某月包含的天数。
示例：
DAYSOFMONTH("1900-02-01")等于28；
DAYSOFMONTH("2008/04/04")等于30。

18、DATEINQUARTER

DATEINQUARTER(date, number)：函数返回在某一个季度当中第几天的日期。
示例：
DATEINQUARTER("2009-05-05", 20)等于2009-04-20。

19、DAYVALUE

DAYVALUE(date)：返回1900年至date日期所经历的天数。
示例：
DAYVALUE("2008/08/08")等于39668。

20、DATE

DATE(year,month,day)：返回一个表示某一特定日期的系列数。
Year：代表年，可为一到四位数。
Month：代表月份。若1<=month<= 12，则函数把参数值作为月；若month>12，则函数从年的一月份开始往上累加。例如：DATE(2000,25,2)等于2002年1月2日的系列数。
Day：代表日。若日期小于等于某指定月的天数，则函数将此参数值作为日；若日期大于某指定月的天数，则函数从指定月份的第一天开始往上累加；若日期大于两个或多个月的总天数，则函数把减去两个月或多个月的余数加到第三或第四个月上，依此类推。如：DATE(2000,3,35)等于2000年4月4日的系列数。
备注：若需要处理公式中日期的一部分，如年或月等，则可用此公式。若年，月和日是函数而不是函数中的常量，则此公式最能体现其作用。
示例：
DATE(1978, 9, 19)等于1978-09-19；
DATE(1211, 12, 1)等于1211-12-01。

21、NOW

NOW()：获取当前时间。
示例：
如果系统时间是2012年5月12日 15点18分38秒， 则NOW()等于2011-05-12 15:18:36。

22、HOUR

HOUR(serial_number)：返回某一指定时间的小时数。函数指定HOUR为0（0:00）到23（23:00)之间的一个整数。
Serial_number：包含所求小时的时间。
示例：
HOUR("11:32:40")等于11；
HOUR("11:32:40","HH:mm:ss")等于11。

23、YEARDELTA

YEARDELTA(date, delta)：返回指定日期后delta年的日期。
示例：
YEARDELTA("2008-10-10",10)等于2018-10-10。

24、DATEINYEAR

DATEINYEAR(date, number)：函数返回在某一年当中第几天的日期。
示例：
DATEINYEAR(2008,100)等于2008-04-09，等价于DATEINYEAR("2008-08-08",100)，也返回2008-04-09。
DATEINYEAR(2008,-1)等于2008-12-31，等价于DATEINYEAR("2008-08-08",-1)，也返回2008-12-31。

25、DAYSOFQUARTER

DAYSOFQUARTER(date):返回从1900年1月后某年某季度的天数。
示例：
DAYSOFQUARTER("2009-02-01")等于90；
DAYSOFQUARTER("2009/05/05")等于91。

26、WEEK

WEEK(serial_num)：返回一个代表一年中的第几周的数字。
Serial_num：表示输入的日期。
备注： FineBI将日期保存为系列数，一个系列数代表一个与之匹配的日期，以方便用户对日期进行数值式计算。
在1900年日期系统中，FineBI电子表格将1900年1月1日保存为系列数2，将1900年1月2日保存为系列数3，将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统，1998年1月1日存为系列数35796。
示例：
WEEK("2010/1/1")等于52；
WEEK("2010/1/6")等于1；
WEEK(35796)等于1。

27、WEEKDAY

WEEKDAY(Serial_number)：获取日期并返回星期数。返回值为介于0到6之间的某一整数，分别代表星期中的某一天（从星期日到星期六）。
Serial_number：输入的日期。
备注： FineBI将日期保存为系列数，一个系列数代表一个与之匹配的日期，以方便用户对日期进行数值式计算。
在1900年日期系统中，FineBI电子表格将1900年1月1日保存为系列数2，将1900年1月2日保存为系列数3，将1900年1月3日保存为系列数4……依此类推。如在1900年日期系统，1998年1月1日存为系列数35796。
示例：
WEEKDAY("2005/9/10")等于6（星期六）；
WEEKDAY("2005/9/11")等于0（星期日）；
WEEKDAY(35796)等于4（星期四）。

28、TODAY

TODAY()：是获取当前的日期。
示例：
如果系统日期是2005年9月10日，则TODAY()等于2005-9-10。

29、TIME

TIME(hour,minute,second)：返回代表指定时间的小数。介于0:00:00（12:00:00 A.M.）与23:59:59（11:59:59 P.M.）之间的时间可返回0到0.99999999之间的对应数值。
Hour：介于0到23之间的数。
Minute：介于0到59之间的数。
Second：介于0到59之间的数。
示例：
TIME(14,40,0)等于2:40 PM；
TIME(19,43,24)等于7:43 PM。

30、SECOND

SECOND(serial_number)：返回某一指定时间的秒数，其值是介于0与59之间的一个整数。
Serial_number：包含所求秒数的时间。
示例：
SECOND("15:36:25")等于25；
SECOND("15:36:25", "HH:mm:ss")等于25。


数组函数- FineReport帮助文档|报表开发|报表使用|学习教程

数组函数

1、MAPARRAY

MAPARRAY(array, fn)：把一个数组中的项目转换到另一个数组中。

array(Array)：要转换的数组，fn(Function)：处理数组项目的函数。

示例：

MAPARRAY([3,4,2,3,6,8,7], item != 3)等于[false,true,true,false,true,true,true]。

2、SLICEARRAY

SLICEARRAY(array, start, end)：返回数组从第start个到第end个元素（包括第end个元素）。

示例：

SLICEARRAY([3,4,4,5,1,5,7],3,6)返回[4,5,1,5]。

当不使用end参数时，返回从start开始到数组结束之间的元素。

SLICEARRAY([3,4,4,5,1,5,7],3)返回[4,5,1,5,7]。

3、SORTARRAY

SORTARRAY(array)：返回数组array排过序的数组。

示例：

SORTARRAY([3,4,4,5,1,5,7])返回[1,3,4,4,5,5,7]。

注意：数组array的元素类型必须一样，并且要可比较。

4、INDEXOFARRAY

INDEXOFARRAY(array, index)：返回数组array的第index个与元素。

示例：

INDEXOFARRAY(["第一个","第二个","第三个"],2)返回"第二个"。

5、GREPARRAY

GREPARRAY(array, fn)：函数（返回true或者false）是条件，过滤此数组，最后形成一个新数组。

示例：

GREPARRAY([3,4,2,3,6,8,7], item != 3)等于[4,2,6,8,7]。

6、INARRAY

INARRAY(co, array)：返回co在数组array中的位置，如果co不在array中，则返回0。

示例：

String[] arr = {"a","b","c","d"} 那么INARRAY("b",arr)等于2。

7、REVERSEARRAY

REVERSEARRAY(array)：返回数组array的倒序数组。

示例：

REVERSEARRAY(["第一个","第二个","第三个"])返回["第三个","第二个","第一个"]。

8、ADD2ARRAY

ADD2ARRAY(array, insertArray, start)：在数组第start个位置插入insertArray中的所有元素，再返回该数组。

示例：

ADD2ARRAY([3,4,1,5,7],[23,43,22],3)返回[3,4,23,43,22,1,5,7]；

ADD2ARRAY([3,4,1,5,7],"测试",3)返回[3,4,"测试",1,5,7]。

注意：如果start为小于1的数或者不写start参数，则默认从数组的第一位开始插入数组元素。

9、ARRAY

ARRAY(arg1, arg2...)：返回一个由arg1,arg2,...组成的数组。

arg1,arg2,...：字符串或者数字。

示例：

ARRAY("hello") = ["hello"]；

ARRAY("hello","world") = ["hello",world"]；

ARRAY("hello",98) = ["hello",98]；

ARRAY(67,98) = [67,98]。

10、JOINARRAY

JOINARRAY(array, sepa)：返回一个有sepa作为分隔符的字符串。

array：[arg1,arg2...]格式的数组；sepa：分隔符。

示例：

JOINARRAY([1,2],";") = [1;2]；

JOINARRAY([hello,world],"-") = [hello-world]。

11、RANGE

RANGE(from, to, step)函数表示从整数from开始，以step为每一步的大小，直到整数to的一个数字序列。

例如：

RANGE(1,5,1)表示从1开始，直到5（包括5），每一步大小为1，那么它返回一个数字序列为[1,2,3,4,5]。

RANGE(-1,6,2)表示从-1开始，直到6（包括6），每一步大小为2，那么它返回一个数字序列为[-1,1,3,5]。

备注：RANGE函数有三种参数形式：

1. RANGE(to)，默认的from为1，step为1，例如：RANGE(4)返回[1,2,3,4]；RANGE(-5)返回[]。

2. RANGE(from,to)，默认的step为1，例如：RANGE(-1,3)返回[-1,0,1,2,3]；RANGE(0,5)返回[0,1,2,3,4,5]。

3. RANGE(from,to,step)，三个参数的情况参照上面的注释，例如：RANGE(6,-1,-2)返回[6,4,2,0]；RANGE(4,1,1)返回[]。

12、REMOVEARRAY

REMOVEARRAY(array, start, deleteCount)：从数组array中删除从第start个元素开始的deleteCount个数组元素，并返回删除后的数组。

示例：

REMOVEARRAY([3,4,4,2,6,7,87],4,2)返回[3,4,4,7,87]。

13、UNIQUEARRAY

UNIQUEARRAY(array)：去掉数组array中的重复元素。

示例：

UNIQUEARRAY([14,2,3,4,3,2,5,6,2,7,9,12,3])返回[14,2,3,4,5,6,7,9,12]。


逻辑函数- FineReport帮助文档|报表开发|报表使用|学习教程

逻辑函数

1、IF

IF(boolean,number1/string1,number2/string2)：判断函数，boolean为true时返回第二个参数，为false时返回第三个。

boolean：用于判断的布尔值，true或者false。

number1/string1：第一个参数，如果boolean为true，返回这个值。

number2/string2：第二个参数，如果boolean为false，返回这个值。

示例：

IF(true,2,8)等于2；

IF(false,"first","second")等于second；

IF(true,"first",7)等于first。

2、AND

AND(logical1, logical2,…)：当所有参数的值为真时，返回TRUE；当任意参数的值为假时，返回FALSE。 Logical1,logical2,…：指1到30个需要检验TRUE或FALSE的条件值。
备注： 参数必须是逻辑值，或是含有逻辑值的数组或引用。 如果数组或引用中含有文本或空的单元格，则忽略其值。 如果在指定的单元格区域中没有逻辑值，AND函数将返回错误信息*NAME?。
示例：
AND(1+7=8,5+7=12)等于TRUE。
AND(1+7=8,5+7=11)等于FALSE。
如果单元格A1到A4的值分别为TRUE、TRUE、FLASE和TRUE，则AND(A1:A4)等于FALSE；

如果单元格A5的值在0-50之间，则AND(0<A5,A5<50)等于TRUE。

3、SWITCH

SWITCH(表达式, 值1, 结果1, 值2, 结果2, ...)：如果表达式的结果是值1，整个函数返回结果1；如果表达式的结果是值2，整个函数返回结果2；如果表达式的结果是值3，整个函数返回结果3 等等。SWITCH函数的详细应用示例可参考Switch函数。

4、OR

OR(logical1, logical2,...)：当所有参数的值为假时，返回FALSE；当任意参数的值为真时，返回TRUE。
Logical1,logical2,...：指1到30个需要检验TRUE或FALSE的条件值。
备注：参数必须是逻辑值，或是含有逻辑值的数组或引用。如果数组或引用中含有文本或空的单元格，则忽略其值。如果在指定的单元格区域中没有逻辑值，AND函数将返回错误信息*NAME?。
示例：
OR(1+7=9,5+7=11)等于FALSE；
OR(1+7=8,5+7=11)等于TRUE。


Switch函数- FineReport帮助文档|报表开发|报表使用|学习教程

Switch函数

1、描述

当需要判断条件多的时候，用if函数需要对每种情况都进行判断的话会比较麻烦，需要写多个表达式。此时我们可以使用switch函数，只需要写一个表达式就可以对多种情况进行判断。下面简单的介绍一下switch函数的用法。

2、用法

SWITCH(表达式, 值1, 结果1, 值2, 结果2, ...)：

如果表达式的结果是值1，整个函数返回结果1；

如果表达式的结果是值2，整个函数返回结果2；

如果表达式的结果是值3，整个函数返回结果3；

3、应用场景

如下图所示，汇总表中有两个字段，一个城市代号，一个销售额，地理相对来说较为熟悉的人知道皖A-皖E分别代表的城市，但是并非所有人都能看懂代号的意思，所以我们需要将城市代号转换成所有人都能看得懂的城市名称，那么该怎么做呢？

4、步骤

首先我们来看下数据表中最原始的数据，如下图所示，我们可以看到数据表中只有城市代号和销售金额两个字段，那么要想实现城市代号转换成城市名称，需要对应转换。

4.1 新增列

在新建的自助数据集中选择新增列，然后编辑公式：SWITCH(​城市​,"皖A","合肥","皖B","芜湖","皖C","蚌埠","皖D","皖南","皖E","马鞍山") ，并且将新增列类型选择字符串类型“文本”，如下图所示：

注：公式中“城市”并非手动输入，而是在左侧字段中单击选择，切记。

4.2 数据预览

编辑完公式点击确定按钮，在预览数据框可以看到数据效果如下图所示：

保存按钮，并进行数据更新以后即可在前端分析的时候使用该城市名字段。

注：if函数也同样能实现相同的功能，但是if函数只适用于转换比较少的时候，转换多的情况下需要层层嵌套，很容易弄错，switch函数最大的好处是逻辑结构很清晰，不容易出错。二者可以根据实际情况选择使用。


其他函数- FineReport帮助文档|报表开发|报表使用|学习教程

其他函数

1、RANK

RANK(number,ref,order)：返回一个数在一个数组中的秩。（如果把这个数组排序，该数的秩即为它在数组中的序号。）

Number：所求秩的数。（可以是Boolean型，true=1，false=0）

Ref：可以是数组，引用，或一系列数，非实数的值被忽略处理（接受Boolean型，true=1，false=0）。

Order：指定求秩的参数，非零为升序，零为降序。

备注：RANK对重复的数返回相同的秩，但重复的数影响后面的数的秩，比如，在一组升序排列的整数中，如果5出现了2次，并且秩为3，那么6的秩为5（没有数的秩是4）。

示例：

A1:A5 = 6,4.5,4.5,2,4，RANK(A1,A1:A5,1)即6的秩为5；

RANK(3,1.2,"go",3,4,1) = 3，"go"被忽略。

2、DECODE

DECODE()：使用指定的编码机制（UTF-8）对application/x-www-form-urlencoded字符串解码。给定的编码用于确定任何“%xy”格式的连续序列表示的字符。

示例：

decode("%E5%B8%86%E8%BD%AF")等于“帆软”。

3、SEQ

SEQ()：返回数值，在整个报表执行过程中，返回该函数被第几次执行了。

示例:

SEQ()在第一次执行时，结果为1；

SEQ()在第二次执行时，结果为2；

注：seq()进行计算行序号的时候，其有上限值，即最大的序号值不大于2047。

4、ENCODE

ENCODE()：使用指定的编码机制（UTF-8）将字符串转换为application/x-www-form-urlencoded格式。该方法使用提供的编码机制获取不安全字符的字节。

示例：

ENCODE("帆软")等于"%E5%B8%86%E8%BD%AF"。

5、STDEV

STDEV(array1)：计算数据系列的标准偏差（与Excel的同名函数作用相同）。

示例：

STDEV([1,2,3])=1。

6、MEDIAN

MEDIAN(array1)：返回数据系列的中值（与Excel的同名函数作用相同）。

示例：

MEDIAN([1,2,3])=2。

7、FILETYPE

FILETYPE(file)：获取文件的类型。当file为单文件时，返回文件类型字符串，当file为多文件时，但会文件类型的字符串数组。如果file不为文件类型，则返回错误信息。

示例：

假设文件控件在B2单元格，而B2单元格依次上传了三个不同类型文件{A.doc,C.xls,B.txt}，则FILETYPE(B2)返回值为["doc","xls","txt"]。

8、INDEX

INDEX(key,val1,val2,...)：返回key在val1,val2,...所组成的序列中的位置,不存在于序列中则返回参数的个数。

备注：key和valn可以是任意类型。

示例：

INDEX(2,2)等于1；

INDEX(2,1,2)等于2；

INDEX(2,4,5,6)等于4；

INDEX("b","b","o","y")等于1。

9、UUID

UUID()：返回随机的UUID。

示例：

UUID()返回36位随机机器数；

UUID(32)返回32位随机机器数；

10、FILESIZE

FILESIZE(file)：获取文件的大小，单位为Kb。当file为单文件时，返回文件大小，当file为多文件时，返回文件大小的数组。如果file不为文件类型，则返回错误信息。

示例：

假设文件控件在B2单元格，而B2单元格依次上传了两个大小分别为100字节和10240字节的文件，则FILESIZE(B2)返回值为[0.098,10.0]。

11、EVAL

EVAL(exp)：返回表达式exp计算后的结果。 exp:一个表达式形式字符串。

备注：只要EVAL中的参数exp最终可以转化成一表达式形式的字符串，比如"sum(2,4)","2+7"等等，那么它就可以被计算。

示例：

EVAL("2+5")等于7；

EVAL("count(2,3)")等于2；

EVAL("sum"+"(2,3,5)")等于10；

EVAL(IF(true, "sum", "count") + "(1,2,3,4)")等于10；

EVAL(IF(false, "sum", "count") + "(1,2,3,4)")等于4。

12、WEBIMAGE

WEBIMAGE(path)：在web页面上显示指定路径下的图片。

13、FILENAME

FILENAME(file)：获取文件的文件名。当file为单文件时，返回文件名字符串；当file为多文件时，返回文件名的字符串数组；如果file不为文件类型，则返回错误信息。

示例：

假设文件控件在B2单元格，而B2单元格依次上传了三个不同类型文件{A.doc,C.xls,B.cpt}，则FILENAME(B2)返回值为["A.doc","C.xls","B.cpt"]。

14、ISNULL

ISNULL(object)：判断对象中所有的值是否全部都是NULL或者为空字符串。

15、LET

LET(变量名,变量值,变量名,变量值,...,表达式)：局部变量赋值函数，参数的个数N必须为奇数，最后一个是表达式，前面是N-1（偶数）为局部变量赋值对。

变量名：必须是合法的变量名，以字母开头，可以包括字母、数字和下划线；

表达式：根据前面的N-1个参数赋值后计算出来的结果，这些变量赋值只在这个表达式内部有效。

示例：

LET(a,5,b,6,a+b)等于11。

16、TREELAYER

TREELAYER(TreeObject,Int,Boolean,String)：返回tree对象第n层的值，并且可以设置返回值类型及分隔符。

TreeObject：tree对象，如$tree；

Int：想要获得层级的数值，最上层为1，第二层为2，以此类推，若无则返回最底层；

Boolean：返回值类型为字符串还是数组，默认false，返回数组；为true时返回字符串；

String：当Boolean为true返回字符串时的分隔符，以双引号表示，默认为逗号","，如";"。

示例：

假设$tree勾选的值为中国-江苏-南京,中国-浙江-杭州，则TREELAYER($tree,true,"\',\'")返回"','''分割的所选中节点字符串"南京','杭州'"；

TREELAYER($tree,2)：以数组形式返回第二层["江苏",“浙江"]。

TREELAYER($tree,2,true,"\',\'")返回"','"分割的字符串江苏','浙江。


自定义函数- FineReport帮助文档|报表开发|报表使用|学习教程

自定义函数

1、描述

FineBI已经提供了大量的自带函数，在正常情况下足够满足用户的模板制作需求，但是在一些特殊领域，可能需要一些特殊的函数，在这种情况下，FineBI提供了自定义函数机制，可以由用户根据业务需要自己来定义一些函数，但这些函数必须满足FineBI函数定义规则。

FineBI函数定义规则：Functionname(Para,Para,...)，其中Functionname为函数名，Para为参数。

在FineBI中，每一个函数都被定义成一个类，这个类必须要实现Function这个接口，在运算的时候首先通过函数名反射取得这个类，然后调用它的run(Object[] agrs)方法。下面以SUM这个函数为例。

2、SUM函数原理

由程序可以看到，SUM类用来运算SUM函数，他继承了AbstractFunction类，而AbstractFunction实现了Function这个接口。

当函数运算的时候，先根据函数名取得运算该函数的类，如SUM(2,4,true)这个函数先根据函数名取得SUM这个类，然后调用SUM类的run(Object[] args)方法，args中存放的是SUM函数的参数，运算的时候可以从args中取得参数进行运算。如执行结果为SUM(2,4,true)=2+4+1=7。

SUM函数所使用代码：

package com.fr.report.script;

import com.fr.general.FArray;

import com.fr.script.AbstractFunction;

public class CSUM extends AbstractFunction {
    public Object run(Object[] args) {
        double result = 0;
        for (int i = 0; i < args.length; i++) {
            if (args[i] == null) {
                continue;
            }
            result += parseObject(args[i]);
        }
        return result;
    }
    private double parseObject(Object obj) {
        if (obj instanceof Number) {
            return ((Number) obj).doubleValue();
        } else if (obj instanceof Boolean) {
            return ((Boolean) obj).booleanValue() ? 1 : 0;
        } else if (obj instanceof FArray) {
            FArray array = (FArray) obj;
            double sum = 0;
            for (int i = 0; i < array.length(); i++) {
                sum += parseObject(array.elementAt(i));
            }
            return sum;
        } else if (obj != null) {
            try {
                return Double.parseDouble(obj.toString());
            } catch (NumberFormatException exp) {
                return 0;
            }
        }
        return 0;
    }
}

下面以一个简单的自定义函数例子来说明使用自定义函数。我们定义一个函数StringCat，他的作用是把所有的参数以字符串的形式连接起来。

StringCat函数使用规则为StringCat(Para,Para,Para…….)；

其中Para为该函数的参数，个数不限。

由概述可知AbstractFunction实现了Function这个接口，因此StringCat可以直接继承AbstractFunction类，完整代码如下：

package com.fr.function;

import com.fr.script.AbstractFunction;

public class StringCat extends AbstractFunction {
    public Object run(Object[] args) {
        String result = "";
        Object para;
        for (int i = 0; i < args.length; i++) {
            para = args[i];
            result += para.toString();
        }
        return result;
    }
}

说明： 使用函数StringCat(Para,Para,Para…..)时，根据函数名取得运算该函数的类StringCat，并将参数传入类中的args对象数组中，执行该类的run函数。 而在run函数中即实现了将传入的参数以字符串的形式连接起来。并返回最终形成的字符串。

3、实现步骤

3.1 编译自定义函数

将编译后的StringCat.class放到FineBI的安装目录WEB-INF下面的classes目录下，因为StringCat.java属于包com.fr.function，所以StringCat.class需要放到%FineBI%\webapps\webroot\WEB-INF\classes\com\fr\function目录下。如下图：

注：若WEB-INF下没有对应目录则新建即可。

3.2 注册自定义函数

生成该函数的类后需要在设计器中进行注册，才可以使用该函数。参考设计器远程连接方法及步骤使用设计器远程连接FineBI工程，打开服务器>函数管理器，选择刚刚定义好了StringCat类，如下图：

3.3 使用自定义函数

注册好自定义函数后，在FineBI中便可直接使用了，使用方法与内置的函数是相同的。

比如我们在添加计算指标中，其他函数下面可以看到之前自定义的函数Stringcat，点击该函数可添加到公式中使用，如下图：

根据函数自定义用法编辑公式使用即可。


国际化- FineReport帮助文档|报表开发|报表使用|学习教程

国际化

1、描述

一个企业的生产经营活动不局限于一个国家，而是面向世界经济舞台，做的项目或产品也希望实现在中国的时候显示中文，在美国就显示为英文，这样的效果要如何实现呢？下面详细介绍FineBI数据决策系统如何实现国际化。

2、实现原理

因为FineBI本身就是在URL界面进行编辑和查看分析，所以我们可以直接通过将浏览器的语言属性进行某些设置直接实现国际化，简单便捷。

3、国际化设置

3.1 修改浏览器语言

下面以ie浏览器为例，点击工具栏上面的工具>Internet 选项(0)在弹出对话框中选择语言，在弹出对话框中点击添加按钮，选择英语(美国)[en-US]点击确定，这时英语(美国)[en-US]就添加到ie浏览器里面了，需要把英语(美国)[en-US]放到最上面，点击上移，即浏览器默认语言就是英语(美国)[en-US]了。

重新刷新页面就可以看到英文状态下面的数据决策系统了。使用其他浏览器则修改对应默认语言即可，不详细介绍。

3.2 效果查看

当浏览器的语言设置成英语(美国)[en-us]时，访问FineBI数据决策系统，页面中工具栏就是英文的界面，如下图：

页面可根据需要制作英文仪表板，且平台标题及目录等均可修改为英文，可参考 外观配置修改。

登录界面也是英文状态，如下图：

如果刷新之后发现国际化不完全，即部分英文显示部分中文显示，则需要清下浏览器缓存重新刷新页面，可看到页面完全国际化。

注：如果数据库中的表名、字段名和字段值为中文，即使我们国际化之后，依然会显示成中文形式。

繁体化与国际化的设置完全相同，可参照上述方法。

4、自定义修改

若切换浏览器语言后显示的国际化英文不是自身想要的效果，可以自行修改数据决策系统中对应工具栏及节点名称等，下面我们介绍一下如何自定义修改国际化文件。

进入%FineBI%\webapps\webroot\WEB-INF\lib目录下，找到fine-decision-bi-10.0.jar，如下图：

fine-decision-bi-10.0.jar\com\fr\decision\extension\bi\web\i18n中，找到对应英文的文件extension_en_US.properties，如下图：

重启FineBI即可在数据决策系统中看到修改的效果。


R语言Windows&Mac安装- FineReport帮助文档|报表开发|报表使用|学习教程

R语言Windows&Mac安装

1、Windows安装

1.1 安装启动

1）下载Windwos安装包，解压并将R-3.4.3.zip压缩包解压到电脑上；

2）运行cmd，进入到R-3.4.3这个文件夹用命令行输入以下代码启动：

.\bin\R.exe CMD Rserve

注：以上命令会一直阻塞状态，如果关闭命令行Rserve就没了，如果需要后台运行，运行以下命令：

start \b .\bin\R.exe CMD Rserve

至此Rserve启动完毕。

1.2 状态查看

windows下查看Rserve的6311端口是否监听方法：

netstat -aon|findstr "6311"

2、Mac安装

2.1 安装启动

1）下载Mac安装包并解压；

2）cd到readme.md当前目录运行以下命令，即可完成R语言的安装和R依赖包下载和Rserve启动：

/bin/bash install.sh

会提示要求输入用户密码，输入即可安装和启动Rserve。

2.2 状态查看

输入下列命令行查看6311端口是否成功监听：

lsof -i:6311


R语言Linux安装- FineReport帮助文档|报表开发|报表使用|学习教程

R语言Linux安装

1、一键脚本安装

1）下载Linux安装包，解压并进入安装包内，输入以下命令使用R一键下载脚本尝试是否能直接安装R语言：

/bin/bash R-Installer.sh

2）查看是否安装成功（命令行输入R能进入R交互界面），如果成功直接运行如下命令下载依赖的R包和启动Rserve：

Rscript InstallPackagesAndStartRserve.R

3）检查Rserve是否启动成功：

使用下列命令行查看，Rserve是否成功监听6311端口。

netstat -ano|grep “6311”

若启动成功，则R语言安装完毕，直接进入数据挖掘后续步骤。

2、手动安装R语言

若使用一键脚本安装R语言出现问题，我们也提供了手动进行R语言安装的方法，下面我们分操作系统版本进行介绍。

2.1 Fedora

直接运行如下命令进行安装：

sudo -y yum install R

运行如下命令下载R包，并启动Rserve：

Rscript InstallPackagesAndStartRserve.R

2.2 CentOS&Red Hat Enterprise Linux (RHEL)&Scientific Linux&Oracle Linux

1）安装EPEL：使用uname -a查看你的系统版本是el6还是el7，使用如下命令安装EPEL包。

el6: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

el7: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

2）执行安装：使用以下命令执行R语言的安装。

sudo yum clean all sudo -y yum install R
其中sudo yum clean all命令为清空所有缓存。

3）运行如下命令下载R包并启动Rserve：

Rscript InstallPackagesAndStartRserve.R

2.3 Debian

Debian官方软件包自带R语言，不过需要使用apt安装。

1）在/etc/apt/sources.list中加入 “deb http://ftp.de.debian.org/debian stretch main”

2）执行如下命令安装R语言：

apt-get update apt-get install r-base

3）运行如下命令下载R包并启动Rserve：

Rscript InstallPackagesAndStartRserve.R

2.4 Ubuntu

1）根据Ubuntu版本选择下面对应的语句，放到/etc/apt/sources.list最后一行。

ubuntu版本 | 源
14.04 | `deb http://mirror.lzu.edu.cn/CRAN/bin/linux/ubuntu trusty/`
16.04 | `deb http://mirror.lzu.edu.cn/CRAN/bin/linux/ubuntu xenial/`
17.04 | `deb http://mirror.lzu.edu.cn/CRAN/bin/linux/ubuntu zesty/`
17.10 | `deb http://mirror.lzu.edu.cn/CRAN/bin/linux/ubuntu artful/`

2）执行如下命令安装R语言：

apt-get update apt-get install r-base

3）运行如下命令下载R包并启动Rserve：

Rscript InstallPackagesAndStartRserve.R

注：以上步骤中的下载R包并启动Rserve命令需在第一章节提供的安装包内执行。

若按照上述不同操作系统的手动安装R语言步骤出现问题，很大可能原因是依赖库没找到，请手动解决依赖后，重新进行安装。

3、手动安装启动R包

3.1 手动安装R包

上述第二章节介绍的是手动安装R语言，但是R包和启动Rserve均为使用脚本安装。若一键安装R包的脚本出现问题，如何手动安装呢？

1）R语言依赖包：Rserve、lubridate、forecast。如果一键脚本安装失败，请进入R语言交互界面后（命令行输入R进入R交互界面），使用如下命令手动下载R语言包。

install.packages("Rserve")
install.packages("lubridate")
install.packages("forecast")

如果出现错误，是缺少依赖库导致，请手动解决依赖后重新下载，确保三个包都可用。

2）检测R包是否可用的方法为输入命令：

library("Rserve")
library("lubridate")
library("forecast")
该命令为导入包的命令，不报错即表示该包可用。可执行后面的手动启动Rserve步骤。

3.2 手动启动Rserve

1）命令行输入R进入R交互界面，输入如下命令启动Rserve：

library("Rserve") Rserve()

Rserve成功提示运行在后台即可。

或者不进入R交互界面，直接在命令行输入命令启动Rserve：

R CMD Rserve

2）检查Rserve是否启动成功：

使用下列命令行查看，Rserve是否成功监听6311端口。

netstat -ano|grep “6311”


Linux常见问题- FineReport帮助文档|报表开发|报表使用|学习教程

Linux常见问题

1、描述

Linux服务器是最常见的企业服务器，将FineBI布署到linux服务器可以说是大多数用户的选择。linux服务器与windows服务器有明显的区别，且Linux中操作系统的版本很多，不同版本之间也会有区别（在涉及到不同的版本的时候，会注明当前的版本），因此本章特此说明Linux服务器上FineBI布署的常见问题及解决方案。

2、索引

Linux中启动FineBI

Linux中修改jvm内存

Linux系统编码修改

Linux最大打开文件数

Linux中FineBI端口号

Linux中BI进程异常关闭


Linux中启动FineBI- FineReport帮助文档|报表开发|报表使用|学习教程

Linux中启动FineBI

1、描述

在Linux服务器上，安装成功后的FineBI应该如何启动？如何设置FineBI的开机自启动呢？本节我们来介绍一下。

2、FineBI启动

一般而言，Linux服务器上是没有图形界面的，Linux的操作使用命令行进行。FineBI的启动命令是"nohup ./FineBI &"。

命令中“FineBI”是启动文件，使用该命令时一般要进入到安装FineBI的文件目录中，如安装在opt下的：

cd /opt/FineBI

切换该路径下后，可以直接执行启动命令：

nohup ./FineBI &

执行命令后如下图，即为启动成功。

同时如果需要修改内存，也需要在FineBI.vmoptions文件中修改，可参考Linux中修改jvm内存；

注：启动和内存设置文件都在安装一级目录下。

注：需使用nohup命令后台启动。若直接使用./FineBI启动，在主动关闭终端或者因网络原因远程访问进程结束时，子进程的BI也会结束。

3、FineBI开机自启动

在linux服务器中，通常会把常用的应用设置为开机自动启动，这样方便于当重启服务器时，不需要再进行应用启动的繁杂操作，同时可减少因为服务器的重启而遗漏应用的启动。

Linux服务器开机自启动的原理：Linux服务器中一切都是文件，开机应用启动也是读取文件。因此只要在服务器启动时要读取的配置文件中写入该应用的启动命令即可，该配置文件使用的是rc.local文件。

3.1 配置文件

首先我们找到该文件进行编辑，其路径固定在/etc下，我们可以切换到该路径执行vi编辑命令，也可以直接执行编辑命令：

vi /etc/rc.local

在该编辑界面下，按“I”键进入insert状态。在最后一行输入FineBI的启动命令，由于当前不在FineBI的目录路径，因此启动命令要加上文件绝对路径，启动命令为（路径需改为对应FineBI安装路径）：

nohup /opt/FineBI/FineBI &

如下图：

:wq，保存文件并退出。

注：若配置之后无法生效，可执行chmod +x /etc/rc.d/rc.local ，因为在centos7等linux操作系统中rc.local文件已经逐渐被弃用权限了。

3.2 重启服务器

执行重启Linux系统命令reboot，重新登录后，使用如下命令查看进程：

ps -aux | grep FineBI

若看到FineBI进程如下图：

表示Linux系统启动时FineBI已经同时被启动了。

4、关闭FineBI

Linux系统中，FineBI没有Windows系统中对应的后台界面来关闭程序，因此，我们需要通过杀进程来关闭服务。

1）使用如下命令查看FineBI进程对应的PID；

ps -ef | grep FineBI

2）kill掉此PID进程即可，如FineBI对应进程PID为4626。

kill -9 4626


Linux中修改jvm内存- FineReport帮助文档|报表开发|报表使用|学习教程

Linux中修改jvm内存

1、描述

在Linux服务器上，FineBI的布署默认使用的是内置的Tomcat服务器，调整jvm所占用内存可以有效适配服务器，使FineBI达到最优的性能。调整一般出现在两种时候，一个是安装时，另一个是安装后，下面分别介绍在这两种情况下如何修改jvm内存。

2、安装时

在安装时，会直接在shell命令时提示配置内存的大小，此时可以直接输入要配置内存的大小的值，按回车即可（若不输入内存大小直接按回车，则jvm内存为默认的4096M）。其值的单位为M。如下图：

3、安装后

通常安装后的FineBI因服务器变更或重新调整需要配置内存大小。FineBI在安装目录的bin文件夹下直接存在配置该内存的文件FineBI.vmoptions，编辑该文件即可。

打开文件的命令如下：

vi FineBI.vmoptions

如下图：

对该文档进行编辑。-Xmx值表示的是JVM最大可占用的内存，该值的单位默认是M，可以直接改成G单位的值。如-Xmx16G。

更改完保存，再次重启Tomcat服务器即可。


Linux系统编码修改- FineReport帮助文档|报表开发|报表使用|学习教程

Linux系统编码修改

1、描述

在Linux服务器中系统的编码默认设置成的是 en_US.UTF-8 ，而FineBI中中文编码默认是 zh_cn.UTF-8 的编码，因此会存在在BI应用中导出excel出现乱码的情况，因此要将linux系统的编码改成 zh_CN.UTF-8 。修改方法包括全局修改和局部修改。

2、全局修改

全局修改即为对整个系统都有效的修改方式，使整个系统都适应于该系统编码。该方法是在系统配置文件中添加编码方式将默认的方式覆盖掉。执行的命令如下：

vi /etc/profile

打开文件后在最后一行加入如下命令：

export LC_ALL="zh_CN.UTF-8" export LANG="zh_CN.UTF-8"

保存退出后，执行文件生效命令：

source /etc/profile

修改完成。

3、局部修改

有时Linux系统中编码并不能统一使用，而是只针对某用户下才使用该编码，即当使用FineBI的时候，在该系统用户下才能使用该编码。因此编辑配置文件时需要在该用户下编辑。

如给用户wind进行该编码设置，执下如下命令：
vi /home/wind/.bash_profile
在最后一行输入：
export LC_ALL="zh_CN.UTF-8" export LANG="zh_CN.UTF-8"
再执行source命令即可：
source /home/wind/.bash_profile

注：./bash_profile是每个用户都可使用该文件输入专用于自己使用的shell信息。


Linux最大打开文件数- FineReport帮助文档|报表开发|报表使用|学习教程

Linux最大打开文件数

1、描述

在使用Linux服务器布署FineBI时，有时会出现报错too many open files；此问题是因为linux系统本身默认系统应用最大打开的文件数为1024，BI执行时会读取保存在本地的数据，有些情况BI打开的文件数会超过这个限制，因此需要手动改掉linux系统的最大打开文件数。该修改在不同情况下会涉及到3个关键值。

2、三个关键值

1）limit中nofile值：

nofile值是单进程的最大打开文件数，也是我们的修改目标；

2）nr_open的值：

该值是单个进程可分配的最大文件数，通常默认值为1024*1024=1048576；

3）file-max的值：

该值是系统内核一共可以打开的最大值，默认值是185745；

从上面的解释可以看出，一般情况下，nofile的值不允许超过nr_open和file-max的值。因此在修改nofile时要考虑是否超过以上两个值的情况：

1. 当要修改的nofile值（最大打开文件数）未超过nr_open和file-max两个值时，直接修改nofile值即可；

2. 当要修改的nofile值（最大打开文件数）超过nr_open和file-max两个值时，不仅要修改nofile的值为最大打开文件数，还要修改nr_open和file-max的值满足大于nofile值。

3、修改方法

1）limit中nofile值

修改方法采用直接编辑文件的方式进行。在文件/etc/security/limits.conf中最后添加如下代码（其中50000即为修改的nofile值）：

* soft nofile 50000 * hard nofile 50000

退出保存，并执行source命令使文件生效即可。

source /etc/security/limits.conf

2）nr_open和file-max的值

当要修改的最大打开文件数超过nr_open和file-max时，就需要改动该值，将该值提高。其修改方式如下：

在文件/etc/sysctl.conf 中加入如下代码：

fs.nr_open=1200000 fs.file-max=200000

退出保存，并执行source命令使文件生效即可。

source /etc/sysctl.conf

注：Linux的内核参数nr_open只有在内核版本是2.6.25之后的版本才可设置。查看内核版本使用命令“uname -a”。


Linux中FineBI端口号- FineReport帮助文档|报表开发|报表使用|学习教程

Linux中FineBI端口号

1、问题描述

通常用户会将FineBI直接安装在Linux系统，然后本地浏览器远程访问BI平台来测试使用。而访问的时候通常会由于linux本身自带防火墙服务，FineBI默认端口号37799被禁止，导致用户无法访问到BI平台。下面详细叙述在Linux中如何添加防火墙允许BI端口。

2、添加防火墙允许端口

Linux的防火墙服务通常是iptables命令（在RHEL7之后iptables改名为firewall），iptables可以理解为一个过滤器。在远程客户端访问的时候，会给服务器发送IP的packet（封包），iptables的作用就是将该封包数据与该iptables中预定义的规则进行对比，如对比检查通过则接受（ACCEPT）进入本机取得资源；如果检查不通过，则可能予以丢弃（DROP）；这是iptables的基本原理。对于添加防火墙允许BI端口可以在iptables的配置文件中进行设定，文件为/etc/sysconfig下的iptables文件。

使用vim打开iptables文件可以看到如下图的默认配置：

文件内容即为设置iptables的规则，可以看到端口只有预定的22端口是允许访问的。要设置37799端口，最简单的方式就是直接复制端口22的设定，将22修改成37799即可。如下图：

注：1、-A 为新增规则其分为INPUT、OUTPUT、FORWARD，此处使用INPUT；

2、-m state --state 是用来对比IP封包的联机状态，此处使用NEW；

3、-m tcp -p tcp 是用来对比通讯协议是否相符，相符；

4、--dport 37799是用来描述目标端口号，此处是37799；

5、-j 是用来指定要执行的活动，此处是ACCEPT，接受。

配置后保存并退出，执行如下命令重启防火墙服务：

service iptables restart

即可通过37799端口远程访问该FineBI。


Linux中BI进程异常关闭- FineReport帮助文档|报表开发|报表使用|学习教程

Linux中BI进程异常关闭

1、问题描述

在Linux中使用FineBI，系统使用过程中FineBI的进程异常关闭，查看BI的日志并没有任何的异常信息。

2、问题原因及解决方案

2.1 可能原因

针对上述的现象，问题原因可能为FineBI的进程是被系统Kill掉的，可去检查Linux系统日志/var/log/messages，查看进程被异常关闭的时间点日志。

若该时间点存在对应Kill掉FineBI进程的日志，说明FineBI进程是被系统Kill掉的。

2.2 解决方案

Linux系统Kill掉FineBI的进程，可能是由于自身的OOM KILLER机制造成的，查看自身Linux系统的/etc/sysctl.conf文件（内核参数配置），若其中的vm.overcommit_memory=2，即表示系统不允许overcommit操作。

该OOM KILLER机制会在linux内存紧张的时候，依次Kill内存占用较高的进程，并在/var/log/message中进行记录，里面会记录一些如pid，process name，cpu mask，trace等信息，通过监控可以发现类似问题。

针对此类问题，我们可以调整系统的vm.overcommit_memory内核参数值，将其设置0/1，分别表示：

  • 0 – Heuristic overcommit handling. 这是缺省值，它允许overcommit，但过于明目张胆的overcommit会被拒绝，比如malloc一次性申请的内存大小就超过了系统总内存。Heuristic的意思是“试探式的”，内核利用某种算法（对该算法的详细解释请看文末）猜测你的内存申请是否合理，它认为不合理就会拒绝overcommit。
  • 1 – Always overcommit. 允许overcommit，对内存申请来者不拒。

根据需要调整内核参数值，或者增加系统的内存来解决。

详细原理可参考理解LINUX的MEMORY OVERCOMMIT。


实时数据模板定时刷新- FineReport帮助文档|报表开发|报表使用|学习教程

实时数据模板定时刷新

1、描述

使用FineBI实时数据直连数据库的用户经常会将BI的dashboard用作大屏展示，因此常常会需要将模板进行定时刷新，那么在BI中如何实现模板自动的定时刷新呢？下面我们来介绍一下实现方案。

2、实现步骤

2.1 定时刷新的js

模板的定时刷新通过定制的JS来实现，复制如下代码创建refresh.js文件。

setTimeout(function () {
 var b =document.title;
 var a =BI.designConfigure.reportId;//获取模板id
 //对模板id进行判断，实现指定模板刷新
 if (a=="4e152a061f894c20937d385efa47b8fa") {
  setInterval(function () {
   BI.SharingPool.put("controlFilters", BI.Utils.getControlCalculations());
   //Data.SharingPool.put("controlFilters", BI.Utils.getControlCalculations());
   BI.Utils.broadcastAllWidgets2Refresh(true);
  }, 3000);//3000为定时刷新的频率，单位ms
 }
}, 2000);

其中在对模板ID进行判断时，需要修改判断条件为自身需要刷新的模板ID；且3000为定时刷新的间隔时间，也可根据自身需要进行修改。

模板ID可直接通过编辑仪表板时的链接地址获取，比如新建仪表板时的链接地址为http://120.27.40.246:37799/webroot/decision/v5/design/report/222958729ec644d1ab130a209521192c/edit，则该仪表板的ID为222958729ec644d1ab130a209521192c，如下图：

%FineBI%/webapps/webroot中，如下图：

2.2 调用JS

在%FineBI%/webapps/webroot/WEB_INF/lib下的fine-bi-adapter-5.0.jar中找到show.html，如下图：

<!-- 增加刷新功能 --> <script type="text/javascript" src="/webroot/refresh.js"></script>

3、效果查看

配置完成后，在该模板预览页面中按F12查看网页源代码判断js是否加载成功。如下图，模板成功加载了定时刷新的js。

注：若在js里面改频率的话，修改完文件保存之后，清除浏览器缓存就可以了，不需要重启FineBI。


行列转换之列转行- FineReport帮助文档|报表开发|报表使用|学习教程

行列转换之列转行

1、描述

在数据表管理下我们介绍了如何进行行列转换中的行转列，那么如何进行列转行的操作呢？如下图所示的excel表保存了地区消费支出的金额。

2、列转行

2.1 导入源数据

登录FineBI数据决策系统，进入数据准备>业务包，点击添加表>EXCEL数据集，如下图：

2.2 列传行操作

对于列转行的操作，需要使用自助数据集对原始数据进行加工。

新增列

新建自助数据集，并选择添加字段“地区”和“消费金额”，如下图：

新增列处理，如下图：

确定保存该自助数据集1。

上下合并

在自助数据集2的编辑界面，新增列后选择上下合并，如下图：

保存按钮。

效果查看

在自助数据集2数据预览处可以看到数据已经合并完成，列指标已经转换成了行指标，如下图：

此时我们在仪表板的分组表中拖拽处理后的数据就可以得到如下图所示的效果：


内置jdbc驱动版本总结- FineReport帮助文档|报表开发|报表使用|学习教程

内置jdbc驱动版本总结

1、描述

FineBI包含了很多的内置驱动，这些驱动对应的JDK版本为JDK1.8。在使用过程中，须确保驱动与JDK版本的一致性。若使用内置的驱动，则环境JDK需为1.8版本；若不想更换环境的JDK版本，则需在工程下替换与该JDK一致的驱动版本。下面我们将列出BI所包含的一些内置驱动和匹配JDK版本。

2、内置驱动

内置驱动和匹配JDK版本：

%FineBI%/webapps/webroot/WEB-INF/lib下，若JDK版本不匹配，可去该路径下替换驱动版本。如环境JDK版本为1.7，想要连接sql server数据库，但是版本与内置驱动不匹配。需将SQL Server的驱动sqljdbc41.jar拷贝至上述目录，并删除sqljdbc42.jar。


URL参数总结- FineReport帮助文档|报表开发|报表使用|学习教程

URL参数总结

1、描述

FineBI的URL很多时候后面可加入参数以实现不同的效果，下面我们就对这些不同的后缀参数实现效果进行总结。

2、总结

2.1 介绍

注意：因为bi中url上面传的是json对象，有些服务器不支持json 的url，所以需要把json类型的url参数值先进行编码encodeURIComponent()

例如：dir={"name":"新建仪表板12","catalog":[]} 需要

encodeURIComponent(JSON.stringify({"name":"新建仪表板12","catalog":[]}))

变成

dir=%7B%22name%22%3A%22%E6%96%B0%E5%BB%BA%E4%BB%AA%E8%A1%A8%E6%9D%BF12%22%2C%22catalog%22%3A%5B%5D%7D

2.2 参数总结

1. 登录API：可使用该接口登录BI系统

/login/cross/domain?fine_username=name&fine_password=password&validity=-1&callback=myfunction

localhost:37799/webroot/decision/login/cross/domain?fine_username=name&fine_password=password&validity=-1&callback=myfunction

注意：需要替换username与password为自己的用户名与密码

2. 模板管理节点信息：可获取模板管理节点下所有模板相关信息-json格式

/v5/api/dashboard/search?page=1&count=30

localhost:37799/webroot/decision/v5/api/dashboard/search?page=1&count=30

3. 模板管理节点信息：可获取模板管理节点下所有模板相关信息-可视化界面

/dashboard/management

localhost:37799/webroot/decision/dashboard/management

4. 新建仪表板：可新建一个仪表板，输入新建模板名字

/v5/api/platform/dashboard/reports?dir=xxx

参数说明：dir（创建到的目录结构），实例：dir={"name":"新建仪表板12","catalog":["新建文件夹"]}

localhost:37799/webroot/decision/v5/api/platform/dashboard/reports?dir=xxx

注意：name为仪表板名字，catlog为文件夹名字，如果要在根目录创建仪表板修改参数catalog为："catalog":[]

5. 分享API：可分享模板给其他用户

/v5/api/dashboard/share/user/result?entityId=&userId=

参数说明：entityId是xx模板对应的reportId，传多个的话，用逗号分隔；userId是想要分享给其他用户的用户ID，传多个的话，用逗号分隔

localhost:37799/webroot/decision/v5/api/dashboard/share/user/result?entityId=&userId=

注意：只能分享给某个用户，不能分享给部门或者角色

6. 当前目录下的模板列表以及文件夹列表：当前登陆者仪表板的详细数据信息（包括文件夹和模板）-json

/v5/api/platform/dashboard/list?dir=xxx

参数说明：dir（创建到的目录结构），实例：dir={"catalog":["新建文件夹"]}

localhost:37799/webroot/decision/v5/api/platform/dashboard/list?dir=xxx

注意：catlog为文件夹名字，查看根目录下文件夹以及模板信息则修改参数catalog为："catalog":[]

7. 当前目录下的模板列表以及文件夹列表：当前登陆者仪表板的详细数据信息（包括文件夹和模板）-可视化界面

/webroot/decision/dashboard

localhost:37799/webroot/decision/dashboard

8. 登陆者用户的详细信息：包括departs、roles、users、reports

/v5/api/dashboard/user/info

localhost:37799/webroot/decision/v5/api/dashboard/user/info

9. 模板信息：输入对应创建者的模板 id返回模板相关信息

/v5/api/platform/dashboard/reports/info?info=xxx

参数说明：info(需要查看的模板目录)，实例：{"index":[ { "id":"7e6382e9fe5448b38bb0bc3f50913b5d" }] }

localhost:37799/webroot/decision/v5/api/platform/dashboard/reports/info?info=xxx

注意：只需要输入模板id，该模板必须是当前登录用户创建或者有权限查看的模板

10. 分享给我的模板信息

/v5/api/dashboard/share

localhost:37799/webroot/decision/v5/api/dashboard/share

11. 分享用户信息：获取模板分享给了哪些用户（只能查看被分享的用户）

/v5/api/dashboard/share/user?entityId=

localhost:37799/webroot/decision/v5/api/dashboard/share/user?entityId=

12. 全局更新：根据当前业务包的状态选择是全局更新/Check更新/配置更新

/v5/api/conf/update/generate

localhost:37799/webroot/decision/v5/api/conf/update/generate

13. 业务包（单表）更新：根据业务包名对业务包中所有的表进行更新，或者根据表转义名进行单表更新。 无论是业务包还是单表的更新，都进行的是业务包表或单表的全量的更新。 在不加表的转义名时候，进行的就是对这个业务包的更新，加了之后，进行的是对这个表的更新

/v5/api/conf/update/pack/table?info=xx

参数说明：info（需要更新的表信息），实例：{"packageName":"业务包","tableName":"表转义名"}

localhost:37799/webroot/decision/v5/api/conf/update/pack/table?info=xx

14. 获取（所有或者某个）业务包信息：（1）获取所有的分组的名字，以及对应业务包的名字：返回当前用户有权限的所有的分组的名字，以及对应业务包的名字。（2）获取某个业务包之下所有表的名字（转义之后的名字）以及表id：返回这个业务包之下所有表的名字（转义之后的名字）以及表id

/v5/api/conf/packs/packageId

localhost:37799/webroot/decision/v5/api/conf/packs/packageId

注意：packageId为参数，需要替换为正确的packageId

15. 数据准备界面

/v5/api/conf/conf/page

localhost:37799/webroot/decision/v5/api/conf/page

16. 实时生成treasures（报表和BI的一些功能点记录输出文件夹）

/v5/design/report/point/export

localhost:37799/webroot/decision/v5/design/report/point/export


5.0升级兼容信息检测- FineReport帮助文档|报表开发|报表使用|学习教程

5.0升级兼容信息检测

1、描述

FineBI5.0已经于10-12正式与大家见面。使用FineBI的老客户必然会发现，从4.x到5.0 产品功能上做了非常多的优化，从功能完善度、可视化效果、易用性、美观度上都有了有目共睹的提升。为了BI客户能更加平滑地升级到5.0，并且可以有更好的升级体验，帆软先行推出了BI系统使用信息评估活动（活动地址），使用工具检测自身系统的升级兼容信息说明，不包含企业机密信息，在检测工具使用检测后可自行确认。下面我们介绍下如何使用工具进行系统检测。

2、检测前注意事项

1、请确认使用的jar包版本为FineBI4.1，且日期为2018-10-24之后的jar包（jar包下载地址： jar下载地址），若版本不一致可参考FineBI升级指南升级；

2、若版本不一致更换jar包，请确认在更换完jar包之后FineBI工程已经重新启动；

3、确认在运行下面介绍的检测工具时，被检测工程已经处于关闭状态（即FineBI关闭），运行状态可能会导致检测数据不准确；

4、建议在进行检测前，将工程进行备份；

5、也可以将正式环境需要的文件停机之后复制出来进行检测，必要文件可以参考第五章节附录；

3、检测步骤

1、根据使用的操作系统获取对应版本的检测工具（检测工具下载地址：win版本戳我 linux版本戳我）；

2、解压zip文件后获得的文件目录如下：

Windows版本：

示例

4、FAQ

4.1 启动过程日志出现 java.util.ServiceConfigurationError: com.sun.tools.attach.spi.AttachProvider: Provider sun.tools.attach. WindowsAttachProvider could not be instantiated

问题描述：启动过程日志出现 java.util.ServiceConfigurationError: com.sun.tools.attach.spi.AttachProvider: Provider sun.tools.attach.WindowsAttachProvider could not be instantiated

解决方案：如果是jdk启动的, 请进入jdk安装目录, 在其下面的 JDK\jre\bin 中复制 attach.dll 到 JDK\bin 中, 再启动检测工具；

4.2 为什么有些普通用户创建的模板没有检测到？

问题描述：有些普通用户创建的模板并没有检测到？

解决方案：由于部分用户的配置会生成临时文件，这部分文件在工程开启状态下无法读到，导致上述现象。建议将工程停掉之后再进行检测；

4.3 没有生成报告或者报告数据不正确?

问题描述：没有生成升级检测的报告或者生成的检测报告数据不正确？

解决方案：请联系帆软技术支持，并提供upgrade.log以供帆软技术人员分析原因；

5、附录

检测所需要的文件列表：（路径：%FineBI%/webapps/WebReport）


Jboss服务器部署（待更新）- FineReport帮助文档|报表开发|报表使用|学习教程

Jboss服务器部署（待更新）

1、描述

由于FineBI提供的报表服务器其实就是一个Servlet，所以在配置FineBI服务器之前，首先确保机器上已经安装了用来解析Servlet的Jboss。Jboss相关知识和下载地址参见Jboss官方网站。下面以Windows10系统，jboss6，jdk 1.7详细介绍Jboss服务器部署步骤，其他版本步骤基本相同（Jboss7.0.2版本部署详细步骤可参考Jboss7.0.2服务器部署）。

注：1、FineBI服务器需要支持JDK1.6及以上版本的应用服务器版本。JBOSS服务器版本通用。

2、部署前请先确认服务器环境的JDK版本，默认下载的FineBI安装包为JDK1.8版本；若与环境不符，请联系帆软技术支持获取对应的jar包。

2、独立部署

在%FineBI%下面复制整个WebReport工程，将其拷贝至jboss的%jboss_Home\server\default\deploy下面，并为该文件夹添加后缀名.war，如下图：

注：WebReport是新建的应用目录的名字，如果是已经存在的应用，请替换成相对应用的目录名。

重新启动Jboss，在浏览器地址栏输入http://localhost:8080/WebReport/ReportServer，能看到部署成功页面，则表明FineBI部署成功。

3、嵌入式部署

嵌入式部署表示将FineBI嵌入到别的web应用工程中。嵌入式部署需将FineBI相关的文件拷贝到相应目录中，并进行xml的整合，下面介绍详细步骤。

3.1 复制目录

将%FineBI%\WebReport\WEB-INF目录下面的assets、assist、bireport、embed、lib、resources六个文件夹拷贝到Jboss的下server\default\deploy\jmx-console.war\WEB-INF目录下。

3.2 整合xml

将%FineBI%\WebReport\WEB-INF下的web.xml如下代码：

<servlet> <servlet-name>ReportServer</servlet-name> <servlet-class>com.fr.web.ReportServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ReportServer</servlet-name> <url-pattern>/ReportServer</url-pattern> </servlet-mapping>

复制到：%JBOSS_HOME%\server\default\deploy\jmx-console.war\WEB-INF\web.xml文件中，作为其子元素。

注：web.xml中对于元素出现的顺序敏感，servlet必须出现在servlet-mapping标志之前，所以将所有servlet集合放置在servlet-mapping之前以便于管理与程序调用。此处的详细请情节参照tomcat服务器部署小节。

启动Jboss，启动浏览器，在地址栏输入http://localhost:8080/ROOT/ReportServer。能成功访问如下图与独立部署相同部署成功页面，则表明FineBI应用嵌入式部署成功。


SAP数据集（待更新）- FineReport帮助文档|报表开发|报表使用|学习教程

SAP数据集（待更新）

1、描述


SAP BW数据集（待更新）- FineReport帮助文档|报表开发|报表使用|学习教程

SAP BW数据集（待更新）

1、描述


SSAS数据集（待更新）- FineReport帮助文档|报表开发|报表使用|学习教程

SSAS数据集（待更新）

1、描述


SAP HANA数据集（待更新）- FineReport帮助文档|报表开发|报表使用|学习教程

SAP HANA数据集（待更新）

1、描述


华为ELK数据连接（待更新）- FineReport帮助文档|报表开发|报表使用|学习教程

华为ELK数据连接（待更新）

1、描述

Elk是一个分布式交互查询分析数据仓库引擎，支持标准的SQL2003规范，支持标准SQL对数据的并行插入、删除、修改、查询等功能。Elk是FusionInsight HD提供标准SQL接口的即时查询组件。华为Elk采用高速分布式并行计算引擎，提供高性能的HDFS（Hadoop Distributed File System）结构化数据的即时及复杂分析查询功能，且对外提供JDBC和ODBC访问接口。本章我们将介绍如何在FineBI中连接华为Elk数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本
org.postgresql.Driver | jdbc:postgresql://ip:port/dbname | 华为Elk 2.6.0

2.2 连接步骤

下载华为Elk的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\WebReport\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择华为Elk，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

待更新


华为Fusioninsight数据连接（待更新）- FineReport帮助文档|报表开发|报表使用|学习教程

华为Fusioninsight数据连接（待更新）

1、描述

FusionInsight是华为面向众多行业客户推出的，基于Apache开源社区软件进行功能增强的企业级大数据存储、查询和分析的统一平台。它以海量数据处理引擎和实时数据处理引擎为核心，并针对金融、运营商等数据密集型行业的运行维护、应用开发等需求，打造了敏捷、智慧、可信的平台软件、建模中间件及OM系统，让企业可以更快、更准、更稳的从各类繁杂无序的海量数据中发现全新价值点和企业商机。本章我们将介绍如何在FineBI中连接华为Fusioninsight数据库。

2、数据连接

2.1 配置信息

驱动 | URL | 支持数据库版本
org.apache.hive.jdbc.HiveDriver | jdbc:hive2://ip1:port,ip2:port,ip3:port/;serviceDiscoveryMode=zooKeeper; zooKeeperNamespace=hiveserver2;sasl.qop=authconf;auth=KERBEROS; zk.principal=zookeeper/hadoop;principal=hive/hadoop.hadoop.com@HADOOP.COM; | 华为Fusioninsight HD C60U20

2.2 连接步骤

下载华为Fusioninsight的驱动包，并将该驱动包放置到FineBI文件夹%FineBI%\webapps\WebReport\WEB-INF\lib下，重启服务器。

登录FineBI数据决策系统，选择管理系统>数据连接，点击“新建数据连接”选择更多数据连接，并在弹出框中选择华为Fusioninsight，如下图：

点击确认进入数据连接配置页面，按照前面提供的配置信息，输入数据库的对应信息，可选择填入编码转换和连接池属性信息（编码转换和连接池属性介绍可参考配置数据连接），如下图：

待更新


Hsql数据连接（待更新）- FineReport帮助文档|报表开发|报表使用|学习教程

Hsql数据连接（待更新）

1、描述

Hsql数据库是一款纯Java编写的免费数据库，许可是BSD-style的协议。相对其他数据库来说，其体积小，仅一个hsqldb.jar文件就包括了数据库引擎、数据库驱动、还有其他用户界面操作等内容。本章我们将介绍如何在FineBI中连接Hsql数据库。

2、数据连接

2.1 配置信息

驱动 | URL
com.fr.third.org.hsqldb.jdbcDriver | jdbc:hsqldb:file:[PATH_TO_DB_FILES]

2.2 连接步骤

待更新


FineBI帮助文档 FineBI帮助文档

  • 文档
  • demo
  • 官网
  • 论坛
  • 提问
  • 视频
  • 认证
  • 更多
  • 登录
    • |
  • 注册
  • 繁体中文
当前5.0，4.1戳这里
  • pc端demo
  • 移动端demo扫二维码
  • 帆软职业资格认证
  • 帆软证书查询
  • 下载
  • 帆软市场
  • 技术方案
  • 模板分享
  • 学习计划表
  • 开发者联盟


登录-帆软通行证

  • 官网
  • 论坛BBS
  • 学习
  • 提问
  • FineReport
  • FineBI
  • 帆软认证
  • 发现
个人中心 | 注册
  • 报表-产品下载
  • 报表-视频教程
  • 报表-帮助文档
  • 报表-简体demo
  • 报表-繁体demo
  • 报表-技术方案
  • 报表-模板分享
  • 报表-学习计划表
  • BI-产品下载
  • BI-视频教程
  • BI-帮助文档
  • BI-在线demo
  • BI-学习心得
  • BI-技术方案
  • 帆软职业资格认证
  • 帆软证书查询
  • 帆软认证报表工程师
  • ——FCRA认证考试
  • ——FCRP认证考试
  • 帆软认证BI工程师
  • ——FCBA认证考试
  • ——FCBP认证考试
  • 帆软市场
  • 帆软开发者平台
  • 帆软可视化插件开发大赛成果展
  • 帆软核心粉丝圈
  • 帆软2017年度十佳用户暨帆软MVP评选大赛

  • 还没有账号？|立即注册
  • 忘记密码？


FineBI帮助文档 FineBI帮助文档

您好，只有最新版本的5.0支持在线编辑修改，如果想创建／编辑文档，请到最新版5.0的文档
  • 繁体中文


404 - FineReport帮助文档

抱歉，您请求的页面现在无法打开 你可以 刷新 或 返回首页