顯示具有 BI 標籤的文章。 顯示所有文章
顯示具有 BI 標籤的文章。 顯示所有文章

2024-02-01

【LinuxMint20.3】以 docker 安裝 Apache Superset -- 免費,開源的 BI

參考資料 ----


Superset 的安裝方式有:
  • Linux 套件安裝
  • 以 Docker Compose 佈署
  • 以 Kubernetes(K8S) 佈署
  • 在 Dockerhub 執行
  • 以 Pypi 下載安裝
  • 自 GitHub 下載安裝
  • 自 Apache 基金會官網下載安裝


其中 Docker Compose 只支援單機運行且不支援高可用性(HA),因此官方不建議安裝使用於正式生產環境(production);聽起來,似乎雖然不是開發版本,但適合快速安裝嚐鮮用。本筆記採用 Docker Compose 佈署


安裝必要的相依套件
 
[user]$ sudo  apt-get  update

[user]$ sudo  apt  install  git  docker  docker-compose
 


複製資源庫
 
# 預定裝在 /usr/share
[user]$ cd  /usr/share
[user]$ sudo  git  clone  https://github.com/apache/superset.git

# 會看到生成 /usr/share/superset/ 目錄
 


執行 docker daemon
 
[user]$ cd  superset
# 執行 docker daemon
[user]$ sudo  systemctl  start  docker

# 檢查確認 docker daemon 執行狀態
[user]$ sudo  systemctl  status  docker
 


啟動 superset
 
# 第一次執行, 下傳 container, 一次性指令
[user]$ sudo  docker-compose  -f  docker-compose-non-dev.yml  pull

# 之後只要執行這指令
[user]$ sudo  docker-compose  -f  docker-compose-non-dev.yml  up
 


若要停止執行 superset,則 CTRL + C
這時會看到螢幕顯示
Stopping superset_app...
Stopping superset_worker_beat...
...
等正在停止程序的訊息

superset 內建並不支援 Microsoft SQL Server,若要連接 mssql,則要安裝驅動程式,官方建議的驅動為 pymssql
 
[user]$ sudo  vim  /usr/share/superset/docker/requirements-local.txt
# 輸入
pymssql

:x 存檔離開

# 再執行
[user]$ sudo  docker-compose  -f  docker-compose-non-dev.yml  up
# 就會自動安裝 pymssql 了
 


開啟瀏覽器,輸入網址
http://localhost:8088
登入帳/密:admin / admin

建立資料庫連線

點擊右上角的 "Settings"
Database Connections



+DATABASE
→ 可以看到列出的預設支援資料庫沒有 MS SQL Server
→ 下拉下方的 Supported databases,選擇最末的 Other



DISPLAY NAME (必填) 命名您的資料庫連線
SQLALCHEMY URI(必填) 輸入連線字串,格式為
 
mssql+pymssql://username:password@hostname:port/database_name

* 若 password 內含有 @ 字元,要改為 URL編碼(percent-encoding),改成 %40
* port 的部份,若您的 mssql 採用預設的 port,則可不填
 
→ 點擊 TEST CONNECTION 鈕確認連線正常
→ CONNECT 建立連線





設定為開機自動執行 superset

 
[user]$ sudo  vim  /etc/systemd/system/superset.service
# 輸入下述指令
[Unit]
Description=Apache  Superset
After=docker.service

[Service]
Type=simple
ExecStart=/usr/bin/docker-compose  -f  /usr/share/superset/docker-compose-non-dev.yml  up
ExecStop=/usr/bin/docker-compose  -f  /usr/share/superset/docker-compose-non-dev.yml  down

[Install]
WantedBy=multi-user.target

:x 存檔離開

# 啟用 docker.service 開機自動執行
[user]$ sudo  systemctl  enable  docker.service

# 啟用 superset.service 開機自動執行
[user]$ sudo  systemctl  enable  superset.service
 
重新開機,驗證 superset 確實開機自動執行

版本號碼為 0.0.0-dev,在 Apache Superset 0.0.0dev Overview 有解釋。


2024-01-31

【Metabase】設定 Metabase 為開機即啟動服務

參考資料 ----

metabase.jar 移至 /usr/share/metabase/ 目錄
 
# 原本 metabase.jar 是放在 使用者家目錄下的 metabase 目錄內
[user]~$ cd  metabase
[user]$ sudo  su
[root]# groupadd  -r  metabase
[root]# useradd  -r  -s  /bin/false  -g  metabase  metabase
[root]# mkdir  /usr/share/metabase
[root]# cp metabase.jar  /usr/share/metabase
[root]# chown  -R  metabase:metabase  /usr/share/metabase
[root]# touch  /var/log/metabase.log
[root]# chown  syslog:adm  /var/log/metabase.log
[root]# touch  /etc/default/metabase
[root]# chmod  640  /etc/default/metabase
 


