文章目錄
Metabase是一個免費的BI分析工具,可以幫助你把數據庫中的數據更好的呈現給更多人,通過建立一個”查詢“來提煉數據,再以圖形化的方式做展示。上手簡單,操作門檻低,即使不會sql語句也能使用。同時工具輕量、安裝依賴的環境簡單、配置簡單清楚,只需一個jar包和一條命令就能完成安裝
Metabase的安裝非常簡單,只需將jar包下載下來后(下載地址),放在有java環境的機子上,通過java -jar
命令啟動即可,啟動命令:
java -jar metabase.jar
- 1
這里需要注意的是metabase自帶的H2數據庫相對較弱,最好替換成其他數據源,比如MySQL等,這里可以參考我的另一篇文章:《metabase默認應用數據源H2變更為MySQL及歷史數據遷移》
啟動后metabase默認端口為3000
,如果要變更端口,可添加環境變量MB_JETTY_PORT
來指定端口
,假設metabase為本地啟動,瀏覽器訪問網址:http://localhost:3000/
即可進入初始化界面
按提示一步步填寫相關信息即可,注意第一個創建的賬戶默認即為管理員賬戶
等待初始化之后,進入首頁即可看到配置數據庫下的所有表
接下來就可以正式使用了,右上角各功能如下:
下面就以具體場景為例,分別解釋各項功能,點擊創建問題 --》簡單查詢,先從簡單的開始,走一遍整體流程
假設我要對一張名為customer_group_info
的客戶群表做多個維度的分析,表結構與測試記錄如下:
需求場景如下:
場景1:
1) 右上角選聚合,聚合條件為總行數,分組條件為status
,聚合結果如下:
2) 為了便於觀察,我們以圖表形式顯示,選擇右下角“可視化”,選擇圖表類型
3)保存該問題,由於目前還沒新建集合,先默認保存在“分析下”
場景2,3類似,就不再贅述
場景2:
場景3:
以上三個問題創建完畢,目前都保存在“分析”下,為了便於分類管理,下面就新建一個集合,把以上問題歸類
回到首頁,進入“分析”,新建名為“客群分析”的集合,然后把問題移到該集合下
目前雖然已經歸類到一個集合下了,但是查看還是很不方便,還是要每個問題分別點進去才能看到,下面就開始建一個儀表盤,把這三個問題整合到同一個儀表盤下,點右上角“+”號,選擇新儀表盤,放到“客群分析”集合下
然后在儀表盤中把三個問題添加進去即可
這樣,后續對這三個場景的數據分析,就可以直接在該儀表盤中查看了
自定義查詢相較於簡單查詢,支持更高級的操作,如多表關聯,表與創建的問題之間的關聯等,但整體操作還是跟簡單查詢類似,這里就不再重復了
原生查詢即直接寫sql查詢,但是前提是該用戶必須有sql查詢的權限,權限問題會在后面的權限管理中講到。
sql查詢可直接通過右上角控制台圖標進入,進入后記得要先在左上角選擇數據庫
metabase中的sql可以支持變量和根據變量做動態sql拼接,變量形式:{{變量名}}
,動態sql片段形式:[[and 字段 = {{變量名}}]]
,具體如何使用,下面舉例說明。
還是以customer_group_info
這張表為例,假設創建了一個問題,問題中的sql如下:
select * from customer_group_info where cgp_id = '2589bd22-c719-4e01-b9bf-2144beacadca'
- 1
根據cgp_id
去查找記錄,但是cgp_id是固定的,如果每次查詢都要修改問題中的sql去改變值的話,那豈不是跟直接寫sql沒差,這時候就可以用變量替換,把cgp_id改成變量,然后直接輸入查詢值,改成如下格式的sql:
select * from customer_group_info where cgp_id = {{input_id}}
- 1
問題上方會多出一個文本框,在文本框中輸入cgp_id
就可以查詢
sql變量雖然解決了查詢條件值不固定的問題,但是如果有些查詢條件也是可選的,這該怎么解決呢,如下面的sql:
select cgp_id as 客群編號, user_name as 用戶名, cgp_type as 客群類型 from customer_group_info where user_name = 'apicloud1' and cgp_type = 2 -- 該條件為可選條件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
那就可根據條件來動態拼sql,改成如下形式:
select cgp_id as 客群編號, user_name as 用戶名 [[ ,{{input_type}} as 客群類型]] from customer_group_info where user_name = {{input_user}} [[and cgp_type = {{input_type}}]]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
當不輸入cgp_type時,查詢出所有客群類型
當指定cgp_type時,查詢出指定客群類型
以上為數據分析人員的數據分析操作,下面來說一下管理員角色的管理功能
后續也可以通過該步驟選擇已有數據庫變更信息
metabase的默認數據源連接里面是沒有oracle選項的,如果要連接oracle,需要單獨配置
首先去oracle官網下載ojdbc驅動:
放到/metabase/plugins目錄下,重啟metabase即可
可以在 管理員頁面 --》人員 --》 邀請其他人 邀請新用戶,並分配用戶組,邀請初始密碼隨機生成
權限管理主要分為數據權限和文件夾權限兩類,數據權限只訪問數據庫與表記錄的權限,文件夾權限指訪問集合的權限
數據權限管理頁面如下圖所示,其中縱軸為所有的數據庫,橫軸為所有用戶組
權限類型如下:
-
允許訪問數據
- 沒有權限: 無法訪問整個數據庫
- 部分權限:可訪問指定表
- 授予不受限制的訪問權限:可訪問整個數據庫
-
sql查詢
- 沒有權限: 無法在終端寫原生sql
- 寫原始查詢語句: 可寫sql
-
文件夾權限
其管理頁面如下,縱軸為所有集合,橫軸為所有用戶組
權限類型如下:
配置郵箱后,metabase可定時將指定的集合的分析結果推送至關注人郵箱,就不用主動登錄metabase去查看
郵箱配置流程如下:
管理員頁面 --》設置 --》 郵箱,填寫郵件服務器信息與發送者郵箱
配置好后點擊 ”發送測試郵件“,如果管理員郵箱中能收到如下測試郵件,說明郵箱配置成功
郵箱配置完成之后,就可以配置定時任務來定時推送結果,將上面創建的三個問題的結果推送給對應郵箱,步驟如下:
- 回到首頁,點擊”+“添加新的定時任務
- 選擇集合中的問題
- 設置定時任務和接收者郵箱,這里要注意你metabase設定的時區對不對,然后就能定時推送分析報告了
收到郵件如下:
------------恢復內容開始------------
簡介
Metabase是一個免費的BI分析工具,可以幫助你把數據庫中的數據更好的呈現給更多人,通過建立一個”查詢“來提煉數據,再以圖形化的方式做展示。上手簡單,操作門檻低,即使不會sql語句也能使用。同時工具輕量、安裝依賴的環境簡單、配置簡單清楚,只需一個jar包和一條命令就能完成安裝
安裝
Metabase的安裝非常簡單,只需將jar包下載下來后(下載地址),放在有java環境的機子上,通過java -jar
命令啟動即可,啟動命令:
java -jar metabase.jar
- 1
這里需要注意的是metabase自帶的H2數據庫相對較弱,最好替換成其他數據源,比如MySQL等,這里可以參考我的另一篇文章:《metabase默認應用數據源H2變更為MySQL及歷史數據遷移》
初始配置
啟動后metabase默認端口為3000
,如果要變更端口,可添加環境變量MB_JETTY_PORT
來指定端口
,假設metabase為本地啟動,瀏覽器訪問網址:http://localhost:3000/
即可進入初始化界面
按提示一步步填寫相關信息即可,注意第一個創建的賬戶默認即為管理員賬戶
等待初始化之后,進入首頁即可看到配置數據庫下的所有表
數據分析
接下來就可以正式使用了,右上角各功能如下:
下面就以具體場景為例,分別解釋各項功能,點擊創建問題 --》簡單查詢,先從簡單的開始,走一遍整體流程
簡單查詢
假設我要對一張名為customer_group_info
的客戶群表做多個維度的分析,表結構與測試記錄如下:
需求場景如下:
- 根據
status
狀態字段做聚合,查看各個狀態下的客群數 - 根據
insert_time
創建時間字段對客群做趨勢分析 - 篩選出
cgp_type
客群類型為3的客群
創建場景
場景1:
1) 右上角選聚合,聚合條件為總行數,分組條件為status
,聚合結果如下:
2) 為了便於觀察,我們以圖表形式顯示,選擇右下角“可視化”,選擇圖表類型
3)保存該問題,由於目前還沒新建集合,先默認保存在“分析下”
場景2,3類似,就不再贅述
場景2:
場景3:
以上三個問題創建完畢,目前都保存在“分析”下,為了便於分類管理,下面就新建一個集合,把以上問題歸類
創建集合和儀表盤
回到首頁,進入“分析”,新建名為“客群分析”的集合,然后把問題移到該集合下
目前雖然已經歸類到一個集合下了,但是查看還是很不方便,還是要每個問題分別點進去才能看到,下面就開始建一個儀表盤,把這三個問題整合到同一個儀表盤下,點右上角“+”號,選擇新儀表盤,放到“客群分析”集合下
然后在儀表盤中把三個問題添加進去即可
這樣,后續對這三個場景的數據分析,就可以直接在該儀表盤中查看了
自定義查詢
自定義查詢相較於簡單查詢,支持更高級的操作,如多表關聯,表與創建的問題之間的關聯等,但整體操作還是跟簡單查詢類似,這里就不再重復了
原生查詢
原生查詢即直接寫sql查詢,但是前提是該用戶必須有sql查詢的權限,權限問題會在后面的權限管理中講到。
sql查詢可直接通過右上角控制台圖標進入,進入后記得要先在左上角選擇數據庫
metabase中的sql可以支持變量和根據變量做動態sql拼接,變量形式:{{變量名}}
,動態sql片段形式:[[and 字段 = {{變量名}}]]
,具體如何使用,下面舉例說明。
sql變量
還是以customer_group_info
這張表為例,假設創建了一個問題,問題中的sql如下:
select * from customer_group_info where cgp_id = '2589bd22-c719-4e01-b9bf-2144beacadca'
- 1
根據cgp_id
去查找記錄,但是cgp_id是固定的,如果每次查詢都要修改問題中的sql去改變值的話,那豈不是跟直接寫sql沒差,這時候就可以用變量替換,把cgp_id改成變量,然后直接輸入查詢值,改成如下格式的sql:
select * from customer_group_info where cgp_id = {{input_id}}
- 1
問題上方會多出一個文本框,在文本框中輸入cgp_id
就可以查詢
動態sql片段
sql變量雖然解決了查詢條件值不固定的問題,但是如果有些查詢條件也是可選的,這該怎么解決呢,如下面的sql:
select cgp_id as 客群編號, user_name as 用戶名, cgp_type as 客群類型 from customer_group_info where user_name = 'apicloud1' and cgp_type = 2 -- 該條件為可選條件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
那就可根據條件來動態拼sql,改成如下形式:
select cgp_id as 客群編號, user_name as 用戶名 [[ ,{{input_type}} as 客群類型]] from customer_group_info where user_name = {{input_user}} [[and cgp_type = {{input_type}}]]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
當不輸入cgp_type時,查詢出所有客群類型
當指定cgp_type時,查詢出指定客群類型
以上為數據分析人員的數據分析操作,下面來說一下管理員角色的管理功能
管理員操作
添加數據庫
- 點擊設置,切換為管理員,進入管理員頁面
- 選擇 數據庫 --> 添加數據庫
- 填寫數據庫信息, 填寫完成后保存即可
后續也可以通過該步驟選擇已有數據庫變更信息
連接oracle
metabase的默認數據源連接里面是沒有oracle選項的,如果要連接oracle,需要單獨配置
首先去oracle官網下載ojdbc驅動:
放到/metabase/plugins目錄下,重啟metabase即可
成員管理
邀請新成員
可以在 管理員頁面 --》人員 --》 邀請其他人 邀請新用戶,並分配用戶組,邀請初始密碼隨機生成
權限配置
權限管理主要分為數據權限和文件夾權限兩類,數據權限只訪問數據庫與表記錄的權限,文件夾權限指訪問集合的權限
數據權限
數據權限管理頁面如下圖所示,其中縱軸為所有的數據庫,橫軸為所有用戶組
權限類型如下:
-
允許訪問數據
- 沒有權限: 無法訪問整個數據庫
- 部分權限:可訪問指定表
- 授予不受限制的訪問權限:可訪問整個數據庫
-
sql查詢
- 沒有權限: 無法在終端寫原生sql
- 寫原始查詢語句: 可寫sql
文件夾權限
其管理頁面如下,縱軸為所有集合,橫軸為所有用戶組
權限類型如下:
- 集合權限
- 沒有權限
- 查看集合
- 修改集合
郵箱配置
配置郵箱后,metabase可定時將指定的集合的分析結果推送至關注人郵箱,就不用主動登錄metabase去查看
郵箱配置流程如下:
管理員頁面 --》設置 --》 郵箱,填寫郵件服務器信息與發送者郵箱
配置好后點擊 ”發送測試郵件“,如果管理員郵箱中能收到如下測試郵件,說明郵箱配置成功
定時任務
郵箱配置完成之后,就可以配置定時任務來定時推送結果,將上面創建的三個問題的結果推送給對應郵箱,步驟如下:
- 回到首頁,點擊”+“添加新的定時任務
- 選擇集合中的問題
- 設置定時任務和接收者郵箱,這里要注意你metabase設定的時區對不對,然后就能定時推送分析報告了
收到郵件如下: