國產輕量級BI平臺CBoard的安裝和初步使用介紹

背景

在目前我接觸過的輕量級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

準備及安裝工做

JDK1.8

sql

Maven 3

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

若是要使用看板導出和郵件功能,須要安裝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;
複製代碼

修改配置文件

在正式編譯代碼以前,能夠先修改配置文件。須要修改的部分包括

  • 元數據鏈接信息(本例中是MySQL 的 cboard庫)
  • 郵件服務器配置(用於導出看板的定時任務)
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

官方中文手冊中,對每個步驟都有很詳細的說明。因此我這裏只把本身測試過程當中的部分環節記錄下來。這裏仍是要讚賞一下,國產的開源軟件在文檔上能作到這個程度,真的很不錯。

數據源

CBoard支持多種數據源(JDBC,Kylin,Saiku,等),不過咱們目前最經常使用的仍是JDBC。按照標準的JDBC鏈接字符串格式填入參數便可,以下圖我使用的是PostgreSQL做爲數據倉庫。

image-20180718103546409

數據集

CBoard中的數據集,就是Cube。因此建立數據集的過程,也就是設計維度,層次,度量的過程。

和其餘BI平臺不一樣,CBoard中並不須要指定維度表和事實表,而是直接使用查詢語句獲得的星型模型結果。做爲一個輕量級BI,我認爲這種方式是很合適的,帶來的直接好處是,不須要依賴數據倉庫層的主題模型,甚至在沒有星型模型的場景下,也可使用SQL獲取數據,而且隨時根據需求變化來調整SQL語句。

設計數據集步驟以下圖

image-20180718105633495

  1. 提供SQL語句獲取星型模型的結果,這裏我直接使用了視圖。
  2. 若是提供了實時間隔,那麼這個數據集會自動刷新,假如我在SQL中使用時間函數獲取5分鐘內的數據,就須要在這裏設置一個刷新週期。
  3. 查詢結果的全部字段,是維度和指標的候選項。
  4. 維度同時支持單一維度(如上圖中日期)和層次維度(如上圖中YQMD),瞭解OLAP的都知道是啥區別。
  5. 指標列中不須要指定計算方式,即只提供字段,不提供聚合函數。這裏也體現出輕量級的設計思路,把選取聚合函數的動做放到使用時肯定,好處是指標數量會變得比較少。
  6. 可選表達式能夠執行簡單的計算,如 sum(A)/count(B)這種計算,可是沒法實現同比環比等複雜操做。
  7. 設置經常使用過濾條件,在後面設計圖表的時候很方便。

圖表設計

圖表設計很是簡單,就和設計EXCEL透視表同樣,拖放行,列,指標,而後預覽微調。有透視表使用經驗便可快速上手,以下圖

image-20180718112334658

看板設計

當前版本中,我以爲看板設計是一個比較大的缺憾。由於沒有提供所見即所得的拖放操做,因此在設計看板的過程當中感受老是有點彆扭。CBoard中的作法是,把頁面劃分爲行,而後在每一行中劃分列,經過指定列的寬度來實現同一行放置多個圖表。這種方式能夠實現粗放的設計意圖,可是對於一些精細化的設計就無能無力了。

以下圖分別顯示了設計階段和展現階段的看板,能夠看到看板上的元素是如何對應位置的

image-20180718113011108

image-20180718113018611

定時任務

定時任務能夠實如今固定的時間把看板內容做爲郵件發送,這個功能很是實用。不過我發現的一個問題是,發送的看板數據會忽略看板級別的參數,只使用數據集和圖表級別的參數。

定時任務設置很是簡單,我這裏就不截圖了。

缺憾

在我測試的版本(0.4.2)中,我還發現幾個不太完善的地方,但願在後續的版本中能夠改進。

  • 數據集中不能直接設置同比環比等操做。對輕量級BI來講這個要求要點高,我目前知道能夠在Cube層直接設置之中複雜指標的只有MDX和DAX兩種方法。
  • 看板設計中尚未實現拖放,因此有一些精細化的佈局不能實現。雖然新增長的全屏監控看板,已經能夠實現拖放式佈局(我尚未深刻使用這個功能)。
  • 導出/郵件功能,不能根據看板上設置的過濾器來導出。我在測試中每次導出的郵件都是完整的數據集內容,沒有找到僅導出一部分數據的辦法。不知道是否是個人操做姿式不對。
相關文章
相關標籤/搜索