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包含两个部分:

查询编辑器:考虑使用JS Fiddle进行SQL查询。通过共享数据集和生成数据的查询,您可以以开放的方式共享组织中的数据。这样,每个人都可以不仅查看结果数据集,而且可以查看生成它的过程。也可以将其分叉并生成新的数据集并获得新的见解。

可视化和仪表板:一旦有了数据集,就可以从中创建不同的可视化文件,然后将多个可视化文件组合到一个仪表板中。目前Redash支持图表,数据透视表,队列和更多。

二、redash安装

Ubuntu 完整安装方式如果是ubuntu直接跑官方的命令:

1git clone https://github.com/getredash/setup.git 2cd setup 3// 步骤一 安装docker 4// 步骤二 创建数据库映射目录 5// 步骤三 创建基础配置文件 6// 步骤四 安装docker-composer初始化数据库,运行Redash 7./setup.sh

笔者平时使用ubuntu比较少,centos是平时主要用的系统,笔者根据官方的安装方式整理了一套基本有docker就可以安装的教程,前提准备好 docker 和 docker-composer,可以参考笔者之前的文章:

1mkdir redashsetup 2cd redashsetup/ 3// 创建数据库映射目录和基础配置文件 4vim redashenv.sh 5 6#!/usr/bin/env bash 7# This script setups dockerized Redash on Ubuntu 18.04. 8set -eu 9 10mkdir /opt/redash 11mkdir /opt/redash/postgres-data 12 13REDASH_BASE_PATH=/opt/redash 14 if [[ -e $REDASH_BASE_PATH/env ]]; then 15 rm $REDASH_BASE_PATH/env 16 touch $REDASH_BASE_PATH/env 17 fi 18 19COOKIE_SECRET=$(pwgen -1s 32) 20SECRET_KEY=$(pwgen -1s 32) 21POSTGRES_PASSWORD=$(pwgen -1s 32) 22REDASH_DATABASE_URL="postgresql://postgres:${POSTGRES_PASSWORD}@postgres/postgres" 23 24echo "PYTHONUNBUFFERED=0" >> $REDASH_BASE_PATH/env 25echo "REDASH_LOG_LEVEL=INFO" >> $REDASH_BASE_PATH/env 26echo "REDASH_REDIS_URL=redis://redis:6379/0" >> $REDASH_BASE_PATH/env 27echo "POSTGRES_PASSWORD=$POSTGRES_PASSWORD" >> $REDASH_BASE_PATH/env 28echo "REDASH_COOKIE_SECRET=$COOKIE_SECRET" >> $REDASH_BASE_PATH/env 29echo "REDASH_SECRET_KEY=$SECRET_KEY" >> $REDASH_BASE_PATH/env 30echo "REDASH_DATABASE_URL=$REDASH_DATABASE_URL" >> $REDASH_BASE_PATH/env 31 32chmod -R 777 redashenv.sh 33./redashenv.sh 34 35 36cat /opt/redash/env 37 38PYTHONUNBUFFERED=0 39REDASH_LOG_LEVEL=INFO 40REDASH_REDIS_URL=redis://redis:6379/0 41POSTGRES_PASSWORD=XjGVGggWXHIRyOP5bOaVsPQ8AKunVsuX 42REDASH_COOKIE_SECRET=9hihbX7BTziWKO7kolldC486QFoo5aU2 43REDASH_SECRET_KEY=tyS5wWdp8l4gq2YPw9sbrnJwaKbVdeEp 44REDASH_DATABASE_URL=postgresql://postgres:XjGVGggWXHIRyOP5bOaVsPQ8AKunVsuX@postgres/postgres

如果需要使用邮件相关功能,如用户邀请,密码重置,警报触发时等等功能需要增加如下配置:

1vim /opt/redash/env 2 3REDASH_MAIL_SERVER (default: localhost) 4REDASH_MAIL_PORT (default: 25) 5REDASH_MAIL_USE_TLS (default: false) 6REDASH_MAIL_USE_SSL (default: false) 7REDASH_MAIL_USERNAME (default: None) 8REDASH_MAIL_PASSWORD (default: None) 9REDASH_MAIL_DEFAULT_SENDER (Email address to send from) 10 11 12version: "2" 13services: 14 server: 15 image: redash/redash:8.0.0.b32245 16 depends_on: 17 - postgres 18 - redis 19 environment: 20 PYTHONUNBUFFERED: 0 21 REDASH_LOG_LEVEL: "INFO" 22 REDASH_REDIS_URL: "redis://redis:6379/0" 23 REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" 24 REDASH_RATELIMIT_ENABLED: "false" 25 REDASH_WEB_WORKERS: 4 26 restart: always 27 command: server 28 ports: 29 - "5000:5000" 30 scheduler: 31 image: redash/redash:8.0.0.b32245 32 depends_on: 33 - postgres 34 - redis 35 environment: 36 PYTHONUNBUFFERED: 0 37 REDASH_LOG_LEVEL: "INFO" 38 REDASH_REDIS_URL: "redis://redis:6379/0" 39 REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" 40 REDASH_RATELIMIT_ENABLED: "false" 41 QUEUES: "celery" 42 WORKERS_COUNT: 1 43 restart: always 44 command: scheduler 45 scheduled_worker: 46 image: redash/redash:8.0.0.b32245 47 depends_on: 48 - postgres 49 - redis 50 environment: 51 PYTHONUNBUFFERED: 0 52 REDASH_LOG_LEVEL: "INFO" 53 REDASH_REDIS_URL: "redis://redis:6379/0" 54 REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" 55 REDASH_RATELIMIT_ENABLED: "false" 56 QUEUES: "scheduled_queries,schemas" 57 WORKERS_COUNT: 1 58 restart: always 59 command: worker 60 adhoc_worker: 61 image: redash/redash:8.0.0.b32245 62 depends_on: 63 - postgres 64 - redis 65 environment: 66 PYTHONUNBUFFERED: 0 67 REDASH_LOG_LEVEL: "INFO" 68 REDASH_REDIS_URL: "redis://redis:6379/0" 69 REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres" 70 REDASH_RATELIMIT_ENABLED: "false" 71 QUEUES: "queries" 72 WORKERS_COUNT: 2 73 restart: always 74 command: worker 75 redis: 76 image: redis:5.0-alpine 77 restart: always 78 postgres: 79 image: postgres:9.6-alpine 80 env_file: /opt/redash/env 81 volumes: 82 - /opt/redash/postgres-data:/var/lib/postgresql/data 83 restart: always 84 nginx: 85 image: redash/nginx:latest 86 ports: 87 - "8880:80" 88 depends_on: 89 - server 90 links: 91 - server:redash 92 restart: always

初始化数据库依赖:

1docker-compose run --rm server create_db 2Creating network "data_default" with the default driver 3Creating data_redis_1 ... done 4Creating data_postgres_1 ... done 5[2019-10-31 04:43:15,422][PID:1][INFO][alembic.runtime.migration] Context impl PostgresqlImpl. 6[2019-10-31 04:43:15,422][PID:1][INFO][alembic.runtime.migration] Will assume transactional DDL. 7[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 发布!

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang