---
disqus: HackMD # HackMD 也可以改成其他帳號
---
# AP5成型機 - Metabase使用筆記
> [name=JayHsu][time=Tue, Sep 17, 2019 4:48 PM]

:::info
> 目的:不用寫Code就能做出一個Dashboard
官網: https://metabase.com/

:::
[TOC]
## 基本使用步驟
### 安裝metabase
主要有以下幾種安裝方式, 可以安裝在我們自己的Server, 也可以裝在自己的筆電試試,
  
以下都是mac版的使用筆記
### Connect to Database
路徑:setting -> Admin -> Databases -> Add Database
step 1: add database頁面

step 2: 選擇要連結的database

step 3: 填寫DB相關資訊後Save

### Data Exploration
路徑:Home -> Our Data -> 選擇Database (IM_Monitor)

Step 1: 直接點選閃電符號(X-ray this table), 會自動根據DB內的數據內容產生一版Dashboard -> Save
 
### 修改Dashboard內的模塊
- Step 1: 打開上一步儲存的Dashboard
路徑 -> Automatically Generated Dashboards -> A look at your Monitor table -> Dashboard -> 點選上一步儲存的Dashboard
 
- Step 2: 點選右上角的筆可以編輯 
可以根據Dashboard內的每一個區塊點進去後微調

- Step 3: 例如點選第一個區塊右上方的齒輪, 可以對圖表的描述部份做細部修改 

- Step 4: 點選區塊內的標題, 例如Total Monitor, 可以對運算過程進行修改
- 點選右上角的show editor會出現運算工具, 主要包含以下幾項 
- filter: 數據篩選
- summary: 數據計算, 點進去又可以分成兩個細項(根據不同的欄位屬性, 會有不同的運算方式)
- Summarize by: 簡單說就是圖表的Y軸
- Group by: 簡單說就是圖表的X軸
- Join Data: 跟其他table整合
- Custom Column: 用原有的欄位運算出新的欄位
- Sort: 排序
- Limit: 限制運算或顯示用數據筆數
  
- 點選左下角的Visualization會出現可以選擇的圖表 
- 點選中間下方的表格和數字圖示可以切換顯示的圖表與原始資料 

- Step 5: 點選右下角的鬧鐘可以設定發送Alarm 
### 現有的Dashboard沒有自動產生想要的分析結果怎麼辦?
- 可以點選右上角的 Ask a question產生新的模塊(這比較像是一個圖表產生精靈) 

- 也可以點選右上角的 Browse Data直接從數據產生新的模塊 

- 還可以直接寫SQL 
### Dashboard的更新頻率設定
點選Dashboard右上方的時鐘可以設定更新頻率 

### 發布成網頁
點選Dashboard右上方的發布鍵發布成網頁

---
## 進階使用方式
### 進階一: Ask a question
### 進階二: Browse Data
### 進階三: Write SQL
### 進階四: Alarm
### 進街五: 定期推送Dashboard的功能 (Pulse)
 
## 操作上的小技巧
1. 因為在編輯器裡面沒有上一步, 所以有時候沒有上一步的按鈕可以點
-> 可以用快捷鍵 command + <- 回到上一步
-> 快捷鍵 command + <- 進到下一步
## 參考資料
- [metabase,superset,redasg的一系列介紹文章](https://ithelp.ithome.com.tw/users/20111638/ironman/1671)
###### tags: `AP5成型機`
## Issue:
1. 有部分的sqlite檔案讀取失敗

- 可能是在create table時欄位屬性沒有指定清楚, 重新用下面的SQL建立db之後可以讀取
ex:
```sql=
CREATE TABLE healthvalue (
hv_id INTEGER PRIMARY KEY,
timestamp FLOAT, site TEXT, mid TEXT, moldidx INTEGER, algorithm TEXT, hv_inject FLOAT, hv_eject FLOAT, hv_clamp FLOAT, hv_temp FLOAT,
isdefect_inject INTEGER, isdefect_eject INTEGER, isdefect_clamp INTEGER, isdefect_temp INTEGER
)
```