建立 metabase.service 服務檔
 
[root]# cd  /etc/systemd/system/
[root]# vim metabase.service
# 輸入下述內容
[Unit]
Description=Metabase server
After=syslog.target
After=network.target

[Service]
WorkingDirectory=/usr/share/metabase/
ExecStart=/usr/bin/java  -jar  /usr/share/metabase/metabase.jar
EnvironmentFile=/etc/default/metabase
User=metabase
Type=simple
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=metabase
SuccessExitStatus=143
TimeoutStopSec=120
Restart=always

[Install]
WantedBy=multi-user.target

:x 存檔離開
 


建立 syslog conf
 
[root]# vim  /etc/rsyslog.d/metabase.conf
# 輸入下述內容
if $programname == 'metabase' then /var/log/metabase.log
& stop

:x 存檔離開

# 重啟 rsyslog.service 以使 metabase.conf 生效
[root]# systemctl  restart  rsyslog.service
 


編輯 Metabase 的環境變數
 
[root]# vim  /etc/default/metabase
MB_PASSWORD_COMPLEXITY=strong
MB_PASSWORD_LENGTH=密碼字串長度
MB_JETTY_HOST=0.0.0.0
MB_JETTY_PORT=3000
MB_DB_TYPE=mysql
MB_DB_DBNAME=metabase
MB_DB_PORT=3306
MB_DB_USER=metabase
MB_DB_PASS=MySQL的metabase帳戶密碼
MB_DB_HOST=localhost
MB_EMOJI_IN_LOGS=true    # log 要不要有顏文字...這還蠻有趣的...若不要就填 false
# any other env vars you want available to Metabase
 


設定 metabase 為開機啟動
 
# 先手動啟動 metabase.service
[root]# systemctl  daemon-reload
[root]# systemctl  start  metabase.service
[root]# systemctl  status  metabase.service

# 確定執行沒問題了, 就改為開機自動啟動
[root]# systemctl  enable  metabase.service
 



相關筆記 ----

2024-01-29

【Metabase】社群版(Community) 將系統資料移至大型資料庫

參考資料 ----


Metabase 自帶的系統資料庫為 H2,僅用於測試試用期間,若要轉為正式應用(production),官方強烈將系統資料移至大型資料庫。

建議版本為 MySQL 5.7.7(含)MariaDB 10.2.2(含) 或 PostgreSQL 9.4(含) 以上;本筆記為 MySQL 8.0

注意:避免同時做 Metabase 更新升級 及 資料庫移植


關閉 Metabase,目前我的練功主機是開終端機視窗,在家目錄以
 
[user]~$ java  -jar  metabase.jar
 
的指令啟動 Metabase
所以只要在瀏覽器的 Metabase 頁面登出,然後在終端機視窗 Ctrl+C 中斷 Metabase 即可。


備份 H2︰複製 metabase.db.mv.db 到另一個安全的目錄存放。


操作 phpMyAdmin
MySQL 新增 metabase 帳戶
注意:建議密碼自已設定,而不要由 phpMyAdmin 幫您產生,以免密碼中不知道有哪個字元踩到了雷!!目前已知的有 【@】、【:】、【/】、【?】、【#】,會造成 java 錯誤解析 URI 字串,若是一定要用時,則在組連線字串時,須將上述字元改成 URI 編碼,後面再進一步說明。

建立 metabase 空白資料庫,要求字集選擇 utf8mb4_unicode_ci(下圖是舊圖, 請忽略)。


授予 metabase 帳戶對 metabase 資料庫具有全部的權限










執行移植指令
 
# 切換到 metabase.jar 所在目錄, 在本例為 [user]~/metabase/
[user]~/metabase$  export MB_DB_TYPE=mysql
[user]~/metabase$  export MB_DB_CONNECTION_URI="jdbc:mysql://主機IP:3306/metabase?user=metabase帳戶&password=密碼"
[user]~/metabase$  java  -DMB_DB_TYPE=mysql  -DMB_DB_CONNECTION_URI="jdbc:mysql://主機IP:3306/metabase?user=帳號&password=密碼;"  -jar  metabase.jar  load-from-h2  metabase.db    # 注意檔名
 
前面提到,如果密碼非得要用那幾個特殊字元,則在組 javaJDBC 連線字串時,要改成 URI 編碼,如下:
@ → %40
: → %3A
/ → %2F
? → %3F
# → %23


因為有備份 H2,所以可以放心刪除 metabase 所在目錄下的 H2 檔案,以確認 metabase 存取的是 MySQL。

重新啟動 metabase
 
