Instalación de Apache Superset para Visualización de Datos
Apache Superset es una plataforma de exploración y visualización de datos de código abierto que soporta conexiones a decenas de bases de datos y permite crear dashboards interactivos sin necesidad de código. Con Superset puedes crear desde gráficos simples hasta análisis complejos con SQL Lab, integrándose con fuentes como PostgreSQL, MySQL, BigQuery o Snowflake. Esta guía cubre la instalación en Linux con Docker y la configuración completa para producción.
Requisitos Previos
- Ubuntu 20.04/22.04 o CentOS 8+/Rocky Linux 8+
- Docker 20.10+ y Docker Compose 2.x
- 4 GB de RAM mínimo (8 GB recomendado)
- 4 vCPUs recomendado
- 10 GB de espacio en disco
- Puerto 8088 disponible
Instalación con Docker Compose
La forma más rápida de poner en marcha Superset es usando el repositorio oficial:
# Clonar el repositorio oficial de Superset
git clone https://github.com/apache/superset.git
cd superset
# Usar la versión estable más reciente (verificar en GitHub)
git checkout 3.1.0
# Copiar configuración de ejemplo
cp docker/.env-non-dev docker/.env
# Editar variables importantes
nano docker/.env
Modifica las siguientes variables en el archivo .env:
# Cambiar estas claves por valores aleatorios seguros
SECRET_KEY=tu_clave_secreta_muy_larga_y_aleatoria
SUPERSET_SECRET_KEY=tu_clave_secreta_muy_larga_y_aleatoria
# URL pública de Superset
SUPERSET_LOAD_EXAMPLES=yes # Desactivar en producción: no
# Iniciar todos los servicios
docker compose -f docker-compose-non-dev.yml up -d
# Ver estado de los contenedores
docker compose -f docker-compose-non-dev.yml ps
# Ver logs de inicialización
docker compose -f docker-compose-non-dev.yml logs -f superset
La primera vez que arranca, Superset inicializa la base de datos y carga ejemplos, lo que puede tardar 3-5 minutos.
Instalación Manual con pip
Para mayor control sobre la configuración:
# Instalar dependencias del sistema
sudo apt update
sudo apt install -y python3-pip python3-dev libmysqlclient-dev libssl-dev libffi-dev build-essential
# Crear entorno virtual
python3 -m venv /opt/superset-venv
source /opt/superset-venv/bin/activate
# Instalar Superset con conectores de bases de datos comunes
pip install apache-superset
pip install psycopg2-binary pymysql
# Crear archivo de configuración
sudo mkdir -p /etc/superset
Crea /etc/superset/superset_config.py:
import os
# Clave secreta - CAMBIAR en producción
SECRET_KEY = os.environ.get('SECRET_KEY', 'clave_super_secreta_cambiar')
# Base de datos de metadatos de Superset
SQLALCHEMY_DATABASE_URI = 'postgresql+psycopg2://superset:password@localhost/superset'
# Configuración de caché con Redis
CACHE_CONFIG = {
'CACHE_TYPE': 'RedisCache',
'CACHE_DEFAULT_TIMEOUT': 300,
'CACHE_KEY_PREFIX': 'superset_',
'CACHE_REDIS_URL': 'redis://localhost:6379/0',
}
# Habilitar filtro de filas en resultados
ROW_LIMIT = 5000
# Exportar configuración
export SUPERSET_CONFIG_PATH=/etc/superset/superset_config.py
# Inicializar la base de datos
superset db upgrade
# Crear usuario administrador
superset fab create-admin \
--username admin \
--firstname Admin \
--lastname User \
--email [email protected] \
--password contraseña_segura
# Cargar ejemplos (opcional)
superset load_examples
# Inicializar roles y permisos
superset init
# Iniciar el servidor de desarrollo (solo para pruebas)
superset run -p 8088 --with-threads --reload
Configuración Inicial
Accede a http://tu-ip:8088 y entra con las credenciales de administrador creadas.
La interfaz principal muestra:
- Dashboards: lista de dashboards disponibles
- Gráficos: biblioteca de visualizaciones guardadas
- SQL Lab: editor SQL interactivo
- Configuración: administración de usuarios, roles y conexiones
Conexión a Bases de Datos
Ve a Configuración → Conexiones a bases de datos → + Base de datos
# Cadenas de conexión para bases de datos comunes:
# PostgreSQL
postgresql+psycopg2://usuario:contraseña@host:5432/nombre_db
# MySQL
mysql+pymysql://usuario:contraseña@host:3306/nombre_db
# SQLite (solo para pruebas)
sqlite:////ruta/al/archivo.db
# Instalar driver adicional para ClickHouse
pip install clickhouse-connect
# Para BigQuery, instalar el conector oficial
pip install sqlalchemy-bigquery
En la interfaz:
- Selecciona el tipo de base de datos del desplegable
- Introduce la cadena de conexión (URI de SQLAlchemy)
- Haz clic en Probar conexión para verificar
- Ajusta las opciones avanzadas (tiempo máximo de consulta, esquemas expuestos)
- Guarda la configuración
Creación de Gráficos y Dashboards
Crear un conjunto de datos
- Ve a Datos → Conjuntos de datos → + Conjunto de datos
- Selecciona la base de datos, esquema y tabla
- O crea un dataset virtual con una consulta SQL personalizada
Crear un gráfico
- Clic en + → Gráfico
- Selecciona el dataset y el tipo de visualización (más de 40 tipos disponibles)
- Configura el eje X, métricas, dimensiones y filtros en el panel lateral
- Usa el panel de Personalización para ajustar colores y etiquetas
- Guarda el gráfico con un nombre descriptivo
Crear un dashboard
- Clic en + → Dashboard
- Arrastra gráficos desde el panel lateral al lienzo
- Añade filtros nativos para controlar múltiples gráficos simultáneamente
- Configura la actualización automática si necesitas datos en tiempo real
- Publica el dashboard para compartirlo con el equipo
SQL Lab
SQL Lab es un editor SQL completo con autocompletado, historial y visualización directa de resultados:
-- Ejemplo: análisis de ventas con SQL Lab
SELECT
DATE_TRUNC('month', fecha_venta) AS mes,
categoria,
SUM(importe) AS total_ventas,
COUNT(*) AS num_transacciones
FROM ventas
WHERE fecha_venta >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY 1, 2
ORDER BY 1, 3 DESC;
Características de SQL Lab:
- Múltiples pestañas de consulta simultáneas
- Autocompletado de tablas y columnas
- Guardar consultas para reutilizar
- Crear dataset directamente desde una consulta
- Exportar resultados a CSV o JSON
Gestión de Usuarios y Roles
Superset usa un sistema de roles basado en Flask-AppBuilder:
| Rol | Permisos |
|---|---|
| Admin | Acceso total |
| Alpha | Crear y editar dashboards y gráficos |
| Gamma | Solo visualizar dashboards asignados |
| sql_lab | Acceso al SQL Lab |
| Public | Acceso a contenido público |
# Crear usuario desde línea de comandos
superset fab create-user \
--role Alpha \
--username analista1 \
--firstname Ana \
--lastname García \
--email [email protected] \
--password contraseña
# Listar usuarios existentes
superset fab list-users
Para Row Level Security (RLS): Seguridad → Filtros de seguridad a nivel de fila
Caché y Rendimiento
# Instalar Redis para caché
sudo apt install -y redis-server
sudo systemctl enable redis-server --now
# Verificar que Redis está activo
redis-cli ping
Configuración de caché en superset_config.py:
# Caché para dashboards y gráficos
DATA_CACHE_CONFIG = {
'CACHE_TYPE': 'RedisCache',
'CACHE_DEFAULT_TIMEOUT': 600, # 10 minutos
'CACHE_KEY_PREFIX': 'superset_data_',
'CACHE_REDIS_URL': 'redis://localhost:6379/1',
}
# Caché para metadatos de tablas
TABLE_NAMES_CACHE_CONFIG = {
'CACHE_TYPE': 'RedisCache',
'CACHE_DEFAULT_TIMEOUT': 3600, # 1 hora
'CACHE_REDIS_URL': 'redis://localhost:6379/2',
}
# Límite de tiempo para consultas (segundos)
SQLLAB_TIMEOUT = 300
SUPERSET_WEBSERVER_TIMEOUT = 300
# Configurar workers de Celery para consultas asíncronas
pip install celery
# Iniciar worker de Celery
celery --app=superset.tasks.celery_app:app worker --pool=prefork -O fair -c 4
Solución de Problemas
Superset no arranca con Docker:
# Verificar logs de todos los servicios
docker compose -f docker-compose-non-dev.yml logs
# Reiniciar solo el servicio de Superset
docker compose -f docker-compose-non-dev.yml restart superset
Error "CSRF token missing":
# Añadir en superset_config.py
WTF_CSRF_ENABLED = True
WTF_CSRF_EXEMPT_LIST = []
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365
Consultas que expiran:
# Aumentar el timeout en superset_config.py
SQLLAB_ASYNC_TIME_LIMIT_SEC = 600
SQLLAB_TIMEOUT = 600
No se ven las tablas de una base de datos:
# Forzar sincronización del esquema desde la interfaz
# Editar la conexión → Configuración avanzada → Sincronizar metadatos de tablas
# O desde la terminal:
superset sync_db --database-name "Nombre de tu DB"
Problema de memoria en consultas grandes:
# Limitar filas en resultados
ROW_LIMIT = 10000
SQL_MAX_ROW = 100000
Conclusión
Apache Superset es una solución de visualización de datos robusta y extensible que rivaliza con herramientas comerciales como Tableau o Power BI. La instalación con Docker simplifica enormemente el despliegue, mientras que la configuración de caché con Redis garantiza un rendimiento óptimo en entornos con múltiples usuarios. Con los roles y permisos adecuados, puedes democratizar el acceso a los datos en tu organización de forma segura y controlada.


