新系統使用時進入會有一個歡迎頁面,按照頁面提示進行賬戶的註冊,因爲註冊過程比較簡單,按照提示即可,所以不再做詳細介紹
登陸後會進入一個主頁面
下面我們根據頁面內容一個個介紹,這個是中文的(沒有進行任何設置),如果英文,功能應該差不多,只是語言上的差別
一,介紹
1,metabase是什麼
Metabase是一款開源的BI工具。
官網地址是:https://www.metabase.com/ ,參考其官網介紹的:
Metabase is the easy, open source way for everyone in your company to ask questions and learn from data.
翻譯過來就是:公司中的每一個人都可以使用Metabase這一個易用,開源的方法來探索、學習公司的數據。Metabase是一個簡單功能強大的分析工具,每一個人學習、決策他們公司的數據。沒有技術專業需求。希望你們愛上它。
2,metabase能做什麼
可以利用Metabase進行數據分析,數據可視化,報表生成等等。
二,創建問題
在Metabase中最爲核心的兩個概念就是問題和問題對應的答案(可以理解爲你需要查詢得數據,和這些數據對應的展示),其餘的都是建立在這兩個概念之上的。
在Metabase中創建問題的方法有三種:
- 基於現有的指標;
- 利用問題生成器;
- 使用SQL查詢器;
也就是下邊我們點擊創建問題得三個選項,由於是中文版的,所以也比較容易理解,英文版的也是一一對應,其中原生查詢就是自己寫sql語句進行相關信息的查詢,不過如果條件不是很複雜,自定義查詢就能滿足我們的要求,這裏我們主要講自定義查詢:
點擊自定義查詢後可以選擇數據庫和問題,因爲我創建過問題,所以有第二個選項,第二個選項可以對問題進行編輯,第一個選項通過圖標可以知道是數據庫,這個數據庫是系統自帶的樣本數據庫,可以讓我們用來進行測試或練習
然後我們選擇要操作的表,這幾個表都是系統自帶數據庫中的樣本表,這裏我們說下我們這次要創建的問題內容:查詢近30天每個產品類別的訂單總量,這個問題涉及到兩張表,也就是訂單表和產品表(orders和products),我們先選擇訂單表
之後進入以下頁面,圖片中有幾個元素,過濾器,聚合和選擇分組的列,下面我們根據問題內容一個個介紹
首先是我們要統計近30天的數據,所以這裏我們要用到過濾器了,點擊後我們選擇我們要過濾的字段,這些字段都是我們選擇的orders表中的字段,因爲是近30天創建的,所以我們選擇表中的創建時間字段(created at)
選擇創建時間字段後,會有一個下邊的小框,中文都理解,英文也是這樣,我們點擊添加過濾器就可以添加成功了
我們再把問題貼過來一次:查詢近30天每個產品類別的訂單總量,每個產品類別,因爲orders表中只有產品id編號,沒有類別字段,但是產品表中有產品類別字段,所以我們要想辦法將兩個表關聯起來,當然也有這個功能,如下圖,點擊關聯按鈕,同樣是先選擇數據庫,咱選擇表,我不過這次我們要關聯的是產品表,所以我們關聯產品表,這裏就不再貼圖了
關聯產品表後會有下邊這個關聯框框,這樣我們的關聯就完成了:
接下來繼續看問題,產品類別的訂單總量,這樣我們就用到了聚合,挺深奧的名字,就是一些查詢條件,我們點擊查看指標,因爲是訂單總量,也就相當於我們查詢出來的訂單行數,這裏我們選擇總行數
選擇總行數後,因爲我們要產品類別的訂單量,也就是按類別進行分組,這個分組內的訂單行數這個懂sql的可能更容易理解,我們選擇產品表中的category(類別),這樣就按類別進行分組了
我們這個問題內容到這裏也就完畢了,那麼我們怎麼讓他按我們希望的圖標格式進行顯示呢,點擊下邊的可視化按鈕
點擊後我們進入下邊頁面,我已經用箭頭標出了,注意我們在進行可視化選擇圖表時一定要選擇合適的圖表,不同圖表適合展示不同的問題,這裏我們選擇
我們選擇柱形後點擊以圖表形式展示,並打開設置按鈕,則可以進行相關的設置,這樣我們查詢近30天每個產品類別的訂單總量就統計出來了,我們點擊右上角的保存就可以對問題進行保存了
這裏我們可以填寫我們的問題名稱,描述,以及放到那個集合中,點擊保存進行保存
上邊保存後我們也可以根據提示放到儀表盤中,下邊是我放到儀表盤後,第二個就是我們剛纔創建的問題了,已經放倒了儀表盤中(注意要點擊右上角的保存)
這裏我們需要注意的是:無論是自定義查詢還是原生查詢,我們的y軸只能是mysql自帶函數,比如上邊計數就是count(*),如果我們在這些基礎上進行加減乘除得到的數據是不能做y軸的,感覺這也是metabase需要改進的地方
三,流量數據
流量數據就是我們系統中添加了哪些數據庫,這裏我們只有一個系統自帶的樣本數據庫,我們可以點進去查看數據庫中各個表的內容,不再詳細介紹
四,設置
我們點擊主頁右上角的設置按鈕,我們可以從管理員選項設置系統相關信息,可以從關於metabase看到當前系統版本號,我們主要介紹管理員中的相關設置
點擊管理員設置後進入管理界面,設置郵箱就是添加你的郵箱,然後邀請用戶時可以通過郵件進行發送,這裏我們主要介紹嵌入到其他應用中的使用
1,嵌入在其它的應用中
如果需要詳細嵌入教程,請查看我這篇文章:metabase嵌入頁面教程
嵌入到其他應用中可以允許將我們的圖表數據嵌入到其他的系統中,接下來我們看一下步驟:
點擊啓用,啓用後我們可以在頁面看到祕匙,這個祕匙我們要記住,然後我們點擊右上角退出管理員進入到主頁面,點擊瀏覽所有
點擊儀表盤,進入我們的儀表盤
可以看到我們儀表盤中的內容,點擊分享並且編輯
我們點擊第三個
可以看到我們分享的儀表盤,點擊代碼
可以看到如何使用nodejs嵌入
上邊提供的方法是nodejs的,那麼我們如何使用java來提供接口以供調用返回對應的地址呢,下邊貼出代碼,前端就可以根據地址進行嵌入了:
package com.example.controllers.dashboard;
import org.springframework.security.jwt.Jwt;
import org.springframework.security.jwt.JwtHelper;
import org.springframework.security.jwt.crypto.sign.MacSigner;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = {"/dashboardUrl"})
public class DashboardController {
private final String METABASE_SITE_URL = "http://somehost/metabaseUrl"; //你的metabase所處ip地址
private final String METABASE_SECRET_KEY = "SOME_SECRET_KEY"; //祕匙
@GetMapping("")
public DashboardParams indexAction() {
Jwt token = JwtHelper.encode("{\"resource\": {\"dashboard\": 1}, \"params\": {}}", new MacSigner(METABASE_SECRET_KEY));
String url = METABASE_SITE_URL + "/embed/dashboard/" + token.getEncoded() + "#theme=night&bordered=true&titled=true";
return new DashboardParams(url);
}
class DashboardParams {
private String url;
public DashboardParams(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
}
2,人員管理
通過此功能我們可以對人員和分組進行管理
3,數據模型
通過數據模型我們可以查看數據庫中的表結構和對一些字段設置爲隱藏,這樣這些隱藏字段就不會展示了
4,數據庫
在這個界面我們可以對數據庫進行刪除,或者點擊數據庫更改數據庫相關信息,以及添加數據庫
5,權限
一般我們添加的用戶都會默認分配到所有用戶分組,如果一個用戶同時所處兩個分組,其中一個分組沒有sql查詢權限,另一個擁有sql查詢權限,那麼這個用戶擁有sql查詢權限,即以擁有爲主
6,錯誤排查
通過錯誤排查,我們可以查看任務日誌等信息,如果出現錯誤,方便進行錯誤排查