Metabase 體驗

Mars Weng
MarsW-Redash
Published in
6 min readOct 10, 2018

其實有點忘了當時是下什麼關鍵字,
總之是有學到 Business Intelligence 這個詞,
然後就找到了 Metabase,覺得操作介面看起來不錯就先裝起來玩。

Metabase 算是初次體驗就有很好感受的一個系統,官方文件寫的很詳細:

官網 Document 連結點入 > Installation Guides
點選 Running on Docker 連結,就可進到詳細教學

以 Linode 系統為 Ubuntu 16.04 為環境設定,
首先更新 ubuntu 套件

sudo apt-get update

再來是安裝 docker

sudo apt install docker.io

就可以輕輕鬆鬆一行指令啟動 docker 來體驗 Metabase 了!

docker run -d -p 3000:3000 — name metabase metabase/metabase

以 Linode 的 IP 為例, 進入 http://YOUR_IP:3000/
就可以看到 Metabase 正在進行設定,大概會耗時五分鐘左右

第一次體驗已經是04月多的時候了,
這次滿訝異竟然安裝指引有了中文(不是繁體中文看了還是不太習慣)

雖然管理介面 http://YOUR_IP:3000/admin/settings/general
可以選擇語言,但敘述上是以瀏覽器為主
如果有需要改成英文,還是需要去調瀏覽器的設定:

以Google Chrome為例,可在網址欄輸入

chrome://settings/languages

把英文設定在中文前方

按照設定步驟完成後會是到管理頁面,可以自行新增 Database,
除了我最在意的 MySQL,也有支援 Google Analytics、MongoDB、
Amazon Redshift、Google BigQuery、H2、Postgres、SQLite、SQL Server、Druid、CrateDB、Oracle、Vertica、Presto、SparkSQL,
詳細支援列表可參考官方文件

或者也可以先體驗預設的 Sample 資料,
要回到平常的資料操作與圖表頁面,可以利用右上角的 Exit admin,
或是網址可改回 http://YOUR_IP:3000/

主要核心在「Ask a question」,
有對非技術人員十分友善的 Custom UI 操作介面,
或是可直接以 Native query 使用 SQL 語法取得資料,

可以很容易透過 Custom 的操作介面,Filter、Group出想要的資料,
然後可以利用 View 來決定要計算哪些統計值,
最後再透過 Visualization 決定資料呈現的方式。
Metabase 提供了基本的圖表,清單可參考官方文件

雖然是設計給非技術人員使用的 Custom 介面,
但還可以以 SQL 檢視其搜尋條件,
如果需要做更進階的操作,可以再回到 Native query 做更客製化的需求。

此次再體驗 Metabase 的時候,發現一個很貼心的 X-Rays 功能,
在匯入 Database 的時候,就先分析一輪裡面的 table 以及其 field,
可以讓人連 Query 都還不需要,就可以很快知道這些 data 能組出哪些 information。

在一個團隊中,
每個人在意的 Question 可能不同,要看的 Visualization 也不太一樣,Dashboard 的方便之處就是大家可以組出自己在乎的儀表板,
但又同時確保大家核心的資料源組出的 Question 是相同的。

此份報表也是建立在 Dashboard 上,
可以依照自身喜好來重新排列組合這些 Question。

Metabase 一列可細到18格,不過一個圖表最小是2x2,但算是切割的滿細了。

ps. Question 也可以很容易建立互動操作的 Filter,在看報表的當下隨意選擇區間來看不同的操作結果,而不需重新回到 Question 上重拉資料

總結

[優點]

  • 在 Database 匯入的時候就會先自動判斷相關欄位的屬性
  • 有非常平易近人的 Query 介面
  • 產生 Visualization 也能依照資料欄位先行決定較好的視覺化方式
  • 自動對你的資料做 X-Rays 分析,產生你可能有興趣的分析報表

這些十分貼心以及友善的設計,對非技術人員算是一個很棒的輔助服務

[缺點]

Metabase的優點對於技術人員來說,某些時候成了缺點,
有些太過貼心,以至於可修改的彈性不足

  • 在 Database 匯入的時候會先把原有名稱轉譯,
    eg. product_id => Product Id
    在欄位很多的時候,習慣用原有名稱搜尋就會找不到自己想要的資訊,
    有時還滿惱人的
  • 原先db若是設定 tinyint(1) 會自動轉譯成 Boolean
    => 如果使用 Custom Query就無法用原來的數字值來當成Filter條件,只有True/False選擇,但實務上會滿常使用tinyint來代替文字類別以增進搜尋效率 (eg. 0:male, 1:female)
    此問題也被討論過,但目前似乎還是有同樣狀況
  • 語言設定會自動依照瀏覽器的語言來配置
    => 如果要換語言,無法從介面調整,只能去調整瀏覽器的配置

此為系列文章,傳送門在此

--

--