不寫程式碼輕鬆實現資料視覺化,這款基於SpringBoot的神器,簡直絕了!

macrozheng發表於2022-01-05
之前有讀者問我有沒有什麼好用的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,需要一些額外的配置。

  • 下載完成後上傳到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的資料視覺化功能。

  • 由於我們之前修改了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!

相關文章