在目前我接触过的轻量级BI工具中,我最喜欢的是MS Power BI。javascript
喜欢的理由粗暴直接:java
自带轻量级ETL工具Power Query,在数据仓库不完善的场景下特别有用;mysql
可视化的建模方式,拖拉放,所见即所得;linux
强大的DAX,不但能定义Measure,还能够编写循环等高级查询;c++
经过Embed方式嵌入Web应用,无缝集成在本身的应用中;git
若是只是我的使用,我以为这简直是一个完美的工具了。可是,凡事就怕可是,在企业级应用中,当前版本的Power BI有几个不太方便的地方。对我而言,最不能忍的一点就是数据须要彻底导入到PBI文件以后才能使用(官方提供了Direct Query模式,仅支持部分数据源)。github
因此呢,一直想要寻找一款趁手好用的轻量级开源BI产品。虽然尝试过Superset,Metabase等知名产品后,但总以为有各类不方便。最近看到一款国内开发的产品CBoard,简单使用以后,以为仍是挺惊艳的。虽然目前CBoard还有各类不完美的地方,可是我仍然以为值得一试。web
略sql
CBoard项目须要使用maven编译,因此先安装maven数据库
# 解压maven
cd /usr/local
tar zxvf apache-maven-3.3.9-bin.tar.gz
# 设置环境变量
vi /etc/profile #增长下列配置
export MAVEN_HOME=/usr/local/apache-maven-3.3.9
export PATH=${MAVEN_HOME}/bin:${PATH}
# 配置好maven仓库,这里推荐一个阿里云的maven镜像
vi /usr/local/apache-maven-3.3.9/conf/settings.xml
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
复制代码
若是要使用看板导出和邮件功能,须要安装PhantomJS 2.1+
# 须要依赖的包,主要是fontconfig-devel
yum install -y gcc gcc-c++ make git openssl-devel freetype-devel fontconfig-devel
# 用phantomjs去截取中文页面可能会出现乱码的状况,安装字体能够解决
yum install -y bitmap-fonts bitmap-fonts-cjk
# 解压
tar xvf phantomjs-2.1.1-linux-x86_64.tar.bz2
# 建立软连接
ln -sf /usr/local/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
复制代码
使用的版本是0.4.2
git clone https://github.com/yzhang921/CBoard.git
git checkout branch-0.4.2
复制代码
当前版本(0.4)的元数据存储仅支持MySQL,Oracle,因此先使用MySQL。官方提供了两个样本文件来初始化演示内容,也可使用空白数据库本身重新建立。由于已经尝试过演示库,因此这一次从零开始建立。
create database cboard;
use cboard;
source sql/mysql/mysql.sql;
复制代码
在正式编译代码以前,能够先修改配置文件。须要修改的部分包括
vi src/main/resources/config.properties
复制代码
选择平台默认显示语言为中文
vi src\main\webapp\org\cboard\Settings.js
复制代码
# 修改参数为cn
// CBoard settings
var settings = {
preferredLanguage: "en" // 可选值en/cn: cn切换中文
}
复制代码
因为源代码依赖中默认包含了SQLServer的JDBC驱动,可是该驱动在公有的Maven仓库中不存在。个人使用环境中不涉及SQLServer数据库,因此把pom中的下面依赖移除
vi pom.xml
复制代码
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
复制代码
mvn clean package
复制代码
拷贝CBoard\target\cboard.war到tomcat的webapp目录
启动tomcat
默认登陆用户名和密码: admin/root123
在官方中文手册中,对每个步骤都有很详细的说明。因此我这里只把本身测试过程当中的部分环节记录下来。这里仍是要赞赏一下,国产的开源软件在文档上能作到这个程度,真的很不错。
CBoard支持多种数据源(JDBC,Kylin,Saiku,等),不过咱们目前最经常使用的仍是JDBC。按照标准的JDBC链接字符串格式填入参数便可,以下图我使用的是PostgreSQL做为数据仓库。
CBoard中的数据集,就是Cube。因此建立数据集的过程,也就是设计维度,层次,度量的过程。
和其余BI平台不一样,CBoard中并不须要指定维度表和事实表,而是直接使用查询语句获得的星型模型结果。做为一个轻量级BI,我认为这种方式是很合适的,带来的直接好处是,不须要依赖数据仓库层的主题模型,甚至在没有星型模型的场景下,也可使用SQL获取数据,而且随时根据需求变化来调整SQL语句。
设计数据集步骤以下图
图表设计很是简单,就和设计EXCEL透视表同样,拖放行,列,指标,而后预览微调。有透视表使用经验便可快速上手,以下图
当前版本中,我以为看板设计是一个比较大的缺憾。由于没有提供所见即所得的拖放操做,因此在设计看板的过程当中感受老是有点别扭。CBoard中的作法是,把页面划分为行,而后在每一行中划分列,经过指定列的宽度来实现同一行放置多个图表。这种方式能够实现粗放的设计意图,可是对于一些精细化的设计就无能无力了。
以下图分别显示了设计阶段和展现阶段的看板,能够看到看板上的元素是如何对应位置的
定时任务能够实如今固定的时间把看板内容做为邮件发送,这个功能很是实用。不过我发现的一个问题是,发送的看板数据会忽略看板级别的参数,只使用数据集和图表级别的参数。
定时任务设置很是简单,我这里就不截图了。
在我测试的版本(0.4.2)中,我还发现几个不太完善的地方,但愿在后续的版本中能够改进。