在目前我接觸過的輕量級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)中,我還發現幾個不太完善的地方,但願在後續的版本中能夠改進。