1. 基础配置
SECRET_KEY = 'your-secret-key-here'
AUTH_TYPE = AUTH_DB
SQLALCHEMY_DATABASE_URI = 'postgresql://username:password@localhost/superset'
SQLALCHEMY_TRACK_MODIFICATIONS = False
ENABLE_PROXY_HEADERS = True
ENABLE_CORS = True
CORS_OPTIONS = {'supports_credentials': True,'allow_headers': ['*'],'resources': ['*'],'origins': ['http://localhost:8080']
}
2. 元数据数据库配置
DATABASE_DIALECTS = {'postgresql': 'psycopg2','mysql': 'mysqlclient','presto': 'pyhive','hive': 'pyhive','oracle': 'cx_oracle'
}
SQLALCHEMY_POOL_SIZE = 5
SQLALCHEMY_MAX_OVERFLOW = 10
SQLALCHEMY_POOL_TIMEOUT = 30
SQLALCHEMY_POOL_RECYCLE = 3600
3. 缓存配置
CACHE_CONFIG = {'CACHE_TYPE': 'RedisCache','CACHE_DEFAULT_TIMEOUT': 300,'CACHE_KEY_PREFIX': 'superset_','CACHE_REDIS_HOST': 'localhost','CACHE_REDIS_PORT': 6379,'CACHE_REDIS_DB': 0,'CACHE_REDIS_URL': 'redis://localhost:6379/0'
}
DATA_CACHE_CONFIG = {'CACHE_TYPE': 'RedisCache','CACHE_DEFAULT_TIMEOUT': 300,'CACHE_KEY_PREFIX': 'data_','CACHE_REDIS_URL': 'redis://localhost:6379/1'
}
FILTER_STATE_CACHE_CONFIG = {'CACHE_TYPE': 'RedisCache', 'CACHE_DEFAULT_TIMEOUT': 86400,'CACHE_KEY_PREFIX': 'filter_','CACHE_REDIS_URL': 'redis://localhost:6379/2'
}
EXPLORE_FORM_DATA_CACHE_CONFIG = {'CACHE_TYPE': 'RedisCache','CACHE_DEFAULT_TIMEOUT': 86400,'CACHE_KEY_PREFIX': 'explore_','CACHE_REDIS_URL': 'redis://localhost:6379/3'
}
4. 功能特性开关
FEATURE_FLAGS = {"DASHBOARD_CACHE": True, "DASHBOARD_RBAC": True, "DASHBOARD_NATIVE_FILTERS": True, "DASHBOARD_CROSS_FILTERS": True, "ENABLE_TEMPLATE_PROCESSING": True, "ENABLE_EXPLORE_JSON_CSRF_PROTECTION": True, "ENABLE_ADVANCED_DATA_TYPES": True, "ALERT_REPORTS": True, "ROW_LEVEL_SECURITY": True, "ALLOW_FULL_CSV_EXPORT": True, "ESCAPE_MARKDOWN_HTML": True, "DISPLAY_MARKDOWN_HTML": True, "VERSIONED_EXPORT": True, "PRESTO_EXPAND_DATA": False, "GENERIC_CHART_AXES": True,
}
5. 安全配置
AUTH_ROLE_ADMIN = 'Admin'
AUTH_ROLE_PUBLIC = 'Public'
ROW_LEVEL_SECURITY = True
WTF_CSRF_ENABLED = True
WTF_CSRF_TIME_LIMIT = 3600
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SECURE = True
PERMANENT_SESSION_LIFETIME = 86400
6. 邮件配置
ENABLE_EMAIL = True
EMAIL_NOTIFICATIONS = TrueSMTP_HOST = 'smtp.gmail.com'
SMTP_STARTTLS = True
SMTP_SSL = False
SMTP_USER = 'your-email@gmail.com'
SMTP_PORT = 587
SMTP_PASSWORD = 'your-password'
SMTP_MAIL_FROM = 'your-email@gmail.com'
ALERT_REPORTS_CRON_TIME = '0 * * * *'
7. 数据库连接配置
PRE_CONFIGURED_DATABASES = {'production_pg': {'sqlalchemy_uri': 'postgresql://user:pass@localhost/prod_db','display_name': '生产PostgreSQL'},'analytics_mysql': {'sqlalchemy_uri': 'mysql://user:pass@localhost/analytics','display_name': '分析MySQL'}
}
QUERY_TIMEOUT = 600
SQLLAB_QUERY_COST_ESTIMATE_TIMEOUT = 300
SQLLAB_VALIDATION_TIMEOUT = 300
SUPERSET_WEBSERVER_TIMEOUT = 300
8. SQL Lab 配置
SQLLAB_CTAS_NO_LIMIT = True
SQLLAB_BACKEND_PERSISTENCE = True
SQLLAB_ASYNC_TIME_LIMIT_SEC = 300
DISPLAY_MAX_ROW = 100000
SQL_MAX_ROW = 100000
SQLLAB_LIMIT = 1000
DISABLE_SQL_VALIDATION = False
SCHEDULED_QUERIES = True
9. 国际化配置
BABEL_DEFAULT_LOCALE = 'zh'
LANGUAGES = {'en': {'flag': 'us', 'name': 'English'},'zh': {'flag': 'cn', 'name': '中文'},
}
DEFAULT_TIMEZONE = 'Asia/Shanghai'
ENABLE_TIMEZONE = True
10. 文件上传配置
UPLOAD_FOLDER = '/path/to/upload/folder'
ALLOWED_EXTENSIONS = {'csv', 'xlsx', 'json'}
MAX_UPLOAD_SIZE = 50 * 1024 * 1024
CSV_TO_HIVE_UPLOAD_DIRECTORY = '/path/to/hive/upload'
CSV_TO_HIVE_UPLOAD_ALLOWED_DB = ['hive_db']
11. 性能优化配置
SUPERSET_CACHE_TIMEOUT = 300
DASHBOARD_CACHE_TIMEOUT = 300
CHART_CACHE_TIMEOUT = 300
SUPERSET_WORKERS = 4
QUERY_PARALLELISM = 4
12. 监控和日志配置
LOG_LEVEL = 'INFO'
LOG_FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
LOG_STDOUT = False
ENABLE_FLASK_PROFILER = False
STATS_LOGGER = 'superset.stats_logger'
ENABLE_TELEMETRY = False
13. 自定义配置
APP_ICON = '/static/assets/images/superset-logo.png'
APP_ICON_WIDTH = 126
FAVICONS = [{'href': '/static/assets/images/favicon.png'}]
CUSTOM_TEMPLATES = '/path/to/custom/templates'
CUSTOM_SECURITY_MANAGER = 'path.to.CustomSecurityManager'
14. 完整配置示例
import os
SECRET_KEY = 'your-super-secret-key-change-this'
AUTH_TYPE = AUTH_DB
SQLALCHEMY_DATABASE_URI = 'postgresql://superset:password@localhost/superset'
SQLALCHEMY_TRACK_MODIFICATIONS = False
CACHE_CONFIG = {'CACHE_TYPE': 'RedisCache','CACHE_DEFAULT_TIMEOUT': 300,'CACHE_KEY_PREFIX': 'superset_','CACHE_REDIS_URL': 'redis://localhost:6379/0'
}DATA_CACHE_CONFIG = {'CACHE_TYPE': 'RedisCache','CACHE_DEFAULT_TIMEOUT': 300,'CACHE_KEY_PREFIX': 'data_', 'CACHE_REDIS_URL': 'redis://localhost:6379/1'
}
FEATURE_FLAGS = {"ENABLE_TEMPLATE_PROCESSING": True,"DASHBOARD_NATIVE_FILTERS": True,"DASHBOARD_CROSS_FILTERS": True,"ROW_LEVEL_SECURITY": True,"ALERT_REPORTS": True,
}
BABEL_DEFAULT_LOCALE = 'zh'
LANGUAGES = {'en': {'flag': 'us', 'name': 'English'},'zh': {'flag': 'cn', 'name': '中文'},
}
DEFAULT_TIMEZONE = 'Asia/Shanghai'
ENABLE_EMAIL = True
SMTP_HOST = 'smtp.gmail.com'
SMTP_USER = 'your-email@gmail.com'
SMTP_PORT = 587
SMTP_PASSWORD = 'your-password'
SMTP_MAIL_FROM = 'your-email@gmail.com'
QUERY_TIMEOUT = 600
SQLLAB_TIMEOUT = 300
UPLOAD_FOLDER = '/tmp/superset_uploads'
ALLOWED_EXTENSIONS = {'csv', 'xlsx', 'json'}
MAX_UPLOAD_SIZE = 50 * 1024 * 1024
重要说明
- 生产环境必须修改
SECRET_KEY - 根据数据库类型 安装对应的驱动
- 缓存配置 对性能至关重要
- 功能开关 可以根据需求启用/禁用
- 定期备份 元数据数据库