[user]~/metabase$  export MB_DB_TYPE=mysql
[user]~/metabase$  export MB_DB_CONNECTION_URI="jdbc:mysql://主機IP:3306/metabase?user=metabase帳戶&password=密碼"
[user]~/metabase$  java  -DMB_DB_TYPE=mysql  -DMB_DB_CONNECTION_URI="jdbc:mysql://主機IP:3306/metabase?user=metabase帳號&password=密碼"  -jar  metabase.jar
 
重登入 metabase,可以看到之前製作的儀表板都在。


相關筆記 ----


2022-11-28

【Metabase】同步/更新 資料庫

有時我們異動了資料庫中的某些資料表,尤其當 Metabase 有使用到表中的欄位時,我們就必須 同步/更新,不然  Metabase 會無法正確顯示圖表。

 

登入 Metabase ,點擊右上角的 齒輪 → 系統管理

 

點擊上方功能表的 "資料庫"



點擊要 同步/更新 的資料庫


點擊 "開始同步資料庫綱要",這樣就完成了。


不過,基本上 Metabase 預設每小時會執行一次輕量的資料庫同步,所以除非您的資料庫內的資料異動頻率很高,不然上述的操作只需要在您發現 Metabase 撈出來的資料明顯跟您資料庫上的原始數據差異很大時才執行同步即可。


2022-02-13

【Metabase】LinuxMint20.3 安裝設定 免費,開源的 BI -- Metabase

參考資料 ----

Working with MySQL in Metabase


Metabase 是一套 BI(Business Intelligence),標榜/訴求 主要使用者為 行銷人員,操作直覺簡易,不需有 資料庫 或 數據分析 技能。

可選擇付費的雲端服務,跟 Tablau 等知名、大牌的 BI 相比,價格親民的多;或是在自己公司內部架設伺服主機,免費版本為社群版,Metabase 有提供論壇,讓使用者在論壇尋求支援或解答。

之前接觸 Tablau,覺得 Tablau 雖然功能強大,但也需要有資料庫(尤其是 SQL 語法) 基礎以上的觀念才較能駕馭;而除非公司本身的性質就是與數據分析有關,員工才可能都有概念,不然操作 BI 大多是一般行銷人員,不見得能完全發揮 Tablau 的功能。


系統需求:Java8,目前版本為:0.44.6(不過下面的截圖是 0.41 的)


/家目錄/ 建立一個目錄給 Metabase

 
~$  cd ~
~$  mkdir  metabase
 


直接下載 jar


執行 Metabase 最簡單的方式:

開一個終端機視窗, 切換到 metabase 目錄,執行 Metabase

 
~$ cd  ~
~$ java  -jar  metabase.jar    #(注意要含副檔名)
 

然後就會看到一長串 Metabase 執行的訊息。

打開瀏覽器, 輸入本機網址, 預設的 port 為 3000

ex:http://localhost:3000(不是 https)


第一次執行,會出現設定畫面


按一下 "Let's get started" 鈕


選擇語言




設定 Metabase 系統管理員


設定連線資料庫,目前 Metabase 幾乎支援主流資料庫,不過社群版不支援連線 Oracle




輸入資料庫的連線設定,這裡以 MSSQL 為例


設定完成


此時回到 Metabase 目錄看到有新產生了幾個檔案,其中有副檔名為 .db 的 metabase.db.mv.db ,這是 Metabase 系統自己的 H2 資料庫,存放 Metabase 的系統資訊,例如您建立了哪些儀表板、圖表...等;之後若想讓 Metabase 在正式主機上運行,Metabase 建議自 H2 移植到 MySQL、MariaDB 或 Postgres 這幾個資料庫上。
也因如此,若您把 Metabase 玩壞了 或 玩一段時日後想重來,只要把這個檔案刪除,一切就重頭開始了。

稍微瞄一下,Metabase 內建的圖表有下圖幾種



Metabase 目前不支援多資料庫同時呈現在一個儀表板上

v0.33(含) 之後的版本有支援 多資料表 join 查詢,也支援 SQL 語法

雖然 MySQL/MariaDB 系出同源,不過 Metabase 預設支援 MariaDB 的連線方式,若要連接 MySQL,需做微調設定,登入的加密方式改為 mysql_native_password

 
# 登入 MySQL
~$  sudo  mysql  -u  root  -p

# 變更 Metabase 連線 MySQL 的密碼加密方式
>  ALTER  USER 'admin'@'%'  IDENTIFIED  WITH  mysql_native_password  BY  '密碼';
 


即使您目前沒有可連線的資料庫也不打緊,Metabase 自帶了一個 Sample 資料庫可讓您玩,官網上的說明文件也是以 Sample 資料庫做為範例。

2022-02-02

【Database】Mint Linux 20.3 安裝設定 MySQL 8.0 + phpMyadmin

參考資料 ----

ALTER USER Statement


