天天看點

Redash - 強大的開源資料可視化平台

Redash - 強大的開源資料可視化平台

我們會經常提到BI系統(Business Intelligence),它是一個重要的資料出入口,幫助資料,幫助企業擷取資料表報制定戰略決策。大家熟知的有FineBI和Microsoft的powerBI,但是使用成本都不低需要授權需要用戶端,使用配置也相當繁瑣。筆者今天給大家帶來的是一款開源純Web網頁的資料工具。

附上:

喵了個咪的部落格:

w-blog.cn

Redash官方Git位址:

https://github.com/getredash/redash

Redash官方文檔:

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 - 強大的開源資料可視化平台

Redash包含兩個部分:

查詢編輯器:考慮使用JS Fiddle進行SQL查詢。通過共享資料集和生成資料的查詢,您可以以開放的方式共享組織中的資料。這樣,每個人都可以不僅檢視結果資料集,而且可以檢視生成它的過程。也可以将其分叉并生成新的資料集并獲得新的見解。

Redash - 強大的開源資料可視化平台

可視化和儀表闆:一旦有了資料集,就可以從中建立不同的可視化檔案,然後将多個可視化檔案組合到一個儀表闆中。目前Redash支援圖表,資料透視表,隊列和更多。

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端口即可通路,接下來就可以配置管理者賬号的使用者名和密碼開始使用了:

Redash - 強大的開源資料可視化平台

在使用上的一些建議

  • 一個使用者一個賬号,不混用賬号
  • 使用分組功能賦予對應權限,按照業務區分權限
  • 資料庫的配置使用隻讀賬号配置,避免從BI系統獲得資料庫高權限
  • 資料庫的賬号隻給單庫權限,甚至于給到單表權限控制資料,盡可能控制資料的顆粒度
  • 配置好郵件可以使用郵件報警,對于不正常的資料進行檢測報警
本文由部落格一文多發平台 OpenWrite 釋出!