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

wait4friend發表於2018-07-18

背景

在目前我接觸過的輕量級BI工具中,我最喜歡的是MS Power BI。

喜歡的理由粗暴直接:

  • 自帶輕量級ETL工具Power Query,在資料倉儲不完善的場景下特別有用;

  • 視覺化的建模方式,拖拉放,所見即所得;

  • 強大的DAX,不但能定義Measure,還可以編寫迴圈等高階查詢;

  • 通過Embed方式嵌入Web應用,無縫整合在自己的應用中;

如果只是個人使用,我覺得這簡直是一個完美的工具了。但是,凡事就怕但是,在企業級應用中,當前版本的Power BI有幾個不太方便的地方。對我而言,最不能忍的一點就是資料需要完全匯入到PBI檔案之後才能使用(官方提供了Direct Query模式,僅支援部分資料來源)。

所以呢,一直想要尋找一款趁手好用的輕量級開源BI產品。雖然嘗試過Superset,Metabase等知名產品後,但總覺得有各種不方便。最近看到一款國內開發的產品CBoard,簡單使用之後,覺得還是挺驚豔的。雖然目前CBoard還有各種不完美的地方,但是我仍然覺得值得一試。

準備及安裝工作

JDK1.8

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兩種方法。
  • 看板設計中還沒有實現拖放,所以有一些精細化的佈局不能實現。雖然新增加的全屏監控看板,已經可以實現拖放式佈局(我還沒有深入使用這個功能)。
  • 匯出/郵件功能,不能根據看板上設定的過濾器來匯出。我在測試中每次匯出的郵件都是完整的資料集內容,沒有找到僅匯出一部分資料的辦法。不知道是不是我的操作姿勢不對。

相關文章