看似 Ubuntu/Mint 家族並未棄用 MySQL,採 Mariadb/MySQL 並存的方式;偷懶,這次仍是安裝 MySQL,作業系統為 LinuxMint 20.3 MATE, 預設的版本為 MySQL 8.0


新建一台 VirtualBox 虛擬機


安裝 Guest Additions 讓 虛擬機的螢幕 自動調整客體顯示大小

安裝完成後,設定 "更新管理員" 的 "軟體來源" -- 鏡像站改為國內 國家高速運算中心(https://www.nchc.org.tw/)










安裝 vim(Mint 預設已裝 vi,這適合 80 鍵鍵盤,老人家用不慣 😓)
 
~$  sudo  apt  install  vim
 


暫時關閉防火牆
 
~$  sudo  ufw  disable

# 確認防火牆沒有啟動
~$  sudo  ufw  status
 

安裝 MySQL,Mint 會連帶安裝其他相關的套件
 
~$  sudo  apt  install  mysql-server
 

安裝完成後,MySQL server 應該會自行啟動執行
 
# 查詢 MySQL 狀態
~$  sudo  systemctl  status  mysql

# 啟動 mysql
~$  sudo  systemctl  start  mysql

# 停止 mysql
~$  sudo  systemctl  stop  mysql
 


安裝後,進行安全性設定
 
~$  sudo  mysql_secure_installation
 
問答式設定,依指示回答,以下是老人家的設定,請依自己需求設定

是否要設定密碼強度規則?


密碼強度選擇 -- 2:最強 -- 8 個字碼以上,其中必須 至少 1 個大寫英文 + 至少 1 個小寫英文 + 至少 1 個數字 + 至少 1 個特殊字元


輸入 MySQLroot 密碼(MySQL 也是以 "root" 這個名稱做管理者,不過這裡設定的不是 Linux 的 root 密碼)


是否要剛才設的密碼即刻生效?


是否移除匿名使用者


是否 "不允許" MySQLroot 從遠端登入 MySQL


是否移除 test 資料庫(因為稍後設定 MySQL 時要指定 phpMyAdmin 啟動時預設連線的資料庫,所以先留著,不刪)


重新載入權限資料表

設定完成


設定 MySQL 時區
 
~$  sudo  vim  /etc/mysql/mysql.conf.d/mysqld.cnf

[mydqld]
default-time-zone = '+8:00'

:x 存檔離開
 

剛安裝好 MySQL 時,預設的管理者帳號是 root,所以, 第 1 次以命令形式登入 MySQL,也不需要密碼

 
~$  sudo  mysql

-- SQL 指令沒有大/小寫分別,不過慣例上都會以大寫表示
-- (記得要加 分號 做為命令的結束)
>  ALTER  USER  'root'@'localhost'  IDENTIFIED  WITH  CACHING_SHA2_PASSWORD  BY  '新密碼';

-- 退出,密碼才能生效
> EXIT
 
因為先前的步驟我們指定了密碼強度為 2,所以密碼若不符合這個規則就會出錯

再重新登入就會要求輸入密碼了
 
~$  sudo  mysql  -u  root  -p
# 隨後會要求您輸入密碼
# 參數 -u 是要登入的使用者帳號
# -p 是稍後要輸入密碼


# 另一種登入指令, 但不建議使用, 因為是將密碼以明碼方式顯示
# 注意: -p 跟密碼間沒有空格, 但這麼一來, 您的密碼就顯示在命令列中, 旁人一覽無遺了
~$  sudo  mysql  -u  root  -p密碼


# 登入後, 命令提示字元會變成 >

-- 建立資料庫 
>  CREATE  資料庫名稱;


-- 列出目前 MySQL 已建立的使用者帳號
>  SELECT user FROM mysql.user;


-- 新建一個使用者 admin
>  CREATE USER 'admin'@'localhost' IDENTIFIED  WITH  caching_sha2_password  BY '密碼';
-- 預設的密碼格式為 caching_sha2_password
-- 其他格式有:mysql_native_password, sha256_password


-- 賦予 admin 最高權限
>  GRANT  ALL  PRIVILEGES  ON  * . *  TO  'admin'@'localhost';

>  exit
 


注意:
MySQL 8.0 預設不再支援 MyISAM

MySQL 預設的資料庫管理工具是 MySQL Workbench,不過在 Mint 20.3 執行時,會出現不支援 Mint 的訊息,而且我才玩了一下下就掛了!!


安裝 phpmyadmin
 
~$  sudo  apt  install  phpmyadmin

# Mint 會自動幫您安裝 apache2
 


打開本機的瀏覽器(預設是火狐Firefox),在網址列輸入 http://localhost注意:不是 https

目前,我們還沒有啟用(加密)安全連線,也無法從別的電腦訪問這個內網

phpMyadmin 的網址為
http://localhost/phpmyadmin