Metabase 使用指南

一. 為什么從 ELK 遷移到 Metabase + OLAP

1.1 ELK 的問題

  • 擴展性不強:Kibana 只能應用在 ElasticSearch 上
  • 管理不便:在阿里云等平臺,一個 ElasticSearch 集群對應一個 Kibana,難以統(tǒng)一管理
  • 開發(fā)成本:無法將圖表嵌入到其他應用中,需要二次開發(fā)圖形展示
  • 性能一般:ElasticSearch 擅長全文搜索,在數(shù)據(jù)分析功能上的性能不如 OLAP 數(shù)據(jù)庫,并且存在一些限制,例如去重的精度不足,上限只有40000(默認準確度保證僅有3000
  • 運維成本:拋開搜索優(yōu)化,仍需要維護好一套索引生命周期管理、索引模板,以及應對字段變更時的 reindex。此外,相同數(shù)據(jù)量下,Elastic 的壓縮比不如列式數(shù)據(jù)庫,內(nèi)存占用也更高,相應的成本也要高出不少。

1.2 Metabase + 其他DB 的優(yōu)勢

  • 擴展性: JDBC + Clojure multi-method 實現(xiàn) Driver 擴展,即使開發(fā)新 Driver 的成本也不高。
  • 統(tǒng)一入口: 使用相同后端存儲的 Metabase 可以同時管理多個不同的 DB
  • 開發(fā)成本: 在 Metabase 開發(fā)的 Dashboard 可以直接嵌套到其他前端應用,并且維護有 JWT 認證。其他人員開發(fā)的 Question、Model、Metric 可以相互引用。

至于性能和運維成本,則由所選擇的后端 DB 所決定。Metabase 本身不需要進行多復雜的維護,單個 DB 故障并不會引起 Metabase 崩潰。

Metabase

二. 提問

2.1 數(shù)據(jù)源

數(shù)據(jù)源有三種

  • Raw Data,即源數(shù)據(jù),任一數(shù)據(jù)庫表都是源數(shù)據(jù)??梢灾苯狱c開任一 raw 表以表格方式查看數(shù)據(jù)。

    示例訂單數(shù)據(jù)

  • Question,問題,已存儲的問題也可以成為數(shù)據(jù)源,例如這樣一個問題:查詢過去一年內(nèi)每天不同來源的消息量,我們可以基于這個問題構(gòu)建一個過去6個月每周的消息量問題。

  • Model,模型,可以由 Question 或 SQL 提問后轉(zhuǎn)化,Model 某種程度上是一種物化視圖,物化不存儲數(shù)據(jù),通常不直接用來可視化。例如有個人信息和訂單兩張實體表,可以把用戶名和用戶常買的物品、購買時間等組合為一個新的模型。

2.2 構(gòu)建問題

2.2.1 組成部分

  1. Data 部分即前面的數(shù)據(jù)源
  • 可以選擇需要的列,在查詢數(shù)據(jù)時減少干擾,提升速度。
  • 可以 JOIN 三種數(shù)據(jù)源,但必須在同一個數(shù)據(jù)庫,當然,也要是同一種數(shù)據(jù)庫。也有例外,ClickHouse 可以使用 MySQL、Postgres、MongoDB 等外表。在 Metabase 上展示為同一種數(shù)據(jù)庫,但實際類型不同。 JOIN 的不同模式(LEFT JOIN、RIGHT JOIN)可以點擊圖標切換。
  • Custom Column 類似于數(shù)據(jù)庫函數(shù)的接口抽象,不是所有驅(qū)動都支持該實現(xiàn)。一般用在統(tǒng)計階段。
  1. (可選)Filter 部分即過濾器,選擇合適的 Filter 可以提速,也可以排除無關(guān)的結(jié)果。在數(shù)據(jù)表格預覽時可以直接在列上方過濾數(shù)據(jù),例如這里只看有折扣的客單價:
    過濾數(shù)據(jù)
過濾效果
  1. (可選)Summarize 部分即統(tǒng)計相關(guān),需要結(jié)合分組操作。常用的例如 sum、count,如果需要構(gòu)建更復雜的計算,可以使用 Custom Column,包含其他的數(shù)學函數(shù)和字符串函數(shù),未必所有函數(shù)都可用
比較有無折扣的商品總價
  1. (可選)Sort 和 Limit 即 排序和返回數(shù)量,排序在圖表上的展示區(qū)別不大,最好限制返回的數(shù)量(默認 10000)特別是在源表上。

2.2.2 調(diào)試 Question

每個階段都可以點擊小三角形預覽數(shù)據(jù)

  • 在最終結(jié)果無法展示時,可以逐個階段預覽調(diào)試
  • 在 JOIN 數(shù)據(jù)時,可以檢查是否 JOIN 模式存在錯誤,導致結(jié)果缺少或者重復

如果仍然無法解決問題,可以點擊右邊的 SQL 語句按鈕,由開發(fā)同學協(xié)助調(diào)試。

2.3 使用 SQL 構(gòu)建問題

用 SQL 構(gòu)建問題除了可以自由選擇函數(shù)外,也可以使用變量作為過濾器。

使用變量的兩個關(guān)鍵語法是 {{variable}}[[{{variable}}]] ,第一個為一般變量,第二個為可選變量,使用變量時不需要使用 where table.a = {{variable}} 方式,直接用 where = {{variable}} 使用可選變量時,不需要用 AND 連接。

有點繞?
看看例子:這是一個統(tǒng)計不同 HTTP 方法的 SQL,將 create_timemethod 作為過濾器,其中 create_time 是可選變量。

SELECT `inner_api_log`.`method` AS `method`, 
toDate(`inner_api_log`.`create_time`) AS `create_time`, count(*) AS `count`
FROM `inner_api_log` where {{method}} [[{{create_time}}]]
GROUP BY `inner_api_log`.`method`, toDate(`inner_api_log`.`create_time`)
ORDER BY `inner_api_log`.`method` ASC, toDate(`inner_api_log`.`create_time`) ASC

過濾器可以進一步設置,例如作為下拉框(需要映射原始表,且差異值有限)或者作為搜索框等等。

SQL變量
  • 要進一步分析,將 SQL 保存的問題作為數(shù)據(jù)源再次引用即可。
  • 使用變量的 SQL 不可作為 Model 使用

2.4 選擇可視化圖表

點擊可視化圖形選擇面板選擇可用的圖表,部分圖表未必適合當前數(shù)據(jù),可能點擊后仍不可用。

可視化界面操作
部分圖表未必適用當前數(shù)據(jù)

2.5 設置圖表

2.5.1 通用設置

點擊 Question 顯示通用菜單,可以添加描述、添加到 Dashboard、移動或歸檔等。
左下角的 History 按鈕可以查看版本歷史,每次保存或者回滾均會產(chǎn)生一條版本記錄。

2.5.2 折線、柱狀圖

  • Data:即數(shù)據(jù)源,用來選擇展示的數(shù)據(jù)。數(shù)據(jù)旁邊的設置按鈕,可以用來格式化數(shù)據(jù),例如數(shù)字的展示可以設置小數(shù)點,或者表示為貨幣,日期的格式等等
  • Display:即展示效果,例如設置數(shù)據(jù)的顏色,設置目標線
  • Axes:刻度,用來設置數(shù)據(jù)的呈現(xiàn)方式,例如大小分布很不均勻的數(shù)據(jù)(通常數(shù)據(jù)中的最大數(shù)字比最小數(shù)字大數(shù)百甚至數(shù)千倍)可以使用對數(shù)刻度(Log)或者冪次刻度(Power),遺憾的是,Metabase 不能選擇對數(shù)的底數(shù)大小。

下圖是分布不均的典型案例,由于某種數(shù)據(jù)暴漲,掩蓋了其他數(shù)據(jù)的趨勢展示,改為對數(shù)刻度就可以很好地展示:


線性刻度
對數(shù)刻度
  • Labels:標簽,或稱圖例標簽(Legend Label),可以添加備注

  • 可視化界面(右側(cè)):除了點擊圖例篩選、鼠標懸停查看具體值之外,還可以點擊圖形上的點,彈出的窗口可以做進一步值的篩選、或者分組操作。例如原問題是按 Category 分組,這里可以進一步按時間查看趨勢

快速操作數(shù)據(jù)

當 X 軸為時間軸,鼠標可以選中區(qū)間查看對應時間范圍的數(shù)據(jù)分布。

選中時間范圍

2.5.3 表格

表格設置面板
左側(cè)設置面板:
  • Columns:列屬性,點擊設置按鈕設置列名,對于數(shù)值類型,支持以迷你條形圖方式展示,對于時間類型,支持格式化時間。
列格式化
  • Conditional Formating:即條件格式化。可以對滿足條件的值高亮顯示,高亮支持單色或顏色范圍展示
條件格式化
顏色范圍高亮
右側(cè)展示面板
  • 點擊列名彈出快速操作,可以進行排序、過濾、或進一步統(tǒng)計


    快速操作表格
  • 點擊具體值彈出快速篩選窗口
  • 右下角支持下載源數(shù)據(jù)到本地(JSON、Excel 或 CSV)如設置提醒,則會定時接收到該表格的郵件。

三. Dashboard 管理

3.1 編輯 Dashboard

  • 右上角三個按鈕分別可以添加已保存的問題、添加文本(Markdown)和添加過濾器
  • 鼠標懸停在任一組件上,可以移動位置,組件右下角可以拖動改變大小
  • 非編輯模式,點擊任一問題標題,進入到相應問題詳情
  • 對于地圖類型,支持設置默認展示區(qū)域

Tips: 默認提供了世界地圖和美國地圖,如果不能滿足你,可以在 AdminSetting 添加其他 Geojson 格式的地圖。

添加自定義地圖

3.2 過濾器

過濾器支持幾種不同類型

過濾器類型

添加過濾器后會固定在 Dashboard 上方,不隨頁面移動(Binding Top),拖動過濾器改變位置

  • 設置聯(lián)動的圖表
    點擊要設置的過濾器,然后在圖表上選擇聯(lián)動的列,選擇過濾條件就會聯(lián)動設置的圖表。如下圖所示,過去 30 天的過濾條件會應用在四個圖表上。
  • (可選)設置默認的過濾選項、過濾器名稱
過濾器設置
  • 聯(lián)動過濾器,一般用在多級分組上,例如省-市等多級分類,選擇大一級分類會影響子分類選項。
選擇州會影響城市級別過濾器選項

3.3 可視化

如果修改圖表的標題、微調(diào)展示的顏色等操作,需要回到問題頁修改再保存,會使操作變得繁瑣,并增加不必要的新問題。

Dashboard 編輯模式下,支持在不修改圖表展示類型的情況下,修改該類型圖表幾乎所有參數(shù),例如下圖所示,僅數(shù)據(jù)源不支持修改。

點擊 reset to default 會恢復到原問題的設置。

Dashboard編輯模式下的圖表設置頁

3.4 疊加圖表

在需要橫向?qū)Ρ鹊膱鼍埃袝r因為條件難以用單個 SQL 表達。

可以考慮下面的方式:

  • 分別創(chuàng)建若干個問題。如果需要永久保存,可以再添加一個問題,JOIN 幾個問題實現(xiàn)圖表疊加。如果需要合并,查看 SQL 再轉(zhuǎn)化為新的問題即可。
橫向?qū)Ρ?2020 及 2019 一季度銷售額
  • 若不需要,在 Dashboard 編輯模式下,添加 Add Series,搜索已保存的問題,如果問題存在感嘆號,則可能不兼容當前的圖表。疊加的圖表同樣支持在編輯模式下分別設置圖表。
添加圖表
疊加圖表下的設置頁

3.5 點擊行為

  • 跳轉(zhuǎn)到自定義鏈接:用來鏈接到外部的同一網(wǎng)址,或者跳轉(zhuǎn)到帶參數(shù)的指定詳情頁等。也可以跳轉(zhuǎn)到指定的 Dashboard 或者問題頁。

例如,在地圖圖表上添加搜索關(guān)鍵詞,點擊跳轉(zhuǎn)到 Google 搜索頁:

跳轉(zhuǎn)外部鏈接示例
  • 聯(lián)動頁面過濾器:下拉過濾器可能不夠直觀,下面的地圖例子,當點擊對應州的圖形時,會同步改變州(State)過濾器,其他引用的圖表就會一起更新。
聯(lián)動過濾器

四. 管理數(shù)據(jù)

4.1 管理數(shù)據(jù)源

添加數(shù)據(jù)源時,管理員需要做好以下操作

  1. 限制數(shù)據(jù)源權(quán)限,設置好組員的查看和編輯權(quán)
  2. 隱藏不必要的數(shù)據(jù),例如ClickHouse 的 Kafka Engine 表、導入詳情表的物化表等對數(shù)據(jù)分析人員沒有意義。
    一些數(shù)據(jù)列只提供給開發(fā)人員調(diào)試,對其他人員沒有意義的,同樣也要隱藏?;蛘?strong>某些列不適合統(tǒng)計,聚合可能導致崩潰。
    數(shù)據(jù)可見性.png
  3. 更改列屬性,Metabase 有時存在列的屬性推斷錯誤,例如某些列我們希望它有下拉過濾,但被推斷為其他類型,可以手動修改,再重新掃描該列。
更改列屬性

4.2 創(chuàng)建模型(Model)

同樣是由表延展的數(shù)據(jù),模型具有一定實體意義,通常不直接用來可視化,而是作為源數(shù)據(jù),方便復用。

模型擁有和源數(shù)據(jù)一樣豐富的列屬性設置,這里不再贅述。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容