数据分析与仪表板

June 24, 2026 · View on GitHub

本文档整合了以下源文件:analytics.md, dashboard.md, dash.md


来源:analytics.md

简介

Apache Superset 是一款开源数据探索和可视化平台。它提供基于 Web 的界面,用于创建交互式仪表板、探索数据集和执行基于 SQL 的分析。

特性描述
可视化多种图表类型和可视化方式
SQL IDE内置 SQL 编辑器用于数据探索
仪表板交互式仪表板创建和分享
数据源连接各种数据库和数据仓库
安全基于角色的访问控制和行级安全

架构

系统组件

组件用途
Web server基于 Flask 的应用服务器
Metadata database存储 Superset 配置(PostgreSQL)
CacheRedis 用于缓存查询结果
Message brokerCelery 配合 Redis/RabbitMQ 处理异步任务
Data databases用于分析的外部数据源

支持的数据库

数据库连接器备注
PostgreSQLpsycopg2推荐用于元数据
MySQLmysqlclient常见数据源
SQLite内置开发和测试
Amazon Redshiftredshift_connector数据仓库
Google BigQuerypybigquery云分析
Snowflakesnowflake-connector云数据仓库
Apache Druidpydruid实时分析
ClickHouseclickhouse-connect列式 OLAP

安装

Docker 部署

# 克隆仓库
git clone https://github.com/apache/superset.git
cd superset

# 使用 Docker Compose 启动
docker-compose -f docker-compose-non-dev.yml up -d

Docker Compose

version: "3.8"
services:
  superset:
    image: apache/superset:latest
    container_name: superset
    ports:
      - "8088:8088"
    environment:
      - SUPERSET_SECRET_KEY=your_secret_key
      - SQLALCHEMY_DATABASE_URI=postgresql://superset:password@db:5432/superset
    depends_on:
      - db
      - redis
    restart: unless-stopped

  db:
    image: postgres:15
    container_name: superset-db
    environment:
      - POSTGRES_USER=superset
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=superset
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped

  redis:
    image: redis:7
    container_name: superset-redis
    restart: unless-stopped

volumes:
  postgres_data:

初始设置

# 初始化数据库
superset db upgrade

# 创建管理员用户
superset fab create-admin \
  --username admin \
  --firstname Admin \
  --lastname User \
  --email admin@example.com \
  --password admin

# 初始化角色和权限
superset init

数据源

连接数据库

步骤操作
1导航到数据 > 数据库
2点击 + 数据库
3选择数据库类型
4输入连接参数
5测试连接
6保存配置

连接 URI 格式

数据库URI 格式
PostgreSQLpostgresql://user:pass@host:5432/db
MySQLmysql://user:pass@host:3306/db
SQLitesqlite:///path/to/database.db
Redshiftredshift+psycopg2://user:pass@host:5439/db
BigQuerybigquery://project/dataset

添加数据集

方式描述
选择现有数据库表
虚拟表SQL 查询作为数据集
上传上传 CSV 或 Excel 文件

图表

图表类型

类别图表
折线图折线图、时间序列、多线
柱状图柱状图、堆叠柱状图、分组柱状图
面积图面积图、堆叠面积图
饼图饼图、环形图
散点图散点图、气泡图
表格数据表、透视表
地理世界地图、国家地图、deck.gl
热力图日历热力图、热力图
直方图分布直方图
箱线图统计箱线图

创建图表

步骤操作
1导航到图表 > + 图表
2选择数据集
3选择图表类型
4配置指标和维度
5应用筛选器
6自定义外观
7保存图表

指标

指标类型描述示例
Count行计数COUNT(*)
Sum值求和SUM(sales)
Average平均值AVG(price)
Min/Max最小值或最大值MAX(revenue)
Custom SQL自定义表达式SUM(profit) / SUM(revenue)

维度

维度类型描述示例
Column直接列引用category
Time基于时间的分组order_date(按月)
SQL expression自定义表达式CONCAT(first_name, ' ', last_name)

仪表板

创建仪表板

步骤操作
1导航到仪表板
2点击 + 仪表板
3从已保存图表中添加
4使用网格排列布局
5添加筛选器和参数
6配置自动刷新
7发布仪表板

仪表板组件

组件描述
Charts来自已保存图表的可视化
Markdown文本和文档
Divider可视分隔符
Filter bar所有图表的交互式筛选器
Header仪表板标题和元数据

仪表板筛选器

筛选器类型描述
时间范围按日期/时间段筛选
列筛选器按特定列值筛选
数值筛选器按数值范围筛选
自定义筛选器基于 SQL 的自定义筛选器

SQL IDE

SQL Lab 功能

功能描述
查询编辑器语法高亮的 SQL 编辑器
结果表表格格式的查询结果
Schema 浏览器浏览数据库 Schema 和表
查询历史保存和检索过去的查询
自动补全表名和列名建议

SQL Lab 界面

面板描述
查询编辑器编写和执行 SQL 查询
结果查看查询结果
数据预览表数据快速预览
已保存查询访问之前保存的查询

查询功能

功能描述
执行运行 SQL 查询(Ctrl+Enter)
格式化自动格式化 SQL 代码
保存保存查询供以后使用
下载将结果导出为 CSV
分享与他人分享查询

安全

用户角色

角色权限
Admin完全系统访问
Alpha访问所有数据源
Gamma仅访问许可的数据源
sql_lab访问 SQL Lab
Public只读访问已发布的仪表板

行级安全

功能描述
RLS 筛选器按用户限制数据行
筛选器模板可复用的安全筛选器
基于组对用户组应用筛选器

访问控制

控制描述
数据源访问控制用户可查询的数据库
仪表板访问控制用户可查看的仪表板
图表访问控制用户可创建的图表
Schema 访问控制用户可浏览的 Schema

告警和报告

告警配置

设置描述
条件返回布尔结果的 SQL 查询
阈值触发告警的值
通知Email、Slack 或 Webhook 通知
计划检查条件的频率

报告配置

设置描述
Dashboard要渲染为报告的仪表板
FormatPDF 或图片格式
Schedule报告生成频率
Recipients投递的邮箱地址

API 访问

REST API 端点

端点方法描述
/api/v1/chart/GET列出图表
/api/v1/dashboard/GET列出仪表板
/api/v1/dataset/GET列出数据集
/api/v1/database/GET列出数据库
/api/v1/query/GET列出已保存查询

API 认证

# 登录获取访问令牌
curl -X POST http://localhost:8088/api/v1/security/login \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "admin", "provider": "db"}'

# 在请求中使用令牌
curl -H "Authorization: Bearer <token>" \
  http://localhost:8088/api/v1/chart/

性能优化

缓存

缓存类型描述
查询缓存缓存查询结果以加快加载
图表缓存缓存渲染的图表数据
仪表板缓存缓存完整的仪表板状态
元数据缓存缓存数据库 Schema 信息

查询优化

技术描述
索引为频繁查询添加数据库索引
物化视图预计算复杂聚合
分区按日期分区大表
缓存为重复查询启用 Superset 缓存

总结

主题核心要点
用途开源数据可视化和探索平台
数据源连接 PostgreSQL、MySQL、BigQuery、Snowflake 等
图表多种可视化类型
仪表板带筛选器和自动刷新的交互式仪表板
SQL IDE内置 SQL 编辑器用于数据探索
安全基于角色的访问控制,带行级安全

来源:dashboard.md

简介

Dashy 是一个高度可定制的自托管仪表盘应用。它提供了一个基于 Web 的界面,用于组织链接、监控服务和展示小部件。

什么是 Dashy?

Dashy 是一个个人仪表盘,帮助您将 Web 服务、书签和系统状态集中在一个地方。

特性描述
可定制布局排列小部件和分区
状态监控检查服务可用性
主题多个内置主题
小部件系统信息、天气等
认证可选登录保护

为什么要自托管仪表盘?

好处描述
集中访问所有服务的单一入口
状态概览一目了然的服务健康状况
定制化根据工作流程定制
隐私无第三方跟踪

安装

前置要求

要求版本
Node.js18 或更高
Docker20.10 或更高(可选)
npm8 或更高

Docker 安装

docker run -d \
  --name dashy \
  -p 8080:8080 \
  -v /path/to/conf.yml:/app/user-data/conf.yml \
  lissy93/dashy

Docker Compose

version: '3'
services:
  dashy:
    image: lissy93/dashy
    container_name: dashy
    ports:
      - "8080:8080"
    volumes:
      - ./conf.yml:/app/user-data/conf.yml
    restart: unless-stopped

手动安装

git clone https://github.com/Lissy93/dashy.git
cd dashy
yarn install
yarn build
yarn start

配置

配置文件结构

pageInfo:
  title: My Dashboard
  description: Personal dashboard
  navLinks:
    - title: GitHub
      path: https://github.com

sections:
  - name: Services
    displayData:
      cols: 3
    items:
      - title: Portainer
        description: Container management
        icon: hl-portainer
        url: https://portainer.example.com
        statusCheck: true

基本配置选项

部分用途
pageInfo页面标题、描述、导航链接
sections仪表盘项目分组
appConfig全局应用设置
theme外观样式

分区配置

sections:
  - name: Media
    icon: fas fa-play
    displayData:
      cols: 2
      collapsed: false
      itemSize: medium
    items:
      - title: Plex
        url: https://plex.example.com
        icon: hl-plex
分区属性描述
name分区标题
icon分区图标
cols列数
collapsed默认折叠
itemSize项目显示大小

添加项目

项目配置

items:
  - title: Service Name
    description: Brief description
    icon: hl-servicename
    url: https://service.example.com
    target: newtab
    statusCheck: true
    tags:
      - media
      - streaming
项目属性描述
title显示名称
description悬停文本
icon图标标识符
url服务 URL
target打开方式
statusCheck启用健康检查
tags可搜索标签

图标来源

来源前缀示例
HomeLab 图标hl-hl-portainer
Font Awesomefas fa-fas fa-home
Material Designmdi-mdi-server
Emoji:rocket:
URLhttps://自定义图片 URL

状态监控

健康检查

items:
  - title: Service
    url: https://service.example.com
    statusCheck: true
    statusCheckUrl: https://service.example.com/health
    statusCheckAllowInsecure: true
状态颜色含义
在线绿色服务正常响应
离线红色服务无响应
未知灰色未配置检查

状态检查选项

选项描述
statusCheck启用基本检查
statusCheckUrl自定义端点
statusCheckAllowInsecure允许自签名证书
statusCheckHeaders自定义请求头

主题

内置主题

主题风格
Default简洁、现代
Night暗色模式
Dracula紫色暗色主题
Nord冷色调蓝色主题
Pastel柔和色彩
Minimal简约、干净

自定义主题

appConfig:
  theme: default
  customCss: |
    :root {
      --primary: #4a90d9;
      --background: #1a1a2e;
    }

CSS 变量

变量控制
--primary强调色
--background页面背景
--item-background项目背景
--text-color文本颜色
--heading-text分区标题

小部件

可用小部件

小部件描述
clock当前时间
weather天气预报
system-infoCPU、内存使用率
search-barWeb 搜索
notes便签
todo-list任务列表
iframe嵌入外部页面

小部件配置

sections:
  - name: Widgets
    widgets:
      - type: clock
        options:
          format: 24
          showDate: true

      - type: weather
        options:
          API_KEY: your-key
          city: London
          units: metric

      - type: system-info
        options:
          cpu: true
          memory: true
          disk: true

自定义小部件

- type: iframe
  options:
    url: https://grafana.example.com/d/abc/dashboard
    height: 400
    width: 100%

认证

基本认证

appConfig:
  auth:
    enableGuestAccess: false
    users:
      - user: admin
        hash: "\$2b\$12$..."
        type: admin
      - user: guest
        hash: "\$2b\$12$..."
        type: guest

生成密码哈希

npm install -g bcrypt-cli
bcrypt-cli "your-password"

访问级别

级别权限
Admin完全访问,编辑模式
Guest只读访问
None无访问权限

多页面支持

页面配置

pages:
  - name: Home
    path: /
    conf: home.yml

  - name: Services
    path: /services
    conf: services.yml

  - name: Monitoring
    path: /monitoring
    conf: monitoring.yml

备份和恢复

导出配置

# 复制配置文件
cp /path/to/conf.yml ./backup-conf.yml

# 或从 UI 导出
# Settings → Export Config

导入配置

# 从备份恢复
cp ./backup-conf.yml /path/to/conf.yml

# 或从 UI 导入
# Settings → Import Config

Web 服务器配置

Nginx 反向代理

