
我們會經常提到BI系統(Business Intelligence),它是一個重要的資料出入口,幫助資料,幫助企業擷取資料表報制定戰略決策。大家熟知的有FineBI和Microsoft的powerBI,但是使用成本都不低需要授權需要用戶端,使用配置也相當繁瑣。筆者今天給大家帶來的是一款開源純Web網頁的資料工具。
附上:
喵了個咪的部落格:
w-blog.cnRedash官方Git位址:
https://github.com/getredash/redashRedash官方文檔:
https://redash.io/help/PS:目前最新版本為V8版本,低版本向高版本更新會存在一些奇怪問題請做好備份在進行更新
一、redash介紹
作為一名軟體工程師最頭大的就是,産品不停的要求拉這種資料哪種資料,或者是提了一堆資料報表的需求一直寫CURD沒有技術含量,重複的事情就應該用工具來解決,甚至于讓産品去自助解決。筆者也一直在找工具,來解決整個公司研發在資料輸出問題,一個不經意的機會發現Redash這個開源元件。當然選擇Redash也有它自身的優勢。
對于一個BI來說最重要的是支援的資料源的種類,Redash支援超過35個資料源,幾乎可以滿足所有的場景:
- 主流的MySQL、PostgreSQL、MongoDB、SQL Server等
- 大資料資料庫Hive、Impala、Presto等
- 新型資料庫ClickHouse、CockroachDB、InfluxDB等
- 自定義Python腳本、URL請求等
Redash包含兩個部分:
查詢編輯器:考慮使用JS Fiddle進行SQL查詢。通過共享資料集和生成資料的查詢,您可以以開放的方式共享組織中的資料。這樣,每個人都可以不僅檢視結果資料集,而且可以檢視生成它的過程。也可以将其分叉并生成新的資料集并獲得新的見解。
可視化和儀表闆:一旦有了資料集,就可以從中建立不同的可視化檔案,然後将多個可視化檔案組合到一個儀表闆中。目前Redash支援圖表,資料透視表,隊列和更多。
二、redash安裝
Ubuntu 完整安裝方式如果是ubuntu直接跑官方的指令:
git clone https://github.com/getredash/setup.git
cd setup
// 步驟一 安裝docker
// 步驟二 建立資料庫映射目錄
// 步驟三 建立基礎配置檔案
// 步驟四 安裝docker-composer初始化資料庫,運作Redash
./setup.sh
筆者平時使用ubuntu比較少,centos是平時主要用的系統,筆者根據官方的安裝方式整理了一套基本有docker就可以安裝的教程,前提準備好 docker 和 docker-composer,可以參考筆者之前的文章:
mkdir redashsetup
cd redashsetup/
// 建立資料庫映射目錄和基礎配置檔案
vim redashenv.sh
#!/usr/bin/env bash
# This script setups dockerized Redash on Ubuntu 18.04.
set -eu
mkdir /opt/redash
mkdir /opt/redash/postgres-data
REDASH_BASE_PATH=/opt/redash
if [[ -e $REDASH_BASE_PATH/env ]]; then
rm $REDASH_BASE_PATH/env
touch $REDASH_BASE_PATH/env
fi
COOKIE_SECRET=$(pwgen -1s 32)
SECRET_KEY=$(pwgen -1s 32)
POSTGRES_PASSWORD=$(pwgen -1s 32)
REDASH_DATABASE_URL="postgresql://postgres:${POSTGRES_PASSWORD}@postgres/postgres"
echo "PYTHONUNBUFFERED=0" >> $REDASH_BASE_PATH/env
echo "REDASH_LOG_LEVEL=INFO" >> $REDASH_BASE_PATH/env
echo "REDASH_REDIS_URL=redis://redis:6379/0" >> $REDASH_BASE_PATH/env
echo "POSTGRES_PASSWORD=$POSTGRES_PASSWORD" >> $REDASH_BASE_PATH/env
echo "REDASH_COOKIE_SECRET=$COOKIE_SECRET" >> $REDASH_BASE_PATH/env
echo "REDASH_SECRET_KEY=$SECRET_KEY" >> $REDASH_BASE_PATH/env
echo "REDASH_DATABASE_URL=$REDASH_DATABASE_URL" >> $REDASH_BASE_PATH/env
chmod -R 777 redashenv.sh
./redashenv.sh
cat /opt/redash/env
PYTHONUNBUFFERED=0
REDASH_LOG_LEVEL=INFO
REDASH_REDIS_URL=redis://redis:6379/0
POSTGRES_PASSWORD=XjGVGggWXHIRyOP5bOaVsPQ8AKunVsuX
REDASH_COOKIE_SECRET=9hihbX7BTziWKO7kolldC486QFoo5aU2
REDASH_SECRET_KEY=tyS5wWdp8l4gq2YPw9sbrnJwaKbVdeEp
REDASH_DATABASE_URL=postgresql://postgres:XjGVGggWXHIRyOP5bOaVsPQ8AKunVsuX@postgres/postgres
如果需要使用郵件相關功能,如使用者邀請,密碼重置,警報觸發時等等功能需要增加如下配置:
vim /opt/redash/env
REDASH_MAIL_SERVER (default: localhost)
REDASH_MAIL_PORT (default: 25)
REDASH_MAIL_USE_TLS (default: false)
REDASH_MAIL_USE_SSL (default: false)
REDASH_MAIL_USERNAME (default: None)
REDASH_MAIL_PASSWORD (default: None)
REDASH_MAIL_DEFAULT_SENDER (Email address to send from)
version: "2"
services:
server:
image: redash/redash:8.0.0.b32245
depends_on:
- postgres
- redis
environment:
PYTHONUNBUFFERED: 0
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
REDASH_RATELIMIT_ENABLED: "false"
REDASH_WEB_WORKERS: 4
restart: always
command: server
ports:
- "5000:5000"
scheduler:
image: redash/redash:8.0.0.b32245
depends_on:
- postgres
- redis
environment:
PYTHONUNBUFFERED: 0
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
REDASH_RATELIMIT_ENABLED: "false"
QUEUES: "celery"
WORKERS_COUNT: 1
restart: always
command: scheduler
scheduled_worker:
image: redash/redash:8.0.0.b32245
depends_on:
- postgres
- redis
environment:
PYTHONUNBUFFERED: 0
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
REDASH_RATELIMIT_ENABLED: "false"
QUEUES: "scheduled_queries,schemas"
WORKERS_COUNT: 1
restart: always
command: worker
adhoc_worker:
image: redash/redash:8.0.0.b32245
depends_on:
- postgres
- redis
environment:
PYTHONUNBUFFERED: 0
REDASH_LOG_LEVEL: "INFO"
REDASH_REDIS_URL: "redis://redis:6379/0"
REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
REDASH_RATELIMIT_ENABLED: "false"
QUEUES: "queries"
WORKERS_COUNT: 2
restart: always
command: worker
redis:
image: redis:5.0-alpine
restart: always
postgres:
image: postgres:9.6-alpine
env_file: /opt/redash/env
volumes:
- /opt/redash/postgres-data:/var/lib/postgresql/data
restart: always
nginx:
image: redash/nginx:latest
ports:
- "8880:80"
depends_on:
- server
links:
- server:redash
restart: always
初始化資料庫依賴:
docker-compose run --rm server create_db
Creating network "data_default" with the default driver
Creating data_redis_1 ... done
Creating data_postgres_1 ... done
[2019-10-31 04:43:15,422][PID:1][INFO][alembic.runtime.migration] Context impl PostgresqlImpl.
[2019-10-31 04:43:15,422][PID:1][INFO][alembic.runtime.migration] Will assume transactional DDL.
[2019-10-31 04:43:15,437][PID:1][INFO][alembic.runtime.migration] Running stamp_revision -> e5c7a4e2df4d
啟動redash:
docker-compose up -d
通過nginx的8880端口即可通路,接下來就可以配置管理者賬号的使用者名和密碼開始使用了:
在使用上的一些建議
- 一個使用者一個賬号,不混用賬号
- 使用分組功能賦予對應權限,按照業務區分權限
- 資料庫的配置使用隻讀賬号配置,避免從BI系統獲得資料庫高權限
- 資料庫的賬号隻給單庫權限,甚至于給到單表權限控制資料,盡可能控制資料的顆粒度
- 配置好郵件可以使用郵件報警,對于不正常的資料進行檢測報警
本文由部落格一文多發平台 OpenWrite 釋出!