1. 概述
1.1 版本
FineBI 版本 | 功能变动 |
---|---|
6.0 | - |
1.2 应用场景
本文将介绍如何在 FineBI 中连接 MySQL 数据库。
2. 准备工作
2.1 版本和驱动
下载驱动,并将其上传至 FineBI,如何上传可参见:驱动管理 2.1 节
支持数据库版本 | 驱动包下载 |
---|---|
V8.0、V5.6.31、V5.5、V5.5.5、V5.6.35、V5.7、V5.6.37、V5.5.46、V6.5、V5.7.16 、V5.6.29、V5.6.22、V5.6.34、V5.6.28、V5.1; | 已内置,无需下载 |
官方建议: 为获得更好的取数性能,建议使用 Mysql5.5、5.6、5.7 版本的客户,更换 Mysql 数据库驱动为 5.1.37 版本为获得更好的取数性能。(5.1.37 版本的驱动不支持 V5.1、V8.0 的数据库)mysql-connector-java-5.1.37.jar | |
用户若使用的是其他小版本的数据库,可以从 MySQL官网 下载对应的连接驱动包。 |
2.2 收集连接信息
在连接数据库之前,请收集以下信息:
数据库所在服务器的 IP 地址和端口号;
数据库的名称;
数据库的用户名和密码;
3. 具体连接步骤
1)以管理员身份登录 FineBI ,点击「管理系统>数据连接>数据连接管理」,点击「新建数据连接」,如下图所示:
注:如果非管理员用户想要配置数据连接,需要管理员给其分配管理系统下数据连接节点的权限,具体操作请查看 数据连接权限
2)找到 MySQL 的图标,如下图所示:
3)驱动选择「默认」(若用户重新上传了驱动,可以切换为自定义后选择自己的驱动),然后输入 2.2 节的连接信息。如下图所示:
注:若出现中文乱码或日期错乱的情况,可在「数据连接URL」后加后缀,格式为:jdbc:mysql://hostname:port/database?generateSimpleParameterMetadata=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
其中
serverTimezone=Asia/Shanghai -- 设置以"上海时区"为准
characterEncoding=utf8 -- 编码转化
4)点击「测试连接」,若连接成功则「保存」该连接。如下图所示:
4. 添加数据库的表至 FineBI
5. 注意事项
5.1 数据库编码问题
若 MySQL 数据库编码为 UTF-8 ,需要在数据连接的 URL 后添加参数 ?useUnicode=true&characterEncoding=UTF-8
如果添加参数后仍然出现下图所示的乱码,那么需要将编码改为「默认」。
5.2 添加数据表问题
5.2.1 SQL 语句
1)添加 SQL 数据集时,输入的 SQL 语句不支持添加注释。
2)添加 SQL 数据集时,输入的 SQL 语句不支持 top N 语句。
3)问题现象:添加SQL 数据集时,输入的 SQL 语句中带有 concat() 函数 ,例如 select concat( count(*) ,"个")from table GROUP BY table1,如果连接的字段类型不同,会出现乱码。
解决方法:利用 MySQL 的字符串转换函数 CONVERT() 将参数格式化为 char 类型即可,例如:select concat( CONVERT(count(*),char),"个")from table GROUP BY table1。
5.2.2 字段类型
1)当使用 MYSQL 数据连接并添加数据表时,若数据库版本为 MYSQL 5.6 ,请确保数据库中 varchar 文本类型字段不为空,否则添加表至 BI 后出现小方块乱码。
2)当使用 MYSQL 数据连接并添加数据表时,如果数据库中字段类型为年份 (year) 类型,在 BI 中会被识别成文本字段,且显示为年月日格式。如数据库中有 year 类型字段 2015,在 BI 中添加该数据表则会显示为 2015-01-01。
5.2.3 添加的数据集日期字段值和数据库记录的日期有误差
1)现象:仪表板或数据准备页面显示数据库的时间字段,比实际数据小了一天。
2)原因:mysql数据库默认使用的时区为CST,和当前时区不同。
3)解决方法:数据连接URL中增加参数 ?serverTimezone=Asia/Shanghai
5.2.4 添加数据库表后不显示数据
1)现象:创建 MySQL 数据连接并添加数据库表,数据库中有数据但 FineBI 预览时没有数据。
2)解决方法:数据连接 URL 中增加参数 ?zeroDateTimeBehavior=convertToNull