server {
    listen 80;
    server_name dashboard.example.com;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

使用 Let's Encrypt 配置 SSL

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d dashboard.example.com

性能

优化技巧

技巧描述
启用缓存配置浏览器缓存
压缩图片优化图标大小
限制小部件只使用需要的小部件
懒加载为分区启用懒加载

移动端支持

响应式设计

Dashy 自动适配移动屏幕:

屏幕大小布局
桌面多列网格
平板响应式网格
手机单列

PWA 支持

Dashy 可以作为 Progressive Web App 安装到移动设备上。

总结

功能配置
分区将项目分组
项目指向服务的链接
小部件系统信息、天气等
主题外观定制
状态检查监控服务健康
认证可选登录保护

来源:dash.md

简介

Redash 是一个开源数据可视化和仪表板平台,可连接多种数据源,支持基于 SQL 的查询,并提供交互式仪表板,用于数据探索和团队共享。

系统要求

组件最低配置推荐配置
CPU2 核4 核
内存2 GB4 GB
磁盘20 GB100 GB
PostgreSQL9.613+
Redis3.06+
Docker20.10最新版

安装

Docker Compose

version: '3.8'
services:
  redash:
    image: redash/redash:latest
    ports:
      - "5000:5000"
    env_file:
      - .env
    depends_on:
      - postgres
      - redis
    restart: unless-stopped

  postgres:
    image: postgres:15
    volumes:
      - pg-data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: redash
      POSTGRES_USER: redash
      POSTGRES_PASSWORD: changeme
    restart: unless-stopped

  redis:
    image: redis:7
    restart: unless-stopped

  scheduler:
    image: redash/redash:latest
    command: scheduler
    env_file:
      - .env
    depends_on:
      - postgres
      - redis
    restart: unless-stopped

  worker:
    image: redash/redash:latest
    command: worker
    env_file:
      - .env
    depends_on:
      - postgres
      - redis
    restart: unless-stopped

volumes:
  pg-data:

环境变量

# .env
REDASH_DATABASE_URL=postgres://redash:changeme@postgres/redash
REDASH_REDIS_URL=redis://redis:6379/0
REDASH_SECRET_KEY=generate-a-random-secret-key
REDASH_COOKIE_SECRET=generate-another-random-key
REDASH_HOST=http://localhost:5000

初始化数据库

docker compose run --rm redash create_db
docker compose up -d

支持的数据源

数据库类型说明
PostgreSQLSQL完全支持
MySQLSQL完全支持
SQLiteSQL基于文件
Microsoft SQL ServerSQL完全支持
Amazon RedshiftSQL数据仓库
Google BigQuerySQL云分析
ClickHouseSQL列式数据库
MongoDBNoSQLJSON 查询
Elasticsearch搜索Query DSL
Prometheus时序PromQL
InfluxDB时序Flux 查询
Google Sheets电子表格基于 API
CSV文件直接上传
JSON APIREST基于 URL

添加数据源

  1. 导航到 Settings > Data Sources
  2. 点击 New Data Source
  3. 选择数据库类型
  4. 输入连接详情
  5. 测试连接
  6. 保存

查询编辑器

编辑器功能

功能说明
语法高亮SQL 语法着色
自动补全表和列建议
Schema 浏览器浏览数据库结构
查询参数动态用户输入
执行历史之前的查询运行
版本历史查询变更追踪

查询参数

参数类型语法用户输入
文本{{ param }}自由文本字段
数字{{ param }}数字输入
下拉菜单{{ param }}预定义选项
日期{{ param }}日期选择器
日期范围{{ start }} {{ end }}开始和结束日期
基于查询{{ param }}来自另一个查询的选项

参数化查询示例

SELECT
  date_trunc('{{ period }}', created_at) AS time_period,
  COUNT(*) AS order_count,
  SUM(total) AS revenue
FROM orders
WHERE
  created_at BETWEEN '{{ start_date }}' AND '{{ end_date }}'
  AND status IN ({{ status }})
GROUP BY time_period
ORDER BY time_period

可视化类型

图表类型最佳场景数据形态
表格详细数据探索任意
折线图随时间变化的趋势时序数据
柱状图分类比较分类 + 数值
饼图比例数据整体的部分
散点图寻找相关性两个数值列
面积图累积趋势时序数据
热力图密度模式两个维度 + 值
队列留存分析基于时间的分组
漏斗转化步骤顺序阶段
地图地理数据经纬度
计数器单指标显示单个值
透视表交叉表多维度

图表配置选项

设置说明
X 列水平轴数据列
Y 列垂直轴数据列
分组系列分组列
排序数据排序方向
限制最大显示行数
堆叠垂直堆叠系列值

仪表板

仪表板组件

组件说明
小部件单个查询可视化
文本框Markdown 格式的文本内容
参数仪表板级过滤控制
标签组织化的仪表板分区

仪表板布局设置

设置说明默认值
列数每行网格列数3
自动高度自动适应内容高度
刷新自动刷新间隔
参数共享过滤栏

创建仪表板

  1. 导航到 Create > Dashboard
  2. 添加名称和描述
  3. 点击 Add Widget
  4. 选择现有查询或创建新查询
  5. 选择可视化类型
  6. 定位和调整小部件大小
  7. 设置仪表板参数
  8. 保存

告警

告警配置

字段说明示例
查询数据源查询SELECT count(*) FROM errors
要监控的列count
操作符比较操作符greater than
阈值触发值100
频率检查间隔5 minutes

告警状态

状态条件操作
正常条件未满足不执行操作
待定条件已满足,等待持续时间监控中
触发条件已满足,告警活跃发送通知
未知查询未返回数据记录错误
错误查询执行错误记录错误

通知渠道

渠道需要的配置
邮件SMTP 设置
SlackWebhook URL
PagerDuty集成密钥
Webhook自定义 HTTP 端点
Microsoft TeamsWebhook URL

调度

调度选项说明
从不仅手动执行
每分钟持续更新
每 5 分钟近实时
每小时每小时刷新
每天每天刷新
自定义Cron 表达式

API

REST API 端点

端点方法用途
/api/queriesGET / POST列出或创建查询
/api/queries/{id}GET / PUT / DELETE管理特定查询
/api/dashboardsGET / POST列出或创建仪表板
/api/query_results/{id}GET获取查询结果
/api/data_sourcesGET / POST管理数据源
/api/usersGET / POST管理用户

API 认证

# 使用用户配置中的 API key
curl -H "Authorization: Key YOUR_API_KEY" \
  http://localhost:5000/api/queries

用户管理

用户角色

角色权限
管理员完全访问,管理所有设置
默认创建和编辑自己的查询和仪表板
查看者仅查看共享仪表板

权限级别

级别查询访问仪表板访问
私有仅所有者仅所有者
查看任何人可查看任何人可查看
编辑指定用户可编辑指定用户可编辑
公开公开链接访问公开链接访问

嵌入

嵌入选项

方法说明安全性
iframe在页面中嵌入仪表板 URL需要认证令牌
公开 URL分享公开仪表板链接任何有链接的人
API 小部件编程嵌入需要 API Key

iframe 示例

<iframe
  src="https://redash.example.com/public/dashboards/token"
  width="100%"
  height="600"
  frameborder="0">
</iframe>

安全

措施配置
HTTPS使用 SSL 证书的反向代理
认证SAML 或 LDAP SSO 集成
API Key按用户范围的 API 访问
速率限制基于代理的请求限制
查询超时最大执行时间设置
数据源权限按组的数据源访问

备份

组件方法频率
PostgreSQLpg_dump每日
配置.env 文件备份每周
查询包含在数据库备份中每日
仪表板包含在数据库备份中每日

备份脚本

#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="/var/backups/redash"

pg_dump -h localhost -U redash redash | gzip > "$BACKUP_DIR/redash-$DATE.sql.gz"
find "$BACKUP_DIR" -mtime +30 -delete

性能建议

方面建议
查询为数据探索添加 LIMIT 子句
缓存启用查询结果缓存
索引确保存在适当的数据库索引
参数在 WHERE 子句中使用索引列
仪表板限制每个仪表板的小部件数量
刷新使用适当的刷新间隔

故障排除

问题原因解决方案
查询超时长时间运行的查询优化查询或增加超时时间
连接失败凭据错误验证数据源连接设置
仪表板缓慢小部件太多减少小部件数量或启用缓存
无数据返回查询返回空检查查询逻辑和过滤器
导入失败格式问题检查 JSON 导出格式兼容性

总结

Redash 提供了一个强大的数据可视化和仪表板平台。其对多种数据源的支持、参数化查询和交互式可视化,使其适合需要在组织内探索和分享数据洞察的团队。