之前有讀者問我有沒有什麼好用的BI(Business Intelligence)工具?BI工具簡單來說就是一種資料視覺化工具。今天給大家推薦一款開源的資料視覺化工具DataEase
,基於SpringBoot實現,整合 Apache Doris + Kettle,可支援超大資料量秒級查詢,希望對大家有所幫助!
SpringBoot實戰電商專案mall(50k+star)地址:https://github.com/macrozheng/mall
簡介
DataEase是一款號稱人人可用
的開源資料視覺化分析工具,在Github上已經有4.1K+Star。致力於幫助使用者快速分析資料並洞察業務趨勢,從而實現業務的改進與優化。DataEase 支援豐富的資料來源連線,能夠通過拖拽方式快速製作圖表,並可以分享給他人。
下面是一張由DataEase生成的視覺化大屏,還是挺炫酷的。
架構
作為一款資料視覺化工具,DataEase使用了現階段流行的大資料技術Apache Doris和Kettle,如果你想學習這兩種技術的話,這個專案是個不錯的選擇。
系統架構
DataEase使用的技術棧如下:
技術 | 說明 |
---|---|
SpringBoot | 後端基礎框架 |
MySQL | 資料儲存 |
Apache Doris | 一個現代化的MPP分析型資料庫產品。僅需亞秒級響應時間即可獲得查詢結果,有效地支援實時資料分析。 |
Kettle | 一款開源的ETL(即資料抽取、轉換、裝載的過程)工具,純Java編寫,可以實現高效穩定的資料抽取。 |
Docker | 容器化部署 |
Vue | 前端基礎框架 |
Element | 前端UI框架 |
各種技術在DataEase中的使用場景如下:
功能架構
下面是DataEase的功能架構圖,從中我們很容易看出使用DataEase我們能做什麼。
安裝
DataEase提供了安裝包,下載安裝包,使用安裝指令碼install.sh
即可完成安裝,如果你的伺服器已經安裝了MySQL
,需要一些額外的配置。
- 首先我們需要下載安裝包,這裡使用的是
v1.5.2
版本,下載地址:https://github.com/dataease/d...
- 下載完成後上傳到Linux伺服器,使用如下命令解壓到指定目錄;
tar -zxvf dataease-v1.5.2-online.tar.gz
- 解壓完成後目錄結構如下,注意
dataease
資料夾下有docker-compose部署指令碼;
- 接下來修改安裝配置
install.conf
,主要修改服務執行埠DE_PORT
和MySQL配置;
# 基礎配置
## 安裝目錄
DE_BASE=/opt
## Service 埠(預設80,大概率衝突)
DE_PORT=8010
# 資料庫配置
## 是否使用外部資料庫
DE_EXTERNAL_MYSQL=false
## 資料庫地址(預設mysql,之前如果用docker安裝過mysql建議修改)
DE_MYSQL_HOST=mysql-de
## 資料庫埠(預設3306,之前如果用docker安裝過mysql建議修改)
DE_MYSQL_PORT=3307
## DataEase 資料庫庫名
DE_MYSQL_DB=dataease
## 資料庫使用者名稱
DE_MYSQL_USER=root
## 資料庫密碼
DE_MYSQL_PASSWORD=Password123@mysql
- 修改DataEase的docker-compose檔案,路徑為
dataease/docker-compose.yml
,修改MySQL依賴名稱和網路配置,預設網路配置可能會引起衝突;
services:
dataease:
image: registry.cn-qingdao.aliyuncs.com/dataease/dataease:v1.5.2
container_name: dataease
ports:
- ${DE_PORT}:8081
mem_limit: 4096m
volumes:
- ${DE_BASE}/dataease/conf:/opt/dataease/conf
- ${DE_BASE}/dataease/logs:/opt/dataease/logs
- ${DE_BASE}/dataease/plugins/thirdpart:/opt/dataease/plugins/thirdpart
- ${DE_BASE}/dataease/data/kettle:/opt/dataease/data/kettle
depends_on:
# 如果之前使用Docker安裝過mysql,修改名稱
mysql-de:
condition: service_healthy
networks:
- dataease-network
networks:
dataease-network:
driver: bridge
ipam:
driver: default
# 預設網段配置可能會衝突,建議修改
config:
- subnet: 172.33.0.0/16
gateway: 172.33.0.1
- 修改Doris的docker-compose檔案,路徑為
dataease/docker-compose-kettle-doris.yml
,主要修改網路配置;
version: '2.1'
services:
doris-fe:
image: registry.cn-qingdao.aliyuncs.com/dataease/doris:0.15
container_name: doris-fe
networks:
# 修改為33網段防止衝突
dataease-network :
ipv4_address: 172.33.0.198
restart: always
doris-be:
image: registry.cn-qingdao.aliyuncs.com/dataease/doris:0.15
networks:
# 修改為33網段防止衝突
dataease-network :
ipv4_address: 172.33.0.199
restart: always
- 修改MySQL的docker-compose檔案,路徑為
dataease/docker-compose-mysql.yml
,只要修改容器名稱即可;
version: '2.1'
services:
mysql-de:
image: registry.cn-qingdao.aliyuncs.com/dataease/mysql:5.7.36
# 之前使用Docker安裝過mysql,需要修改容器名稱
container_name: mysql-de
env_file:
- ${DE_BASE}/dataease/conf/mysql.env
ports:
- ${DE_MYSQL_PORT}:3306
volumes:
- ${DE_BASE}/dataease/conf/my.cnf:/etc/mysql/conf.d/my.cnf
- ${DE_BASE}/dataease/bin/mysql:/docker-entrypoint-initdb.d/
- ${DE_BASE}/dataease/data/mysql:/var/lib/mysql
networks:
- dataease-network
- 如果你啟用了firewall防火牆的話,還要開放下
8010
埠;
firewall-cmd --zone=public --add-port=8010/tcp --permanent
firewall-cmd --reload
- 一切準備就緒,直接執行安裝目錄下的
install.sh
檔案進行安裝;
./install.sh
- 安裝過程涉及下載映象,時間較長需要耐心等待,最終安裝成功後顯示如下;
➜ dataease-v1.5.2-online ./install.sh
Stopping doris-fe ... done
Stopping doris-be ... done
Stopping kettle ... done
Removing doris-fe ... done
Removing doris-be ... done
Removing kettle ... done
Removing network dataease_dataease-network
======================= 開始安裝 =======================
[DATAEASE Log]: 拷貝配置檔案模板檔案 -> /opt/dataease/conf
[DATAEASE Log]: 根據安裝配置引數調整配置檔案
time: Wed Dec 22 10:59:39 CST 2021
/usr/sbin/getenforce
[DATAEASE Log]: 檢測到 Docker 已安裝,跳過安裝步驟
[DATAEASE Log]: 啟動 Docker
Redirecting to /bin/systemctl start docker.service
[DATAEASE Log]: 檢測到 Docker Compose 已安裝,跳過安裝步驟
[DATAEASE Log]: 拉取映象
Pulling doris-be ... done
Pulling kettle ... done
Pulling mysql-de ... done
Pulling dataease ... done
Pulling doris-fe ... done
...省略若干日誌
Name Command State Ports
-----------------------------------------------------------------------------------------------------
dataease /deployments/run-java.sh Up (health: starting) 0.0.0.0:8010->8081/tcp
doris-be /entrypoint.sh Up (healthy)
doris-fe /entrypoint.sh Up (health: starting)
kettle /opt/kettle/carte.sh kettl ... Up
mysql-de docker-entrypoint.sh mysqld Up (healthy) 0.0.0.0:3306->3306/tcp, 33060/tcp
[DATAEASE Log]: 服務啟動中,請稍候 ...
[DATAEASE Log]: 服務啟動中,請稍候 ...
[DATAEASE Log]: 【警告】服務在等待時間內未完全啟動!請稍後使用 dectl status 檢查服務執行狀況。
======================= 安裝完成 =======================
請通過以下方式訪問:
URL: http://$LOCAL_IP:8010
使用者名稱: admin
初始密碼: dataease
- 由於我們修改了MySQL的配置,還需修改安裝目錄
/opt
下的MySQL連線配置,檔案路徑為/opt/dataease/conf/dataease.properties
,改為mysql-de
;
# 資料庫配置
spring.datasource.url=jdbc:mysql://mysql-de:3306/dataease?autoReconnect=false&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
- 然後重啟
dataease
容器;
docker restart dataease
- 重啟時使用
docker logs -f dataease
檢視日誌,當資料庫匯入完成後專案才算啟動成功;
- 由於DateEase安裝成功後會自動在系統中註冊
dataease
服務,所以我們可以使用如下命令來操作它。
# 檢視服務狀態
systemctl status dataease
# 啟動服務
systemctl start dataease
# 停止服務
systemctl stop dataease
使用
使用DataEase可以方便地實現資料視覺化,接下來我們以Excel和MySQL中的資料為例,來體驗下它的功能。
基本概念
在使用DataEase之前,我們得了解它的一些基本概念,這對使用它會很有幫助。
- 資料來源:是後續資料分析的資料來源,指的是各種資料庫連線資訊,支援MySQL、Elasticsearch、MongoDB等常用資料來源;
- 資料集:資料的集合,可以是Excel資料、資料庫表資料、自定義SQL查詢資料,是檢視的資料來源;
- 檢視:視覺化展示的最小單元,是組成儀表板的基本元素,可以是折線圖、柱狀圖、餅狀圖等;
- 儀表板: 視覺化大屏,檢視組合介面;
- 模板:可用來快速構建儀表板的資料及樣式模板。
Excel資料分析
下面我們將從Excel中獲取資料,實現儀表板,來體驗下DataEase的資料視覺化功能。
- DataEase啟動成功後,使用賬號
admin:dataease
即可登入,訪問地址:http://192.168.3.105:8010/
- 由於我們之前修改了MySQL容器的名稱,這裡的
資料來源
我們也要修改下;
- 接下來我們需要建立一個
資料集
,使用官方的示例Excel即可,下載完成後可以開啟看下,一份商品銷售報表,下載地址:https://dataease.io/docs/manu...
- 然後選擇新增
資料集
;
- 新建時上傳Excel,最後選擇確認進行匯入;
- 由於之前修改了Doris的網段,匯入Excel資料會出現無法顯示的情況,並彈出如下錯誤提示;
- 進入
mysql-de
容器內部,輸入如下命令即可解決;
# 進入內建 MySQL 容器內
docker exec -it mysql-de sh
# 進入 MySQL 容器後,連線 doris-fe
mysql -uroot -h doris-fe -P 9030
# 由於修改了doris的網段,此處也要修改
ALTER SYSTEM ADD BACKEND "172.33.0.199:9050";
SET PASSWORD FOR 'root' = PASSWORD('Password123@doris');
CREATE DATABASE dataease;
- 資料匯入成功後,就可以開始建立
檢視
了,選擇我們剛剛匯入的資料集;
- 再選擇
檢視
的型別,這裡選擇了表示分佈的餅圖;
- 拖動選擇維度和指標,再改改樣式,最後再儲存下,一張檢視就完成了;
- 再多建立幾個檢視,然後就可以建立
儀表板
了,再通過拖拽編輯的形式,儀表板就完成了,是不是挺方便的!
資料庫資料分析
當然DataEase也支援從資料庫中匯入資料,甚至可以自定義SQL查詢,下面我們來體驗下它的這些功能。
- 首先我們得新建一個資料來源,可以選擇各種型別資料來源,支援還挺多的,這裡選擇MySQL;
- 然後建立資料集,選擇從資料庫新增資料集;
- 再建立檢視,使用上面建立的資料集即可;
- 當然你也可以自定義SQL查詢來新增資料集;
- DataEase還有個比較強大的功能,可以設定各個檢視直接根據某個欄位進行
聯動
,比如在官方示例中,我們選擇了某個省份,其他檢視的資料就變成了這個省份的了;
- 還有個比較有意思的功能叫
下鑽
,比如我們選擇某個省份進行下鑽,就可以檢視該省份下的城市相關資料。
總結
總的來說,DataEase是一款非常不錯的資料視覺化工具。它可以讓我們不寫程式碼,就輕鬆實現一些資料視覺化的需求,支援從各種資料來源和Excel中分析資料。並且它使用了當下流行的大資料分析技術Apache Doris和Kettle,對這些技術感興趣的朋友也可以嘗試下它。
參考資料
本文 GitHub https://github.com/macrozheng/mall-learning 已經收錄,歡迎大家Star!