{ "all_settings": [ { "key": "STATS_LOGGER", "title": "Stats Logger", "description": "Realtime stats logger, a StatsD implementation exists", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__STATS_LOGGER", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "EVENT_LOGGER", "title": "Event Logger", "description": "By default will log events to the metadata database with `DBEventLogger` Note that you can use `StdOutEventLogger` for debugging Note that you can write your own event logger by extending `AbstractEventLogger` https://github.com/apache/superset/blob/master/superset/utils/log.py", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__EVENT_LOGGER", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "SUPERSET_LOG_VIEW", "title": "Superset Log View", "description": "", "type": "boolean", "category": "logging", "default": true, "env_var": "SUPERSET__SUPERSET_LOG_VIEW", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "SUPERSET_SECURITY_VIEW_MENU", "title": "Superset Security View Menu", "description": "This config is used to enable/disable the folowing security menu items: List Users, List Roles, List Groups", "type": "boolean", "category": "security", "default": true, "env_var": "SUPERSET__SUPERSET_SECURITY_VIEW_MENU", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "BASE_DIR", "title": "Base Dir", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__BASE_DIR", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "VERSION_INFO_FILE", "title": "Version Info File", "description": "--------------------------------------------------------- Superset specific config ---------------------------------------------------------", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__VERSION_INFO_FILE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "PACKAGE_JSON_FILE", "title": "Package Json File", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__PACKAGE_JSON_FILE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "FAVICONS", "title": "Favicons", "description": "\"href\":path/to/image.png\", \"sizes\": \"16x16\", \"type\": \"image/png\" \"rel\": \"icon\" },", "type": "array", "category": "general", "default": [ { "href": "/static/assets/images/favicon.png" } ], "env_var": "SUPERSET__FAVICONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALEMBIC_SKIP_LOG_CONFIG", "title": "Alembic Skip Log Config", "description": "If True, we will skip the call to load the logger config found in alembic.init", "type": "boolean", "category": "logging", "default": false, "env_var": "SUPERSET__ALEMBIC_SKIP_LOG_CONFIG", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "VERSION_STRING", "title": "Version String", "description": "version_info.json file may or may not be available, as it is generated on install via setup.py. In the event that we're actually running Superset, we will have already installed, therefore it WILL exist. When unit tests are running, however, it WILL NOT exist, so we fall back on reading package.json", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__VERSION_STRING", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "VERSION_SHA_LENGTH", "title": "Version Sha Length", "description": "", "type": "integer", "category": "general", "default": 8, "env_var": "SUPERSET__VERSION_SHA_LENGTH", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "VERSION_SHA", "title": "Version Sha", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__VERSION_SHA", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BUILD_NUMBER", "title": "Build Number", "description": "Build number is shown in the About section if available. This can be replaced at build time to expose build information.", "type": "null", "category": "ui", "default": null, "env_var": "SUPERSET__BUILD_NUMBER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEFAULT_VIZ_TYPE", "title": "Default Viz Type", "description": "default viz used in chart explorer & SQL Lab explore", "type": "string", "category": "general", "default": "table", "env_var": "SUPERSET__DEFAULT_VIZ_TYPE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ROW_LIMIT", "title": "Row Limit", "description": "default row limit when requesting chart data", "type": "integer", "category": "performance", "default": 50000, "env_var": "SUPERSET__ROW_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SAMPLES_ROW_LIMIT", "title": "Samples Row Limit", "description": "default row limit when requesting samples from datasource in explore view", "type": "integer", "category": "performance", "default": 1000, "env_var": "SUPERSET__SAMPLES_ROW_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "NATIVE_FILTER_DEFAULT_ROW_LIMIT", "title": "Native Filter Default Row Limit", "description": "default row limit for native filters", "type": "integer", "category": "performance", "default": 1000, "env_var": "SUPERSET__NATIVE_FILTER_DEFAULT_ROW_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "FILTER_SELECT_ROW_LIMIT", "title": "Filter Select Row Limit", "description": "max rows retrieved by filter select auto complete", "type": "integer", "category": "performance", "default": 10000, "env_var": "SUPERSET__FILTER_SELECT_ROW_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "DEFAULT_TIME_FILTER", "title": "Default Time Filter", "description": "default time filter in explore values may be \"Last day\", \"Last week\", \" : now\", etc.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__DEFAULT_TIME_FILTER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SUPERSET_WEBSERVER_TIMEOUT", "title": "Superset Webserver Timeout", "description": "This is an important setting, and should be lower than your [load balancer / proxy / envoy / kong / ...] timeout settings. You should also make sure to configure your WSGI server (gunicorn, nginx, apache, ...) timeout setting to be <= to this setting", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SUPERSET_WEBSERVER_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SUPERSET_DASHBOARD_PERIODICAL_REFRESH_LIMIT", "title": "Superset Dashboard Periodical Refresh Limit", "description": "this 2 settings are used by dashboard period force refresh feature When user choose auto force refresh frequency < SUPERSET_DASHBOARD_PERIODICAL_REFRESH_LIMIT they will see warning message in the Refresh Interval Modal. please check PR #9886", "type": "integer", "category": "performance", "default": 0, "env_var": "SUPERSET__SUPERSET_DASHBOARD_PERIODICAL_REFRESH_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SUPERSET_DASHBOARD_PERIODICAL_REFRESH_WARNING_MESSAGE", "title": "Superset Dashboard Periodical Refresh Warning Message", "description": "", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__SUPERSET_DASHBOARD_PERIODICAL_REFRESH_WARNING_MESSAGE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SUPERSET_DASHBOARD_POSITION_DATA_LIMIT", "title": "Superset Dashboard Position Data Limit", "description": "", "type": "integer", "category": "performance", "default": 65535, "env_var": "SUPERSET__SUPERSET_DASHBOARD_POSITION_DATA_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "CUSTOM_SECURITY_MANAGER", "title": "Custom Security Manager", "description": "", "type": "null", "category": "security", "default": null, "env_var": "SUPERSET__CUSTOM_SECURITY_MANAGER", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SQLALCHEMY_TRACK_MODIFICATIONS", "title": "Sqlalchemy Track Modifications", "description": "", "type": "boolean", "category": "database", "default": false, "env_var": "SUPERSET__SQLALCHEMY_TRACK_MODIFICATIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SECRET_KEY", "title": "Secret Key", "description": "Your App secret key. Make sure you override it on superset_config.py or use `SUPERSET_SECRET_KEY` environment variable. Use a strong complex alphanumeric string and use a tool to help you generate a sufficiently random sequence, ex: openssl rand -base64 42\"", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__SECRET_KEY", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SQLALCHEMY_DATABASE_URI", "title": "Sqlalchemy Database Uri", "description": "The SQLAlchemy connection string.", "type": "string", "category": "database", "default": "", "env_var": "SUPERSET__SQLALCHEMY_DATABASE_URI", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SQLALCHEMY_ENGINE_OPTIONS", "title": "Sqlalchemy Engine Options", "description": "that may be specific to the database engine you are using. Note that you can use this to set the isolation level of your database, as in `SQLALCHEMY_ENGINE_OPTIONS = {\"isolation_level\": \"READ COMMITTED\"}` Also note that we recommend READ COMMITTED for regular operation. Find out more here https://flask-sqlalchemy.palletsprojects.com/en/3.1.x/config/", "type": "object", "category": "database", "default": {}, "env_var": "SUPERSET__SQLALCHEMY_ENGINE_OPTIONS", "nested_example": "SUPERSET__SQLALCHEMY_ENGINE_OPTIONS__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "SQLALCHEMY_CUSTOM_PASSWORD_STORE", "title": "Sqlalchemy Custom Password Store", "description": "example: def lookup_password(url): return 'secret' SQLALCHEMY_CUSTOM_PASSWORD_STORE = lookup_password", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__SQLALCHEMY_CUSTOM_PASSWORD_STORE", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SQLALCHEMY_ENCRYPTED_FIELD_TYPE_ADAPTER", "title": "Sqlalchemy Encrypted Field Type Adapter", "description": ") raise Exception(\"Missing app_config kwarg\") SQLALCHEMY_ENCRYPTED_FIELD_TYPE_ADAPTER = AesGcmEncryptedAdapter", "type": "string", "category": "database", "default": "", "env_var": "SUPERSET__SQLALCHEMY_ENCRYPTED_FIELD_TYPE_ADAPTER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "QUERY_SEARCH_LIMIT", "title": "Query Search Limit", "description": "The limit of queries fetched for query search", "type": "integer", "category": "performance", "default": 1000, "env_var": "SUPERSET__QUERY_SEARCH_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "WTF_CSRF_ENABLED", "title": "Wtf Csrf Enabled", "description": "Flask-WTF flag for CSRF", "type": "boolean", "category": "features", "default": true, "env_var": "SUPERSET__WTF_CSRF_ENABLED", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "WTF_CSRF_EXEMPT_LIST", "title": "Wtf Csrf Exempt List", "description": "Add endpoints that need to be exempt from CSRF protection", "type": "array", "category": "general", "default": [ "superset.views.core.log", "superset.views.core.explore_json", "superset.charts.data.api.data", "superset.dashboards.api.cache_dashboard_screenshot" ], "env_var": "SUPERSET__WTF_CSRF_EXEMPT_LIST", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEBUG", "title": "Debug", "description": "Whether to run the web server in debug mode or not", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__DEBUG", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "FLASK_USE_RELOAD", "title": "Flask Use Reload", "description": "", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__FLASK_USE_RELOAD", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "PROFILING", "title": "Profiling", "description": "Enable profiling of Python calls. Turn this on and append ``?_instrument=1`` to the page to see the call stack.", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__PROFILING", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SHOW_STACKTRACE", "title": "Show Stacktrace", "description": "Superset allows server-side python stacktraces to be surfaced to the user when this feature is on. This may have security implications and it's more secure to turn it off in production settings.", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__SHOW_STACKTRACE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ENABLE_PROXY_FIX", "title": "Enable Proxy Fix", "description": "Use all X-Forwarded headers when ENABLE_PROXY_FIX is True. When proxying to a different port, set \"x_port\" to 0 to avoid downstream issues.", "type": "boolean", "category": "features", "default": false, "env_var": "SUPERSET__ENABLE_PROXY_FIX", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "PROXY_FIX_CONFIG", "title": "Proxy Fix Config", "description": "", "type": "object", "category": "general", "default": { "x_for": 1, "x_proto": 1, "x_host": 1, "x_port": 1, "x_prefix": 1 }, "env_var": "SUPERSET__PROXY_FIX_CONFIG", "nested_example": "SUPERSET__PROXY_FIX_CONFIG__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "RATELIMIT_ENABLED", "title": "Ratelimit Enabled", "description": "FAB Rate limiting: this is a security feature for preventing DDOS attacks. The feature is on by default to make Superset secure by default, but you should fine tune the limits to your needs. You can read more about the different parameters here: https://flask-limiter.readthedocs.io/en/stable/configuration.html", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__RATELIMIT_ENABLED", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "RATELIMIT_APPLICATION", "title": "Ratelimit Application", "description": "", "type": "string", "category": "performance", "default": "50 per second", "env_var": "SUPERSET__RATELIMIT_APPLICATION", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "AUTH_RATE_LIMITED", "title": "Auth Rate Limited", "description": "", "type": "boolean", "category": "performance", "default": true, "env_var": "SUPERSET__AUTH_RATE_LIMITED", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "AUTH_RATE_LIMIT", "title": "Auth Rate Limit", "description": "", "type": "string", "category": "performance", "default": "5 per second", "env_var": "SUPERSET__AUTH_RATE_LIMIT", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "APP_NAME", "title": "App Name", "description": "------------------------------ GLOBALS FOR APP Builder ------------------------------ Uncomment to setup Your App name", "type": "string", "category": "general", "default": "Superset", "env_var": "SUPERSET__APP_NAME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "APP_ICON", "title": "App Icon", "description": "Specify the App icon", "type": "string", "category": "general", "default": "/static/assets/images/superset-logo-horiz.png", "env_var": "SUPERSET__APP_ICON", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "LOGO_TARGET_PATH", "title": "Logo Target Path", "description": "Specify where clicking the logo would take the user' Default value of None will take you to '/superset/welcome' You can also specify a relative URL e.g. '/superset/welcome' or '/dashboards/list' or you can specify a full URL e.g. 'https://foo.bar'", "type": "null", "category": "logging", "default": null, "env_var": "SUPERSET__LOGO_TARGET_PATH", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "LOGO_TOOLTIP", "title": "Logo Tooltip", "description": "Specify tooltip that should appear when hovering over the App Icon/Logo", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__LOGO_TOOLTIP", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "FAB_API_SWAGGER_UI", "title": "Fab Api Swagger Ui", "description": "Enables SWAGGER UI for superset openapi spec ex: http://localhost:8080/swagger/v1", "type": "boolean", "category": "ui", "default": true, "env_var": "SUPERSET__FAB_API_SWAGGER_UI", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "AUTH_TYPE", "title": "Auth Type", "description": "The authentication type AUTH_OID : Is for OpenID AUTH_DB : Is for database (username/password) AUTH_LDAP : Is for LDAP AUTH_REMOTE_USER : Is for using REMOTE_USER from web server", "type": "string", "category": "security", "default": "", "env_var": "SUPERSET__AUTH_TYPE", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "BABEL_DEFAULT_LOCALE", "title": "Babel Default Locale", "description": "--------------------------------------------------- Babel config for translations --------------------------------------------------- Setup default language", "type": "string", "category": "general", "default": "en", "env_var": "SUPERSET__BABEL_DEFAULT_LOCALE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BABEL_DEFAULT_FOLDER", "title": "Babel Default Folder", "description": "Your application default translation path", "type": "string", "category": "general", "default": "superset/translations", "env_var": "SUPERSET__BABEL_DEFAULT_FOLDER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "LANGUAGES", "title": "Languages", "description": "Turning off i18n by default as translation in most languages are incomplete and not well maintained.", "type": "object", "category": "general", "default": {}, "env_var": "SUPERSET__LANGUAGES", "nested_example": "SUPERSET__LANGUAGES__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "CURRENCIES", "title": "Currencies", "description": "", "type": "array", "category": "general", "default": [ "USD", "EUR", "GBP", "INR", "MXN", "JPY", "CNY" ], "env_var": "SUPERSET__CURRENCIES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SSH_TUNNEL_MANAGER_CLASS", "title": "Ssh Tunnel Manager Class", "description": "-------------+ | +----------+ | FIREWALL (only port 22 is open) ----------------------------------------------------------------------", "type": "string", "category": "general", "default": "superset.extensions.ssh.SSHManager", "env_var": "SUPERSET__SSH_TUNNEL_MANAGER_CLASS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SSH_TUNNEL_LOCAL_BIND_ADDRESS", "title": "Ssh Tunnel Local Bind Address", "description": "", "type": "string", "category": "general", "default": "127.0.0.1", "env_var": "SUPERSET__SSH_TUNNEL_LOCAL_BIND_ADDRESS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SSH_TUNNEL_TIMEOUT_SEC", "title": "Ssh Tunnel Timeout Sec", "description": ": Timeout (seconds) for tunnel connection (open_channel timeout)", "type": "number", "category": "performance", "default": 10.0, "env_var": "SUPERSET__SSH_TUNNEL_TIMEOUT_SEC", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SSH_TUNNEL_PACKET_TIMEOUT_SEC", "title": "Ssh Tunnel Packet Timeout Sec", "description": ": Timeout (seconds) for transport socket (``socket.settimeout``)", "type": "number", "category": "performance", "default": 1.0, "env_var": "SUPERSET__SSH_TUNNEL_PACKET_TIMEOUT_SEC", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "CACHE_WARMUP_EXECUTORS", "title": "Cache Warmup Executors", "description": "a fixed user (admin in this example), use the following configuration: from superset.tasks.types import ExecutorType, FixedExecutor CACHE_WARMUP_EXECUTORS = [ExecutorType.OWNER, FixedExecutor(\"admin\")]", "type": "array", "category": "performance", "default": [ "" ], "env_var": "SUPERSET__CACHE_WARMUP_EXECUTORS", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "THUMBNAIL_EXECUTORS", "title": "Thumbnail Executors", "description": "configuration: from superset.tasks.types import ExecutorType, FixedExecutor THUMBNAIL_EXECUTORS = [FixedExecutor(\"admin\")]", "type": "array", "category": "general", "default": [ "" ], "env_var": "SUPERSET__THUMBNAIL_EXECUTORS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "THUMBNAIL_ERROR_CACHE_TTL", "title": "Thumbnail Error Cache Ttl", "description": "", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__THUMBNAIL_ERROR_CACHE_TTL", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SCREENSHOT_LOCATE_WAIT", "title": "Screenshot Locate Wait", "description": "Time before selenium times out after trying to locate an element on the page and wait for that element to load for a screenshot.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__SCREENSHOT_LOCATE_WAIT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_LOAD_WAIT", "title": "Screenshot Load Wait", "description": "Time before selenium times out after waiting for all DOM class elements named \"loading\" are gone.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__SCREENSHOT_LOAD_WAIT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_SELENIUM_RETRIES", "title": "Screenshot Selenium Retries", "description": "Selenium destroy retries", "type": "integer", "category": "general", "default": 5, "env_var": "SUPERSET__SCREENSHOT_SELENIUM_RETRIES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_SELENIUM_HEADSTART", "title": "Screenshot Selenium Headstart", "description": "Give selenium an headstart, in seconds", "type": "integer", "category": "general", "default": 3, "env_var": "SUPERSET__SCREENSHOT_SELENIUM_HEADSTART", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_SELENIUM_ANIMATION_WAIT", "title": "Screenshot Selenium Animation Wait", "description": "Wait for the chart animation, in seconds", "type": "integer", "category": "general", "default": 5, "env_var": "SUPERSET__SCREENSHOT_SELENIUM_ANIMATION_WAIT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_REPLACE_UNEXPECTED_ERRORS", "title": "Screenshot Replace Unexpected Errors", "description": "Replace unexpected errors in screenshots with real error messages", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__SCREENSHOT_REPLACE_UNEXPECTED_ERRORS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_WAIT_FOR_ERROR_MODAL_VISIBLE", "title": "Screenshot Wait For Error Modal Visible", "description": "Max time to wait for error message modal to show up, in seconds", "type": "integer", "category": "general", "default": 5, "env_var": "SUPERSET__SCREENSHOT_WAIT_FOR_ERROR_MODAL_VISIBLE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_WAIT_FOR_ERROR_MODAL_INVISIBLE", "title": "Screenshot Wait For Error Modal Invisible", "description": "Max time to wait for error message modal to close, in seconds", "type": "integer", "category": "general", "default": 5, "env_var": "SUPERSET__SCREENSHOT_WAIT_FOR_ERROR_MODAL_INVISIBLE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_PLAYWRIGHT_WAIT_EVENT", "title": "Screenshot Playwright Wait Event", "description": "Event that Playwright waits for when loading a new page Possible values: \"load\", \"commit\", \"domcontentloaded\", \"networkidle\" Docs: https://playwright.dev/python/docs/api/class-page#page-goto-option-wait-until", "type": "string", "category": "general", "default": "domcontentloaded", "env_var": "SUPERSET__SCREENSHOT_PLAYWRIGHT_WAIT_EVENT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_PLAYWRIGHT_DEFAULT_TIMEOUT", "title": "Screenshot Playwright Default Timeout", "description": "Default timeout for Playwright browser context for all operations", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SCREENSHOT_PLAYWRIGHT_DEFAULT_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "UPLOAD_FOLDER", "title": "Upload Folder", "description": "--------------------------------------------------- Image and file configuration --------------------------------------------------- The file upload folder, when using models with files", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__UPLOAD_FOLDER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "UPLOAD_CHUNK_SIZE", "title": "Upload Chunk Size", "description": "", "type": "integer", "category": "general", "default": 4096, "env_var": "SUPERSET__UPLOAD_CHUNK_SIZE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CACHE_DEFAULT_TIMEOUT", "title": "Cache Default Timeout", "description": "--------------------------------------------------- Cache configuration --------------------------------------------------- Default cache timeout, applies to all cache backends unless specifically overridden in each cache config.", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__CACHE_DEFAULT_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "STORE_CACHE_KEYS_IN_METADATA_DB", "title": "Store Cache Keys In Metadata Db", "description": "store cache keys by datasource UID (via CacheKey) for custom processing/invalidation", "type": "boolean", "category": "performance", "default": false, "env_var": "SUPERSET__STORE_CACHE_KEYS_IN_METADATA_DB", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "ENABLE_CORS", "title": "Enable Cors", "description": "CORS Options NOTE: enabling this requires installing the cors-related python dependencies `pip install .[cors]` or `pip install apache_superset[cors]`, depending", "type": "boolean", "category": "features", "default": false, "env_var": "SUPERSET__ENABLE_CORS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "HTML_SANITIZATION", "title": "Html Sanitization", "description": "Sanitizes the HTML content used in markdowns to allow its rendering in a safe manner. Disabling this option is not recommended for security reasons. If you wish to allow valid safe elements that are not included in the default sanitization schema, use the HTML_SANITIZATION_SCHEMA_EXTENSIONS configuration.", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__HTML_SANITIZATION", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SUPERSET_WEBSERVER_DOMAINS", "title": "Superset Webserver Domains", "description": "than 6 slices in dashboard, a lot of time fetch requests are queued up and wait for next available socket. PR #5039 added domain sharding for Superset, and this feature can be enabled by configuration only (by default Superset doesn't allow cross-domain request). This feature is deprecated, annd will be removed in the next major version of Superset, as enabling HTTP2 will serve the same goals.", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__SUPERSET_WEBSERVER_DOMAINS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "EXCEL_EXTENSIONS", "title": "Excel Extensions", "description": "Allowed format types for upload on Database view", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__EXCEL_EXTENSIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CSV_EXTENSIONS", "title": "Csv Extensions", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__CSV_EXTENSIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "COLUMNAR_EXTENSIONS", "title": "Columnar Extensions", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__COLUMNAR_EXTENSIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALLOWED_EXTENSIONS", "title": "Allowed Extensions", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ALLOWED_EXTENSIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CSV_EXPORT", "title": "Csv Export", "description": "CSV Options: key/value pairs that will be passed as argument to DataFrame.to_csv method. note: index option should not be overridden", "type": "object", "category": "general", "default": { "encoding": "utf-8" }, "env_var": "SUPERSET__CSV_EXPORT", "nested_example": "SUPERSET__CSV_EXPORT__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "DEFAULT_MODULE_DS_MAP", "title": "Default Module Ds Map", "description": "-------------------------------------------------- Modules, datasources and middleware to be registered --------------------------------------------------", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__DEFAULT_MODULE_DS_MAP", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "LOGGING_CONFIGURATOR", "title": "Logging Configurator", "description": "1) https://docs.python-guide.org/writing/logging/ 2) https://docs.python.org/2/library/logging.config.html Default configurator will consume the LOG_* settings below", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__LOGGING_CONFIGURATOR", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "LOG_FORMAT", "title": "Log Format", "description": "Console Log Settings", "type": "string", "category": "logging", "default": "%(asctime)s:%(levelname)s:%(name)s:%(message)s", "env_var": "SUPERSET__LOG_FORMAT", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "LOG_LEVEL", "title": "Log Level", "description": "", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__LOG_LEVEL", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "ENABLE_TIME_ROTATE", "title": "Enable Time Rotate", "description": "--------------------------------------------------- Enable Time Rotate Log Handler --------------------------------------------------- LOG_LEVEL = DEBUG, INFO, WARNING, ERROR, CRITICAL", "type": "boolean", "category": "features", "default": false, "env_var": "SUPERSET__ENABLE_TIME_ROTATE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "TIME_ROTATE_LOG_LEVEL", "title": "Time Rotate Log Level", "description": "", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__TIME_ROTATE_LOG_LEVEL", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "FILENAME", "title": "Filename", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__FILENAME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ROLLOVER", "title": "Rollover", "description": "", "type": "string", "category": "general", "default": "midnight", "env_var": "SUPERSET__ROLLOVER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "INTERVAL", "title": "Interval", "description": "", "type": "integer", "category": "general", "default": 1, "env_var": "SUPERSET__INTERVAL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BACKUP_COUNT", "title": "Backup Count", "description": "", "type": "integer", "category": "general", "default": 30, "env_var": "SUPERSET__BACKUP_COUNT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "QUERY_LOGGER", "title": "Query Logger", "description": "client=None, security_manager=None, log_params=None, ): pass", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__QUERY_LOGGER", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "MAPBOX_API_KEY", "title": "Mapbox Api Key", "description": "Set this API key to enable Mapbox visualizations", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__MAPBOX_API_KEY", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SQL_MAX_ROW", "title": "Sql Max Row", "description": "Maximum number of rows returned for any analytical database query", "type": "integer", "category": "database", "default": 100000, "env_var": "SUPERSET__SQL_MAX_ROW", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "TABLE_VIZ_MAX_ROW_SERVER", "title": "Table Viz Max Row Server", "description": "Maximum number of rows for any query with Server Pagination in Table Viz type", "type": "integer", "category": "general", "default": 500000, "env_var": "SUPERSET__TABLE_VIZ_MAX_ROW_SERVER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DISPLAY_MAX_ROW", "title": "Display Max Row", "description": "Maximum number of rows displayed in SQL Lab UI Is set to avoid out of memory/localstorage issues in browsers. Does not affect exported CSVs", "type": "integer", "category": "general", "default": 10000, "env_var": "SUPERSET__DISPLAY_MAX_ROW", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEFAULT_SQLLAB_LIMIT", "title": "Default Sqllab Limit", "description": "Default row limit for SQL Lab queries. Is overridden by setting a new limit in the SQL Lab UI", "type": "integer", "category": "performance", "default": 1000, "env_var": "SUPERSET__DEFAULT_SQLLAB_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_SAVE_WARNING_MESSAGE", "title": "Sqllab Save Warning Message", "description": "Adds a warning message on sqllab save query and schedule query modals.", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__SQLLAB_SAVE_WARNING_MESSAGE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQLLAB_SCHEDULE_WARNING_MESSAGE", "title": "Sqllab Schedule Warning Message", "description": "", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__SQLLAB_SCHEDULE_WARNING_MESSAGE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQLLAB_PAYLOAD_MAX_MB", "title": "Sqllab Payload Max Mb", "description": "Max payload size (MB) for SQL Lab to prevent browser hangs with large results.", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__SQLLAB_PAYLOAD_MAX_MB", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DASHBOARD_AUTO_REFRESH_INTERVALS", "title": "Dashboard Auto Refresh Intervals", "description": "Dashboard auto refresh intervals", "type": "array", "category": "general", "default": [ [ 0, "Don't refresh" ], [ 10, "10 seconds" ], [ 30, "30 seconds" ], [ 60, "1 minute" ], [ 300, "5 minutes" ], [ 1800, "30 minutes" ], [ 3600, "1 hour" ], [ 21600, "6 hours" ], [ 43200, "12 hours" ], [ 86400, "24 hours" ] ], "env_var": "SUPERSET__DASHBOARD_AUTO_REFRESH_INTERVALS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CELERY_BEAT_SCHEDULER_EXPIRES", "title": "Celery Beat Scheduler Expires", "description": "This is used as a workaround for the alerts & reports scheduler task to get the time celery beat triggered it, see https://github.com/celery/celery/issues/6974 for details", "type": "string", "category": "async", "default": "", "env_var": "SUPERSET__CELERY_BEAT_SCHEDULER_EXPIRES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEFAULT_DB_ID", "title": "Default Db Id", "description": "The db id here results in selecting this one as a default in SQL Lab", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__DEFAULT_DB_ID", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQLLAB_TIMEOUT", "title": "Sqllab Timeout", "description": "Timeout duration for SQL Lab synchronous queries", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SQLLAB_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_VALIDATION_TIMEOUT", "title": "Sqllab Validation Timeout", "description": "Timeout duration for SQL Lab query validation", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SQLLAB_VALIDATION_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_DEFAULT_DBID", "title": "Sqllab Default Dbid", "description": "SQLLAB_DEFAULT_DBID", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__SQLLAB_DEFAULT_DBID", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQLLAB_ASYNC_TIME_LIMIT_SEC", "title": "Sqllab Async Time Limit Sec", "description": "The MAX duration a query can run for before being killed by celery.", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SQLLAB_ASYNC_TIME_LIMIT_SEC", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_QUERY_COST_ESTIMATE_TIMEOUT", "title": "Sqllab Query Cost Estimate Timeout", "description": "Some databases support running EXPLAIN queries that allow users to estimate query costs before they run. These EXPLAIN queries should have a small timeout.", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SQLLAB_QUERY_COST_ESTIMATE_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_QUERY_RESULT_TIMEOUT", "title": "Sqllab Query Result Timeout", "description": "Timeout duration for SQL Lab fetching query results by the resultsKey. 0 means no timeout.", "type": "integer", "category": "performance", "default": 0, "env_var": "SUPERSET__SQLLAB_QUERY_RESULT_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_CTAS_NO_LIMIT", "title": "Sqllab Ctas No Limit", "description": "Flag that controls if limit should be enforced on the CTA (create table as queries).", "type": "boolean", "category": "performance", "default": false, "env_var": "SUPERSET__SQLLAB_CTAS_NO_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "RESULTS_BACKEND_USE_MSGPACK", "title": "Results Backend Use Msgpack", "description": "Use PyArrow and MessagePack for async query results serialization, rather than JSON. This feature requires additional testing from the community before it is fully adopted, so this config option is provided in order to disable should breaking issues be discovered.", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__RESULTS_BACKEND_USE_MSGPACK", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CSV_TO_HIVE_UPLOAD_S3_BUCKET", "title": "Csv To Hive Upload S3 Bucket", "description": "The S3 bucket where you want to store your external hive tables created from CSV files. For example, 'companyname-superset'", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__CSV_TO_HIVE_UPLOAD_S3_BUCKET", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CSV_TO_HIVE_UPLOAD_DIRECTORY", "title": "Csv To Hive Upload Directory", "description": "The directory within the bucket specified above that will contain all the external tables", "type": "string", "category": "general", "default": "EXTERNAL_HIVE_TABLES/", "env_var": "SUPERSET__CSV_TO_HIVE_UPLOAD_DIRECTORY", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALLOWED_USER_CSV_SCHEMA_FUNC", "title": "Allowed User Csv Schema Func", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ALLOWED_USER_CSV_SCHEMA_FUNC", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CSV_DEFAULT_NA_NAMES", "title": "Csv Default Na Names", "description": "Values that should be treated as nulls for the csv uploads.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__CSV_DEFAULT_NA_NAMES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ROBOT_PERMISSION_ROLES", "title": "Robot Permission Roles", "description": "Roles that are controlled by the API / Superset and should not be changed by humans.", "type": "array", "category": "general", "default": [ "Public", "Gamma", "Alpha", "Admin", "sql_lab" ], "env_var": "SUPERSET__ROBOT_PERMISSION_ROLES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CONFIG_PATH_ENV_VAR", "title": "Config Path Env Var", "description": "", "type": "string", "category": "general", "default": "SUPERSET_CONFIG_PATH", "env_var": "SUPERSET__CONFIG_PATH_ENV_VAR", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "FLASK_APP_MUTATOR", "title": "Flask App Mutator", "description": "If a callable is specified, it will be called at app startup while passing a reference to the Flask app. This can be used to alter the Flask app in whatever way. example: FLASK_APP_MUTATOR = lambda x: x.before_request = f", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__FLASK_APP_MUTATOR", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_HOST", "title": "Smtp Host", "description": "smtp server configuration", "type": "string", "category": "email", "default": "localhost", "env_var": "SUPERSET__SMTP_HOST", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_STARTTLS", "title": "Smtp Starttls", "description": "", "type": "boolean", "category": "email", "default": true, "env_var": "SUPERSET__SMTP_STARTTLS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_SSL", "title": "Smtp Ssl", "description": "", "type": "boolean", "category": "email", "default": false, "env_var": "SUPERSET__SMTP_SSL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_USER", "title": "Smtp User", "description": "", "type": "string", "category": "email", "default": "superset", "env_var": "SUPERSET__SMTP_USER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_PORT", "title": "Smtp Port", "description": "", "type": "integer", "category": "email", "default": 25, "env_var": "SUPERSET__SMTP_PORT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_PASSWORD", "title": "Smtp Password", "description": "", "type": "string", "category": "email", "default": "superset", "env_var": "SUPERSET__SMTP_PASSWORD", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SMTP_MAIL_FROM", "title": "Smtp Mail From", "description": "", "type": "string", "category": "email", "default": "superset@superset.com", "env_var": "SUPERSET__SMTP_MAIL_FROM", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_SSL_SERVER_AUTH", "title": "Smtp Ssl Server Auth", "description": "If True creates a default SSL context with ssl.Purpose.CLIENT_AUTH using the default system root CA certificates.", "type": "boolean", "category": "security", "default": false, "env_var": "SUPERSET__SMTP_SSL_SERVER_AUTH", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "ENABLE_CHUNK_ENCODING", "title": "Enable Chunk Encoding", "description": "", "type": "boolean", "category": "features", "default": false, "env_var": "SUPERSET__ENABLE_CHUNK_ENCODING", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SILENCE_FAB", "title": "Silence Fab", "description": "Whether to bump the logging level to ERROR on the flask_appbuilder package Set to False if/when debugging FAB related issues like permission management", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__SILENCE_FAB", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "FAB_ADD_SECURITY_VIEWS", "title": "Fab Add Security Views", "description": "", "type": "boolean", "category": "security", "default": true, "env_var": "SUPERSET__FAB_ADD_SECURITY_VIEWS", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "FAB_ADD_SECURITY_API", "title": "Fab Add Security Api", "description": "", "type": "boolean", "category": "security", "default": true, "env_var": "SUPERSET__FAB_ADD_SECURITY_API", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "FAB_ADD_SECURITY_PERMISSION_VIEW", "title": "Fab Add Security Permission View", "description": "", "type": "boolean", "category": "security", "default": false, "env_var": "SUPERSET__FAB_ADD_SECURITY_PERMISSION_VIEW", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "FAB_ADD_SECURITY_VIEW_MENU_VIEW", "title": "Fab Add Security View Menu View", "description": "", "type": "boolean", "category": "security", "default": false, "env_var": "SUPERSET__FAB_ADD_SECURITY_VIEW_MENU_VIEW", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "FAB_ADD_SECURITY_PERMISSION_VIEWS_VIEW", "title": "Fab Add Security Permission Views View", "description": "", "type": "boolean", "category": "security", "default": false, "env_var": "SUPERSET__FAB_ADD_SECURITY_PERMISSION_VIEWS_VIEW", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "TROUBLESHOOTING_LINK", "title": "Troubleshooting Link", "description": "The link to a page containing common errors and their resolutions It will be appended at the bottom of sql_lab errors.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__TROUBLESHOOTING_LINK", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "WTF_CSRF_TIME_LIMIT", "title": "Wtf Csrf Time Limit", "description": "CSRF token timeout, set to None for a token that never expires", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__WTF_CSRF_TIME_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "PERMISSION_INSTRUCTIONS_LINK", "title": "Permission Instructions Link", "description": "This link should lead to a page with instructions on how to gain access to a Datasource. It will be placed at the bottom of permissions errors.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__PERMISSION_INSTRUCTIONS_LINK", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "TRACKING_URL_TRANSFORMER", "title": "Tracking Url Transformer", "description": "to your transformer function, e.g.: TRACKING_URL_TRANSFORMER = ( lambda url, query: url if is_fresh(query) else None ) pylint: disable-next=unnecessary-lambda-assignment", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__TRACKING_URL_TRANSFORMER", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "PRESTO_POLL_INTERVAL", "title": "Presto Poll Interval", "description": "Interval between consecutive polls when using Presto Engine See here: https://github.com/dropbox/PyHive/blob/8eb0aeab8ca300f3024655419b93dad926c1a351/pyhive/presto.py#L93 # noqa: E501", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__PRESTO_POLL_INTERVAL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DASHBOARD_TEMPLATE_ID", "title": "Dashboard Template Id", "description": "The id of a template dashboard that should be copied to every new user", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__DASHBOARD_TEMPLATE_ID", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ENGINE_CONTEXT_MANAGER", "title": "Engine Context Manager", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ENGINE_CONTEXT_MANAGER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DB_CONNECTION_MUTATOR", "title": "Db Connection Mutator", "description": "uri.username = user.email return uri, params Note that the returned uri and params are passed directly to sqlalchemy's as such `create_engine(url, **params)`", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__DB_CONNECTION_MUTATOR", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "MUTATE_AFTER_SPLIT", "title": "Mutate After Split", "description": "It allows for using the SQL_QUERY_MUTATOR function for more than comments Usage: If you want to apply a change to every statement to a given query, set MUTATE_AFTER_SPLIT = True # noqa: E501 An example use case is if data has role based access controls, and you want to apply a SET ROLE statement alongside every user query. Changing this variable maintains functionality for both the SQL_Lab and Charts.", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__MUTATE_AFTER_SPLIT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "MUTATE_ALERT_QUERY", "title": "Mutate Alert Query", "description": "Boolean config that determines if alert SQL queries should also be mutated or not.", "type": "boolean", "category": "database", "default": false, "env_var": "SUPERSET__MUTATE_ALERT_QUERY", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "MACHINE_AUTH_PROVIDER_CLASS", "title": "Machine Auth Provider Class", "description": "This auth provider is used by background (offline) tasks that need to access protected resources. Can be overridden by end users in order to support custom auth mechanisms", "type": "string", "category": "security", "default": "superset.utils.machine_auth.MachineAuthProvider", "env_var": "SUPERSET__MACHINE_AUTH_PROVIDER_CLASS", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "ALERT_REPORTS_CRON_WINDOW_SIZE", "title": "Alert Reports Cron Window Size", "description": "--------------------------------------------------- Alerts & Reports --------------------------------------------------- Used for Alerts/Reports (Feature flask ALERT_REPORTS) to set the size for the sliding cron window size, should be synced with the celery beat config minus 1 second", "type": "integer", "category": "general", "default": 59, "env_var": "SUPERSET__ALERT_REPORTS_CRON_WINDOW_SIZE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_WORKING_TIME_OUT_KILL", "title": "Alert Reports Working Time Out Kill", "description": "", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__ALERT_REPORTS_WORKING_TIME_OUT_KILL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_WORKING_TIME_OUT_LAG", "title": "Alert Reports Working Time Out Lag", "description": "if ALERT_REPORTS_WORKING_TIME_OUT_KILL is True, set a celery hard timeout Equal to working timeout + ALERT_REPORTS_WORKING_TIME_OUT_LAG", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ALERT_REPORTS_WORKING_TIME_OUT_LAG", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG", "title": "Alert Reports Working Soft Time Out Lag", "description": "if ALERT_REPORTS_WORKING_TIME_OUT_KILL is True, set a celery hard timeout Equal to working timeout + ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT", "title": "Alert Reports Default Working Timeout", "description": "Default values that user using when creating alert", "type": "integer", "category": "performance", "default": 3600, "env_var": "SUPERSET__ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "ALERT_REPORTS_DEFAULT_RETENTION", "title": "Alert Reports Default Retention", "description": "", "type": "integer", "category": "general", "default": 90, "env_var": "SUPERSET__ALERT_REPORTS_DEFAULT_RETENTION", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_DEFAULT_CRON_VALUE", "title": "Alert Reports Default Cron Value", "description": "", "type": "string", "category": "general", "default": "0 0 * * *", "env_var": "SUPERSET__ALERT_REPORTS_DEFAULT_CRON_VALUE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_NOTIFICATION_DRY_RUN", "title": "Alert Reports Notification Dry Run", "description": "If set to true no notification is sent, the worker will just log a message. Useful for debugging", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__ALERT_REPORTS_NOTIFICATION_DRY_RUN", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_QUERY_EXECUTION_MAX_TRIES", "title": "Alert Reports Query Execution Max Tries", "description": "Max tries to run queries to prevent false errors caused by transient errors being returned to users. Set to a value >1 to enable retries.", "type": "integer", "category": "database", "default": 1, "env_var": "SUPERSET__ALERT_REPORTS_QUERY_EXECUTION_MAX_TRIES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_MIN_CUSTOM_SCREENSHOT_WIDTH", "title": "Alert Reports Min Custom Screenshot Width", "description": "Custom width for screenshots", "type": "integer", "category": "general", "default": 600, "env_var": "SUPERSET__ALERT_REPORTS_MIN_CUSTOM_SCREENSHOT_WIDTH", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_MAX_CUSTOM_SCREENSHOT_WIDTH", "title": "Alert Reports Max Custom Screenshot Width", "description": "", "type": "integer", "category": "general", "default": 2400, "env_var": "SUPERSET__ALERT_REPORTS_MAX_CUSTOM_SCREENSHOT_WIDTH", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_MINIMUM_INTERVAL", "title": "Alert Minimum Interval", "description": "Set a minimum interval threshold between executions (for each Alert/Report) Value should be an integer i.e. int(timedelta(minutes=5).total_seconds()) You can also assign a function to the config that returns the expected integer", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ALERT_MINIMUM_INTERVAL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "REPORT_MINIMUM_INTERVAL", "title": "Report Minimum Interval", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__REPORT_MINIMUM_INTERVAL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "EMAIL_REPORTS_SUBJECT_PREFIX", "title": "Email Reports Subject Prefix", "description": "A custom prefix to use on all Alerts & Reports emails", "type": "string", "category": "email", "default": "[Report] ", "env_var": "SUPERSET__EMAIL_REPORTS_SUBJECT_PREFIX", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "EMAIL_REPORTS_CTA", "title": "Email Reports Cta", "description": "The text for call-to-action link in Alerts & Reports emails", "type": "string", "category": "email", "default": "Explore in Superset", "env_var": "SUPERSET__EMAIL_REPORTS_CTA", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SLACK_PROXY", "title": "Slack Proxy", "description": "", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__SLACK_PROXY", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SLACK_CACHE_TIMEOUT", "title": "Slack Cache Timeout", "description": "", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SLACK_CACHE_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "WEBDRIVER_TYPE", "title": "Webdriver Type", "description": "Requires: geckodriver and firefox installations Limitations: can be buggy at times chrome: Requires: headless chrome Limitations: unable to generate screenshots of elements", "type": "string", "category": "general", "default": "firefox", "env_var": "SUPERSET__WEBDRIVER_TYPE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "WEBDRIVER_WINDOW", "title": "Webdriver Window", "description": "Window size - this will impact the rendering of the data", "type": "object", "category": "general", "default": { "dashboard": "", "slice": "", "pixel_density": 1 }, "env_var": "SUPERSET__WEBDRIVER_WINDOW", "nested_example": "SUPERSET__WEBDRIVER_WINDOW__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "WEBDRIVER_AUTH_FUNC", "title": "Webdriver Auth Func", "description": "An optional override to the default auth hook used to provide auth to the offline webdriver (when using Selenium) or browser context (when using Playwright - see PLAYWRIGHT_REPORTS_AND_THUMBNAILS feature flag)", "type": "null", "category": "security", "default": null, "env_var": "SUPERSET__WEBDRIVER_AUTH_FUNC", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "WEBDRIVER_CONFIGURATION", "title": "Webdriver Configuration", "description": "Any config options to be passed as-is to the webdriver", "type": "object", "category": "general", "default": { "options": { "capabilities": {}, "preferences": {}, "binary_location": "" }, "service": { "log_output": "/dev/null", "service_args": [], "port": 0, "env": {} } }, "env_var": "SUPERSET__WEBDRIVER_CONFIGURATION", "nested_example": "SUPERSET__WEBDRIVER_CONFIGURATION__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "WEBDRIVER_OPTION_ARGS", "title": "Webdriver Option Args", "description": "Additional args to be passed as arguments to the config object Note: If using Chrome, you'll want to add the \"--marionette\" arg.", "type": "array", "category": "general", "default": [ "--headless" ], "env_var": "SUPERSET__WEBDRIVER_OPTION_ARGS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "WEBDRIVER_BASEURL", "title": "Webdriver Baseurl", "description": "The base URL to query for accessing the user interface", "type": "string", "category": "general", "default": "http://0.0.0.0:8080/", "env_var": "SUPERSET__WEBDRIVER_BASEURL", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "WEBDRIVER_BASEURL_USER_FRIENDLY", "title": "Webdriver Baseurl User Friendly", "description": "The base URL for the email report hyperlinks.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__WEBDRIVER_BASEURL_USER_FRIENDLY", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "EMAIL_PAGE_RENDER_WAIT", "title": "Email Page Render Wait", "description": "Time selenium will wait for the page to load and render for the email report.", "type": "string", "category": "email", "default": "", "env_var": "SUPERSET__EMAIL_PAGE_RENDER_WAIT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BUG_REPORT_URL", "title": "Bug Report Url", "description": "Send user to a link where they can report bugs", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__BUG_REPORT_URL", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "BUG_REPORT_TEXT", "title": "Bug Report Text", "description": "", "type": "string", "category": "general", "default": "Report a bug", "env_var": "SUPERSET__BUG_REPORT_TEXT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BUG_REPORT_ICON", "title": "Bug Report Icon", "description": "", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__BUG_REPORT_ICON", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DOCUMENTATION_URL", "title": "Documentation Url", "description": "Send user to a link where they can read more about Superset", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__DOCUMENTATION_URL", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "DOCUMENTATION_TEXT", "title": "Documentation Text", "description": "", "type": "string", "category": "general", "default": "Documentation", "env_var": "SUPERSET__DOCUMENTATION_TEXT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DOCUMENTATION_ICON", "title": "Documentation Icon", "description": "", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__DOCUMENTATION_ICON", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEFAULT_RELATIVE_START_TIME", "title": "Default Relative Start Time", "description": "'now' means it is relative to the query issue time If both start and end time is set to now, this will make the time filter a moving window. By only setting the end time to now, start time will be set to midnight, while end will be relative to the query issue time.", "type": "string", "category": "general", "default": "today", "env_var": "SUPERSET__DEFAULT_RELATIVE_START_TIME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEFAULT_RELATIVE_END_TIME", "title": "Default Relative End Time", "description": "", "type": "string", "category": "general", "default": "today", "env_var": "SUPERSET__DEFAULT_RELATIVE_END_TIME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQL_VALIDATORS_BY_ENGINE", "title": "Sql Validators By Engine", "description": "Configure which SQL validator to use for each engine", "type": "object", "category": "database", "default": { "presto": "PrestoDBSQLValidator", "postgresql": "PostgreSQLValidator" }, "env_var": "SUPERSET__SQL_VALIDATORS_BY_ENGINE", "nested_example": "SUPERSET__SQL_VALIDATORS_BY_ENGINE__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "TEST_DATABASE_CONNECTION_TIMEOUT", "title": "Test Database Connection Timeout", "description": "When adding a new database we try to connect to it. Depending on which parameters are incorrect this could take a couple minutes, until the SQLAlchemy driver pinging the database times out. Instead of relying on the driver timeout we can specify a shorter one here.", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__TEST_DATABASE_CONNECTION_TIMEOUT", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "DATABASE_OAUTH2_JWT_ALGORITHM", "title": "Database Oauth2 Jwt Algorithm", "description": "OAuth2 state is encoded in a JWT using the alogorithm below.", "type": "string", "category": "database", "default": "HS256", "env_var": "SUPERSET__DATABASE_OAUTH2_JWT_ALGORITHM", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "DATABASE_OAUTH2_TIMEOUT", "title": "Database Oauth2 Timeout", "description": "applications. In that case, the proxy can forward the request to the correct instance by looking at the `default_redirect_uri` attribute in the OAuth2 state object. DATABASE_OAUTH2_REDIRECT_URI = \"http://localhost:8088/api/v1/database/oauth2/\" Timeout when fetching access and refresh tokens.", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__DATABASE_OAUTH2_TIMEOUT", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "CONTENT_SECURITY_POLICY_WARNING", "title": "Content Security Policy Warning", "description": "Enable/disable CSP warning", "type": "boolean", "category": "security", "default": true, "env_var": "SUPERSET__CONTENT_SECURITY_POLICY_WARNING", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "TALISMAN_ENABLED", "title": "Talisman Enabled", "description": "", "type": "boolean", "category": "features", "default": false, "env_var": "SUPERSET__TALISMAN_ENABLED", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "TALISMAN_CONFIG", "title": "Talisman Config", "description": "If you want Talisman, how do you want it configured?? For more information on setting up Talisman, please refer to https://superset.apache.org/docs/configuration/networking-settings/#changing-flask-talisman-csp", "type": "object", "category": "general", "default": { "content_security_policy": { "base-uri": [ "'self'" ], "default-src": [ "'self'" ], "img-src": [ "'self'", "blob:", "data:", "https://apachesuperset.gateway.scarf.sh", "https://static.scarf.sh/", "ows.terrestris.de", "https://cdn.document360.io" ], "worker-src": [ "'self'", "blob:" ], "connect-src": [ "'self'", "https://api.mapbox.com", "https://events.mapbox.com" ], "object-src": "'none'", "style-src": [ "'self'", "'unsafe-inline'" ], "script-src": [ "'self'", "'strict-dynamic'" ] }, "content_security_policy_nonce_in": [ "script-src" ], "force_https": false, "session_cookie_secure": false }, "env_var": "SUPERSET__TALISMAN_CONFIG", "nested_example": "SUPERSET__TALISMAN_CONFIG__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "TALISMAN_DEV_CONFIG", "title": "Talisman Dev Config", "description": "React requires `eval` to work correctly in dev mode", "type": "object", "category": "general", "default": { "content_security_policy": { "base-uri": [ "'self'" ], "default-src": [ "'self'" ], "img-src": [ "'self'", "blob:", "data:", "https://apachesuperset.gateway.scarf.sh", "https://static.scarf.sh/", "https://cdn.brandfolder.io", "ows.terrestris.de", "https://cdn.document360.io" ], "worker-src": [ "'self'", "blob:" ], "connect-src": [ "'self'", "https://api.mapbox.com", "https://events.mapbox.com" ], "object-src": "'none'", "style-src": [ "'self'", "'unsafe-inline'" ], "script-src": [ "'self'", "'unsafe-inline'", "'unsafe-eval'" ] }, "content_security_policy_nonce_in": [ "script-src" ], "force_https": false, "session_cookie_secure": false }, "env_var": "SUPERSET__TALISMAN_DEV_CONFIG", "nested_example": "SUPERSET__TALISMAN_DEV_CONFIG__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "SESSION_COOKIE_HTTPONLY", "title": "Session Cookie Httponly", "description": "Flask session cookie options See https://flask.palletsprojects.com/en/1.1.x/security/#set-cookie-options for details", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__SESSION_COOKIE_HTTPONLY", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SESSION_COOKIE_SECURE", "title": "Session Cookie Secure", "description": "", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__SESSION_COOKIE_SECURE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SESSION_SERVER_SIDE", "title": "Session Server Side", "description": "Whether to use server side sessions from flask-session or Flask secure cookies", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__SESSION_SERVER_SIDE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SEND_FILE_MAX_AGE_DEFAULT", "title": "Send File Max Age Default", "description": "Other possible config options and backends: # https://flask-session.readthedocs.io/en/latest/config.html Cache static resources.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__SEND_FILE_MAX_AGE_DEFAULT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQLALCHEMY_EXAMPLES_URI", "title": "Sqlalchemy Examples Uri", "description": "URI to database storing the example data, points to SQLALCHEMY_DATABASE_URI by default if set to `None`", "type": "string", "category": "database", "default": "", "env_var": "SUPERSET__SQLALCHEMY_EXAMPLES_URI", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "STATIC_ASSETS_PREFIX", "title": "Static Assets Prefix", "description": "Optional prefix to be added to all static asset paths when rendering the UI. This is useful for hosting assets in an external CDN, for example", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__STATIC_ASSETS_PREFIX", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "PREVENT_UNSAFE_DB_CONNECTIONS", "title": "Prevent Unsafe Db Connections", "description": "Some sqlalchemy connection strings can open Superset to security risks. Typically these should not be allowed.", "type": "boolean", "category": "database", "default": true, "env_var": "SUPERSET__PREVENT_UNSAFE_DB_CONNECTIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "PREVENT_UNSAFE_DEFAULT_URLS_ON_DATASET", "title": "Prevent Unsafe Default Urls On Dataset", "description": "If true all default urls on datasets will be handled as relative URLs by the frontend", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__PREVENT_UNSAFE_DEFAULT_URLS_ON_DATASET", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "DATASET_IMPORT_ALLOWED_DATA_URLS", "title": "Dataset Import Allowed Data Urls", "description": "Define a list of allowed URLs for dataset data imports (v1). Simple example to only allow URLs that belong to certain domains: ALLOWED_IMPORT_URL_DOMAINS = [ r\"^https://.+\\.domain1\\.com\\/?.*\", r\"^https://.+\\.domain2\\.com\\/?.*\" ]", "type": "array", "category": "general", "default": [ ".*" ], "env_var": "SUPERSET__DATASET_IMPORT_ALLOWED_DATA_URLS", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SQLA_TABLE_MUTATOR", "title": "Sqla Table Mutator", "description": "to allow mutating the object with this callback. This can be used to set any properties of the object based on naming conventions and such. You can find examples in the tests. pylint: disable-next=unnecessary-lambda-assignment", "type": "string", "category": "database", "default": "", "env_var": "SUPERSET__SQLA_TABLE_MUTATOR", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERY_MANAGER_CLASS", "title": "Global Async Query Manager Class", "description": "Global async query config options. Requires GLOBAL_ASYNC_QUERIES feature flag to be enabled.", "type": "string", "category": "database", "default": "superset.async_events.async_query_manager.AsyncQueryManager", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERY_MANAGER_CLASS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_REDIS_STREAM_PREFIX", "title": "Global Async Queries Redis Stream Prefix", "description": "", "type": "string", "category": "async", "default": "async-events-", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_REDIS_STREAM_PREFIX", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT", "title": "Global Async Queries Redis Stream Limit", "description": "", "type": "integer", "category": "performance", "default": 1000, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT_FIREHOSE", "title": "Global Async Queries Redis Stream Limit Firehose", "description": "", "type": "integer", "category": "performance", "default": 1000000, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT_FIREHOSE", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "GLOBAL_ASYNC_QUERIES_REGISTER_REQUEST_HANDLERS", "title": "Global Async Queries Register Request Handlers", "description": "", "type": "boolean", "category": "async", "default": true, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_REGISTER_REQUEST_HANDLERS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_JWT_COOKIE_NAME", "title": "Global Async Queries Jwt Cookie Name", "description": "", "type": "string", "category": "async", "default": "async-token", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_JWT_COOKIE_NAME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_JWT_COOKIE_SECURE", "title": "Global Async Queries Jwt Cookie Secure", "description": "", "type": "boolean", "category": "async", "default": false, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_JWT_COOKIE_SECURE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_JWT_COOKIE_DOMAIN", "title": "Global Async Queries Jwt Cookie Domain", "description": "", "type": "null", "category": "async", "default": null, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_JWT_COOKIE_DOMAIN", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_JWT_SECRET", "title": "Global Async Queries Jwt Secret", "description": "", "type": "string", "category": "async", "default": "test-secret-change-me", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_JWT_SECRET", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_POLLING_DELAY", "title": "Global Async Queries Polling Delay", "description": "", "type": "string", "category": "async", "default": "", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_POLLING_DELAY", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_WEBSOCKET_URL", "title": "Global Async Queries Websocket Url", "description": "", "type": "string", "category": "async", "default": "ws://127.0.0.1:8080/", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_WEBSOCKET_URL", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_CACHE_BACKEND", "title": "Global Async Queries Cache Backend", "description": "Global async queries cache backend configuration options: - Set 'CACHE_TYPE' to 'RedisCache' for RedisCacheBackend. - Set 'CACHE_TYPE' to 'RedisSentinelCache' for RedisSentinelCacheBackend.", "type": "object", "category": "performance", "default": { "CACHE_TYPE": "RedisCache", "CACHE_REDIS_HOST": "localhost", "CACHE_REDIS_PORT": 6379, "CACHE_REDIS_USER": "", "CACHE_REDIS_PASSWORD": "", "CACHE_REDIS_DB": 0, "CACHE_DEFAULT_TIMEOUT": 300, "CACHE_REDIS_SENTINELS": [ "" ], "CACHE_REDIS_SENTINEL_MASTER": "mymaster", "CACHE_REDIS_SENTINEL_PASSWORD": null, "CACHE_REDIS_SSL": false, "CACHE_REDIS_SSL_CERTFILE": null, "CACHE_REDIS_SSL_KEYFILE": null, "CACHE_REDIS_SSL_CERT_REQS": "required", "CACHE_REDIS_SSL_CA_CERTS": null }, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_CACHE_BACKEND", "nested_example": "SUPERSET__GLOBAL_ASYNC_QUERIES_CACHE_BACKEND__example__nested_key=value", "impact": "medium", "requires_restart": false }, { "key": "GUEST_ROLE_NAME", "title": "Guest Role Name", "description": "Embedded config options", "type": "string", "category": "general", "default": "Public", "env_var": "SUPERSET__GUEST_ROLE_NAME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GUEST_TOKEN_JWT_SECRET", "title": "Guest Token Jwt Secret", "description": "", "type": "string", "category": "general", "default": "test-guest-secret-change-me", "env_var": "SUPERSET__GUEST_TOKEN_JWT_SECRET", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "GUEST_TOKEN_JWT_ALGO", "title": "Guest Token Jwt Algo", "description": "", "type": "string", "category": "general", "default": "HS256", "env_var": "SUPERSET__GUEST_TOKEN_JWT_ALGO", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GUEST_TOKEN_HEADER_NAME", "title": "Guest Token Header Name", "description": "", "type": "string", "category": "general", "default": "X-GuestToken", "env_var": "SUPERSET__GUEST_TOKEN_HEADER_NAME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GUEST_TOKEN_JWT_EXP_SECONDS", "title": "Guest Token Jwt Exp Seconds", "description": "", "type": "integer", "category": "general", "default": 300, "env_var": "SUPERSET__GUEST_TOKEN_JWT_EXP_SECONDS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GUEST_TOKEN_VALIDATOR_HOOK", "title": "Guest Token Validator Hook", "description": "lambda x: len(x['rls']) == 1 and \"tenant_id=\" in x['rls'][0]['clause'] Takes the GuestTokenUser dict as an argument Return False from the callable to return a HTTP 400 to the user.", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__GUEST_TOKEN_VALIDATOR_HOOK", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ZIPPED_FILE_MAX_SIZE", "title": "Zipped File Max Size", "description": "Max allowed size for a zipped file", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ZIPPED_FILE_MAX_SIZE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ZIP_FILE_MAX_COMPRESS_RATIO", "title": "Zip File Max Compress Ratio", "description": "Max allowed compression ratio for a zipped file", "type": "number", "category": "general", "default": 200.0, "env_var": "SUPERSET__ZIP_FILE_MAX_COMPRESS_RATIO", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ENVIRONMENT_TAG_CONFIG", "title": "Environment Tag Config", "description": "Configuration for environment tag shown on the navbar. Setting 'text' to '' will hide the tag. # noqa: E501 'color' can either be a hex color code, or a dot-indexed theme color (e.g. error.base)", "type": "object", "category": "general", "default": { "variable": "SUPERSET_ENV", "values": { "debug": { "color": "error.base", "text": "flask-debug" }, "development": { "color": "error.base", "text": "Development" }, "production": { "color": "", "text": "" } } }, "env_var": "SUPERSET__ENVIRONMENT_TAG_CONFIG", "nested_example": "SUPERSET__ENVIRONMENT_TAG_CONFIG__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "DATA_DIR", "title": "Data Dir", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__DATA_DIR", "nested_example": null, "impact": "low", "requires_restart": true } ], "by_category": { "logging": [ { "key": "ALEMBIC_SKIP_LOG_CONFIG", "title": "Alembic Skip Log Config", "description": "If True, we will skip the call to load the logger config found in alembic.init", "type": "boolean", "category": "logging", "default": false, "env_var": "SUPERSET__ALEMBIC_SKIP_LOG_CONFIG", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "DEBUG", "title": "Debug", "description": "Whether to run the web server in debug mode or not", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__DEBUG", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "EVENT_LOGGER", "title": "Event Logger", "description": "By default will log events to the metadata database with `DBEventLogger` Note that you can use `StdOutEventLogger` for debugging Note that you can write your own event logger by extending `AbstractEventLogger` https://github.com/apache/superset/blob/master/superset/utils/log.py", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__EVENT_LOGGER", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "LOGGING_CONFIGURATOR", "title": "Logging Configurator", "description": "1) https://docs.python-guide.org/writing/logging/ 2) https://docs.python.org/2/library/logging.config.html Default configurator will consume the LOG_* settings below", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__LOGGING_CONFIGURATOR", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "LOGO_TARGET_PATH", "title": "Logo Target Path", "description": "Specify where clicking the logo would take the user' Default value of None will take you to '/superset/welcome' You can also specify a relative URL e.g. '/superset/welcome' or '/dashboards/list' or you can specify a full URL e.g. 'https://foo.bar'", "type": "null", "category": "logging", "default": null, "env_var": "SUPERSET__LOGO_TARGET_PATH", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "LOGO_TOOLTIP", "title": "Logo Tooltip", "description": "Specify tooltip that should appear when hovering over the App Icon/Logo", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__LOGO_TOOLTIP", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "LOG_FORMAT", "title": "Log Format", "description": "Console Log Settings", "type": "string", "category": "logging", "default": "%(asctime)s:%(levelname)s:%(name)s:%(message)s", "env_var": "SUPERSET__LOG_FORMAT", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "LOG_LEVEL", "title": "Log Level", "description": "", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__LOG_LEVEL", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "STATS_LOGGER", "title": "Stats Logger", "description": "Realtime stats logger, a StatsD implementation exists", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__STATS_LOGGER", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "SUPERSET_LOG_VIEW", "title": "Superset Log View", "description": "", "type": "boolean", "category": "logging", "default": true, "env_var": "SUPERSET__SUPERSET_LOG_VIEW", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "TIME_ROTATE_LOG_LEVEL", "title": "Time Rotate Log Level", "description": "", "type": "string", "category": "logging", "default": "", "env_var": "SUPERSET__TIME_ROTATE_LOG_LEVEL", "nested_example": null, "impact": "low", "requires_restart": false } ], "security": [ { "key": "AUTH_TYPE", "title": "Auth Type", "description": "The authentication type AUTH_OID : Is for OpenID AUTH_DB : Is for database (username/password) AUTH_LDAP : Is for LDAP AUTH_REMOTE_USER : Is for using REMOTE_USER from web server", "type": "string", "category": "security", "default": "", "env_var": "SUPERSET__AUTH_TYPE", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "CONTENT_SECURITY_POLICY_WARNING", "title": "Content Security Policy Warning", "description": "Enable/disable CSP warning", "type": "boolean", "category": "security", "default": true, "env_var": "SUPERSET__CONTENT_SECURITY_POLICY_WARNING", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "CUSTOM_SECURITY_MANAGER", "title": "Custom Security Manager", "description": "", "type": "null", "category": "security", "default": null, "env_var": "SUPERSET__CUSTOM_SECURITY_MANAGER", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "FAB_ADD_SECURITY_API", "title": "Fab Add Security Api", "description": "", "type": "boolean", "category": "security", "default": true, "env_var": "SUPERSET__FAB_ADD_SECURITY_API", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "FAB_ADD_SECURITY_PERMISSION_VIEW", "title": "Fab Add Security Permission View", "description": "", "type": "boolean", "category": "security", "default": false, "env_var": "SUPERSET__FAB_ADD_SECURITY_PERMISSION_VIEW", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "FAB_ADD_SECURITY_PERMISSION_VIEWS_VIEW", "title": "Fab Add Security Permission Views View", "description": "", "type": "boolean", "category": "security", "default": false, "env_var": "SUPERSET__FAB_ADD_SECURITY_PERMISSION_VIEWS_VIEW", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "FAB_ADD_SECURITY_VIEWS", "title": "Fab Add Security Views", "description": "", "type": "boolean", "category": "security", "default": true, "env_var": "SUPERSET__FAB_ADD_SECURITY_VIEWS", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "FAB_ADD_SECURITY_VIEW_MENU_VIEW", "title": "Fab Add Security View Menu View", "description": "", "type": "boolean", "category": "security", "default": false, "env_var": "SUPERSET__FAB_ADD_SECURITY_VIEW_MENU_VIEW", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "MACHINE_AUTH_PROVIDER_CLASS", "title": "Machine Auth Provider Class", "description": "This auth provider is used by background (offline) tasks that need to access protected resources. Can be overridden by end users in order to support custom auth mechanisms", "type": "string", "category": "security", "default": "superset.utils.machine_auth.MachineAuthProvider", "env_var": "SUPERSET__MACHINE_AUTH_PROVIDER_CLASS", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SMTP_SSL_SERVER_AUTH", "title": "Smtp Ssl Server Auth", "description": "If True creates a default SSL context with ssl.Purpose.CLIENT_AUTH using the default system root CA certificates.", "type": "boolean", "category": "security", "default": false, "env_var": "SUPERSET__SMTP_SSL_SERVER_AUTH", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SUPERSET_SECURITY_VIEW_MENU", "title": "Superset Security View Menu", "description": "This config is used to enable/disable the folowing security menu items: List Users, List Roles, List Groups", "type": "boolean", "category": "security", "default": true, "env_var": "SUPERSET__SUPERSET_SECURITY_VIEW_MENU", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "WEBDRIVER_AUTH_FUNC", "title": "Webdriver Auth Func", "description": "An optional override to the default auth hook used to provide auth to the offline webdriver (when using Selenium) or browser context (when using Playwright - see PLAYWRIGHT_REPORTS_AND_THUMBNAILS feature flag)", "type": "null", "category": "security", "default": null, "env_var": "SUPERSET__WEBDRIVER_AUTH_FUNC", "nested_example": null, "impact": "high", "requires_restart": true } ], "general": [ { "key": "ALERT_MINIMUM_INTERVAL", "title": "Alert Minimum Interval", "description": "Set a minimum interval threshold between executions (for each Alert/Report) Value should be an integer i.e. int(timedelta(minutes=5).total_seconds()) You can also assign a function to the config that returns the expected integer", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ALERT_MINIMUM_INTERVAL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_CRON_WINDOW_SIZE", "title": "Alert Reports Cron Window Size", "description": "--------------------------------------------------- Alerts & Reports --------------------------------------------------- Used for Alerts/Reports (Feature flask ALERT_REPORTS) to set the size for the sliding cron window size, should be synced with the celery beat config minus 1 second", "type": "integer", "category": "general", "default": 59, "env_var": "SUPERSET__ALERT_REPORTS_CRON_WINDOW_SIZE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_DEFAULT_CRON_VALUE", "title": "Alert Reports Default Cron Value", "description": "", "type": "string", "category": "general", "default": "0 0 * * *", "env_var": "SUPERSET__ALERT_REPORTS_DEFAULT_CRON_VALUE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_DEFAULT_RETENTION", "title": "Alert Reports Default Retention", "description": "", "type": "integer", "category": "general", "default": 90, "env_var": "SUPERSET__ALERT_REPORTS_DEFAULT_RETENTION", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_MAX_CUSTOM_SCREENSHOT_WIDTH", "title": "Alert Reports Max Custom Screenshot Width", "description": "", "type": "integer", "category": "general", "default": 2400, "env_var": "SUPERSET__ALERT_REPORTS_MAX_CUSTOM_SCREENSHOT_WIDTH", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_MIN_CUSTOM_SCREENSHOT_WIDTH", "title": "Alert Reports Min Custom Screenshot Width", "description": "Custom width for screenshots", "type": "integer", "category": "general", "default": 600, "env_var": "SUPERSET__ALERT_REPORTS_MIN_CUSTOM_SCREENSHOT_WIDTH", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_NOTIFICATION_DRY_RUN", "title": "Alert Reports Notification Dry Run", "description": "If set to true no notification is sent, the worker will just log a message. Useful for debugging", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__ALERT_REPORTS_NOTIFICATION_DRY_RUN", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG", "title": "Alert Reports Working Soft Time Out Lag", "description": "if ALERT_REPORTS_WORKING_TIME_OUT_KILL is True, set a celery hard timeout Equal to working timeout + ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ALERT_REPORTS_WORKING_SOFT_TIME_OUT_LAG", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_WORKING_TIME_OUT_KILL", "title": "Alert Reports Working Time Out Kill", "description": "", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__ALERT_REPORTS_WORKING_TIME_OUT_KILL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALERT_REPORTS_WORKING_TIME_OUT_LAG", "title": "Alert Reports Working Time Out Lag", "description": "if ALERT_REPORTS_WORKING_TIME_OUT_KILL is True, set a celery hard timeout Equal to working timeout + ALERT_REPORTS_WORKING_TIME_OUT_LAG", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ALERT_REPORTS_WORKING_TIME_OUT_LAG", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALLOWED_EXTENSIONS", "title": "Allowed Extensions", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ALLOWED_EXTENSIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ALLOWED_USER_CSV_SCHEMA_FUNC", "title": "Allowed User Csv Schema Func", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ALLOWED_USER_CSV_SCHEMA_FUNC", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "APP_ICON", "title": "App Icon", "description": "Specify the App icon", "type": "string", "category": "general", "default": "/static/assets/images/superset-logo-horiz.png", "env_var": "SUPERSET__APP_ICON", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "APP_NAME", "title": "App Name", "description": "------------------------------ GLOBALS FOR APP Builder ------------------------------ Uncomment to setup Your App name", "type": "string", "category": "general", "default": "Superset", "env_var": "SUPERSET__APP_NAME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BABEL_DEFAULT_FOLDER", "title": "Babel Default Folder", "description": "Your application default translation path", "type": "string", "category": "general", "default": "superset/translations", "env_var": "SUPERSET__BABEL_DEFAULT_FOLDER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BABEL_DEFAULT_LOCALE", "title": "Babel Default Locale", "description": "--------------------------------------------------- Babel config for translations --------------------------------------------------- Setup default language", "type": "string", "category": "general", "default": "en", "env_var": "SUPERSET__BABEL_DEFAULT_LOCALE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BACKUP_COUNT", "title": "Backup Count", "description": "", "type": "integer", "category": "general", "default": 30, "env_var": "SUPERSET__BACKUP_COUNT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BASE_DIR", "title": "Base Dir", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__BASE_DIR", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BUG_REPORT_ICON", "title": "Bug Report Icon", "description": "", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__BUG_REPORT_ICON", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BUG_REPORT_TEXT", "title": "Bug Report Text", "description": "", "type": "string", "category": "general", "default": "Report a bug", "env_var": "SUPERSET__BUG_REPORT_TEXT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "BUG_REPORT_URL", "title": "Bug Report Url", "description": "Send user to a link where they can report bugs", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__BUG_REPORT_URL", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "COLUMNAR_EXTENSIONS", "title": "Columnar Extensions", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__COLUMNAR_EXTENSIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CONFIG_PATH_ENV_VAR", "title": "Config Path Env Var", "description": "", "type": "string", "category": "general", "default": "SUPERSET_CONFIG_PATH", "env_var": "SUPERSET__CONFIG_PATH_ENV_VAR", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CSV_DEFAULT_NA_NAMES", "title": "Csv Default Na Names", "description": "Values that should be treated as nulls for the csv uploads.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__CSV_DEFAULT_NA_NAMES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CSV_EXPORT", "title": "Csv Export", "description": "CSV Options: key/value pairs that will be passed as argument to DataFrame.to_csv method. note: index option should not be overridden", "type": "object", "category": "general", "default": { "encoding": "utf-8" }, "env_var": "SUPERSET__CSV_EXPORT", "nested_example": "SUPERSET__CSV_EXPORT__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "CSV_EXTENSIONS", "title": "Csv Extensions", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__CSV_EXTENSIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CSV_TO_HIVE_UPLOAD_DIRECTORY", "title": "Csv To Hive Upload Directory", "description": "The directory within the bucket specified above that will contain all the external tables", "type": "string", "category": "general", "default": "EXTERNAL_HIVE_TABLES/", "env_var": "SUPERSET__CSV_TO_HIVE_UPLOAD_DIRECTORY", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CSV_TO_HIVE_UPLOAD_S3_BUCKET", "title": "Csv To Hive Upload S3 Bucket", "description": "The S3 bucket where you want to store your external hive tables created from CSV files. For example, 'companyname-superset'", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__CSV_TO_HIVE_UPLOAD_S3_BUCKET", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "CURRENCIES", "title": "Currencies", "description": "", "type": "array", "category": "general", "default": [ "USD", "EUR", "GBP", "INR", "MXN", "JPY", "CNY" ], "env_var": "SUPERSET__CURRENCIES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DASHBOARD_AUTO_REFRESH_INTERVALS", "title": "Dashboard Auto Refresh Intervals", "description": "Dashboard auto refresh intervals", "type": "array", "category": "general", "default": [ [ 0, "Don't refresh" ], [ 10, "10 seconds" ], [ 30, "30 seconds" ], [ 60, "1 minute" ], [ 300, "5 minutes" ], [ 1800, "30 minutes" ], [ 3600, "1 hour" ], [ 21600, "6 hours" ], [ 43200, "12 hours" ], [ 86400, "24 hours" ] ], "env_var": "SUPERSET__DASHBOARD_AUTO_REFRESH_INTERVALS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DASHBOARD_TEMPLATE_ID", "title": "Dashboard Template Id", "description": "The id of a template dashboard that should be copied to every new user", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__DASHBOARD_TEMPLATE_ID", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DATASET_IMPORT_ALLOWED_DATA_URLS", "title": "Dataset Import Allowed Data Urls", "description": "Define a list of allowed URLs for dataset data imports (v1). Simple example to only allow URLs that belong to certain domains: ALLOWED_IMPORT_URL_DOMAINS = [ r\"^https://.+\\.domain1\\.com\\/?.*\", r\"^https://.+\\.domain2\\.com\\/?.*\" ]", "type": "array", "category": "general", "default": [ ".*" ], "env_var": "SUPERSET__DATASET_IMPORT_ALLOWED_DATA_URLS", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "DATA_DIR", "title": "Data Dir", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__DATA_DIR", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEFAULT_MODULE_DS_MAP", "title": "Default Module Ds Map", "description": "-------------------------------------------------- Modules, datasources and middleware to be registered --------------------------------------------------", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__DEFAULT_MODULE_DS_MAP", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEFAULT_RELATIVE_END_TIME", "title": "Default Relative End Time", "description": "", "type": "string", "category": "general", "default": "today", "env_var": "SUPERSET__DEFAULT_RELATIVE_END_TIME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEFAULT_RELATIVE_START_TIME", "title": "Default Relative Start Time", "description": "'now' means it is relative to the query issue time If both start and end time is set to now, this will make the time filter a moving window. By only setting the end time to now, start time will be set to midnight, while end will be relative to the query issue time.", "type": "string", "category": "general", "default": "today", "env_var": "SUPERSET__DEFAULT_RELATIVE_START_TIME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEFAULT_TIME_FILTER", "title": "Default Time Filter", "description": "default time filter in explore values may be \"Last day\", \"Last week\", \" : now\", etc.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__DEFAULT_TIME_FILTER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEFAULT_VIZ_TYPE", "title": "Default Viz Type", "description": "default viz used in chart explorer & SQL Lab explore", "type": "string", "category": "general", "default": "table", "env_var": "SUPERSET__DEFAULT_VIZ_TYPE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DISPLAY_MAX_ROW", "title": "Display Max Row", "description": "Maximum number of rows displayed in SQL Lab UI Is set to avoid out of memory/localstorage issues in browsers. Does not affect exported CSVs", "type": "integer", "category": "general", "default": 10000, "env_var": "SUPERSET__DISPLAY_MAX_ROW", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DOCUMENTATION_ICON", "title": "Documentation Icon", "description": "", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__DOCUMENTATION_ICON", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DOCUMENTATION_TEXT", "title": "Documentation Text", "description": "", "type": "string", "category": "general", "default": "Documentation", "env_var": "SUPERSET__DOCUMENTATION_TEXT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DOCUMENTATION_URL", "title": "Documentation Url", "description": "Send user to a link where they can read more about Superset", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__DOCUMENTATION_URL", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "ENGINE_CONTEXT_MANAGER", "title": "Engine Context Manager", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ENGINE_CONTEXT_MANAGER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ENVIRONMENT_TAG_CONFIG", "title": "Environment Tag Config", "description": "Configuration for environment tag shown on the navbar. Setting 'text' to '' will hide the tag. # noqa: E501 'color' can either be a hex color code, or a dot-indexed theme color (e.g. error.base)", "type": "object", "category": "general", "default": { "variable": "SUPERSET_ENV", "values": { "debug": { "color": "error.base", "text": "flask-debug" }, "development": { "color": "error.base", "text": "Development" }, "production": { "color": "", "text": "" } } }, "env_var": "SUPERSET__ENVIRONMENT_TAG_CONFIG", "nested_example": "SUPERSET__ENVIRONMENT_TAG_CONFIG__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "EXCEL_EXTENSIONS", "title": "Excel Extensions", "description": "Allowed format types for upload on Database view", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__EXCEL_EXTENSIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "FAVICONS", "title": "Favicons", "description": "\"href\":path/to/image.png\", \"sizes\": \"16x16\", \"type\": \"image/png\" \"rel\": \"icon\" },", "type": "array", "category": "general", "default": [ { "href": "/static/assets/images/favicon.png" } ], "env_var": "SUPERSET__FAVICONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "FILENAME", "title": "Filename", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__FILENAME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "FLASK_APP_MUTATOR", "title": "Flask App Mutator", "description": "If a callable is specified, it will be called at app startup while passing a reference to the Flask app. This can be used to alter the Flask app in whatever way. example: FLASK_APP_MUTATOR = lambda x: x.before_request = f", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__FLASK_APP_MUTATOR", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "FLASK_USE_RELOAD", "title": "Flask Use Reload", "description": "", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__FLASK_USE_RELOAD", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GUEST_ROLE_NAME", "title": "Guest Role Name", "description": "Embedded config options", "type": "string", "category": "general", "default": "Public", "env_var": "SUPERSET__GUEST_ROLE_NAME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GUEST_TOKEN_HEADER_NAME", "title": "Guest Token Header Name", "description": "", "type": "string", "category": "general", "default": "X-GuestToken", "env_var": "SUPERSET__GUEST_TOKEN_HEADER_NAME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GUEST_TOKEN_JWT_ALGO", "title": "Guest Token Jwt Algo", "description": "", "type": "string", "category": "general", "default": "HS256", "env_var": "SUPERSET__GUEST_TOKEN_JWT_ALGO", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GUEST_TOKEN_JWT_EXP_SECONDS", "title": "Guest Token Jwt Exp Seconds", "description": "", "type": "integer", "category": "general", "default": 300, "env_var": "SUPERSET__GUEST_TOKEN_JWT_EXP_SECONDS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GUEST_TOKEN_JWT_SECRET", "title": "Guest Token Jwt Secret", "description": "", "type": "string", "category": "general", "default": "test-guest-secret-change-me", "env_var": "SUPERSET__GUEST_TOKEN_JWT_SECRET", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "GUEST_TOKEN_VALIDATOR_HOOK", "title": "Guest Token Validator Hook", "description": "lambda x: len(x['rls']) == 1 and \"tenant_id=\" in x['rls'][0]['clause'] Takes the GuestTokenUser dict as an argument Return False from the callable to return a HTTP 400 to the user.", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__GUEST_TOKEN_VALIDATOR_HOOK", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "HTML_SANITIZATION", "title": "Html Sanitization", "description": "Sanitizes the HTML content used in markdowns to allow its rendering in a safe manner. Disabling this option is not recommended for security reasons. If you wish to allow valid safe elements that are not included in the default sanitization schema, use the HTML_SANITIZATION_SCHEMA_EXTENSIONS configuration.", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__HTML_SANITIZATION", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "INTERVAL", "title": "Interval", "description": "", "type": "integer", "category": "general", "default": 1, "env_var": "SUPERSET__INTERVAL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "LANGUAGES", "title": "Languages", "description": "Turning off i18n by default as translation in most languages are incomplete and not well maintained.", "type": "object", "category": "general", "default": {}, "env_var": "SUPERSET__LANGUAGES", "nested_example": "SUPERSET__LANGUAGES__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "MAPBOX_API_KEY", "title": "Mapbox Api Key", "description": "Set this API key to enable Mapbox visualizations", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__MAPBOX_API_KEY", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "MUTATE_AFTER_SPLIT", "title": "Mutate After Split", "description": "It allows for using the SQL_QUERY_MUTATOR function for more than comments Usage: If you want to apply a change to every statement to a given query, set MUTATE_AFTER_SPLIT = True # noqa: E501 An example use case is if data has role based access controls, and you want to apply a SET ROLE statement alongside every user query. Changing this variable maintains functionality for both the SQL_Lab and Charts.", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__MUTATE_AFTER_SPLIT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "PACKAGE_JSON_FILE", "title": "Package Json File", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__PACKAGE_JSON_FILE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "PERMISSION_INSTRUCTIONS_LINK", "title": "Permission Instructions Link", "description": "This link should lead to a page with instructions on how to gain access to a Datasource. It will be placed at the bottom of permissions errors.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__PERMISSION_INSTRUCTIONS_LINK", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "PRESTO_POLL_INTERVAL", "title": "Presto Poll Interval", "description": "Interval between consecutive polls when using Presto Engine See here: https://github.com/dropbox/PyHive/blob/8eb0aeab8ca300f3024655419b93dad926c1a351/pyhive/presto.py#L93 # noqa: E501", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__PRESTO_POLL_INTERVAL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "PREVENT_UNSAFE_DEFAULT_URLS_ON_DATASET", "title": "Prevent Unsafe Default Urls On Dataset", "description": "If true all default urls on datasets will be handled as relative URLs by the frontend", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__PREVENT_UNSAFE_DEFAULT_URLS_ON_DATASET", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "PROFILING", "title": "Profiling", "description": "Enable profiling of Python calls. Turn this on and append ``?_instrument=1`` to the page to see the call stack.", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__PROFILING", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "PROXY_FIX_CONFIG", "title": "Proxy Fix Config", "description": "", "type": "object", "category": "general", "default": { "x_for": 1, "x_proto": 1, "x_host": 1, "x_port": 1, "x_prefix": 1 }, "env_var": "SUPERSET__PROXY_FIX_CONFIG", "nested_example": "SUPERSET__PROXY_FIX_CONFIG__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "REPORT_MINIMUM_INTERVAL", "title": "Report Minimum Interval", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__REPORT_MINIMUM_INTERVAL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "RESULTS_BACKEND_USE_MSGPACK", "title": "Results Backend Use Msgpack", "description": "Use PyArrow and MessagePack for async query results serialization, rather than JSON. This feature requires additional testing from the community before it is fully adopted, so this config option is provided in order to disable should breaking issues be discovered.", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__RESULTS_BACKEND_USE_MSGPACK", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ROBOT_PERMISSION_ROLES", "title": "Robot Permission Roles", "description": "Roles that are controlled by the API / Superset and should not be changed by humans.", "type": "array", "category": "general", "default": [ "Public", "Gamma", "Alpha", "Admin", "sql_lab" ], "env_var": "SUPERSET__ROBOT_PERMISSION_ROLES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ROLLOVER", "title": "Rollover", "description": "", "type": "string", "category": "general", "default": "midnight", "env_var": "SUPERSET__ROLLOVER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_LOAD_WAIT", "title": "Screenshot Load Wait", "description": "Time before selenium times out after waiting for all DOM class elements named \"loading\" are gone.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__SCREENSHOT_LOAD_WAIT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_LOCATE_WAIT", "title": "Screenshot Locate Wait", "description": "Time before selenium times out after trying to locate an element on the page and wait for that element to load for a screenshot.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__SCREENSHOT_LOCATE_WAIT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_PLAYWRIGHT_WAIT_EVENT", "title": "Screenshot Playwright Wait Event", "description": "Event that Playwright waits for when loading a new page Possible values: \"load\", \"commit\", \"domcontentloaded\", \"networkidle\" Docs: https://playwright.dev/python/docs/api/class-page#page-goto-option-wait-until", "type": "string", "category": "general", "default": "domcontentloaded", "env_var": "SUPERSET__SCREENSHOT_PLAYWRIGHT_WAIT_EVENT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_REPLACE_UNEXPECTED_ERRORS", "title": "Screenshot Replace Unexpected Errors", "description": "Replace unexpected errors in screenshots with real error messages", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__SCREENSHOT_REPLACE_UNEXPECTED_ERRORS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_SELENIUM_ANIMATION_WAIT", "title": "Screenshot Selenium Animation Wait", "description": "Wait for the chart animation, in seconds", "type": "integer", "category": "general", "default": 5, "env_var": "SUPERSET__SCREENSHOT_SELENIUM_ANIMATION_WAIT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_SELENIUM_HEADSTART", "title": "Screenshot Selenium Headstart", "description": "Give selenium an headstart, in seconds", "type": "integer", "category": "general", "default": 3, "env_var": "SUPERSET__SCREENSHOT_SELENIUM_HEADSTART", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_SELENIUM_RETRIES", "title": "Screenshot Selenium Retries", "description": "Selenium destroy retries", "type": "integer", "category": "general", "default": 5, "env_var": "SUPERSET__SCREENSHOT_SELENIUM_RETRIES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_WAIT_FOR_ERROR_MODAL_INVISIBLE", "title": "Screenshot Wait For Error Modal Invisible", "description": "Max time to wait for error message modal to close, in seconds", "type": "integer", "category": "general", "default": 5, "env_var": "SUPERSET__SCREENSHOT_WAIT_FOR_ERROR_MODAL_INVISIBLE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SCREENSHOT_WAIT_FOR_ERROR_MODAL_VISIBLE", "title": "Screenshot Wait For Error Modal Visible", "description": "Max time to wait for error message modal to show up, in seconds", "type": "integer", "category": "general", "default": 5, "env_var": "SUPERSET__SCREENSHOT_WAIT_FOR_ERROR_MODAL_VISIBLE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SECRET_KEY", "title": "Secret Key", "description": "Your App secret key. Make sure you override it on superset_config.py or use `SUPERSET_SECRET_KEY` environment variable. Use a strong complex alphanumeric string and use a tool to help you generate a sufficiently random sequence, ex: openssl rand -base64 42\"", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__SECRET_KEY", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SEND_FILE_MAX_AGE_DEFAULT", "title": "Send File Max Age Default", "description": "Other possible config options and backends: # https://flask-session.readthedocs.io/en/latest/config.html Cache static resources.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__SEND_FILE_MAX_AGE_DEFAULT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SESSION_COOKIE_HTTPONLY", "title": "Session Cookie Httponly", "description": "Flask session cookie options See https://flask.palletsprojects.com/en/1.1.x/security/#set-cookie-options for details", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__SESSION_COOKIE_HTTPONLY", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SESSION_COOKIE_SECURE", "title": "Session Cookie Secure", "description": "", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__SESSION_COOKIE_SECURE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SESSION_SERVER_SIDE", "title": "Session Server Side", "description": "Whether to use server side sessions from flask-session or Flask secure cookies", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__SESSION_SERVER_SIDE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SHOW_STACKTRACE", "title": "Show Stacktrace", "description": "Superset allows server-side python stacktraces to be surfaced to the user when this feature is on. This may have security implications and it's more secure to turn it off in production settings.", "type": "boolean", "category": "general", "default": false, "env_var": "SUPERSET__SHOW_STACKTRACE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SILENCE_FAB", "title": "Silence Fab", "description": "Whether to bump the logging level to ERROR on the flask_appbuilder package Set to False if/when debugging FAB related issues like permission management", "type": "boolean", "category": "general", "default": true, "env_var": "SUPERSET__SILENCE_FAB", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SLACK_PROXY", "title": "Slack Proxy", "description": "", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__SLACK_PROXY", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SSH_TUNNEL_LOCAL_BIND_ADDRESS", "title": "Ssh Tunnel Local Bind Address", "description": "", "type": "string", "category": "general", "default": "127.0.0.1", "env_var": "SUPERSET__SSH_TUNNEL_LOCAL_BIND_ADDRESS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SSH_TUNNEL_MANAGER_CLASS", "title": "Ssh Tunnel Manager Class", "description": "-------------+ | +----------+ | FIREWALL (only port 22 is open) ----------------------------------------------------------------------", "type": "string", "category": "general", "default": "superset.extensions.ssh.SSHManager", "env_var": "SUPERSET__SSH_TUNNEL_MANAGER_CLASS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "STATIC_ASSETS_PREFIX", "title": "Static Assets Prefix", "description": "Optional prefix to be added to all static asset paths when rendering the UI. This is useful for hosting assets in an external CDN, for example", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__STATIC_ASSETS_PREFIX", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SUPERSET_DASHBOARD_PERIODICAL_REFRESH_WARNING_MESSAGE", "title": "Superset Dashboard Periodical Refresh Warning Message", "description": "", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__SUPERSET_DASHBOARD_PERIODICAL_REFRESH_WARNING_MESSAGE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SUPERSET_WEBSERVER_DOMAINS", "title": "Superset Webserver Domains", "description": "than 6 slices in dashboard, a lot of time fetch requests are queued up and wait for next available socket. PR #5039 added domain sharding for Superset, and this feature can be enabled by configuration only (by default Superset doesn't allow cross-domain request). This feature is deprecated, annd will be removed in the next major version of Superset, as enabling HTTP2 will serve the same goals.", "type": "null", "category": "general", "default": null, "env_var": "SUPERSET__SUPERSET_WEBSERVER_DOMAINS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "TABLE_VIZ_MAX_ROW_SERVER", "title": "Table Viz Max Row Server", "description": "Maximum number of rows for any query with Server Pagination in Table Viz type", "type": "integer", "category": "general", "default": 500000, "env_var": "SUPERSET__TABLE_VIZ_MAX_ROW_SERVER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "TALISMAN_CONFIG", "title": "Talisman Config", "description": "If you want Talisman, how do you want it configured?? For more information on setting up Talisman, please refer to https://superset.apache.org/docs/configuration/networking-settings/#changing-flask-talisman-csp", "type": "object", "category": "general", "default": { "content_security_policy": { "base-uri": [ "'self'" ], "default-src": [ "'self'" ], "img-src": [ "'self'", "blob:", "data:", "https://apachesuperset.gateway.scarf.sh", "https://static.scarf.sh/", "ows.terrestris.de", "https://cdn.document360.io" ], "worker-src": [ "'self'", "blob:" ], "connect-src": [ "'self'", "https://api.mapbox.com", "https://events.mapbox.com" ], "object-src": "'none'", "style-src": [ "'self'", "'unsafe-inline'" ], "script-src": [ "'self'", "'strict-dynamic'" ] }, "content_security_policy_nonce_in": [ "script-src" ], "force_https": false, "session_cookie_secure": false }, "env_var": "SUPERSET__TALISMAN_CONFIG", "nested_example": "SUPERSET__TALISMAN_CONFIG__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "TALISMAN_DEV_CONFIG", "title": "Talisman Dev Config", "description": "React requires `eval` to work correctly in dev mode", "type": "object", "category": "general", "default": { "content_security_policy": { "base-uri": [ "'self'" ], "default-src": [ "'self'" ], "img-src": [ "'self'", "blob:", "data:", "https://apachesuperset.gateway.scarf.sh", "https://static.scarf.sh/", "https://cdn.brandfolder.io", "ows.terrestris.de", "https://cdn.document360.io" ], "worker-src": [ "'self'", "blob:" ], "connect-src": [ "'self'", "https://api.mapbox.com", "https://events.mapbox.com" ], "object-src": "'none'", "style-src": [ "'self'", "'unsafe-inline'" ], "script-src": [ "'self'", "'unsafe-inline'", "'unsafe-eval'" ] }, "content_security_policy_nonce_in": [ "script-src" ], "force_https": false, "session_cookie_secure": false }, "env_var": "SUPERSET__TALISMAN_DEV_CONFIG", "nested_example": "SUPERSET__TALISMAN_DEV_CONFIG__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "THUMBNAIL_EXECUTORS", "title": "Thumbnail Executors", "description": "configuration: from superset.tasks.types import ExecutorType, FixedExecutor THUMBNAIL_EXECUTORS = [FixedExecutor(\"admin\")]", "type": "array", "category": "general", "default": [ "" ], "env_var": "SUPERSET__THUMBNAIL_EXECUTORS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "TRACKING_URL_TRANSFORMER", "title": "Tracking Url Transformer", "description": "to your transformer function, e.g.: TRACKING_URL_TRANSFORMER = ( lambda url, query: url if is_fresh(query) else None ) pylint: disable-next=unnecessary-lambda-assignment", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__TRACKING_URL_TRANSFORMER", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "TROUBLESHOOTING_LINK", "title": "Troubleshooting Link", "description": "The link to a page containing common errors and their resolutions It will be appended at the bottom of sql_lab errors.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__TROUBLESHOOTING_LINK", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "UPLOAD_CHUNK_SIZE", "title": "Upload Chunk Size", "description": "", "type": "integer", "category": "general", "default": 4096, "env_var": "SUPERSET__UPLOAD_CHUNK_SIZE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "UPLOAD_FOLDER", "title": "Upload Folder", "description": "--------------------------------------------------- Image and file configuration --------------------------------------------------- The file upload folder, when using models with files", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__UPLOAD_FOLDER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "VERSION_INFO_FILE", "title": "Version Info File", "description": "--------------------------------------------------------- Superset specific config ---------------------------------------------------------", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__VERSION_INFO_FILE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "VERSION_SHA", "title": "Version Sha", "description": "", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__VERSION_SHA", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "VERSION_SHA_LENGTH", "title": "Version Sha Length", "description": "", "type": "integer", "category": "general", "default": 8, "env_var": "SUPERSET__VERSION_SHA_LENGTH", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "VERSION_STRING", "title": "Version String", "description": "version_info.json file may or may not be available, as it is generated on install via setup.py. In the event that we're actually running Superset, we will have already installed, therefore it WILL exist. When unit tests are running, however, it WILL NOT exist, so we fall back on reading package.json", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__VERSION_STRING", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "WEBDRIVER_BASEURL", "title": "Webdriver Baseurl", "description": "The base URL to query for accessing the user interface", "type": "string", "category": "general", "default": "http://0.0.0.0:8080/", "env_var": "SUPERSET__WEBDRIVER_BASEURL", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "WEBDRIVER_BASEURL_USER_FRIENDLY", "title": "Webdriver Baseurl User Friendly", "description": "The base URL for the email report hyperlinks.", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__WEBDRIVER_BASEURL_USER_FRIENDLY", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "WEBDRIVER_CONFIGURATION", "title": "Webdriver Configuration", "description": "Any config options to be passed as-is to the webdriver", "type": "object", "category": "general", "default": { "options": { "capabilities": {}, "preferences": {}, "binary_location": "" }, "service": { "log_output": "/dev/null", "service_args": [], "port": 0, "env": {} } }, "env_var": "SUPERSET__WEBDRIVER_CONFIGURATION", "nested_example": "SUPERSET__WEBDRIVER_CONFIGURATION__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "WEBDRIVER_OPTION_ARGS", "title": "Webdriver Option Args", "description": "Additional args to be passed as arguments to the config object Note: If using Chrome, you'll want to add the \"--marionette\" arg.", "type": "array", "category": "general", "default": [ "--headless" ], "env_var": "SUPERSET__WEBDRIVER_OPTION_ARGS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "WEBDRIVER_TYPE", "title": "Webdriver Type", "description": "Requires: geckodriver and firefox installations Limitations: can be buggy at times chrome: Requires: headless chrome Limitations: unable to generate screenshots of elements", "type": "string", "category": "general", "default": "firefox", "env_var": "SUPERSET__WEBDRIVER_TYPE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "WEBDRIVER_WINDOW", "title": "Webdriver Window", "description": "Window size - this will impact the rendering of the data", "type": "object", "category": "general", "default": { "dashboard": "", "slice": "", "pixel_density": 1 }, "env_var": "SUPERSET__WEBDRIVER_WINDOW", "nested_example": "SUPERSET__WEBDRIVER_WINDOW__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "WTF_CSRF_EXEMPT_LIST", "title": "Wtf Csrf Exempt List", "description": "Add endpoints that need to be exempt from CSRF protection", "type": "array", "category": "general", "default": [ "superset.views.core.log", "superset.views.core.explore_json", "superset.charts.data.api.data", "superset.dashboards.api.cache_dashboard_screenshot" ], "env_var": "SUPERSET__WTF_CSRF_EXEMPT_LIST", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ZIPPED_FILE_MAX_SIZE", "title": "Zipped File Max Size", "description": "Max allowed size for a zipped file", "type": "string", "category": "general", "default": "", "env_var": "SUPERSET__ZIPPED_FILE_MAX_SIZE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ZIP_FILE_MAX_COMPRESS_RATIO", "title": "Zip File Max Compress Ratio", "description": "Max allowed compression ratio for a zipped file", "type": "number", "category": "general", "default": 200.0, "env_var": "SUPERSET__ZIP_FILE_MAX_COMPRESS_RATIO", "nested_example": null, "impact": "low", "requires_restart": true } ], "ui": [ { "key": "BUILD_NUMBER", "title": "Build Number", "description": "Build number is shown in the About section if available. This can be replaced at build time to expose build information.", "type": "null", "category": "ui", "default": null, "env_var": "SUPERSET__BUILD_NUMBER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "FAB_API_SWAGGER_UI", "title": "Fab Api Swagger Ui", "description": "Enables SWAGGER UI for superset openapi spec ex: http://localhost:8080/swagger/v1", "type": "boolean", "category": "ui", "default": true, "env_var": "SUPERSET__FAB_API_SWAGGER_UI", "nested_example": null, "impact": "low", "requires_restart": true } ], "performance": [ { "key": "ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT", "title": "Alert Reports Default Working Timeout", "description": "Default values that user using when creating alert", "type": "integer", "category": "performance", "default": 3600, "env_var": "SUPERSET__ALERT_REPORTS_DEFAULT_WORKING_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "AUTH_RATE_LIMIT", "title": "Auth Rate Limit", "description": "", "type": "string", "category": "performance", "default": "5 per second", "env_var": "SUPERSET__AUTH_RATE_LIMIT", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "AUTH_RATE_LIMITED", "title": "Auth Rate Limited", "description": "", "type": "boolean", "category": "performance", "default": true, "env_var": "SUPERSET__AUTH_RATE_LIMITED", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "CACHE_DEFAULT_TIMEOUT", "title": "Cache Default Timeout", "description": "--------------------------------------------------- Cache configuration --------------------------------------------------- Default cache timeout, applies to all cache backends unless specifically overridden in each cache config.", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__CACHE_DEFAULT_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "CACHE_WARMUP_EXECUTORS", "title": "Cache Warmup Executors", "description": "a fixed user (admin in this example), use the following configuration: from superset.tasks.types import ExecutorType, FixedExecutor CACHE_WARMUP_EXECUTORS = [ExecutorType.OWNER, FixedExecutor(\"admin\")]", "type": "array", "category": "performance", "default": [ "" ], "env_var": "SUPERSET__CACHE_WARMUP_EXECUTORS", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "DATABASE_OAUTH2_TIMEOUT", "title": "Database Oauth2 Timeout", "description": "applications. In that case, the proxy can forward the request to the correct instance by looking at the `default_redirect_uri` attribute in the OAuth2 state object. DATABASE_OAUTH2_REDIRECT_URI = \"http://localhost:8088/api/v1/database/oauth2/\" Timeout when fetching access and refresh tokens.", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__DATABASE_OAUTH2_TIMEOUT", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "DEFAULT_SQLLAB_LIMIT", "title": "Default Sqllab Limit", "description": "Default row limit for SQL Lab queries. Is overridden by setting a new limit in the SQL Lab UI", "type": "integer", "category": "performance", "default": 1000, "env_var": "SUPERSET__DEFAULT_SQLLAB_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "FILTER_SELECT_ROW_LIMIT", "title": "Filter Select Row Limit", "description": "max rows retrieved by filter select auto complete", "type": "integer", "category": "performance", "default": 10000, "env_var": "SUPERSET__FILTER_SELECT_ROW_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "GLOBAL_ASYNC_QUERIES_CACHE_BACKEND", "title": "Global Async Queries Cache Backend", "description": "Global async queries cache backend configuration options: - Set 'CACHE_TYPE' to 'RedisCache' for RedisCacheBackend. - Set 'CACHE_TYPE' to 'RedisSentinelCache' for RedisSentinelCacheBackend.", "type": "object", "category": "performance", "default": { "CACHE_TYPE": "RedisCache", "CACHE_REDIS_HOST": "localhost", "CACHE_REDIS_PORT": 6379, "CACHE_REDIS_USER": "", "CACHE_REDIS_PASSWORD": "", "CACHE_REDIS_DB": 0, "CACHE_DEFAULT_TIMEOUT": 300, "CACHE_REDIS_SENTINELS": [ "" ], "CACHE_REDIS_SENTINEL_MASTER": "mymaster", "CACHE_REDIS_SENTINEL_PASSWORD": null, "CACHE_REDIS_SSL": false, "CACHE_REDIS_SSL_CERTFILE": null, "CACHE_REDIS_SSL_KEYFILE": null, "CACHE_REDIS_SSL_CERT_REQS": "required", "CACHE_REDIS_SSL_CA_CERTS": null }, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_CACHE_BACKEND", "nested_example": "SUPERSET__GLOBAL_ASYNC_QUERIES_CACHE_BACKEND__example__nested_key=value", "impact": "medium", "requires_restart": false }, { "key": "GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT", "title": "Global Async Queries Redis Stream Limit", "description": "", "type": "integer", "category": "performance", "default": 1000, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT_FIREHOSE", "title": "Global Async Queries Redis Stream Limit Firehose", "description": "", "type": "integer", "category": "performance", "default": 1000000, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT_FIREHOSE", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "NATIVE_FILTER_DEFAULT_ROW_LIMIT", "title": "Native Filter Default Row Limit", "description": "default row limit for native filters", "type": "integer", "category": "performance", "default": 1000, "env_var": "SUPERSET__NATIVE_FILTER_DEFAULT_ROW_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "QUERY_SEARCH_LIMIT", "title": "Query Search Limit", "description": "The limit of queries fetched for query search", "type": "integer", "category": "performance", "default": 1000, "env_var": "SUPERSET__QUERY_SEARCH_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "RATELIMIT_APPLICATION", "title": "Ratelimit Application", "description": "", "type": "string", "category": "performance", "default": "50 per second", "env_var": "SUPERSET__RATELIMIT_APPLICATION", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "RATELIMIT_ENABLED", "title": "Ratelimit Enabled", "description": "FAB Rate limiting: this is a security feature for preventing DDOS attacks. The feature is on by default to make Superset secure by default, but you should fine tune the limits to your needs. You can read more about the different parameters here: https://flask-limiter.readthedocs.io/en/stable/configuration.html", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__RATELIMIT_ENABLED", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "ROW_LIMIT", "title": "Row Limit", "description": "default row limit when requesting chart data", "type": "integer", "category": "performance", "default": 50000, "env_var": "SUPERSET__ROW_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SAMPLES_ROW_LIMIT", "title": "Samples Row Limit", "description": "default row limit when requesting samples from datasource in explore view", "type": "integer", "category": "performance", "default": 1000, "env_var": "SUPERSET__SAMPLES_ROW_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SCREENSHOT_PLAYWRIGHT_DEFAULT_TIMEOUT", "title": "Screenshot Playwright Default Timeout", "description": "Default timeout for Playwright browser context for all operations", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SCREENSHOT_PLAYWRIGHT_DEFAULT_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SLACK_CACHE_TIMEOUT", "title": "Slack Cache Timeout", "description": "", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SLACK_CACHE_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_ASYNC_TIME_LIMIT_SEC", "title": "Sqllab Async Time Limit Sec", "description": "The MAX duration a query can run for before being killed by celery.", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SQLLAB_ASYNC_TIME_LIMIT_SEC", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_CTAS_NO_LIMIT", "title": "Sqllab Ctas No Limit", "description": "Flag that controls if limit should be enforced on the CTA (create table as queries).", "type": "boolean", "category": "performance", "default": false, "env_var": "SUPERSET__SQLLAB_CTAS_NO_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_QUERY_COST_ESTIMATE_TIMEOUT", "title": "Sqllab Query Cost Estimate Timeout", "description": "Some databases support running EXPLAIN queries that allow users to estimate query costs before they run. These EXPLAIN queries should have a small timeout.", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SQLLAB_QUERY_COST_ESTIMATE_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_QUERY_RESULT_TIMEOUT", "title": "Sqllab Query Result Timeout", "description": "Timeout duration for SQL Lab fetching query results by the resultsKey. 0 means no timeout.", "type": "integer", "category": "performance", "default": 0, "env_var": "SUPERSET__SQLLAB_QUERY_RESULT_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_TIMEOUT", "title": "Sqllab Timeout", "description": "Timeout duration for SQL Lab synchronous queries", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SQLLAB_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SQLLAB_VALIDATION_TIMEOUT", "title": "Sqllab Validation Timeout", "description": "Timeout duration for SQL Lab query validation", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SQLLAB_VALIDATION_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SSH_TUNNEL_PACKET_TIMEOUT_SEC", "title": "Ssh Tunnel Packet Timeout Sec", "description": ": Timeout (seconds) for transport socket (``socket.settimeout``)", "type": "number", "category": "performance", "default": 1.0, "env_var": "SUPERSET__SSH_TUNNEL_PACKET_TIMEOUT_SEC", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SSH_TUNNEL_TIMEOUT_SEC", "title": "Ssh Tunnel Timeout Sec", "description": ": Timeout (seconds) for tunnel connection (open_channel timeout)", "type": "number", "category": "performance", "default": 10.0, "env_var": "SUPERSET__SSH_TUNNEL_TIMEOUT_SEC", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "STORE_CACHE_KEYS_IN_METADATA_DB", "title": "Store Cache Keys In Metadata Db", "description": "store cache keys by datasource UID (via CacheKey) for custom processing/invalidation", "type": "boolean", "category": "performance", "default": false, "env_var": "SUPERSET__STORE_CACHE_KEYS_IN_METADATA_DB", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SUPERSET_DASHBOARD_PERIODICAL_REFRESH_LIMIT", "title": "Superset Dashboard Periodical Refresh Limit", "description": "this 2 settings are used by dashboard period force refresh feature When user choose auto force refresh frequency < SUPERSET_DASHBOARD_PERIODICAL_REFRESH_LIMIT they will see warning message in the Refresh Interval Modal. please check PR #9886", "type": "integer", "category": "performance", "default": 0, "env_var": "SUPERSET__SUPERSET_DASHBOARD_PERIODICAL_REFRESH_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SUPERSET_DASHBOARD_POSITION_DATA_LIMIT", "title": "Superset Dashboard Position Data Limit", "description": "", "type": "integer", "category": "performance", "default": 65535, "env_var": "SUPERSET__SUPERSET_DASHBOARD_POSITION_DATA_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "SUPERSET_WEBSERVER_TIMEOUT", "title": "Superset Webserver Timeout", "description": "This is an important setting, and should be lower than your [load balancer / proxy / envoy / kong / ...] timeout settings. You should also make sure to configure your WSGI server (gunicorn, nginx, apache, ...) timeout setting to be <= to this setting", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__SUPERSET_WEBSERVER_TIMEOUT", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "TEST_DATABASE_CONNECTION_TIMEOUT", "title": "Test Database Connection Timeout", "description": "When adding a new database we try to connect to it. Depending on which parameters are incorrect this could take a couple minutes, until the SQLAlchemy driver pinging the database times out. Instead of relying on the driver timeout we can specify a shorter one here.", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__TEST_DATABASE_CONNECTION_TIMEOUT", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "THUMBNAIL_ERROR_CACHE_TTL", "title": "Thumbnail Error Cache Ttl", "description": "", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__THUMBNAIL_ERROR_CACHE_TTL", "nested_example": null, "impact": "medium", "requires_restart": false }, { "key": "WTF_CSRF_TIME_LIMIT", "title": "Wtf Csrf Time Limit", "description": "CSRF token timeout, set to None for a token that never expires", "type": "string", "category": "performance", "default": "", "env_var": "SUPERSET__WTF_CSRF_TIME_LIMIT", "nested_example": null, "impact": "medium", "requires_restart": false } ], "database": [ { "key": "ALERT_REPORTS_QUERY_EXECUTION_MAX_TRIES", "title": "Alert Reports Query Execution Max Tries", "description": "Max tries to run queries to prevent false errors caused by transient errors being returned to users. Set to a value >1 to enable retries.", "type": "integer", "category": "database", "default": 1, "env_var": "SUPERSET__ALERT_REPORTS_QUERY_EXECUTION_MAX_TRIES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DATABASE_OAUTH2_JWT_ALGORITHM", "title": "Database Oauth2 Jwt Algorithm", "description": "OAuth2 state is encoded in a JWT using the alogorithm below.", "type": "string", "category": "database", "default": "HS256", "env_var": "SUPERSET__DATABASE_OAUTH2_JWT_ALGORITHM", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "DB_CONNECTION_MUTATOR", "title": "Db Connection Mutator", "description": "uri.username = user.email return uri, params Note that the returned uri and params are passed directly to sqlalchemy's as such `create_engine(url, **params)`", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__DB_CONNECTION_MUTATOR", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "DEFAULT_DB_ID", "title": "Default Db Id", "description": "The db id here results in selecting this one as a default in SQL Lab", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__DEFAULT_DB_ID", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERY_MANAGER_CLASS", "title": "Global Async Query Manager Class", "description": "Global async query config options. Requires GLOBAL_ASYNC_QUERIES feature flag to be enabled.", "type": "string", "category": "database", "default": "superset.async_events.async_query_manager.AsyncQueryManager", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERY_MANAGER_CLASS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "MUTATE_ALERT_QUERY", "title": "Mutate Alert Query", "description": "Boolean config that determines if alert SQL queries should also be mutated or not.", "type": "boolean", "category": "database", "default": false, "env_var": "SUPERSET__MUTATE_ALERT_QUERY", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "PREVENT_UNSAFE_DB_CONNECTIONS", "title": "Prevent Unsafe Db Connections", "description": "Some sqlalchemy connection strings can open Superset to security risks. Typically these should not be allowed.", "type": "boolean", "category": "database", "default": true, "env_var": "SUPERSET__PREVENT_UNSAFE_DB_CONNECTIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "QUERY_LOGGER", "title": "Query Logger", "description": "client=None, security_manager=None, log_params=None, ): pass", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__QUERY_LOGGER", "nested_example": null, "impact": "low", "requires_restart": false }, { "key": "SQLALCHEMY_CUSTOM_PASSWORD_STORE", "title": "Sqlalchemy Custom Password Store", "description": "example: def lookup_password(url): return 'secret' SQLALCHEMY_CUSTOM_PASSWORD_STORE = lookup_password", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__SQLALCHEMY_CUSTOM_PASSWORD_STORE", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SQLALCHEMY_DATABASE_URI", "title": "Sqlalchemy Database Uri", "description": "The SQLAlchemy connection string.", "type": "string", "category": "database", "default": "", "env_var": "SUPERSET__SQLALCHEMY_DATABASE_URI", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SQLALCHEMY_ENCRYPTED_FIELD_TYPE_ADAPTER", "title": "Sqlalchemy Encrypted Field Type Adapter", "description": ") raise Exception(\"Missing app_config kwarg\") SQLALCHEMY_ENCRYPTED_FIELD_TYPE_ADAPTER = AesGcmEncryptedAdapter", "type": "string", "category": "database", "default": "", "env_var": "SUPERSET__SQLALCHEMY_ENCRYPTED_FIELD_TYPE_ADAPTER", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQLALCHEMY_ENGINE_OPTIONS", "title": "Sqlalchemy Engine Options", "description": "that may be specific to the database engine you are using. Note that you can use this to set the isolation level of your database, as in `SQLALCHEMY_ENGINE_OPTIONS = {\"isolation_level\": \"READ COMMITTED\"}` Also note that we recommend READ COMMITTED for regular operation. Find out more here https://flask-sqlalchemy.palletsprojects.com/en/3.1.x/config/", "type": "object", "category": "database", "default": {}, "env_var": "SUPERSET__SQLALCHEMY_ENGINE_OPTIONS", "nested_example": "SUPERSET__SQLALCHEMY_ENGINE_OPTIONS__example__nested_key=value", "impact": "low", "requires_restart": true }, { "key": "SQLALCHEMY_EXAMPLES_URI", "title": "Sqlalchemy Examples Uri", "description": "URI to database storing the example data, points to SQLALCHEMY_DATABASE_URI by default if set to `None`", "type": "string", "category": "database", "default": "", "env_var": "SUPERSET__SQLALCHEMY_EXAMPLES_URI", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SQLALCHEMY_TRACK_MODIFICATIONS", "title": "Sqlalchemy Track Modifications", "description": "", "type": "boolean", "category": "database", "default": false, "env_var": "SUPERSET__SQLALCHEMY_TRACK_MODIFICATIONS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQLA_TABLE_MUTATOR", "title": "Sqla Table Mutator", "description": "to allow mutating the object with this callback. This can be used to set any properties of the object based on naming conventions and such. You can find examples in the tests. pylint: disable-next=unnecessary-lambda-assignment", "type": "string", "category": "database", "default": "", "env_var": "SUPERSET__SQLA_TABLE_MUTATOR", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQLLAB_DEFAULT_DBID", "title": "Sqllab Default Dbid", "description": "SQLLAB_DEFAULT_DBID", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__SQLLAB_DEFAULT_DBID", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQLLAB_PAYLOAD_MAX_MB", "title": "Sqllab Payload Max Mb", "description": "Max payload size (MB) for SQL Lab to prevent browser hangs with large results.", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__SQLLAB_PAYLOAD_MAX_MB", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQLLAB_SAVE_WARNING_MESSAGE", "title": "Sqllab Save Warning Message", "description": "Adds a warning message on sqllab save query and schedule query modals.", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__SQLLAB_SAVE_WARNING_MESSAGE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQLLAB_SCHEDULE_WARNING_MESSAGE", "title": "Sqllab Schedule Warning Message", "description": "", "type": "null", "category": "database", "default": null, "env_var": "SUPERSET__SQLLAB_SCHEDULE_WARNING_MESSAGE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQL_MAX_ROW", "title": "Sql Max Row", "description": "Maximum number of rows returned for any analytical database query", "type": "integer", "category": "database", "default": 100000, "env_var": "SUPERSET__SQL_MAX_ROW", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SQL_VALIDATORS_BY_ENGINE", "title": "Sql Validators By Engine", "description": "Configure which SQL validator to use for each engine", "type": "object", "category": "database", "default": { "presto": "PrestoDBSQLValidator", "postgresql": "PostgreSQLValidator" }, "env_var": "SUPERSET__SQL_VALIDATORS_BY_ENGINE", "nested_example": "SUPERSET__SQL_VALIDATORS_BY_ENGINE__example__nested_key=value", "impact": "low", "requires_restart": true } ], "features": [ { "key": "ENABLE_CHUNK_ENCODING", "title": "Enable Chunk Encoding", "description": "", "type": "boolean", "category": "features", "default": false, "env_var": "SUPERSET__ENABLE_CHUNK_ENCODING", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ENABLE_CORS", "title": "Enable Cors", "description": "CORS Options NOTE: enabling this requires installing the cors-related python dependencies `pip install .[cors]` or `pip install apache_superset[cors]`, depending", "type": "boolean", "category": "features", "default": false, "env_var": "SUPERSET__ENABLE_CORS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ENABLE_PROXY_FIX", "title": "Enable Proxy Fix", "description": "Use all X-Forwarded headers when ENABLE_PROXY_FIX is True. When proxying to a different port, set \"x_port\" to 0 to avoid downstream issues.", "type": "boolean", "category": "features", "default": false, "env_var": "SUPERSET__ENABLE_PROXY_FIX", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "ENABLE_TIME_ROTATE", "title": "Enable Time Rotate", "description": "--------------------------------------------------- Enable Time Rotate Log Handler --------------------------------------------------- LOG_LEVEL = DEBUG, INFO, WARNING, ERROR, CRITICAL", "type": "boolean", "category": "features", "default": false, "env_var": "SUPERSET__ENABLE_TIME_ROTATE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "TALISMAN_ENABLED", "title": "Talisman Enabled", "description": "", "type": "boolean", "category": "features", "default": false, "env_var": "SUPERSET__TALISMAN_ENABLED", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "WTF_CSRF_ENABLED", "title": "Wtf Csrf Enabled", "description": "Flask-WTF flag for CSRF", "type": "boolean", "category": "features", "default": true, "env_var": "SUPERSET__WTF_CSRF_ENABLED", "nested_example": null, "impact": "low", "requires_restart": true } ], "async": [ { "key": "CELERY_BEAT_SCHEDULER_EXPIRES", "title": "Celery Beat Scheduler Expires", "description": "This is used as a workaround for the alerts & reports scheduler task to get the time celery beat triggered it, see https://github.com/celery/celery/issues/6974 for details", "type": "string", "category": "async", "default": "", "env_var": "SUPERSET__CELERY_BEAT_SCHEDULER_EXPIRES", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_JWT_COOKIE_DOMAIN", "title": "Global Async Queries Jwt Cookie Domain", "description": "", "type": "null", "category": "async", "default": null, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_JWT_COOKIE_DOMAIN", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_JWT_COOKIE_NAME", "title": "Global Async Queries Jwt Cookie Name", "description": "", "type": "string", "category": "async", "default": "async-token", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_JWT_COOKIE_NAME", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_JWT_COOKIE_SECURE", "title": "Global Async Queries Jwt Cookie Secure", "description": "", "type": "boolean", "category": "async", "default": false, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_JWT_COOKIE_SECURE", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_JWT_SECRET", "title": "Global Async Queries Jwt Secret", "description": "", "type": "string", "category": "async", "default": "test-secret-change-me", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_JWT_SECRET", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_POLLING_DELAY", "title": "Global Async Queries Polling Delay", "description": "", "type": "string", "category": "async", "default": "", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_POLLING_DELAY", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_REDIS_STREAM_PREFIX", "title": "Global Async Queries Redis Stream Prefix", "description": "", "type": "string", "category": "async", "default": "async-events-", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_REDIS_STREAM_PREFIX", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_REGISTER_REQUEST_HANDLERS", "title": "Global Async Queries Register Request Handlers", "description": "", "type": "boolean", "category": "async", "default": true, "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_REGISTER_REQUEST_HANDLERS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "GLOBAL_ASYNC_QUERIES_WEBSOCKET_URL", "title": "Global Async Queries Websocket Url", "description": "", "type": "string", "category": "async", "default": "ws://127.0.0.1:8080/", "env_var": "SUPERSET__GLOBAL_ASYNC_QUERIES_WEBSOCKET_URL", "nested_example": null, "impact": "high", "requires_restart": true } ], "email": [ { "key": "EMAIL_PAGE_RENDER_WAIT", "title": "Email Page Render Wait", "description": "Time selenium will wait for the page to load and render for the email report.", "type": "string", "category": "email", "default": "", "env_var": "SUPERSET__EMAIL_PAGE_RENDER_WAIT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "EMAIL_REPORTS_CTA", "title": "Email Reports Cta", "description": "The text for call-to-action link in Alerts & Reports emails", "type": "string", "category": "email", "default": "Explore in Superset", "env_var": "SUPERSET__EMAIL_REPORTS_CTA", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "EMAIL_REPORTS_SUBJECT_PREFIX", "title": "Email Reports Subject Prefix", "description": "A custom prefix to use on all Alerts & Reports emails", "type": "string", "category": "email", "default": "[Report] ", "env_var": "SUPERSET__EMAIL_REPORTS_SUBJECT_PREFIX", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_HOST", "title": "Smtp Host", "description": "smtp server configuration", "type": "string", "category": "email", "default": "localhost", "env_var": "SUPERSET__SMTP_HOST", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_MAIL_FROM", "title": "Smtp Mail From", "description": "", "type": "string", "category": "email", "default": "superset@superset.com", "env_var": "SUPERSET__SMTP_MAIL_FROM", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_PASSWORD", "title": "Smtp Password", "description": "", "type": "string", "category": "email", "default": "superset", "env_var": "SUPERSET__SMTP_PASSWORD", "nested_example": null, "impact": "high", "requires_restart": true }, { "key": "SMTP_PORT", "title": "Smtp Port", "description": "", "type": "integer", "category": "email", "default": 25, "env_var": "SUPERSET__SMTP_PORT", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_SSL", "title": "Smtp Ssl", "description": "", "type": "boolean", "category": "email", "default": false, "env_var": "SUPERSET__SMTP_SSL", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_STARTTLS", "title": "Smtp Starttls", "description": "", "type": "boolean", "category": "email", "default": true, "env_var": "SUPERSET__SMTP_STARTTLS", "nested_example": null, "impact": "low", "requires_restart": true }, { "key": "SMTP_USER", "title": "Smtp User", "description": "", "type": "string", "category": "email", "default": "superset", "env_var": "SUPERSET__SMTP_USER", "nested_example": null, "impact": "low", "requires_restart": true } ] }, "categories": [ "logging", "security", "general", "ui", "performance", "database", "features", "async", "email" ] }