DataEase 設計理念淺析
導讀
本篇內容是筆者在做 開箱即用的 BI 工具 系列的過程中的一些個人總結。為了保證文章的整體結構,特單獨提煉出這一篇關於 DataEase 的解析。各位讀者請放心,本篇內容會很獨立,沒有其他上下文也不影響閱讀。
正文
DataEase 簡介
DataEase 是開源的資料視覺化分析工具,幫助使用者快速分析資料並洞察業務趨勢,從而實現業務的改進與優化。DataEase 支援豐富的資料來源連線,能夠通過拖拉拽方式快速製作圖表,並可以方便地與他人分享。
這是其 官網文件 給的定義,其實跟其他 BI 視覺化工具一樣,都是為了能夠通過拖拽、點選等視覺化操作生成圖表。同時,它們可以從各種資料庫或其他資料來源匯入資料進行消費。如下圖官網給的示例。
可以在 線上體驗地址 體驗。快速瞭解其操作可以觀看 快速入門 和 DataEase入門教學視訊 的視訊。
設計分析
分析之前,我們要先提出關鍵問題,也就是分析什麼。 1. 各種資料來源的資料結構和型別都不太一樣,它是如何做到統一多種資料來源的? 2. 每種圖表需要配置的屬性也不同,屬性最終要繫結到資料欄位上的,它是如何用視覺化的方式做到這種繫結的? 其實這兩個問題適用於所有的 BI 視覺化工具,也是它們底層要解決的問題。下面我們來看下 DataEase 的解決思路,先上產品架構圖。
資料集
第一個重要的概念 —— 資料集,用它來解決資料來源統一的問題。資料集裡的資料型別只有:文字
、時間
、數值
、數值(小數)
、地理位置
這幾類。不管從什麼資料來源匯入的資料,都會被轉換為資料集。這裡拿比較特殊的 Excel 方式舉個例子,看其如何生成一個數據集。為方便理解概念,列一下與 MySQL 的對比:
Excel | MySQL | 資料集
-|-|-
檔案 | 資料庫 | 資料集分組
Sheet | 表 | 資料集
列 | 欄位 | 欄位
行 | 記錄 | 記錄
這麼一列實際上就比較清楚了,如果看了 快速入門 的介紹視訊,可以知道,上傳 Excel 檔案並選擇 Sheet 後,就可以初步生成多個數據集了。那麼資料型別如何確定呢?
首先會根據 Excel 自帶的列資訊分析,匹配相應的資料型別。然後還提供了手動修改資料型別的功能。其他資料來源的接入也大同小異。通過提供自動分析 + 手動設定的功能,解決了各種資料來源資料型別與資料集資料型別的對映問題。
第 1 個問題解決完畢。
維度/指標
資料格式統一的問題通過資料集解決了,下面來看看檢視(圖表)的問題。
從產品架構圖可以看出,DataEase 支援 ECharts 和 AntV 兩種圖表庫,筆者毫不懷疑,如果還有更多圖表庫,DataEase 支援起來也不會太麻煩。那麼它們是如何做到的呢?我們看一下生成檢視的步驟:
從上圖可以看到,右側資料操作區分成了左右兩列。
- 左側是維度、指標列表。都是資料集裡的欄位,所以內容會根據選擇的資料集不同而變化;
- 右側是圖表屬性欄位。會根據選擇圖表型別的不同而變化; 我們可以注意到,圖表屬性每一項後面都標明瞭維度或指標,反應快的小夥伴應該已經明白了:DataEase 就是靠維度/指標的概念將資料集與圖表屬性關聯起來的。
試想一下,假設有另外一個圖表庫 xxCharts,只需要將圖表的各種屬性打上維度或指標的標籤,就可以直接接入 DataEase 的檢視體系,這就是抽象的魔力。
那麼維度和指標在資料集這邊是如何定義的呢?
首先,匯入資料時,DataEase 會根據欄位型別歸類,數值型別的為指標,字元、時間型別的為維度。然後,在資料集的欄位管理頁面下,可以修改欄位的維度/指標型別。
仍然是自動分析 + 手動設定的功能設計,解決了資料集的問題。至於圖表庫,那就需要 DataEase 在程式碼層面配置了。
第 2 個問題解決完畢。
結論
DataEase 通過增加資料集這個概念或者說是抽象,解決了不同資料來源資料格式統一的問題。這讓檢視層只需要考慮對資料集格式的適配即可,遮蔽了資料來源層面的複雜度。
再通過增加維度/指標的概念,讓資料集欄位(資料集層)和圖表屬性(即檢視層)得以解耦。
這兩個抽象最終達成的效果就是:一頭不怕資料來源的擴充套件,一頭不怕檢視層的擴充套件,整個架構讓兩頭都穩了,這就是抽象和架構設計的魔力。
All problems in computer science can be solved by another level of indirection.——David Wheeler
電腦科學領域的任何問題都可以通過增加一個間接的中間層來解決。——大衛·惠勒 更多 DataEase 系統架構相關的資料可以檢視官方文件:系統架構
- 看我用 Linux 帶娃,培養程式設計興趣
- 【微前端】Qiankun Vue3 配置
- 通用 Form API 協議 - 基礎版
- Final Form 設計思路淺析
- 【低程式碼漫談】 lowcode-engine - Vue Renderer 嘗試
- Redash 設計理念淺析
- Metabase 設計理念淺析
- DataEase 設計理念淺析
- 開源 BI 工具調研:Superset、Metabase、Redash、DataEase(一)- 基本資料
- Ubuntu 一行命令裝軟體——VirtualBox
- 程式設計師怎麼給娃起名?當然是寫個指令碼!
- GoGoCode - 像用 Jquery 一樣方便地處理 AST
- 【gRPC】Web 請求的 TS 封裝 - 完美版
- 【gRPC】2 分鐘學會 Protocol Buffer 語法
- 【gRPC】封裝前端網路請求的核心思想 - TS版
- 如何避免 Vue 的漏洞破壞單向資料流
- 用函數語言程式設計寫出“傻瓜”都能看懂的程式碼
- Vue3 最佳實踐之編碼規範