deploying docs: feat: docker-compose to work off repo Dockerfile (#27434) (apache/superset@b1adede1ee670ad800c07aeb76f2f73799228960)
diff --git a/404.html b/404.html
index 24cc71e..d158c5d 100644
--- a/404.html
+++ b/404.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/935f2afb.91c5a07a.js b/assets/js/935f2afb.835ea211.js
similarity index 88%
rename from assets/js/935f2afb.91c5a07a.js
rename to assets/js/935f2afb.835ea211.js
index 478a1df..433c886 100644
--- a/assets/js/935f2afb.91c5a07a.js
+++ b/assets/js/935f2afb.835ea211.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[5696],{35988:a=>{a.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Introduction","href":"/docs/intro","docId":"intro"},{"type":"link","label":"Quickstart","href":"/docs/quickstart","docId":"quickstart"},{"type":"category","label":"Installation and Configuration","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Installing Locally Using Docker Compose","href":"/docs/installation/installing-superset-using-docker-compose","docId":"installation/installing-superset-using-docker-compose"},{"type":"link","label":"Installing from PyPI","href":"/docs/installation/installing-superset-from-pypi","docId":"installation/installing-superset-from-pypi"},{"type":"link","label":"Installing on Kubernetes","href":"/docs/installation/running-on-kubernetes","docId":"installation/running-on-kubernetes"},{"type":"link","label":"Configuring Superset","href":"/docs/installation/configuring-superset","docId":"installation/configuring-superset"},{"type":"link","label":"Additional Networking Settings","href":"/docs/installation/networking-settings","docId":"installation/networking-settings"},{"type":"link","label":"Caching","href":"/docs/installation/cache","docId":"installation/cache"},{"type":"link","label":"Event Logging","href":"/docs/installation/event-logging","docId":"installation/event-logging"},{"type":"link","label":"Upgrading Superset","href":"/docs/installation/upgrading-superset","docId":"installation/upgrading-superset"},{"type":"link","label":"Async Queries via Celery","href":"/docs/installation/async-queries-celery","docId":"installation/async-queries-celery"},{"type":"link","label":"Alerts and Reports","href":"/docs/installation/alerts-reports","docId":"installation/alerts-reports"},{"type":"link","label":"SQL Templating","href":"/docs/installation/sql-templating","docId":"installation/sql-templating"},{"type":"link","label":"Setup SSH Tunneling","href":"/docs/installation/setup-ssh-tunneling","docId":"installation/setup-ssh-tunneling"},{"type":"link","label":"Docker builds, images and tags","href":"/docs/installation/docker","docId":"installation/docker"}]},{"type":"category","label":"Creating Charts and Dashboards","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Creating Your First Dashboard","href":"/docs/creating-charts-dashboards/creating-your-first-dashboard","docId":"creating-charts-dashboards/creating-your-first-dashboard"},{"type":"link","label":"Exploring Data in Superset","href":"/docs/creating-charts-dashboards/exploring-data","docId":"creating-charts-dashboards/exploring-data"}]},{"type":"category","label":"Connecting to Databases","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Installing Database Drivers","href":"/docs/databases/installing-database-drivers","docId":"databases/installing-database-drivers"},{"type":"link","label":"Adding New Drivers in Docker","href":"/docs/databases/docker-add-drivers","docId":"databases/docker-add-drivers"},{"type":"link","label":"Using Database Connection UI","href":"/docs/databases/db-connection-ui","docId":"databases/db-connection-ui"},{"type":"link","label":"Amazon Athena","href":"/docs/databases/athena","docId":"databases/athena"},{"type":"link","label":"Amazon DynamoDB","href":"/docs/databases/dynamodb","docId":"databases/dynamodb"},{"type":"link","label":"Apache Doris","href":"/docs/databases/doris","docId":"databases/doris"},{"type":"link","label":"Amazon Redshift","href":"/docs/databases/redshift","docId":"databases/redshift"},{"type":"link","label":"StarRocks","href":"/docs/databases/starrocks","docId":"databases/starrocks"},{"type":"link","label":"Apache Drill","href":"/docs/databases/drill","docId":"databases/drill"},{"type":"link","label":"Apache Druid","href":"/docs/databases/druid","docId":"databases/druid"},{"type":"link","label":"Apache Hive","href":"/docs/databases/hive","docId":"databases/hive"},{"type":"link","label":"Apache Impala","href":"/docs/databases/impala","docId":"databases/impala"},{"type":"link","label":"Ascend.io","href":"/docs/databases/ascend","docId":"databases/ascend"},{"type":"link","label":"Apache Kylin","href":"/docs/databases/kylin","docId":"databases/kylin"},{"type":"link","label":"Apache Pinot","href":"/docs/databases/pinot","docId":"databases/pinot"},{"type":"link","label":"Apache Solr","href":"/docs/databases/solr","docId":"databases/solr"},{"type":"link","label":"Apache Spark SQL","href":"/docs/databases/spark-sql","docId":"databases/spark-sql"},{"type":"link","label":"ClickHouse","href":"/docs/databases/clickhouse","docId":"databases/clickhouse"},{"type":"link","label":"CockroachDB","href":"/docs/databases/cockroachdb","docId":"databases/cockroachdb"},{"type":"link","label":"RisingWave","href":"/docs/databases/risingwave","docId":"databases/risingwave"},{"type":"link","label":"Dremio","href":"/docs/databases/dremio","docId":"databases/dremio"},{"type":"link","label":"Elasticsearch","href":"/docs/databases/elasticsearch","docId":"databases/elasticsearch"},{"type":"link","label":"Exasol","href":"/docs/databases/exasol","docId":"databases/exasol"},{"type":"link","label":"Google BigQuery","href":"/docs/databases/bigquery","docId":"databases/bigquery"},{"type":"link","label":"Ocient DB","href":"/docs/databases/ocient","docId":"databases/ocient"},{"type":"link","label":"Google Sheets","href":"/docs/databases/google-sheets","docId":"databases/google-sheets"},{"type":"link","label":"Hana","href":"/docs/databases/hana","docId":"databases/hana"},{"type":"link","label":"IBM DB2","href":"/docs/databases/ibm-db2","docId":"databases/ibm-db2"},{"type":"link","label":"IBM Netezza Performance Server","href":"/docs/databases/netezza","docId":"databases/netezza"},{"type":"link","label":"MySQL","href":"/docs/databases/mysql","docId":"databases/mysql"},{"type":"link","label":"Oracle","href":"/docs/databases/oracle","docId":"databases/oracle"},{"type":"link","label":"Postgres","href":"/docs/databases/postgres","docId":"databases/postgres"},{"type":"link","label":"Presto","href":"/docs/databases/presto","docId":"databases/presto"},{"type":"link","label":"Snowflake","href":"/docs/databases/snowflake","docId":"databases/snowflake"},{"type":"link","label":"Microsoft SQL Server","href":"/docs/databases/sql-server","docId":"databases/sql-server"},{"type":"link","label":"Teradata","href":"/docs/databases/teradata","docId":"databases/teradata"},{"type":"link","label":"TimescaleDB","href":"/docs/databases/timescaledb","docId":"databases/timescaledb"},{"type":"link","label":"Vertica","href":"/docs/databases/vertica","docId":"databases/vertica"},{"type":"link","label":"Hologres","href":"/docs/databases/hologres","docId":"databases/hologres"},{"type":"link","label":"Trino","href":"/docs/databases/trino","docId":"databases/trino"},{"type":"link","label":"Rockset","href":"/docs/databases/rockset","docId":"databases/rockset"},{"type":"link","label":"CrateDB","href":"/docs/databases/cratedb","docId":"databases/cratedb"},{"type":"link","label":"Databricks","href":"/docs/databases/databricks","docId":"databases/databricks"},{"type":"link","label":"Firebird","href":"/docs/databases/firebird","docId":"databases/firebird"},{"type":"link","label":"YugabyteDB","href":"/docs/databases/yugabytedb","docId":"databases/yugabytedb"},{"type":"link","label":"Databend","href":"/docs/databases/databend","docId":"databases/databend"},{"type":"link","label":"Firebolt","href":"/docs/databases/firebolt","docId":"databases/firebolt"},{"type":"link","label":"Extra Database Settings","href":"/docs/databases/extra-settings","docId":"databases/extra-settings"},{"type":"link","label":"kusto","href":"/docs/databases/kusto","docId":"databases/kusto"},{"type":"link","label":"Querying across databases","href":"/docs/databases/meta-database","docId":"databases/meta-database"}]},{"type":"category","label":"Miscellaneous","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Country Map Tools","href":"/docs/miscellaneous/country-map-tools","docId":"miscellaneous/country-map-tools"},{"type":"link","label":"Timezones","href":"/docs/miscellaneous/timezones","docId":"miscellaneous/timezones"},{"type":"link","label":"Importing and Exporting Datasources","href":"/docs/miscellaneous/importing-exporting-datasources","docId":"miscellaneous/importing-exporting-datasources"},{"type":"link","label":"Issue Codes","href":"/docs/miscellaneous/issue-codes","docId":"miscellaneous/issue-codes"},{"type":"link","label":"Chart Parameters Reference","href":"/docs/miscellaneous/chart-params","docId":"miscellaneous/chart-params"}]},{"type":"category","label":"Contributing","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Contributing to Superset","href":"/docs/contributing/contributing-page","docId":"contributing/contributing-page"},{"type":"link","label":"Types of Contributions","href":"/docs/contributing/types-of-contributions","docId":"contributing/types-of-contributions"},{"type":"link","label":"Pull Request Guidelines","href":"/docs/contributing/pull-request-guidelines","docId":"contributing/pull-request-guidelines"},{"type":"link","label":"Style Guide","href":"/docs/contributing/style-guide","docId":"contributing/style-guide"},{"type":"link","label":"Running a Local Flask Backend","href":"/docs/contributing/local-backend","docId":"contributing/local-backend"},{"type":"link","label":"Pre-commit Hooks and Linting","href":"/docs/contributing/hooks-and-linting","docId":"contributing/hooks-and-linting"},{"type":"link","label":"Conventions and Typing","href":"/docs/contributing/conventions-and-typing","docId":"contributing/conventions-and-typing"},{"type":"link","label":"Testing","href":"/docs/contributing/testing-locally","docId":"contributing/testing-locally"},{"type":"link","label":"Translating","href":"/docs/contributing/translations","docId":"contributing/translations"},{"type":"link","label":"Creating Visualization Plugins","href":"/docs/contributing/creating-viz-plugins","docId":"contributing/creating-viz-plugins"}]},{"type":"link","label":"Frequently Asked Questions","href":"/docs/frequently-asked-questions","docId":"frequently-asked-questions"},{"type":"category","label":"Security","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"CVEs fixed by release","href":"/docs/security/cves","docId":"security/cves"}],"href":"/docs/security/"},{"type":"link","label":"API","href":"/docs/api","docId":"api"}]},"docs":{"api":{"id":"api","title":"API","description":"API","sidebar":"tutorialSidebar"},"contributing/contributing-page":{"id":"contributing/contributing-page","title":"Contributing to Superset","description":"Contributing to Superset","sidebar":"tutorialSidebar"},"contributing/conventions-and-typing":{"id":"contributing/conventions-and-typing","title":"Conventions and Typing","description":"Conventions","sidebar":"tutorialSidebar"},"contributing/creating-viz-plugins":{"id":"contributing/creating-viz-plugins","title":"Creating Visualization Plugins","description":"Creating Visualization Plugins","sidebar":"tutorialSidebar"},"contributing/hooks-and-linting":{"id":"contributing/hooks-and-linting","title":"Pre-commit Hooks and Linting","description":"Git Hooks","sidebar":"tutorialSidebar"},"contributing/local-backend":{"id":"contributing/local-backend","title":"Running a Local Flask Backend","description":"Flask server","sidebar":"tutorialSidebar"},"contributing/pull-request-guidelines":{"id":"contributing/pull-request-guidelines","title":"Pull Request Guidelines","description":"Pull Request Guidelines","sidebar":"tutorialSidebar"},"contributing/style-guide":{"id":"contributing/style-guide","title":"Style Guide","description":"Design Guidelines","sidebar":"tutorialSidebar"},"contributing/testing-locally":{"id":"contributing/testing-locally","title":"Testing","description":"Testing","sidebar":"tutorialSidebar"},"contributing/translations":{"id":"contributing/translations","title":"Translating","description":"Translating","sidebar":"tutorialSidebar"},"contributing/types-of-contributions":{"id":"contributing/types-of-contributions","title":"Types of Contributions","description":"Types of Contributions","sidebar":"tutorialSidebar"},"creating-charts-dashboards/creating-your-first-dashboard":{"id":"creating-charts-dashboards/creating-your-first-dashboard","title":"Creating Your First Dashboard","description":"Creating Your First Dashboard","sidebar":"tutorialSidebar"},"creating-charts-dashboards/exploring-data":{"id":"creating-charts-dashboards/exploring-data","title":"Exploring Data in Superset","description":"Exploring Data in Superset","sidebar":"tutorialSidebar"},"databases/ascend":{"id":"databases/ascend","title":"Ascend.io","description":"Ascend.io","sidebar":"tutorialSidebar"},"databases/athena":{"id":"databases/athena","title":"Amazon Athena","description":"AWS Athena","sidebar":"tutorialSidebar"},"databases/bigquery":{"id":"databases/bigquery","title":"Google BigQuery","description":"Google BigQuery","sidebar":"tutorialSidebar"},"databases/clickhouse":{"id":"databases/clickhouse","title":"ClickHouse","description":"ClickHouse","sidebar":"tutorialSidebar"},"databases/cockroachdb":{"id":"databases/cockroachdb","title":"CockroachDB","description":"CockroachDB","sidebar":"tutorialSidebar"},"databases/cratedb":{"id":"databases/cratedb","title":"CrateDB","description":"CrateDB","sidebar":"tutorialSidebar"},"databases/databend":{"id":"databases/databend","title":"Databend","description":"Databend","sidebar":"tutorialSidebar"},"databases/databricks":{"id":"databases/databricks","title":"Databricks","description":"Databricks","sidebar":"tutorialSidebar"},"databases/db-connection-ui":{"id":"databases/db-connection-ui","title":"Using Database Connection UI","description":"Here is the documentation on how to leverage the new DB Connection UI. This will provide admins the ability to enhance the UX for users who want to connect to new databases.","sidebar":"tutorialSidebar"},"databases/docker-add-drivers":{"id":"databases/docker-add-drivers","title":"Adding New Drivers in Docker","description":"Adding New Database Drivers in Docker","sidebar":"tutorialSidebar"},"databases/doris":{"id":"databases/doris","title":"Apache Doris","description":"Doris","sidebar":"tutorialSidebar"},"databases/dremio":{"id":"databases/dremio","title":"Dremio","description":"Dremio","sidebar":"tutorialSidebar"},"databases/drill":{"id":"databases/drill","title":"Apache Drill","description":"Apache Drill","sidebar":"tutorialSidebar"},"databases/druid":{"id":"databases/druid","title":"Apache Druid","description":"Apache Druid","sidebar":"tutorialSidebar"},"databases/dynamodb":{"id":"databases/dynamodb","title":"Amazon DynamoDB","description":"AWS DynamoDB","sidebar":"tutorialSidebar"},"databases/elasticsearch":{"id":"databases/elasticsearch","title":"Elasticsearch","description":"Elasticsearch","sidebar":"tutorialSidebar"},"databases/exasol":{"id":"databases/exasol","title":"Exasol","description":"Exasol","sidebar":"tutorialSidebar"},"databases/extra-settings":{"id":"databases/extra-settings","title":"Extra Database Settings","description":"Extra Database Settings","sidebar":"tutorialSidebar"},"databases/firebird":{"id":"databases/firebird","title":"Firebird","description":"Firebird","sidebar":"tutorialSidebar"},"databases/firebolt":{"id":"databases/firebolt","title":"Firebolt","description":"Firebolt","sidebar":"tutorialSidebar"},"databases/google-sheets":{"id":"databases/google-sheets","title":"Google Sheets","description":"Google Sheets","sidebar":"tutorialSidebar"},"databases/hana":{"id":"databases/hana","title":"Hana","description":"Hana","sidebar":"tutorialSidebar"},"databases/hive":{"id":"databases/hive","title":"Apache Hive","description":"Apache Hive","sidebar":"tutorialSidebar"},"databases/hologres":{"id":"databases/hologres","title":"Hologres","description":"Hologres","sidebar":"tutorialSidebar"},"databases/ibm-db2":{"id":"databases/ibm-db2","title":"IBM DB2","description":"IBM DB2","sidebar":"tutorialSidebar"},"databases/impala":{"id":"databases/impala","title":"Apache Impala","description":"Apache Impala","sidebar":"tutorialSidebar"},"databases/installing-database-drivers":{"id":"databases/installing-database-drivers","title":"Installing Database Drivers","description":"Install Database Drivers","sidebar":"tutorialSidebar"},"databases/kusto":{"id":"databases/kusto","title":"kusto","description":"Kusto","sidebar":"tutorialSidebar"},"databases/kylin":{"id":"databases/kylin","title":"Apache Kylin","description":"Apache Kylin","sidebar":"tutorialSidebar"},"databases/meta-database":{"id":"databases/meta-database","title":"Querying across databases","description":"Querying across databases","sidebar":"tutorialSidebar"},"databases/mysql":{"id":"databases/mysql","title":"MySQL","description":"MySQL","sidebar":"tutorialSidebar"},"databases/netezza":{"id":"databases/netezza","title":"IBM Netezza Performance Server","description":"IBM Netezza Performance Server","sidebar":"tutorialSidebar"},"databases/ocient":{"id":"databases/ocient","title":"Ocient DB","description":"Ocient DB","sidebar":"tutorialSidebar"},"databases/oracle":{"id":"databases/oracle","title":"Oracle","description":"Oracle","sidebar":"tutorialSidebar"},"databases/pinot":{"id":"databases/pinot","title":"Apache Pinot","description":"Apache Pinot","sidebar":"tutorialSidebar"},"databases/postgres":{"id":"databases/postgres","title":"Postgres","description":"Postgres","sidebar":"tutorialSidebar"},"databases/presto":{"id":"databases/presto","title":"Presto","description":"Presto","sidebar":"tutorialSidebar"},"databases/redshift":{"id":"databases/redshift","title":"Amazon Redshift","description":"AWS Redshift","sidebar":"tutorialSidebar"},"databases/risingwave":{"id":"databases/risingwave","title":"RisingWave","description":"RisingWave","sidebar":"tutorialSidebar"},"databases/rockset":{"id":"databases/rockset","title":"Rockset","description":"Rockset","sidebar":"tutorialSidebar"},"databases/snowflake":{"id":"databases/snowflake","title":"Snowflake","description":"Snowflake","sidebar":"tutorialSidebar"},"databases/solr":{"id":"databases/solr","title":"Apache Solr","description":"Apache Solr","sidebar":"tutorialSidebar"},"databases/spark-sql":{"id":"databases/spark-sql","title":"Apache Spark SQL","description":"Apache Spark SQL","sidebar":"tutorialSidebar"},"databases/sql-server":{"id":"databases/sql-server","title":"Microsoft SQL Server","description":"SQL Server","sidebar":"tutorialSidebar"},"databases/starrocks":{"id":"databases/starrocks","title":"StarRocks","description":"StarRocks","sidebar":"tutorialSidebar"},"databases/teradata":{"id":"databases/teradata","title":"Teradata","description":"Teradata","sidebar":"tutorialSidebar"},"databases/timescaledb":{"id":"databases/timescaledb","title":"TimescaleDB","description":"TimescaleDB","sidebar":"tutorialSidebar"},"databases/trino":{"id":"databases/trino","title":"Trino","description":"Trino","sidebar":"tutorialSidebar"},"databases/vertica":{"id":"databases/vertica","title":"Vertica","description":"Vertica","sidebar":"tutorialSidebar"},"databases/yugabytedb":{"id":"databases/yugabytedb","title":"YugabyteDB","description":"YugabyteDB","sidebar":"tutorialSidebar"},"frequently-asked-questions":{"id":"frequently-asked-questions","title":"Frequently Asked Questions","description":"Frequently Asked Questions","sidebar":"tutorialSidebar"},"installation/alerts-reports":{"id":"installation/alerts-reports","title":"Alerts and Reports","description":"Alerts and Reports","sidebar":"tutorialSidebar"},"installation/async-queries-celery":{"id":"installation/async-queries-celery","title":"Async Queries via Celery","description":"Async Queries via Celery","sidebar":"tutorialSidebar"},"installation/cache":{"id":"installation/cache","title":"Caching","description":"Caching","sidebar":"tutorialSidebar"},"installation/configuring-superset":{"id":"installation/configuring-superset","title":"Configuring Superset","description":"Configuring Superset","sidebar":"tutorialSidebar"},"installation/docker":{"id":"installation/docker","title":"Docker builds, images and tags","description":"The Apache Superset community extensively uses Docker for development, release,","sidebar":"tutorialSidebar"},"installation/event-logging":{"id":"installation/event-logging","title":"Event Logging","description":"Logging","sidebar":"tutorialSidebar"},"installation/installing-superset-from-pypi":{"id":"installation/installing-superset-from-pypi","title":"Installing from PyPI","description":"Installing Superset from PyPI","sidebar":"tutorialSidebar"},"installation/installing-superset-using-docker-compose":{"id":"installation/installing-superset-using-docker-compose","title":"Installing Locally Using Docker Compose","description":"Installing Superset Locally Using Docker Compose","sidebar":"tutorialSidebar"},"installation/networking-settings":{"id":"installation/networking-settings","title":"Additional Networking Settings","description":"Additional Networking Settings","sidebar":"tutorialSidebar"},"installation/running-on-kubernetes":{"id":"installation/running-on-kubernetes","title":"Installing on Kubernetes","description":"Installing on Kubernetes","sidebar":"tutorialSidebar"},"installation/setup-ssh-tunneling":{"id":"installation/setup-ssh-tunneling","title":"Setup SSH Tunneling","description":"SSH Tunneling","sidebar":"tutorialSidebar"},"installation/sql-templating":{"id":"installation/sql-templating","title":"SQL Templating","description":"SQL Templating","sidebar":"tutorialSidebar"},"installation/upgrading-superset":{"id":"installation/upgrading-superset","title":"Upgrading Superset","description":"Upgrading Superset","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Introduction","description":"What is Apache Superset?","sidebar":"tutorialSidebar"},"miscellaneous/chart-params":{"id":"miscellaneous/chart-params","title":"Chart Parameters Reference","description":"Chart Parameters","sidebar":"tutorialSidebar"},"miscellaneous/country-map-tools":{"id":"miscellaneous/country-map-tools","title":"Country Map Tools","description":"The Country Map Visualization","sidebar":"tutorialSidebar"},"miscellaneous/importing-exporting-datasources":{"id":"miscellaneous/importing-exporting-datasources","title":"Importing and Exporting Datasources","description":"Importing and Exporting Datasources","sidebar":"tutorialSidebar"},"miscellaneous/issue-codes":{"id":"miscellaneous/issue-codes","title":"Issue Codes","description":"This page lists issue codes that may be displayed in","sidebar":"tutorialSidebar"},"miscellaneous/timezones":{"id":"miscellaneous/timezones","title":"Timezones","description":"Timezones","sidebar":"tutorialSidebar"},"quickstart":{"id":"quickstart","title":"Quickstart","description":"Ready to give Apache Superset a try? This quickstart will help you run Superset on your local machine in","sidebar":"tutorialSidebar"},"security/cves":{"id":"security/cves","title":"CVEs fixed by release","description":"Version 3.0.4, 3.1.1","sidebar":"tutorialSidebar"},"security/security":{"id":"security/security","title":"Security","description":"Authentication and authorization in Superset is handled by Flask AppBuilder (FAB), an application development framework","sidebar":"tutorialSidebar"}}}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[5696],{35988:a=>{a.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Introduction","href":"/docs/intro","docId":"intro"},{"type":"link","label":"Quickstart","href":"/docs/quickstart","docId":"quickstart"},{"type":"category","label":"Installation and Configuration","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Installing Locally Using Docker Compose","href":"/docs/installation/installing-superset-using-docker-compose","docId":"installation/installing-superset-using-docker-compose"},{"type":"link","label":"Installing from PyPI","href":"/docs/installation/installing-superset-from-pypi","docId":"installation/installing-superset-from-pypi"},{"type":"link","label":"Installing on Kubernetes","href":"/docs/installation/running-on-kubernetes","docId":"installation/running-on-kubernetes"},{"type":"link","label":"Configuring Superset","href":"/docs/installation/configuring-superset","docId":"installation/configuring-superset"},{"type":"link","label":"Additional Networking Settings","href":"/docs/installation/networking-settings","docId":"installation/networking-settings"},{"type":"link","label":"Caching","href":"/docs/installation/cache","docId":"installation/cache"},{"type":"link","label":"Event Logging","href":"/docs/installation/event-logging","docId":"installation/event-logging"},{"type":"link","label":"Upgrading Superset","href":"/docs/installation/upgrading-superset","docId":"installation/upgrading-superset"},{"type":"link","label":"Async Queries via Celery","href":"/docs/installation/async-queries-celery","docId":"installation/async-queries-celery"},{"type":"link","label":"Alerts and Reports","href":"/docs/installation/alerts-reports","docId":"installation/alerts-reports"},{"type":"link","label":"SQL Templating","href":"/docs/installation/sql-templating","docId":"installation/sql-templating"},{"type":"link","label":"Setup SSH Tunneling","href":"/docs/installation/setup-ssh-tunneling","docId":"installation/setup-ssh-tunneling"},{"type":"link","label":"Docker builds, images and tags","href":"/docs/installation/docker","docId":"installation/docker"}]},{"type":"category","label":"Creating Charts and Dashboards","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Creating Your First Dashboard","href":"/docs/creating-charts-dashboards/creating-your-first-dashboard","docId":"creating-charts-dashboards/creating-your-first-dashboard"},{"type":"link","label":"Exploring Data in Superset","href":"/docs/creating-charts-dashboards/exploring-data","docId":"creating-charts-dashboards/exploring-data"}]},{"type":"category","label":"Connecting to Databases","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Installing Database Drivers","href":"/docs/databases/installing-database-drivers","docId":"databases/installing-database-drivers"},{"type":"link","label":"Adding New Drivers in Docker","href":"/docs/databases/docker-add-drivers","docId":"databases/docker-add-drivers"},{"type":"link","label":"Using Database Connection UI","href":"/docs/databases/db-connection-ui","docId":"databases/db-connection-ui"},{"type":"link","label":"Amazon Athena","href":"/docs/databases/athena","docId":"databases/athena"},{"type":"link","label":"Amazon DynamoDB","href":"/docs/databases/dynamodb","docId":"databases/dynamodb"},{"type":"link","label":"Apache Doris","href":"/docs/databases/doris","docId":"databases/doris"},{"type":"link","label":"Amazon Redshift","href":"/docs/databases/redshift","docId":"databases/redshift"},{"type":"link","label":"StarRocks","href":"/docs/databases/starrocks","docId":"databases/starrocks"},{"type":"link","label":"Apache Drill","href":"/docs/databases/drill","docId":"databases/drill"},{"type":"link","label":"Apache Druid","href":"/docs/databases/druid","docId":"databases/druid"},{"type":"link","label":"Apache Hive","href":"/docs/databases/hive","docId":"databases/hive"},{"type":"link","label":"Apache Impala","href":"/docs/databases/impala","docId":"databases/impala"},{"type":"link","label":"Ascend.io","href":"/docs/databases/ascend","docId":"databases/ascend"},{"type":"link","label":"Apache Kylin","href":"/docs/databases/kylin","docId":"databases/kylin"},{"type":"link","label":"Apache Pinot","href":"/docs/databases/pinot","docId":"databases/pinot"},{"type":"link","label":"Apache Solr","href":"/docs/databases/solr","docId":"databases/solr"},{"type":"link","label":"Apache Spark SQL","href":"/docs/databases/spark-sql","docId":"databases/spark-sql"},{"type":"link","label":"ClickHouse","href":"/docs/databases/clickhouse","docId":"databases/clickhouse"},{"type":"link","label":"CockroachDB","href":"/docs/databases/cockroachdb","docId":"databases/cockroachdb"},{"type":"link","label":"RisingWave","href":"/docs/databases/risingwave","docId":"databases/risingwave"},{"type":"link","label":"Dremio","href":"/docs/databases/dremio","docId":"databases/dremio"},{"type":"link","label":"Elasticsearch","href":"/docs/databases/elasticsearch","docId":"databases/elasticsearch"},{"type":"link","label":"Exasol","href":"/docs/databases/exasol","docId":"databases/exasol"},{"type":"link","label":"Google BigQuery","href":"/docs/databases/bigquery","docId":"databases/bigquery"},{"type":"link","label":"Ocient DB","href":"/docs/databases/ocient","docId":"databases/ocient"},{"type":"link","label":"Google Sheets","href":"/docs/databases/google-sheets","docId":"databases/google-sheets"},{"type":"link","label":"Hana","href":"/docs/databases/hana","docId":"databases/hana"},{"type":"link","label":"IBM DB2","href":"/docs/databases/ibm-db2","docId":"databases/ibm-db2"},{"type":"link","label":"IBM Netezza Performance Server","href":"/docs/databases/netezza","docId":"databases/netezza"},{"type":"link","label":"MySQL","href":"/docs/databases/mysql","docId":"databases/mysql"},{"type":"link","label":"Oracle","href":"/docs/databases/oracle","docId":"databases/oracle"},{"type":"link","label":"Postgres","href":"/docs/databases/postgres","docId":"databases/postgres"},{"type":"link","label":"Presto","href":"/docs/databases/presto","docId":"databases/presto"},{"type":"link","label":"Snowflake","href":"/docs/databases/snowflake","docId":"databases/snowflake"},{"type":"link","label":"Microsoft SQL Server","href":"/docs/databases/sql-server","docId":"databases/sql-server"},{"type":"link","label":"Teradata","href":"/docs/databases/teradata","docId":"databases/teradata"},{"type":"link","label":"TimescaleDB","href":"/docs/databases/timescaledb","docId":"databases/timescaledb"},{"type":"link","label":"Vertica","href":"/docs/databases/vertica","docId":"databases/vertica"},{"type":"link","label":"Hologres","href":"/docs/databases/hologres","docId":"databases/hologres"},{"type":"link","label":"Trino","href":"/docs/databases/trino","docId":"databases/trino"},{"type":"link","label":"Rockset","href":"/docs/databases/rockset","docId":"databases/rockset"},{"type":"link","label":"CrateDB","href":"/docs/databases/cratedb","docId":"databases/cratedb"},{"type":"link","label":"Databricks","href":"/docs/databases/databricks","docId":"databases/databricks"},{"type":"link","label":"Firebird","href":"/docs/databases/firebird","docId":"databases/firebird"},{"type":"link","label":"YugabyteDB","href":"/docs/databases/yugabytedb","docId":"databases/yugabytedb"},{"type":"link","label":"Databend","href":"/docs/databases/databend","docId":"databases/databend"},{"type":"link","label":"Firebolt","href":"/docs/databases/firebolt","docId":"databases/firebolt"},{"type":"link","label":"Extra Database Settings","href":"/docs/databases/extra-settings","docId":"databases/extra-settings"},{"type":"link","label":"kusto","href":"/docs/databases/kusto","docId":"databases/kusto"},{"type":"link","label":"Querying across databases","href":"/docs/databases/meta-database","docId":"databases/meta-database"}]},{"type":"category","label":"Miscellaneous","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Country Map Tools","href":"/docs/miscellaneous/country-map-tools","docId":"miscellaneous/country-map-tools"},{"type":"link","label":"Timezones","href":"/docs/miscellaneous/timezones","docId":"miscellaneous/timezones"},{"type":"link","label":"Importing and Exporting Datasources","href":"/docs/miscellaneous/importing-exporting-datasources","docId":"miscellaneous/importing-exporting-datasources"},{"type":"link","label":"Issue Codes","href":"/docs/miscellaneous/issue-codes","docId":"miscellaneous/issue-codes"},{"type":"link","label":"Chart Parameters Reference","href":"/docs/miscellaneous/chart-params","docId":"miscellaneous/chart-params"}]},{"type":"category","label":"Contributing","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Contributing to Superset","href":"/docs/contributing/contributing-page","docId":"contributing/contributing-page"},{"type":"link","label":"Types of Contributions","href":"/docs/contributing/types-of-contributions","docId":"contributing/types-of-contributions"},{"type":"link","label":"Pull Request Guidelines","href":"/docs/contributing/pull-request-guidelines","docId":"contributing/pull-request-guidelines"},{"type":"link","label":"Style Guide","href":"/docs/contributing/style-guide","docId":"contributing/style-guide"},{"type":"link","label":"Running a Local Flask Backend","href":"/docs/contributing/local-backend","docId":"contributing/local-backend"},{"type":"link","label":"Pre-commit Hooks and Linting","href":"/docs/contributing/hooks-and-linting","docId":"contributing/hooks-and-linting"},{"type":"link","label":"Conventions and Typing","href":"/docs/contributing/conventions-and-typing","docId":"contributing/conventions-and-typing"},{"type":"link","label":"Testing","href":"/docs/contributing/testing-locally","docId":"contributing/testing-locally"},{"type":"link","label":"Translating","href":"/docs/contributing/translations","docId":"contributing/translations"},{"type":"link","label":"Creating Visualization Plugins","href":"/docs/contributing/creating-viz-plugins","docId":"contributing/creating-viz-plugins"}]},{"type":"link","label":"Frequently Asked Questions","href":"/docs/frequently-asked-questions","docId":"frequently-asked-questions"},{"type":"category","label":"Security","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"CVEs fixed by release","href":"/docs/security/cves","docId":"security/cves"}],"href":"/docs/security/"},{"type":"link","label":"API","href":"/docs/api","docId":"api"}]},"docs":{"api":{"id":"api","title":"API","description":"API","sidebar":"tutorialSidebar"},"contributing/contributing-page":{"id":"contributing/contributing-page","title":"Contributing to Superset","description":"Contributing to Superset","sidebar":"tutorialSidebar"},"contributing/conventions-and-typing":{"id":"contributing/conventions-and-typing","title":"Conventions and Typing","description":"Conventions","sidebar":"tutorialSidebar"},"contributing/creating-viz-plugins":{"id":"contributing/creating-viz-plugins","title":"Creating Visualization Plugins","description":"Creating Visualization Plugins","sidebar":"tutorialSidebar"},"contributing/hooks-and-linting":{"id":"contributing/hooks-and-linting","title":"Pre-commit Hooks and Linting","description":"Git Hooks","sidebar":"tutorialSidebar"},"contributing/local-backend":{"id":"contributing/local-backend","title":"Running a Local Flask Backend","description":"Flask server","sidebar":"tutorialSidebar"},"contributing/pull-request-guidelines":{"id":"contributing/pull-request-guidelines","title":"Pull Request Guidelines","description":"Pull Request Guidelines","sidebar":"tutorialSidebar"},"contributing/style-guide":{"id":"contributing/style-guide","title":"Style Guide","description":"Design Guidelines","sidebar":"tutorialSidebar"},"contributing/testing-locally":{"id":"contributing/testing-locally","title":"Testing","description":"Testing","sidebar":"tutorialSidebar"},"contributing/translations":{"id":"contributing/translations","title":"Translating","description":"Translating","sidebar":"tutorialSidebar"},"contributing/types-of-contributions":{"id":"contributing/types-of-contributions","title":"Types of Contributions","description":"Types of Contributions","sidebar":"tutorialSidebar"},"creating-charts-dashboards/creating-your-first-dashboard":{"id":"creating-charts-dashboards/creating-your-first-dashboard","title":"Creating Your First Dashboard","description":"Creating Your First Dashboard","sidebar":"tutorialSidebar"},"creating-charts-dashboards/exploring-data":{"id":"creating-charts-dashboards/exploring-data","title":"Exploring Data in Superset","description":"Exploring Data in Superset","sidebar":"tutorialSidebar"},"databases/ascend":{"id":"databases/ascend","title":"Ascend.io","description":"Ascend.io","sidebar":"tutorialSidebar"},"databases/athena":{"id":"databases/athena","title":"Amazon Athena","description":"AWS Athena","sidebar":"tutorialSidebar"},"databases/bigquery":{"id":"databases/bigquery","title":"Google BigQuery","description":"Google BigQuery","sidebar":"tutorialSidebar"},"databases/clickhouse":{"id":"databases/clickhouse","title":"ClickHouse","description":"ClickHouse","sidebar":"tutorialSidebar"},"databases/cockroachdb":{"id":"databases/cockroachdb","title":"CockroachDB","description":"CockroachDB","sidebar":"tutorialSidebar"},"databases/cratedb":{"id":"databases/cratedb","title":"CrateDB","description":"CrateDB","sidebar":"tutorialSidebar"},"databases/databend":{"id":"databases/databend","title":"Databend","description":"Databend","sidebar":"tutorialSidebar"},"databases/databricks":{"id":"databases/databricks","title":"Databricks","description":"Databricks","sidebar":"tutorialSidebar"},"databases/db-connection-ui":{"id":"databases/db-connection-ui","title":"Using Database Connection UI","description":"Here is the documentation on how to leverage the new DB Connection UI. This will provide admins the ability to enhance the UX for users who want to connect to new databases.","sidebar":"tutorialSidebar"},"databases/docker-add-drivers":{"id":"databases/docker-add-drivers","title":"Adding New Drivers in Docker","description":"Adding New Database Drivers in Docker","sidebar":"tutorialSidebar"},"databases/doris":{"id":"databases/doris","title":"Apache Doris","description":"Doris","sidebar":"tutorialSidebar"},"databases/dremio":{"id":"databases/dremio","title":"Dremio","description":"Dremio","sidebar":"tutorialSidebar"},"databases/drill":{"id":"databases/drill","title":"Apache Drill","description":"Apache Drill","sidebar":"tutorialSidebar"},"databases/druid":{"id":"databases/druid","title":"Apache Druid","description":"Apache Druid","sidebar":"tutorialSidebar"},"databases/dynamodb":{"id":"databases/dynamodb","title":"Amazon DynamoDB","description":"AWS DynamoDB","sidebar":"tutorialSidebar"},"databases/elasticsearch":{"id":"databases/elasticsearch","title":"Elasticsearch","description":"Elasticsearch","sidebar":"tutorialSidebar"},"databases/exasol":{"id":"databases/exasol","title":"Exasol","description":"Exasol","sidebar":"tutorialSidebar"},"databases/extra-settings":{"id":"databases/extra-settings","title":"Extra Database Settings","description":"Extra Database Settings","sidebar":"tutorialSidebar"},"databases/firebird":{"id":"databases/firebird","title":"Firebird","description":"Firebird","sidebar":"tutorialSidebar"},"databases/firebolt":{"id":"databases/firebolt","title":"Firebolt","description":"Firebolt","sidebar":"tutorialSidebar"},"databases/google-sheets":{"id":"databases/google-sheets","title":"Google Sheets","description":"Google Sheets","sidebar":"tutorialSidebar"},"databases/hana":{"id":"databases/hana","title":"Hana","description":"Hana","sidebar":"tutorialSidebar"},"databases/hive":{"id":"databases/hive","title":"Apache Hive","description":"Apache Hive","sidebar":"tutorialSidebar"},"databases/hologres":{"id":"databases/hologres","title":"Hologres","description":"Hologres","sidebar":"tutorialSidebar"},"databases/ibm-db2":{"id":"databases/ibm-db2","title":"IBM DB2","description":"IBM DB2","sidebar":"tutorialSidebar"},"databases/impala":{"id":"databases/impala","title":"Apache Impala","description":"Apache Impala","sidebar":"tutorialSidebar"},"databases/installing-database-drivers":{"id":"databases/installing-database-drivers","title":"Installing Database Drivers","description":"Install Database Drivers","sidebar":"tutorialSidebar"},"databases/kusto":{"id":"databases/kusto","title":"kusto","description":"Kusto","sidebar":"tutorialSidebar"},"databases/kylin":{"id":"databases/kylin","title":"Apache Kylin","description":"Apache Kylin","sidebar":"tutorialSidebar"},"databases/meta-database":{"id":"databases/meta-database","title":"Querying across databases","description":"Querying across databases","sidebar":"tutorialSidebar"},"databases/mysql":{"id":"databases/mysql","title":"MySQL","description":"MySQL","sidebar":"tutorialSidebar"},"databases/netezza":{"id":"databases/netezza","title":"IBM Netezza Performance Server","description":"IBM Netezza Performance Server","sidebar":"tutorialSidebar"},"databases/ocient":{"id":"databases/ocient","title":"Ocient DB","description":"Ocient DB","sidebar":"tutorialSidebar"},"databases/oracle":{"id":"databases/oracle","title":"Oracle","description":"Oracle","sidebar":"tutorialSidebar"},"databases/pinot":{"id":"databases/pinot","title":"Apache Pinot","description":"Apache Pinot","sidebar":"tutorialSidebar"},"databases/postgres":{"id":"databases/postgres","title":"Postgres","description":"Postgres","sidebar":"tutorialSidebar"},"databases/presto":{"id":"databases/presto","title":"Presto","description":"Presto","sidebar":"tutorialSidebar"},"databases/redshift":{"id":"databases/redshift","title":"Amazon Redshift","description":"AWS Redshift","sidebar":"tutorialSidebar"},"databases/risingwave":{"id":"databases/risingwave","title":"RisingWave","description":"RisingWave","sidebar":"tutorialSidebar"},"databases/rockset":{"id":"databases/rockset","title":"Rockset","description":"Rockset","sidebar":"tutorialSidebar"},"databases/snowflake":{"id":"databases/snowflake","title":"Snowflake","description":"Snowflake","sidebar":"tutorialSidebar"},"databases/solr":{"id":"databases/solr","title":"Apache Solr","description":"Apache Solr","sidebar":"tutorialSidebar"},"databases/spark-sql":{"id":"databases/spark-sql","title":"Apache Spark SQL","description":"Apache Spark SQL","sidebar":"tutorialSidebar"},"databases/sql-server":{"id":"databases/sql-server","title":"Microsoft SQL Server","description":"SQL Server","sidebar":"tutorialSidebar"},"databases/starrocks":{"id":"databases/starrocks","title":"StarRocks","description":"StarRocks","sidebar":"tutorialSidebar"},"databases/teradata":{"id":"databases/teradata","title":"Teradata","description":"Teradata","sidebar":"tutorialSidebar"},"databases/timescaledb":{"id":"databases/timescaledb","title":"TimescaleDB","description":"TimescaleDB","sidebar":"tutorialSidebar"},"databases/trino":{"id":"databases/trino","title":"Trino","description":"Trino","sidebar":"tutorialSidebar"},"databases/vertica":{"id":"databases/vertica","title":"Vertica","description":"Vertica","sidebar":"tutorialSidebar"},"databases/yugabytedb":{"id":"databases/yugabytedb","title":"YugabyteDB","description":"YugabyteDB","sidebar":"tutorialSidebar"},"frequently-asked-questions":{"id":"frequently-asked-questions","title":"Frequently Asked Questions","description":"Frequently Asked Questions","sidebar":"tutorialSidebar"},"installation/alerts-reports":{"id":"installation/alerts-reports","title":"Alerts and Reports","description":"Alerts and Reports","sidebar":"tutorialSidebar"},"installation/async-queries-celery":{"id":"installation/async-queries-celery","title":"Async Queries via Celery","description":"Async Queries via Celery","sidebar":"tutorialSidebar"},"installation/cache":{"id":"installation/cache","title":"Caching","description":"Caching","sidebar":"tutorialSidebar"},"installation/configuring-superset":{"id":"installation/configuring-superset","title":"Configuring Superset","description":"Configuring Superset","sidebar":"tutorialSidebar"},"installation/docker":{"id":"installation/docker","title":"Docker builds, images and tags","description":"The Apache Superset community extensively uses Docker for development, release,","sidebar":"tutorialSidebar"},"installation/event-logging":{"id":"installation/event-logging","title":"Event Logging","description":"Logging","sidebar":"tutorialSidebar"},"installation/installing-superset-from-pypi":{"id":"installation/installing-superset-from-pypi","title":"Installing from PyPI","description":"Installing Superset from PyPI","sidebar":"tutorialSidebar"},"installation/installing-superset-using-docker-compose":{"id":"installation/installing-superset-using-docker-compose","title":"Installing Locally Using Docker Compose","description":"Using Docker Compose","sidebar":"tutorialSidebar"},"installation/networking-settings":{"id":"installation/networking-settings","title":"Additional Networking Settings","description":"Additional Networking Settings","sidebar":"tutorialSidebar"},"installation/running-on-kubernetes":{"id":"installation/running-on-kubernetes","title":"Installing on Kubernetes","description":"Installing on Kubernetes","sidebar":"tutorialSidebar"},"installation/setup-ssh-tunneling":{"id":"installation/setup-ssh-tunneling","title":"Setup SSH Tunneling","description":"SSH Tunneling","sidebar":"tutorialSidebar"},"installation/sql-templating":{"id":"installation/sql-templating","title":"SQL Templating","description":"SQL Templating","sidebar":"tutorialSidebar"},"installation/upgrading-superset":{"id":"installation/upgrading-superset","title":"Upgrading Superset","description":"Upgrading Superset","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Introduction","description":"What is Apache Superset?","sidebar":"tutorialSidebar"},"miscellaneous/chart-params":{"id":"miscellaneous/chart-params","title":"Chart Parameters Reference","description":"Chart Parameters","sidebar":"tutorialSidebar"},"miscellaneous/country-map-tools":{"id":"miscellaneous/country-map-tools","title":"Country Map Tools","description":"The Country Map Visualization","sidebar":"tutorialSidebar"},"miscellaneous/importing-exporting-datasources":{"id":"miscellaneous/importing-exporting-datasources","title":"Importing and Exporting Datasources","description":"Importing and Exporting Datasources","sidebar":"tutorialSidebar"},"miscellaneous/issue-codes":{"id":"miscellaneous/issue-codes","title":"Issue Codes","description":"This page lists issue codes that may be displayed in","sidebar":"tutorialSidebar"},"miscellaneous/timezones":{"id":"miscellaneous/timezones","title":"Timezones","description":"Timezones","sidebar":"tutorialSidebar"},"quickstart":{"id":"quickstart","title":"Quickstart","description":"Ready to give Apache Superset a try? This quickstart will help you run Superset on your local machine in","sidebar":"tutorialSidebar"},"security/cves":{"id":"security/cves","title":"CVEs fixed by release","description":"Version 3.0.4, 3.1.1","sidebar":"tutorialSidebar"},"security/security":{"id":"security/security","title":"Security","description":"Authentication and authorization in Superset is handled by Flask AppBuilder (FAB), an application development framework","sidebar":"tutorialSidebar"}}}')}}]);
\ No newline at end of file
diff --git a/assets/js/a9e1a7f6.03b799f3.js b/assets/js/a9e1a7f6.03b799f3.js
new file mode 100644
index 0000000..07308d3
--- /dev/null
+++ b/assets/js/a9e1a7f6.03b799f3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[5164],{95788:(e,n,o)=>{o.d(n,{Iu:()=>c,yg:()=>g});var t=o(11504);function a(e,n,o){return n in e?Object.defineProperty(e,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[n]=o,e}function r(e,n){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),o.push.apply(o,t)}return o}function i(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?r(Object(o),!0).forEach((function(n){a(e,n,o[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(o,n))}))}return e}function s(e,n){if(null==e)return{};var o,t,a=function(e,n){if(null==e)return{};var o,t,a={},r=Object.keys(e);for(t=0;t<r.length;t++)o=r[t],n.indexOf(o)>=0||(a[o]=e[o]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t<r.length;t++)o=r[t],n.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var l=t.createContext({}),p=function(e){var n=t.useContext(l),o=n;return e&&(o="function"==typeof e?e(n):i(i({},n),e)),o},c=function(e){var n=p(e.components);return t.createElement(l.Provider,{value:n},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},m=t.forwardRef((function(e,n){var o=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(o),m=a,g=d["".concat(l,".").concat(m)]||d[m]||u[m]||r;return o?t.createElement(g,i(i({ref:n},c),{},{components:o})):t.createElement(g,i({ref:n},c))}));function g(e,n){var o=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=o.length,i=new Array(r);i[0]=m;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[d]="string"==typeof e?e:a,i[1]=s;for(var p=2;p<r;p++)i[p]=o[p];return t.createElement.apply(null,i)}return t.createElement.apply(null,o)}m.displayName="MDXCreateElement"},30612:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var t=o(45072),a=(o(11504),o(95788));const r={title:"Installing Locally Using Docker Compose",hide_title:!0,sidebar_position:1,version:1},i=void 0,s={unversionedId:"installation/installing-superset-using-docker-compose",id:"installation/installing-superset-using-docker-compose",title:"Installing Locally Using Docker Compose",description:"Using Docker Compose",source:"@site/docs/installation/installing-superset-using-docker-compose.mdx",sourceDirName:"installation",slug:"/installation/installing-superset-using-docker-compose",permalink:"/docs/installation/installing-superset-using-docker-compose",draft:!1,editUrl:"https://github.com/apache/superset/edit/master/docs/docs/installation/installing-superset-using-docker-compose.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Installing Locally Using Docker Compose",hide_title:!0,sidebar_position:1,version:1},sidebar:"tutorialSidebar",previous:{title:"Quickstart",permalink:"/docs/quickstart"},next:{title:"Installing from PyPI",permalink:"/docs/installation/installing-superset-from-pypi"}},l={},p=[{value:"Using Docker Compose",id:"using-docker-compose",level:2},{value:"1. Install a Docker Engine and Docker Compose",id:"1-install-a-docker-engine-and-docker-compose",level:3},{value:"2. Clone Superset&#39;s GitHub repository",id:"2-clone-supersets-github-repository",level:3},{value:"3. Launch Superset Through Docker Compose",id:"3-launch-superset-through-docker-compose",level:3},{value:"Option #1 - for an interactive development environment",id:"option-1---for-an-interactive-development-environment",level:3},{value:"Option #2 - build an immutable image from the local branch",id:"option-2---build-an-immutable-image-from-the-local-branch",level:3},{value:"Option #3 - pull and build a release image from docker-hub",id:"option-3---pull-and-build-a-release-image-from-docker-hub",level:3},{value:"General tips &amp; configuration",id:"general-tips--configuration",level:2},{value:"Configuring Further",id:"configuring-further",level:4},{value:"4. Log in to Superset",id:"4-log-in-to-superset",level:3},{value:"5. Connecting Superset to your local database instance",id:"5-connecting-superset-to-your-local-database-instance",level:3}],c={toc:p},d="wrapper";function u(e){let{components:n,...o}=e;return(0,a.yg)(d,(0,t.c)({},c,o,{components:n,mdxType:"MDXLayout"}),(0,a.yg)("h2",{id:"using-docker-compose"},"Using Docker Compose"),(0,a.yg)("p",null,"The fastest way to try Superset locally is using Docker and Docker Compose on a Linux or Mac OSX\ncomputer. Superset does not have official support for Windows, so we have provided a VM workaround\nbelow."),(0,a.yg)("p",null,"It's ",(0,a.yg)("strong",{parentName:"p"},"not")," typical, nor recommended to use docker-compose to productionize an\napplication like Superset. docker-compose should be used for local development\nor testing the app."),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"DO NOT USE THIS FOR PRODUCTION!")),(0,a.yg)("p",null,"Note that there are 3 major ways we support to run docker-compose:"),(0,a.yg)("ol",null,(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("strong",{parentName:"li"},"docker-compose.yml:")," for interactive development, where we mount your local folder with the\nfrontend/backend files that you can edit and experience the changes you\nmake in the app in real time"),(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("strong",{parentName:"li"},"docker-compose-non-dev.yml")," where we just build a more immutable image based on the\nlocal branch and get all the required images running. Changes in the local branch\nat the time you fire this up will be reflected, but changes to the code\nwhile ",(0,a.yg)("inlineCode",{parentName:"li"},"up")," won't be reflected in the app"),(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("strong",{parentName:"li"},"docker-compose-image-tag.yml")," where we fetch an image from docker-hub say for the\n",(0,a.yg)("inlineCode",{parentName:"li"},"3.0.0")," release for instance, and fire it up so you can try it. Here what's in\nthe local branch has no effects on what's running, we just fetch and run\npre-built images from docker-hub")),(0,a.yg)("p",null,"More on these two approaches after setting up the requirements for either."),(0,a.yg)("h3",{id:"1-install-a-docker-engine-and-docker-compose"},"1. Install a Docker Engine and Docker Compose"),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Mac OSX")),(0,a.yg)("p",null,(0,a.yg)("a",{parentName:"p",href:"https://docs.docker.com/docker-for-mac/install/"},"Install Docker for Mac"),", which includes the Docker\nengine and a recent version of ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose")," out of the box."),(0,a.yg)("p",null,'Once you have Docker for Mac installed, open up the preferences pane for Docker, go to the\n"Resources" section and increase the allocated memory to 6GB. With only the 2GB of RAM allocated by\ndefault, Superset will fail to start.'),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Linux")),(0,a.yg)("p",null,(0,a.yg)("a",{parentName:"p",href:"https://docs.docker.com/engine/install/"},"Install Docker on Linux")," by following Docker\u2019s\ninstructions for whichever flavor of Linux suits you. Because ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose")," is not installed as\npart of the base Docker installation on Linux, once you have a working engine, follow the\n",(0,a.yg)("a",{parentName:"p",href:"https://docs.docker.com/compose/install/"},"docker compose installation instructions")," for Linux."),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Windows")),(0,a.yg)("p",null,"Superset is not officially supported on Windows unfortunately. One option for Windows users to try\nout Superset locally is to install an Ubuntu Desktop VM via\n",(0,a.yg)("a",{parentName:"p",href:"https://www.virtualbox.org/"},"VirtualBox")," and proceed with the Docker on Linux instructions inside\nof that VM. We recommend assigning at least 8GB of RAM to the virtual machine as well as\nprovisioning a hard drive of at least 40GB, so that there will be enough space for both the OS and\nall of the required dependencies. Docker Desktop ",(0,a.yg)("a",{parentName:"p",href:"https://docs.docker.com/docker-for-windows/wsl/"},"recently added support for Windows Subsystem for\nLinux (WSL) 2"),", which may be another option."),(0,a.yg)("h3",{id:"2-clone-supersets-github-repository"},"2. Clone Superset's GitHub repository"),(0,a.yg)("p",null,(0,a.yg)("a",{parentName:"p",href:"https://github.com/apache/superset"},"Clone Superset's repo")," in your terminal with the\nfollowing command:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/apache/superset.git\n")),(0,a.yg)("p",null,"Once that command completes successfully, you should see a new ",(0,a.yg)("inlineCode",{parentName:"p"},"superset")," folder in your\ncurrent directory."),(0,a.yg)("h3",{id:"3-launch-superset-through-docker-compose"},"3. Launch Superset Through Docker Compose"),(0,a.yg)("p",null,"First let's assume you're familiar with docker-compose mechanics. Here we'll refer generally\nto ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose up")," even though in some cases you may want to force a check for newer remote\nimages using ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose pull"),", force a build with ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose build")," or force a build\non latest base images using ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose build --pull"),". In most cases though, the simple\n",(0,a.yg)("inlineCode",{parentName:"p"},"up")," command should do just fine. Refer to docker compose docs for more information on the topic."),(0,a.yg)("h3",{id:"option-1---for-an-interactive-development-environment"},"Option #1 - for an interactive development environment"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"docker compose up\n")),(0,a.yg)("admonition",{type:"tip"},(0,a.yg)("p",{parentName:"admonition"},"When running in development mode the ",(0,a.yg)("inlineCode",{parentName:"p"},"superset-node"),"\ncontainer needs to finish building assets in order for the UI to render properly. If you would just\nlike to try out Superset without making any code changes follow the steps documented for\n",(0,a.yg)("inlineCode",{parentName:"p"},"production")," or a specific version below.")),(0,a.yg)("admonition",{type:"tip"},(0,a.yg)("p",{parentName:"admonition"},"By default, we mount the local superset-frontend folder here and run ",(0,a.yg)("inlineCode",{parentName:"p"},"npm install")," as well\nas ",(0,a.yg)("inlineCode",{parentName:"p"},"npm run dev")," which triggers webpack to compile/bundle the frontend code. Depending\non your local setup, especially if you have less than 16GB of memory,  it may be very slow to\nperform those operations. In this case, we recommend you set the env var\n",(0,a.yg)("inlineCode",{parentName:"p"},"BUILD_SUPERSET_FRONTEND_IN_DOCKER")," to ",(0,a.yg)("inlineCode",{parentName:"p"},"false"),", and to run this locally instead in a terminal.\nSimply trigger ",(0,a.yg)("inlineCode",{parentName:"p"},"npm i && npm run dev"),", this should be MUCH faster.")),(0,a.yg)("h3",{id:"option-2---build-an-immutable-image-from-the-local-branch"},"Option #2 - build an immutable image from the local branch"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"docker compose -f docker-compose-non-dev.yml up\n")),(0,a.yg)("h3",{id:"option-3---pull-and-build-a-release-image-from-docker-hub"},"Option #3 - pull and build a release image from docker-hub"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"export TAG=3.1.1\ndocker compose -f docker-compose-image-tag.yml up\n")),(0,a.yg)("p",null,"Here various release tags, github SHA, and latest ",(0,a.yg)("inlineCode",{parentName:"p"},"master")," can be referenced by the TAG env var.\nRefer to the docker-related documentation to learn more about existing tags you can point to\nfrom Docker Hub."),(0,a.yg)("h2",{id:"general-tips--configuration"},"General tips & configuration"),(0,a.yg)("admonition",{type:"caution"},(0,a.yg)("p",{parentName:"admonition"},"All of the content belonging to a Superset instance - charts, dashboards, users, etc. - is stored in\nits metadata database. In production, this database should be backed up.  The default installation\nwith docker compose will store that data in a PostgreSQL database contained in a Docker\n",(0,a.yg)("a",{parentName:"p",href:"https://docs.docker.com/storage/volumes/"},"volume"),", which is not backed up."),(0,a.yg)("p",{parentName:"admonition"},"Again ",(0,a.yg)("strong",{parentName:"p"},"DO NOT USE THIS FOR PRODUCTION"))),(0,a.yg)("p",null,"You should see a wall of logging output from the containers being launched on your machine. Once\nthis output slows, you should have a running instance of Superset on your local machine!  To avoid\nthe wall of text on future runs, add the ",(0,a.yg)("inlineCode",{parentName:"p"},"-d")," option to the end of the ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose up")," command."),(0,a.yg)("h4",{id:"configuring-further"},"Configuring Further"),(0,a.yg)("p",null,"The following is for users who want to configure how Superset runs in Docker Compose; otherwise, you\ncan skip to the next section."),(0,a.yg)("p",null,"You can install additional python packages and apply config overrides by following the steps\nmentioned in ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/tree/master/docker#configuration"},"docker/README.md")),(0,a.yg)("p",null,"You can configure the Docker Compose environment variables for dev and non-dev mode with\n",(0,a.yg)("inlineCode",{parentName:"p"},"docker/.env"),". This environment file sets the environment\nfor most containers in the Docker Compose setup, and some variables affect multiple containers and\nothers only single ones."),(0,a.yg)("p",null,"One important variable is ",(0,a.yg)("inlineCode",{parentName:"p"},"SUPERSET_LOAD_EXAMPLES")," which determines whether the ",(0,a.yg)("inlineCode",{parentName:"p"},"superset_init"),"\ncontainer will populate example data and visualizations into the metadata database. These examples\nare helpful for learning and testing out Superset but unnecessary for experienced users and\nproduction deployments. The loading process can sometimes take a few minutes and a good amount of\nCPU, so you may want to disable it on a resource-constrained device."),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"Users often want to connect to other databases from Superset. Currently, the easiest way to\ndo this is to modify the ",(0,a.yg)("inlineCode",{parentName:"p"},"docker-compose-non-dev.yml")," file and add your database as a service that\nthe other services depend on (via ",(0,a.yg)("inlineCode",{parentName:"p"},"x-superset-depends-on"),"). Others have attempted to set\n",(0,a.yg)("inlineCode",{parentName:"p"},"network_mode: host")," on the Superset services, but these generally break the installation,\nbecause the configuration requires use of the Docker Compose DNS resolver for the service names.\nIf you have a good solution for this, let us know!")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"Superset uses ",(0,a.yg)("a",{parentName:"p",href:"https://about.scarf.sh/scarf-gateway"},"Scarf Gateway")," to collect telemetry\ndata. Knowing the installation counts for different Superset versions informs the project's\ndecisions about patching and long-term support. Scarf purges personally identifiable information\n(PII) and provides only aggregated statistics."),(0,a.yg)("p",{parentName:"admonition"},"To opt-out of this data collection for packages downloaded through the Scarf Gateway by your docker\ncompose based installation, edit the ",(0,a.yg)("inlineCode",{parentName:"p"},"x-superset-image:")," line in your ",(0,a.yg)("inlineCode",{parentName:"p"},"docker-compose.yml")," and\n",(0,a.yg)("inlineCode",{parentName:"p"},"docker-compose-non-dev.yml")," files, replacing ",(0,a.yg)("inlineCode",{parentName:"p"},"apachesuperset.docker.scarf.sh/apache/superset")," with\n",(0,a.yg)("inlineCode",{parentName:"p"},"apache/superset")," to pull the image directly from Docker Hub."),(0,a.yg)("p",{parentName:"admonition"},"To disable the Scarf telemetry pixel, set the ",(0,a.yg)("inlineCode",{parentName:"p"},"SCARF_ANALYTICS")," environment variable to ",(0,a.yg)("inlineCode",{parentName:"p"},"False")," in\nyour terminal and/or in your ",(0,a.yg)("inlineCode",{parentName:"p"},"docker/.env")," file.")),(0,a.yg)("h3",{id:"4-log-in-to-superset"},"4. Log in to Superset"),(0,a.yg)("p",null,"Your local Superset instance also includes a Postgres server to store your data and is already\npre-loaded with some example datasets that ship with Superset. You can access Superset now via your\nweb browser by visiting ",(0,a.yg)("inlineCode",{parentName:"p"},"http://localhost:8088"),". Note that many browsers now default to ",(0,a.yg)("inlineCode",{parentName:"p"},"https")," - if\nyours is one of them, please make sure it uses ",(0,a.yg)("inlineCode",{parentName:"p"},"http"),"."),(0,a.yg)("p",null,"Log in with the default username and password:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"username: admin\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"password: admin\n")),(0,a.yg)("h3",{id:"5-connecting-superset-to-your-local-database-instance"},"5. Connecting Superset to your local database instance"),(0,a.yg)("p",null,"When running Superset using ",(0,a.yg)("inlineCode",{parentName:"p"},"docker")," or ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose")," it runs in its own docker container, as if\nthe Superset was running in a separate machine entirely. Therefore attempts to connect to your local\ndatabase with the hostname ",(0,a.yg)("inlineCode",{parentName:"p"},"localhost")," won't work as ",(0,a.yg)("inlineCode",{parentName:"p"},"localhost")," refers to the docker container\nSuperset is running in, and not your actual host machine. Fortunately, docker provides an easy way\nto access network resources in the host machine from inside a container, and we will leverage this\ncapability to connect to our local database instance."),(0,a.yg)("p",null,"Here the instructions are for connecting to postgresql (which is running on your host machine) from\nSuperset (which is running in its docker container). Other databases may have slightly different\nconfigurations but gist would be same and boils down to 2 steps -"),(0,a.yg)("ol",null,(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("strong",{parentName:"li"},"(Mac users may skip this step)")," Configuring the local postgresql/database instance to accept\npublic incoming connections. By default, postgresql only allows incoming connections from\n",(0,a.yg)("inlineCode",{parentName:"li"},"localhost")," and under Docker, unless you use ",(0,a.yg)("inlineCode",{parentName:"li"},"--network=host"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"localhost")," will refer to different\nendpoints on the host machine and in a docker container respectively. Allowing postgresql to accept\nconnections from the Docker involves making one-line changes to the files ",(0,a.yg)("inlineCode",{parentName:"li"},"postgresql.conf")," and\n",(0,a.yg)("inlineCode",{parentName:"li"},"pg_hba.conf"),"; you can find helpful links tailored to your OS / PG version on the web easily for\nthis task. For Docker it suffices to only whitelist IPs ",(0,a.yg)("inlineCode",{parentName:"li"},"172.0.0.0/8")," instead of ",(0,a.yg)("inlineCode",{parentName:"li"},"*"),", but in any\ncase you are ",(0,a.yg)("em",{parentName:"li"},"warned")," that doing this in a production database ",(0,a.yg)("em",{parentName:"li"},"may")," have disastrous consequences as\nyou are opening your database to the public internet.  2. Instead of ",(0,a.yg)("inlineCode",{parentName:"li"},"localhost"),", try using\n",(0,a.yg)("inlineCode",{parentName:"li"},"host.docker.internal")," (Mac users, Ubuntu) or ",(0,a.yg)("inlineCode",{parentName:"li"},"172.18.0.1")," (Linux users) as the hostname when\nattempting to connect to the database. This is a Docker internal detail -- what is happening is\nthat, in Mac systems, Docker Desktop creates a dns entry for the hostname ",(0,a.yg)("inlineCode",{parentName:"li"},"host.docker.internal"),"\nwhich resolves to the correct address for the host machine, whereas in Linux this is not the case\n(at least by default). If neither of these 2 hostnames work then you may want to find the exact\nhostname you want to use, for that you can do ",(0,a.yg)("inlineCode",{parentName:"li"},"ifconfig")," or ",(0,a.yg)("inlineCode",{parentName:"li"},"ip addr show")," and look at the IP\naddress of ",(0,a.yg)("inlineCode",{parentName:"li"},"docker0")," interface that must have been created by Docker for you. Alternately if you\ndon't even see the ",(0,a.yg)("inlineCode",{parentName:"li"},"docker0")," interface try (if needed with sudo) ",(0,a.yg)("inlineCode",{parentName:"li"},"docker network inspect bridge")," and\nsee if there is an entry for ",(0,a.yg)("inlineCode",{parentName:"li"},'"Gateway"')," and note the IP address.")))}u.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/a9e1a7f6.9dd32fa3.js b/assets/js/a9e1a7f6.9dd32fa3.js
deleted file mode 100644
index 0023774..0000000
--- a/assets/js/a9e1a7f6.9dd32fa3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[5164],{95788:(e,n,o)=>{o.d(n,{Iu:()=>c,yg:()=>g});var t=o(11504);function a(e,n,o){return n in e?Object.defineProperty(e,n,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[n]=o,e}function r(e,n){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),o.push.apply(o,t)}return o}function i(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?r(Object(o),!0).forEach((function(n){a(e,n,o[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(o,n))}))}return e}function s(e,n){if(null==e)return{};var o,t,a=function(e,n){if(null==e)return{};var o,t,a={},r=Object.keys(e);for(t=0;t<r.length;t++)o=r[t],n.indexOf(o)>=0||(a[o]=e[o]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(t=0;t<r.length;t++)o=r[t],n.indexOf(o)>=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(a[o]=e[o])}return a}var l=t.createContext({}),p=function(e){var n=t.useContext(l),o=n;return e&&(o="function"==typeof e?e(n):i(i({},n),e)),o},c=function(e){var n=p(e.components);return t.createElement(l.Provider,{value:n},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},m=t.forwardRef((function(e,n){var o=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(o),m=a,g=d["".concat(l,".").concat(m)]||d[m]||u[m]||r;return o?t.createElement(g,i(i({ref:n},c),{},{components:o})):t.createElement(g,i({ref:n},c))}));function g(e,n){var o=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=o.length,i=new Array(r);i[0]=m;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[d]="string"==typeof e?e:a,i[1]=s;for(var p=2;p<r;p++)i[p]=o[p];return t.createElement.apply(null,i)}return t.createElement.apply(null,o)}m.displayName="MDXCreateElement"},30612:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>p});var t=o(45072),a=(o(11504),o(95788));const r={title:"Installing Locally Using Docker Compose",hide_title:!0,sidebar_position:1,version:1},i=void 0,s={unversionedId:"installation/installing-superset-using-docker-compose",id:"installation/installing-superset-using-docker-compose",title:"Installing Locally Using Docker Compose",description:"Installing Superset Locally Using Docker Compose",source:"@site/docs/installation/installing-superset-using-docker-compose.mdx",sourceDirName:"installation",slug:"/installation/installing-superset-using-docker-compose",permalink:"/docs/installation/installing-superset-using-docker-compose",draft:!1,editUrl:"https://github.com/apache/superset/edit/master/docs/docs/installation/installing-superset-using-docker-compose.mdx",tags:[],version:"current",sidebarPosition:1,frontMatter:{title:"Installing Locally Using Docker Compose",hide_title:!0,sidebar_position:1,version:1},sidebar:"tutorialSidebar",previous:{title:"Quickstart",permalink:"/docs/quickstart"},next:{title:"Installing from PyPI",permalink:"/docs/installation/installing-superset-from-pypi"}},l={},p=[{value:"Installing Superset Locally Using Docker Compose",id:"installing-superset-locally-using-docker-compose",level:2},{value:"1. Install a Docker Engine and Docker Compose",id:"1-install-a-docker-engine-and-docker-compose",level:3},{value:"2. Clone Superset&#39;s GitHub repository",id:"2-clone-supersets-github-repository",level:3},{value:"3. Launch Superset Through Docker Compose",id:"3-launch-superset-through-docker-compose",level:3},{value:"Configuring Docker Compose",id:"configuring-docker-compose",level:4},{value:"4. Log in to Superset",id:"4-log-in-to-superset",level:3},{value:"5. Connecting Superset to your local database instance",id:"5-connecting-superset-to-your-local-database-instance",level:3}],c={toc:p},d="wrapper";function u(e){let{components:n,...o}=e;return(0,a.yg)(d,(0,t.c)({},c,o,{components:n,mdxType:"MDXLayout"}),(0,a.yg)("h2",{id:"installing-superset-locally-using-docker-compose"},"Installing Superset Locally Using Docker Compose"),(0,a.yg)("p",null,"The fastest way to try Superset locally is using Docker and Docker Compose on a Linux or Mac OSX\ncomputer. Superset does not have official support for Windows, so we have provided a VM workaround\nbelow."),(0,a.yg)("h3",{id:"1-install-a-docker-engine-and-docker-compose"},"1. Install a Docker Engine and Docker Compose"),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Mac OSX")),(0,a.yg)("p",null,(0,a.yg)("a",{parentName:"p",href:"https://docs.docker.com/docker-for-mac/install/"},"Install Docker for Mac"),", which includes the Docker\nengine and a recent version of ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose")," out of the box."),(0,a.yg)("p",null,'Once you have Docker for Mac installed, open up the preferences pane for Docker, go to the\n"Resources" section and increase the allocated memory to 6GB. With only the 2GB of RAM allocated by\ndefault, Superset will fail to start.'),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Linux")),(0,a.yg)("p",null,(0,a.yg)("a",{parentName:"p",href:"https://docs.docker.com/engine/install/"},"Install Docker on Linux")," by following Docker\u2019s\ninstructions for whichever flavor of Linux suits you. Because ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose")," is not installed as\npart of the base Docker installation on Linux, once you have a working engine, follow the\n",(0,a.yg)("a",{parentName:"p",href:"https://docs.docker.com/compose/install/"},"docker compose installation instructions")," for Linux."),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Windows")),(0,a.yg)("p",null,"Superset is not officially supported on Windows unfortunately. One option for Windows users to\ntry out Superset locally is to install an Ubuntu Desktop VM via\n",(0,a.yg)("a",{parentName:"p",href:"https://www.virtualbox.org/"},"VirtualBox")," and proceed with the Docker on Linux instructions inside\nof that VM. We recommend assigning at least 8GB of RAM to the virtual machine as well as\nprovisioning a hard drive of at least 40GB, so that there will be enough space for both the OS and\nall of the required dependencies. Docker Desktop ",(0,a.yg)("a",{parentName:"p",href:"https://docs.docker.com/docker-for-windows/wsl/"},"recently added support for Windows Subsystem for Linux (WSL) 2"),", which may be another option."),(0,a.yg)("h3",{id:"2-clone-supersets-github-repository"},"2. Clone Superset's GitHub repository"),(0,a.yg)("p",null,(0,a.yg)("a",{parentName:"p",href:"https://github.com/apache/superset"},"Clone Superset's repo")," in your terminal with the\nfollowing command:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/apache/superset.git\n")),(0,a.yg)("p",null,"Once that command completes successfully, you should see a new ",(0,a.yg)("inlineCode",{parentName:"p"},"superset")," folder in your\ncurrent directory."),(0,a.yg)("h3",{id:"3-launch-superset-through-docker-compose"},"3. Launch Superset Through Docker Compose"),(0,a.yg)("p",null,"Navigate to the folder you created in step 1:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"cd superset\n")),(0,a.yg)("p",null,"When working on master branch, run the following commands to run ",(0,a.yg)("inlineCode",{parentName:"p"},"development")," mode using ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose"),":"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"docker compose up\n")),(0,a.yg)("admonition",{type:"tip"},(0,a.yg)("p",{parentName:"admonition"},"When running in development mode the ",(0,a.yg)("inlineCode",{parentName:"p"},"superset-node")," container needs to finish building assets in order for the UI to render properly. If you would just like to try out Superset without making any code changes follow the steps documented for ",(0,a.yg)("inlineCode",{parentName:"p"},"production")," or a specific version below.")),(0,a.yg)("p",null,"When working on master branch, run the following commands to run ",(0,a.yg)("inlineCode",{parentName:"p"},"production")," mode using ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose"),":"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"docker compose -f docker-compose-non-dev.yml pull\ndocker compose -f docker-compose-non-dev.yml up\n")),(0,a.yg)("p",null,"Alternatively, you can also run a specific version of Superset by first checking out\nthe branch/tag, and then starting ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose")," with the ",(0,a.yg)("inlineCode",{parentName:"p"},"TAG")," variable.\nFor example, to run the 3.0.0 version, run the following commands on Linux-based systems:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"git checkout 3.0.0\nTAG=3.0.0 docker compose -f docker-compose-non-dev.yml pull\nTAG=3.0.0 docker compose -f docker-compose-non-dev.yml up\n")),(0,a.yg)("p",null,"If you are using Docker Desktop for Windows then run the following commands:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"git checkout 3.0.0\nset TAG=3.0.0\ndocker compose -f docker-compose-non-dev.yml pull\ndocker compose -f docker-compose-non-dev.yml up\n")),(0,a.yg)("admonition",{type:"tip"},(0,a.yg)("p",{parentName:"admonition"},"Note that some configuration is mandatory for production instances of Superset. In particular, Superset will not start without a user-specified value of ",(0,a.yg)("inlineCode",{parentName:"p"},"SECRET_KEY")," in a Superset config file or ",(0,a.yg)("inlineCode",{parentName:"p"},"SUPERSET_SECRET_KEY")," as an ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/blob/master/docker/.env-non-dev"},"environment variable"),". Please see ",(0,a.yg)("a",{parentName:"p",href:"/docs/installation/configuring-superset/"},"Configuring Superset")," for more details.")),(0,a.yg)("admonition",{type:"caution"},(0,a.yg)("p",{parentName:"admonition"},"All of the content belonging to a Superset instance - charts, dashboards, users, etc. - is stored in its metadata database. In production, this database should be backed up.\nThe default installation with docker compose will store that data in a PostgreSQL database contained in a Docker ",(0,a.yg)("a",{parentName:"p",href:"https://docs.docker.com/storage/volumes/"},"volume"),",\nwhich is not backed up.  To avoid risking data loss, either use a managed database for your metadata (recommended) or perform your own regular backups by extracting\nand storing the contents of the default PostgreSQL database from its volume (here's an\n",(0,a.yg)("a",{parentName:"p",href:"https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database"},"example of how to dump and restore"),").")),(0,a.yg)("p",null,"You should see a wall of logging output from the containers being launched on your machine. Once\nthis output slows, you should have a running instance of Superset on your local machine!  To\navoid the wall of text on future runs, add the ",(0,a.yg)("inlineCode",{parentName:"p"},"-d")," option to the end of the ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose up")," command."),(0,a.yg)("h4",{id:"configuring-docker-compose"},"Configuring Docker Compose"),(0,a.yg)("p",null,"The following is for users who want to configure how Superset runs in Docker Compose; otherwise, you can skip to the next section."),(0,a.yg)("p",null,"You can install additional python packages and apply config overrides by following the steps mentioned in ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/tree/master/docker#configuration"},"docker/README.md")),(0,a.yg)("p",null,"You can configure the Docker Compose environment variables for dev and non-dev mode with ",(0,a.yg)("inlineCode",{parentName:"p"},"docker/.env")," and ",(0,a.yg)("inlineCode",{parentName:"p"},"docker/.env-non-dev")," respectively. These environment files set the environment for most containers in the Docker Compose setup, and some variables affect multiple containers and others only single ones."),(0,a.yg)("p",null,"One important variable is ",(0,a.yg)("inlineCode",{parentName:"p"},"SUPERSET_LOAD_EXAMPLES")," which determines whether the ",(0,a.yg)("inlineCode",{parentName:"p"},"superset_init")," container will populate example data and visualizations into the metadata database. These examples are helpful for learning and testing out Superset but unnecessary for experienced users and production deployments. The loading process can sometimes take a few minutes and a good amount of CPU, so you may want to disable it on a resource-constrained device."),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"Users often want to connect to other databases from Superset. Currently, the easiest way to do this is to modify the ",(0,a.yg)("inlineCode",{parentName:"p"},"docker-compose-non-dev.yml")," file and add your database as a service that the other services depend on (via ",(0,a.yg)("inlineCode",{parentName:"p"},"x-superset-depends-on"),"). Others have attempted to set ",(0,a.yg)("inlineCode",{parentName:"p"},"network_mode: host")," on the Superset services, but these generally break the installation, because the configuration requires use of the Docker Compose DNS resolver for the service names. If you have a good solution for this, let us know!")),(0,a.yg)("admonition",{type:"note"},(0,a.yg)("p",{parentName:"admonition"},"Superset uses ",(0,a.yg)("a",{parentName:"p",href:"https://about.scarf.sh/scarf-gateway"},"Scarf Gateway")," to collect telemetry data. Knowing the installation counts for different Superset versions informs the project's decisions about patching and long-term support. Scarf purges personally identifiable information (PII) and provides only aggregated statistics."),(0,a.yg)("p",{parentName:"admonition"},"To opt-out of this data collection for packages downloaded through the Scarf Gateway by your docker compose based installation, edit the ",(0,a.yg)("inlineCode",{parentName:"p"},"x-superset-image:")," line in your ",(0,a.yg)("inlineCode",{parentName:"p"},"docker-compose.yml")," and ",(0,a.yg)("inlineCode",{parentName:"p"},"docker-compose-non-dev.yml")," files, replacing ",(0,a.yg)("inlineCode",{parentName:"p"},"apachesuperset.docker.scarf.sh/apache/superset")," with ",(0,a.yg)("inlineCode",{parentName:"p"},"apache/superset")," to pull the image directly from Docker Hub."),(0,a.yg)("p",{parentName:"admonition"},"To disable the Scarf telemetry pixel, set the ",(0,a.yg)("inlineCode",{parentName:"p"},"SCARF_ANALYTICS")," environment variable to ",(0,a.yg)("inlineCode",{parentName:"p"},"False")," in your terminal and/or in your ",(0,a.yg)("inlineCode",{parentName:"p"},"docker/.env")," and ",(0,a.yg)("inlineCode",{parentName:"p"},"docker/.env-non-dev")," files.")),(0,a.yg)("h3",{id:"4-log-in-to-superset"},"4. Log in to Superset"),(0,a.yg)("p",null,"Your local Superset instance also includes a Postgres server to store your data and is already\npre-loaded with some example datasets that ship with Superset. You can access Superset now via your\nweb browser by visiting ",(0,a.yg)("inlineCode",{parentName:"p"},"http://localhost:8088"),". Note that many browsers now default to ",(0,a.yg)("inlineCode",{parentName:"p"},"https")," - if\nyours is one of them, please make sure it uses ",(0,a.yg)("inlineCode",{parentName:"p"},"http"),"."),(0,a.yg)("p",null,"Log in with the default username and password:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"username: admin\n")),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"password: admin\n")),(0,a.yg)("h3",{id:"5-connecting-superset-to-your-local-database-instance"},"5. Connecting Superset to your local database instance"),(0,a.yg)("p",null,"When running Superset using ",(0,a.yg)("inlineCode",{parentName:"p"},"docker")," or ",(0,a.yg)("inlineCode",{parentName:"p"},"docker compose")," it runs in its own docker container, as if the Superset was running in a separate machine entirely. Therefore attempts to connect to your local database with the hostname ",(0,a.yg)("inlineCode",{parentName:"p"},"localhost")," won't work as ",(0,a.yg)("inlineCode",{parentName:"p"},"localhost")," refers to the docker container Superset is running in, and not your actual host machine. Fortunately, docker provides an easy way to access network resources in the host machine from inside a container, and we will leverage this capability to connect to our local database instance."),(0,a.yg)("p",null,"Here the instructions are for connecting to postgresql (which is running on your host machine) from Superset (which is running in its docker container). Other databases may have slightly different configurations but gist would be same and boils down to 2 steps -"),(0,a.yg)("ol",null,(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("strong",{parentName:"li"},"(Mac users may skip this step)")," Configuring the local postgresql/database instance to accept public incoming connections. By default, postgresql only allows incoming connections from ",(0,a.yg)("inlineCode",{parentName:"li"},"localhost")," and under Docker, unless you use ",(0,a.yg)("inlineCode",{parentName:"li"},"--network=host"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"localhost")," will refer to different endpoints on the host machine and in a docker container respectively. Allowing postgresql to accept connections from the Docker involves making one-line changes to the files ",(0,a.yg)("inlineCode",{parentName:"li"},"postgresql.conf")," and ",(0,a.yg)("inlineCode",{parentName:"li"},"pg_hba.conf"),"; you can find helpful links tailored to your OS / PG version on the web easily for this task. For Docker it suffices to only whitelist IPs ",(0,a.yg)("inlineCode",{parentName:"li"},"172.0.0.0/8")," instead of ",(0,a.yg)("inlineCode",{parentName:"li"},"*"),", but in any case you are ",(0,a.yg)("em",{parentName:"li"},"warned")," that doing this in a production database ",(0,a.yg)("em",{parentName:"li"},"may")," have disastrous consequences as you are opening your database to the public internet."),(0,a.yg)("li",{parentName:"ol"},"Instead of ",(0,a.yg)("inlineCode",{parentName:"li"},"localhost"),", try using ",(0,a.yg)("inlineCode",{parentName:"li"},"host.docker.internal")," (Mac users, Ubuntu) or ",(0,a.yg)("inlineCode",{parentName:"li"},"172.18.0.1")," (Linux users) as the hostname when attempting to connect to the database. This is a Docker internal detail -- what is happening is that, in Mac systems, Docker Desktop creates a dns entry for the hostname ",(0,a.yg)("inlineCode",{parentName:"li"},"host.docker.internal")," which resolves to the correct address for the host machine, whereas in Linux this is not the case (at least by default). If neither of these 2 hostnames work then you may want to find the exact hostname you want to use, for that you can do ",(0,a.yg)("inlineCode",{parentName:"li"},"ifconfig")," or ",(0,a.yg)("inlineCode",{parentName:"li"},"ip addr show")," and look at the IP address of ",(0,a.yg)("inlineCode",{parentName:"li"},"docker0")," interface that must have been created by Docker for you. Alternately if you don't even see the ",(0,a.yg)("inlineCode",{parentName:"li"},"docker0")," interface try (if needed with sudo) ",(0,a.yg)("inlineCode",{parentName:"li"},"docker network inspect bridge")," and see if there is an entry for ",(0,a.yg)("inlineCode",{parentName:"li"},'"Gateway"')," and note the IP address.")))}u.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/b92f705c.84b78771.js b/assets/js/b92f705c.84b78771.js
new file mode 100644
index 0000000..137388d
--- /dev/null
+++ b/assets/js/b92f705c.84b78771.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[1524],{95788:(e,t,a)=>{a.d(t,{Iu:()=>d,yg:()=>g});var n=a(11504);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?r(Object(a),!0).forEach((function(t){s(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):r(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,s=function(e,t){if(null==e)return{};var a,n,s={},r=Object.keys(e);for(n=0;n<r.length;n++)a=r[n],t.indexOf(a)>=0||(s[a]=e[a]);return s}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n<r.length;n++)a=r[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(s[a]=e[a])}return s}var l=n.createContext({}),u=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,s=e.mdxType,r=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=u(a),h=s,g=p["".concat(l,".").concat(h)]||p[h]||c[h]||r;return a?n.createElement(g,o(o({ref:t},d),{},{components:a})):n.createElement(g,o({ref:t},d))}));function g(e,t){var a=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var r=a.length,o=new Array(r);o[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:s,o[1]=i;for(var u=2;u<r;u++)o[u]=a[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},284:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>i,toc:()=>u});var n=a(45072),s=(a(11504),a(95788));const r={title:"Frequently Asked Questions",hide_title:!0,sidebar_position:8},o=void 0,i={unversionedId:"frequently-asked-questions",id:"frequently-asked-questions",title:"Frequently Asked Questions",description:"Frequently Asked Questions",source:"@site/docs/frequently-asked-questions.mdx",sourceDirName:".",slug:"/frequently-asked-questions",permalink:"/docs/frequently-asked-questions",draft:!1,editUrl:"https://github.com/apache/superset/edit/master/docs/docs/frequently-asked-questions.mdx",tags:[],version:"current",sidebarPosition:8,frontMatter:{title:"Frequently Asked Questions",hide_title:!0,sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Creating Visualization Plugins",permalink:"/docs/contributing/creating-viz-plugins"},next:{title:"Security",permalink:"/docs/security/"}},l={},u=[{value:"Frequently Asked Questions",id:"frequently-asked-questions",level:2},{value:"How big of a dataset can Superset handle?",id:"how-big-of-a-dataset-can-superset-handle",level:3},{value:"What are the computing specifications required to run Superset?",id:"what-are-the-computing-specifications-required-to-run-superset",level:3},{value:"Can I join / query multiple tables at one time?",id:"can-i-join--query-multiple-tables-at-one-time",level:3},{value:"How do I create my own visualization?",id:"how-do-i-create-my-own-visualization",level:3},{value:"Can I upload and visualize CSV data?",id:"can-i-upload-and-visualize-csv-data",level:3},{value:"Why are my queries timing out?",id:"why-are-my-queries-timing-out",level:3},{value:"Why is the map not visible in the geospatial visualization?",id:"why-is-the-map-not-visible-in-the-geospatial-visualization",level:3},{value:"How to limit the timed refresh on a dashboard?",id:"how-to-limit-the-timed-refresh-on-a-dashboard",level:3},{value:"What if the table schema changed?",id:"what-if-the-table-schema-changed",level:3},{value:"What database engine can I use as a backend for Superset?",id:"what-database-engine-can-i-use-as-a-backend-for-superset",level:3},{value:"How can I configure OAuth authentication and authorization?",id:"how-can-i-configure-oauth-authentication-and-authorization",level:3},{value:"Is there a way to force the dashboard to use specific colors?",id:"is-there-a-way-to-force-the-dashboard-to-use-specific-colors",level:3},{value:"Does Superset work with insert database engine here?",id:"does-superset-work-with-insert-database-engine-here",level:3},{value:"Does Superset offer a public API?",id:"does-superset-offer-a-public-api",level:3},{value:"How can I see usage statistics (e.g., monthly active users)?",id:"how-can-i-see-usage-statistics-eg-monthly-active-users",level:3},{value:"What Does Hours Offset in the Edit Dataset view do?",id:"what-does-hours-offset-in-the-edit-dataset-view-do",level:3},{value:"Does Superset collect any telemetry data?",id:"does-superset-collect-any-telemetry-data",level:3},{value:"Does Superset have an archive panel or trash bin from which a user can recover deleted assets?",id:"does-superset-have-an-archive-panel-or-trash-bin-from-which-a-user-can-recover-deleted-assets",level:3}],d={toc:u},p="wrapper";function c(e){let{components:t,...a}=e;return(0,s.yg)(p,(0,n.c)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,s.yg)("h2",{id:"frequently-asked-questions"},"Frequently Asked Questions"),(0,s.yg)("h3",{id:"how-big-of-a-dataset-can-superset-handle"},"How big of a dataset can Superset handle?"),(0,s.yg)("p",null,"Superset can work with even gigantic databases! Superset acts as a thin layer above your underlying\ndatabases or data engines, which do all the processing.  Superset simply visualizes the results of\nthe query."),(0,s.yg)("p",null,"The key to achieving acceptable performance in Superset is whether your database can execute queries\nand return results at a speed that is acceptable to your users. If you experience slow performance with\nSuperset, benchmark and tune your data warehouse."),(0,s.yg)("h3",{id:"what-are-the-computing-specifications-required-to-run-superset"},"What are the computing specifications required to run Superset?"),(0,s.yg)("p",null,"The specs of your Superset installation depend on how many users you have and what their activity is, not\non the size of your data.  Superset admins in the community have reported 8GB RAM, 2vCPUs as adequate to\nrun a moderately-sized instance. To develop Superset, e.g., compile code or build images, you may\nneed more power."),(0,s.yg)("p",null,"Monitor your resource usage and increase or decrease as needed. Note that Superset usage has a tendency\nto occur in spikes, e.g., if everyone in a meeting loads the same dashboard at once."),(0,s.yg)("p",null,"Superset's application metadata does not require a very large database to store it, though\nthe log file grows over time."),(0,s.yg)("h3",{id:"can-i-join--query-multiple-tables-at-one-time"},"Can I join / query multiple tables at one time?"),(0,s.yg)("p",null,"Not in the Explore or Visualization UI. A Superset SQLAlchemy datasource can only be a single table\nor a view."),(0,s.yg)("p",null,"When working with tables, the solution would be to create a table that contains all the fields\nneeded for your analysis, most likely through some scheduled batch process."),(0,s.yg)("p",null,"A view is a simple logical layer that abstracts an arbitrary SQL queries as a virtual table. This can\nallow you to join and union multiple tables and to apply some transformation using arbitrary SQL\nexpressions. The limitation there is your database performance, as Superset effectively will run a\nquery on top of your query (view). A good practice may be to limit yourself to joining your main\nlarge table to one or many small tables only, and avoid using ",(0,s.yg)("em",{parentName:"p"},"GROUP BY")," where possible as Superset\nwill do its own ",(0,s.yg)("em",{parentName:"p"},"GROUP BY")," and doing the work twice might slow down performance."),(0,s.yg)("p",null,"Whether you use a table or a view, performance depends on how fast your database can deliver\nthe result to users interacting with Superset."),(0,s.yg)("p",null,"However, if you are using SQL Lab, there is no such limitation. You can write SQL queries to join\nmultiple tables as long as your database account has access to the tables."),(0,s.yg)("h3",{id:"how-do-i-create-my-own-visualization"},"How do I create my own visualization?"),(0,s.yg)("p",null,"We recommend reading the instructions in\n",(0,s.yg)("a",{parentName:"p",href:"/docs/contributing/creating-viz-plugins"},"Creating Visualization Plugins"),"."),(0,s.yg)("h3",{id:"can-i-upload-and-visualize-csv-data"},"Can I upload and visualize CSV data?"),(0,s.yg)("p",null,"Absolutely! Read the instructions ",(0,s.yg)("a",{parentName:"p",href:"/docs/creating-charts-dashboards/exploring-data"},"here")," to learn\nhow to enable and use CSV upload."),(0,s.yg)("h3",{id:"why-are-my-queries-timing-out"},"Why are my queries timing out?"),(0,s.yg)("p",null,"There are many reasons may cause long query timing out."),(0,s.yg)("p",null,"For running long query from Sql Lab, by default Superset allows it run as long as 6 hours before it\nbeing killed by celery. If you want to increase the time for running query, you can specify the\ntimeout in configuration. For example:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"SQLLAB_ASYNC_TIME_LIMIT_SEC = 60 * 60 * 6\n")),(0,s.yg)("p",null,"If you are seeing timeouts (504 Gateway Time-out) when loading dashboard or explore slice, you are\nprobably behind gateway or proxy server (such as Nginx). If it did not receive a timely response\nfrom Superset server (which is processing long queries), these web servers will send 504 status code\nto clients directly. Superset has a client-side timeout limit to address this issue. If query didn\u2019t\ncome back within client-side timeout (60 seconds by default), Superset will display warning message\nto avoid gateway timeout message. If you have a longer gateway timeout limit, you can change the\ntimeout settings in ",(0,s.yg)("strong",{parentName:"p"},"superset_config.py"),":"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"SUPERSET_WEBSERVER_TIMEOUT = 60\n")),(0,s.yg)("h3",{id:"why-is-the-map-not-visible-in-the-geospatial-visualization"},"Why is the map not visible in the geospatial visualization?"),(0,s.yg)("p",null,"You need to register a free account at ",(0,s.yg)("a",{parentName:"p",href:"https://www.mapbox.com"},"Mapbox.com"),", obtain an API key, and add it\nto ",(0,s.yg)("strong",{parentName:"p"},".env")," at the key MAPBOX_API_KEY:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},'MAPBOX_API_KEY = "longstringofalphanumer1c"\n')),(0,s.yg)("h3",{id:"how-to-limit-the-timed-refresh-on-a-dashboard"},"How to limit the timed refresh on a dashboard?"),(0,s.yg)("p",null,"By default, the dashboard timed refresh feature allows you to automatically re-query every slice on\na dashboard according to a set schedule. Sometimes, however, you won\u2019t want all of the slices to be\nrefreshed - especially if some data is slow moving, or run heavy queries. To exclude specific slices\nfrom the timed refresh process, add the ",(0,s.yg)("inlineCode",{parentName:"p"},"timed_refresh_immune_slices")," key to the dashboard JSON\nMetadata field:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},'{\n   "filter_immune_slices": [],\n    "expanded_slices": {},\n    "filter_immune_slice_fields": {},\n    "timed_refresh_immune_slices": [324]\n}\n')),(0,s.yg)("p",null,"In the example above, if a timed refresh is set for the dashboard, then every slice except 324 will\nbe automatically re-queried on schedule."),(0,s.yg)("p",null,"Slice refresh will also be staggered over the specified period. You can turn off this staggering by\nsetting the ",(0,s.yg)("inlineCode",{parentName:"p"},"stagger_refresh")," to false and modify the stagger period by setting ",(0,s.yg)("inlineCode",{parentName:"p"},"stagger_time")," to a\nvalue in milliseconds in the JSON Metadata field:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},'{\n    "stagger_refresh": false,\n    "stagger_time": 2500\n}\n')),(0,s.yg)("p",null,"Here, the entire dashboard will refresh at once if periodic refresh is on. The stagger time of 2.5\nseconds is ignored."),(0,s.yg)("p",null,(0,s.yg)("strong",{parentName:"p"},"Why does \u2018flask fab\u2019 or superset freezed/hung/not responding when started (my home directory is\nNFS mounted)?")),(0,s.yg)("p",null,"By default, Superset creates and uses an SQLite database at ",(0,s.yg)("inlineCode",{parentName:"p"},"~/.superset/superset.db"),". SQLite is\nknown to ",(0,s.yg)("a",{parentName:"p",href:"https://www.sqlite.org/lockingv3.html"},"not work well if used on NFS")," due to broken file\nlocking implementation on NFS."),(0,s.yg)("p",null,"You can override this path using the ",(0,s.yg)("strong",{parentName:"p"},"SUPERSET_HOME")," environment variable."),(0,s.yg)("p",null,"Another workaround is to change where superset stores the sqlite database by adding the following in\n",(0,s.yg)("inlineCode",{parentName:"p"},"superset_config.py"),":"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"SQLALCHEMY_DATABASE_URI = 'sqlite:////new/location/superset.db?check_same_thread=false'\n")),(0,s.yg)("p",null,"You can read more about customizing Superset using the configuration file\n",(0,s.yg)("a",{parentName:"p",href:"/docs/installation/configuring-superset"},"here"),"."),(0,s.yg)("h3",{id:"what-if-the-table-schema-changed"},"What if the table schema changed?"),(0,s.yg)("p",null,"Table schemas evolve, and Superset needs to reflect that. It\u2019s pretty common in the life cycle of a\ndashboard to want to add a new dimension or metric. To get Superset to discover your new columns,\nall you have to do is to go to ",(0,s.yg)("strong",{parentName:"p"},"Data -> Datasets"),", click the edit icon next to the dataset\nwhose schema has changed, and hit ",(0,s.yg)("strong",{parentName:"p"},"Sync columns from source")," from the ",(0,s.yg)("strong",{parentName:"p"},"Columns")," tab.\nBehind the scene, the new columns will get merged. Following this, you may want to re-edit the\ntable afterwards to configure the Columns tab, check the appropriate boxes and save again."),(0,s.yg)("h3",{id:"what-database-engine-can-i-use-as-a-backend-for-superset"},"What database engine can I use as a backend for Superset?"),(0,s.yg)("p",null,"To clarify, the database backend is an OLTP database used by Superset to store its internal\ninformation like your list of users and dashboard definitions. While Superset supports a\n",(0,s.yg)("a",{parentName:"p",href:"/docs/databases/installing-database-drivers/"},"variety of databases as data ",(0,s.yg)("em",{parentName:"a"},"sources")),",\nonly a few database engines are supported for use as the OLTP backend / metadata store."),(0,s.yg)("p",null,"Superset is tested using MySQL, PostgreSQL, and SQLite backends. It\u2019s recommended you install\nSuperset on one of these database servers for production.  Installation on other OLTP databases\nmay work but isn\u2019t tested.  It has been reported that ",(0,s.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/issues/18961"},"Microsoft SQL Server does ",(0,s.yg)("em",{parentName:"a"},"not"),"\nwork as a Superset backend"),". Column-store,\nnon-OLTP databases are not designed for this type of workload."),(0,s.yg)("h3",{id:"how-can-i-configure-oauth-authentication-and-authorization"},"How can I configure OAuth authentication and authorization?"),(0,s.yg)("p",null,"You can take a look at this Flask-AppBuilder\n",(0,s.yg)("a",{parentName:"p",href:"https://github.com/dpgaspar/Flask-AppBuilder/blob/master/examples/oauth/config.py"},"configuration example"),"."),(0,s.yg)("h3",{id:"is-there-a-way-to-force-the-dashboard-to-use-specific-colors"},"Is there a way to force the dashboard to use specific colors?"),(0,s.yg)("p",null,"It is possible on a per-dashboard basis by providing a mapping of labels to colors in the JSON\nMetadata attribute using the ",(0,s.yg)("inlineCode",{parentName:"p"},"label_colors")," key."),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},'{\n    "label_colors": {\n        "Girls": "#FF69B4",\n        "Boys": "#ADD8E6"\n    }\n}\n')),(0,s.yg)("h3",{id:"does-superset-work-with-insert-database-engine-here"},"Does Superset work with ","[insert database engine here]","?"),(0,s.yg)("p",null,"The ",(0,s.yg)("a",{parentName:"p",href:"/docs/databases/installing-database-drivers"},"Connecting to Databases section")," provides the best\noverview for supported databases. Database engines not listed on that page may work too. We rely on\nthe community to contribute to this knowledge base."),(0,s.yg)("p",null,"For a database engine to be supported in Superset through the SQLAlchemy connector, it requires\nhaving a Python compliant ",(0,s.yg)("a",{parentName:"p",href:"https://docs.sqlalchemy.org/en/13/dialects/"},"SQLAlchemy dialect")," as well\nas a ",(0,s.yg)("a",{parentName:"p",href:"https://www.python.org/dev/peps/pep-0249/"},"DBAPI driver")," defined. Database that have limited\nSQL support may work as well. For instance it\u2019s possible to connect to Druid through the SQLAlchemy\nconnector even though Druid does not support joins and subqueries. Another key element for a\ndatabase to be supported is through the Superset Database Engine Specification interface. This\ninterface allows for defining database-specific configurations and logic that go beyond the\nSQLAlchemy and DBAPI scope. This includes features like:"),(0,s.yg)("ul",null,(0,s.yg)("li",{parentName:"ul"},"date-related SQL function that allow Superset to fetch different time granularities when running\ntime-series queries"),(0,s.yg)("li",{parentName:"ul"},"whether the engine supports subqueries. If false, Superset may run 2-phase queries to compensate\nfor the limitation"),(0,s.yg)("li",{parentName:"ul"},"methods around processing logs and inferring the percentage of completion of a query"),(0,s.yg)("li",{parentName:"ul"},"technicalities as to how to handle cursors and connections if the driver is not standard DBAPI")),(0,s.yg)("p",null,"Beyond the SQLAlchemy connector, it\u2019s also possible, though much more involved, to extend Superset\nand write your own connector. The only example of this at the moment is the Druid connector, which\nis getting superseded by Druid\u2019s growing SQL support and the recent availability of a DBAPI and\nSQLAlchemy driver. If the database you are considering integrating has any kind of of SQL support,\nit\u2019s probably preferable to go the SQLAlchemy route. Note that for a native connector to be possible\nthe database needs to have support for running OLAP-type queries and should be able to do things that\nare typical in basic SQL:"),(0,s.yg)("ul",null,(0,s.yg)("li",{parentName:"ul"},"aggregate data"),(0,s.yg)("li",{parentName:"ul"},"apply filters"),(0,s.yg)("li",{parentName:"ul"},"apply HAVING-type filters"),(0,s.yg)("li",{parentName:"ul"},"be schema-aware, expose columns and types")),(0,s.yg)("h3",{id:"does-superset-offer-a-public-api"},"Does Superset offer a public API?"),(0,s.yg)("p",null,"Yes, a public REST API, and the surface of that API formal is expanding steadily. You can read more about this API and\ninteract with it using Swagger ",(0,s.yg)("a",{parentName:"p",href:"/docs/api"},"here"),"."),(0,s.yg)("p",null,"Some of the\noriginal vision for the collection of endpoints under ",(0,s.yg)("strong",{parentName:"p"},"/api/v1")," was originally specified in\n",(0,s.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/issues/7259"},"SIP-17")," and constant progress has been\nmade to cover more and more use cases."),(0,s.yg)("p",null,"The API available is documented using ",(0,s.yg)("a",{parentName:"p",href:"https://swagger.io/"},"Swagger")," and the documentation can be\nmade available under ",(0,s.yg)("strong",{parentName:"p"},"/swagger/v1")," by enabling the following flag in ",(0,s.yg)("inlineCode",{parentName:"p"},"superset_config.py"),":"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"FAB_API_SWAGGER_UI = True\n")),(0,s.yg)("p",null,"There are other undocumented ","[private]"," ways to interact with Superset programmatically that offer no\nguarantees and are not recommended but may fit your use case temporarily:"),(0,s.yg)("ul",null,(0,s.yg)("li",{parentName:"ul"},"using the ORM (SQLAlchemy) directly"),(0,s.yg)("li",{parentName:"ul"},"using the internal FAB ModelView API (to be deprecated in Superset)"),(0,s.yg)("li",{parentName:"ul"},"altering the source code in your fork")),(0,s.yg)("h3",{id:"how-can-i-see-usage-statistics-eg-monthly-active-users"},"How can I see usage statistics (e.g., monthly active users)?"),(0,s.yg)("p",null,"This functionality is not included with Superset, but you can extract and analyze Superset's application\nmetadata to see what actions have occurred.  By default, user activities are logged in the ",(0,s.yg)("inlineCode",{parentName:"p"},"logs")," table\nin Superset's metadata database.  One company has published a write-up of ",(0,s.yg)("a",{parentName:"p",href:"https://engineering.hometogo.com/monitor-superset-usage-via-superset-c7f9fba79525"},"how they analyzed Superset\nusage, including example queries"),"."),(0,s.yg)("h3",{id:"what-does-hours-offset-in-the-edit-dataset-view-do"},"What Does Hours Offset in the Edit Dataset view do?"),(0,s.yg)("p",null,"In the Edit Dataset view, you can specify a time offset. This field lets you configure the\nnumber of hours to be added or subtracted from the time column.\nThis can be used, for example, to convert UTC time to local time."),(0,s.yg)("h3",{id:"does-superset-collect-any-telemetry-data"},"Does Superset collect any telemetry data?"),(0,s.yg)("p",null,"Superset uses ",(0,s.yg)("a",{parentName:"p",href:"https://about.scarf.sh/"},"Scarf")," by default to collect basic telemetry data upon installing and/or running Superset. This data helps the maintainers of Superset better understand which versions of Superset are being used, in order to prioritize patch/minor releases and security fixes.\nWe use the ",(0,s.yg)("a",{parentName:"p",href:"https://docs.scarf.sh/gateway/"},"Scarf Gateway")," to sit in front of container registries, the ",(0,s.yg)("a",{parentName:"p",href:"https://about.scarf.sh/package-sdks"},"scarf-js")," package to track ",(0,s.yg)("inlineCode",{parentName:"p"},"npm")," installations, and a Scarf pixel to gather anonymous analytics on Superset page views.\nScarf purges PII and provides aggregated statistics. Superset users can easily opt out of analytics in various ways documented ",(0,s.yg)("a",{parentName:"p",href:"https://docs.scarf.sh/gateway/#do-not-track"},"here")," and ",(0,s.yg)("a",{parentName:"p",href:"https://docs.scarf.sh/package-analytics/#as-a-user-of-a-package-using-scarf-js-how-can-i-opt-out-of-analytics"},"here"),".\nSuperset maintainers can also opt out of telemetry data collection by setting the ",(0,s.yg)("inlineCode",{parentName:"p"},"SCARF_ANALYTICS")," environment variable to ",(0,s.yg)("inlineCode",{parentName:"p"},"false")," in the Superset container (or anywhere Superset/webpack are run).\nAdditional opt-out instructions for Docker users are available on the ",(0,s.yg)("a",{parentName:"p",href:"/docs/installation/installing-superset-using-docker-compose"},"Docker Installation")," page."),(0,s.yg)("h3",{id:"does-superset-have-an-archive-panel-or-trash-bin-from-which-a-user-can-recover-deleted-assets"},"Does Superset have an archive panel or trash bin from which a user can recover deleted assets?"),(0,s.yg)("p",null,"No. Currently, there is no way to recover a deleted Superset dashboard/chart/dataset/database from the UI. However, there is an ",(0,s.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/discussions/18386"},"ongoing discussion")," about implementing such a feature."),(0,s.yg)("p",null,"Hence, it is recommended to take periodic backups of the metadata database. For recovery, you can launch a recovery instance of a Superset server with the backed-up copy of the DB attached and use the Export Dashboard button in the Superset UI (or the ",(0,s.yg)("inlineCode",{parentName:"p"},"superset export-dashboards")," CLI command). Then, take the .zip file and import it into the current Superset instance."),(0,s.yg)("p",null,"Alternatively, you can programmatically take regular exports of the assets as a backup."))}c.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/b92f705c.e9380bdf.js b/assets/js/b92f705c.e9380bdf.js
deleted file mode 100644
index 765ed6b..0000000
--- a/assets/js/b92f705c.e9380bdf.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[1524],{95788:(e,t,a)=>{a.d(t,{Iu:()=>d,yg:()=>g});var n=a(11504);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?r(Object(a),!0).forEach((function(t){s(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):r(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(e,t){if(null==e)return{};var a,n,s=function(e,t){if(null==e)return{};var a,n,s={},r=Object.keys(e);for(n=0;n<r.length;n++)a=r[n],t.indexOf(a)>=0||(s[a]=e[a]);return s}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n<r.length;n++)a=r[n],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(s[a]=e[a])}return s}var l=n.createContext({}),u=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},d=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},p="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,s=e.mdxType,r=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),p=u(a),h=s,g=p["".concat(l,".").concat(h)]||p[h]||c[h]||r;return a?n.createElement(g,o(o({ref:t},d),{},{components:a})):n.createElement(g,o({ref:t},d))}));function g(e,t){var a=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var r=a.length,o=new Array(r);o[0]=h;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:s,o[1]=i;for(var u=2;u<r;u++)o[u]=a[u];return n.createElement.apply(null,o)}return n.createElement.apply(null,a)}h.displayName="MDXCreateElement"},284:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>c,frontMatter:()=>r,metadata:()=>i,toc:()=>u});var n=a(45072),s=(a(11504),a(95788));const r={title:"Frequently Asked Questions",hide_title:!0,sidebar_position:8},o=void 0,i={unversionedId:"frequently-asked-questions",id:"frequently-asked-questions",title:"Frequently Asked Questions",description:"Frequently Asked Questions",source:"@site/docs/frequently-asked-questions.mdx",sourceDirName:".",slug:"/frequently-asked-questions",permalink:"/docs/frequently-asked-questions",draft:!1,editUrl:"https://github.com/apache/superset/edit/master/docs/docs/frequently-asked-questions.mdx",tags:[],version:"current",sidebarPosition:8,frontMatter:{title:"Frequently Asked Questions",hide_title:!0,sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Creating Visualization Plugins",permalink:"/docs/contributing/creating-viz-plugins"},next:{title:"Security",permalink:"/docs/security/"}},l={},u=[{value:"Frequently Asked Questions",id:"frequently-asked-questions",level:2},{value:"How big of a dataset can Superset handle?",id:"how-big-of-a-dataset-can-superset-handle",level:3},{value:"What are the computing specifications required to run Superset?",id:"what-are-the-computing-specifications-required-to-run-superset",level:3},{value:"Can I join / query multiple tables at one time?",id:"can-i-join--query-multiple-tables-at-one-time",level:3},{value:"How do I create my own visualization?",id:"how-do-i-create-my-own-visualization",level:3},{value:"Can I upload and visualize CSV data?",id:"can-i-upload-and-visualize-csv-data",level:3},{value:"Why are my queries timing out?",id:"why-are-my-queries-timing-out",level:3},{value:"Why is the map not visible in the geospatial visualization?",id:"why-is-the-map-not-visible-in-the-geospatial-visualization",level:3},{value:"How to limit the timed refresh on a dashboard?",id:"how-to-limit-the-timed-refresh-on-a-dashboard",level:3},{value:"What if the table schema changed?",id:"what-if-the-table-schema-changed",level:3},{value:"What database engine can I use as a backend for Superset?",id:"what-database-engine-can-i-use-as-a-backend-for-superset",level:3},{value:"How can I configure OAuth authentication and authorization?",id:"how-can-i-configure-oauth-authentication-and-authorization",level:3},{value:"Is there a way to force the dashboard to use specific colors?",id:"is-there-a-way-to-force-the-dashboard-to-use-specific-colors",level:3},{value:"Does Superset work with insert database engine here?",id:"does-superset-work-with-insert-database-engine-here",level:3},{value:"Does Superset offer a public API?",id:"does-superset-offer-a-public-api",level:3},{value:"How can I see usage statistics (e.g., monthly active users)?",id:"how-can-i-see-usage-statistics-eg-monthly-active-users",level:3},{value:"What Does Hours Offset in the Edit Dataset view do?",id:"what-does-hours-offset-in-the-edit-dataset-view-do",level:3},{value:"Does Superset collect any telemetry data?",id:"does-superset-collect-any-telemetry-data",level:3},{value:"Does Superset have an archive panel or trash bin from which a user can recover deleted assets?",id:"does-superset-have-an-archive-panel-or-trash-bin-from-which-a-user-can-recover-deleted-assets",level:3}],d={toc:u},p="wrapper";function c(e){let{components:t,...a}=e;return(0,s.yg)(p,(0,n.c)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,s.yg)("h2",{id:"frequently-asked-questions"},"Frequently Asked Questions"),(0,s.yg)("h3",{id:"how-big-of-a-dataset-can-superset-handle"},"How big of a dataset can Superset handle?"),(0,s.yg)("p",null,"Superset can work with even gigantic databases! Superset acts as a thin layer above your underlying\ndatabases or data engines, which do all the processing.  Superset simply visualizes the results of\nthe query."),(0,s.yg)("p",null,"The key to achieving acceptable performance in Superset is whether your database can execute queries\nand return results at a speed that is acceptable to your users. If you experience slow performance with\nSuperset, benchmark and tune your data warehouse."),(0,s.yg)("h3",{id:"what-are-the-computing-specifications-required-to-run-superset"},"What are the computing specifications required to run Superset?"),(0,s.yg)("p",null,"The specs of your Superset installation depend on how many users you have and what their activity is, not\non the size of your data.  Superset admins in the community have reported 8GB RAM, 2vCPUs as adequate to\nrun a moderately-sized instance. To develop Superset, e.g., compile code or build images, you may\nneed more power."),(0,s.yg)("p",null,"Monitor your resource usage and increase or decrease as needed. Note that Superset usage has a tendency\nto occur in spikes, e.g., if everyone in a meeting loads the same dashboard at once."),(0,s.yg)("p",null,"Superset's application metadata does not require a very large database to store it, though\nthe log file grows over time."),(0,s.yg)("h3",{id:"can-i-join--query-multiple-tables-at-one-time"},"Can I join / query multiple tables at one time?"),(0,s.yg)("p",null,"Not in the Explore or Visualization UI. A Superset SQLAlchemy datasource can only be a single table\nor a view."),(0,s.yg)("p",null,"When working with tables, the solution would be to create a table that contains all the fields\nneeded for your analysis, most likely through some scheduled batch process."),(0,s.yg)("p",null,"A view is a simple logical layer that abstracts an arbitrary SQL queries as a virtual table. This can\nallow you to join and union multiple tables and to apply some transformation using arbitrary SQL\nexpressions. The limitation there is your database performance, as Superset effectively will run a\nquery on top of your query (view). A good practice may be to limit yourself to joining your main\nlarge table to one or many small tables only, and avoid using ",(0,s.yg)("em",{parentName:"p"},"GROUP BY")," where possible as Superset\nwill do its own ",(0,s.yg)("em",{parentName:"p"},"GROUP BY")," and doing the work twice might slow down performance."),(0,s.yg)("p",null,"Whether you use a table or a view, performance depends on how fast your database can deliver\nthe result to users interacting with Superset."),(0,s.yg)("p",null,"However, if you are using SQL Lab, there is no such limitation. You can write SQL queries to join\nmultiple tables as long as your database account has access to the tables."),(0,s.yg)("h3",{id:"how-do-i-create-my-own-visualization"},"How do I create my own visualization?"),(0,s.yg)("p",null,"We recommend reading the instructions in\n",(0,s.yg)("a",{parentName:"p",href:"/docs/contributing/creating-viz-plugins"},"Creating Visualization Plugins"),"."),(0,s.yg)("h3",{id:"can-i-upload-and-visualize-csv-data"},"Can I upload and visualize CSV data?"),(0,s.yg)("p",null,"Absolutely! Read the instructions ",(0,s.yg)("a",{parentName:"p",href:"/docs/creating-charts-dashboards/exploring-data"},"here")," to learn\nhow to enable and use CSV upload."),(0,s.yg)("h3",{id:"why-are-my-queries-timing-out"},"Why are my queries timing out?"),(0,s.yg)("p",null,"There are many reasons may cause long query timing out."),(0,s.yg)("p",null,"For running long query from Sql Lab, by default Superset allows it run as long as 6 hours before it\nbeing killed by celery. If you want to increase the time for running query, you can specify the\ntimeout in configuration. For example:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"SQLLAB_ASYNC_TIME_LIMIT_SEC = 60 * 60 * 6\n")),(0,s.yg)("p",null,"If you are seeing timeouts (504 Gateway Time-out) when loading dashboard or explore slice, you are\nprobably behind gateway or proxy server (such as Nginx). If it did not receive a timely response\nfrom Superset server (which is processing long queries), these web servers will send 504 status code\nto clients directly. Superset has a client-side timeout limit to address this issue. If query didn\u2019t\ncome back within client-side timeout (60 seconds by default), Superset will display warning message\nto avoid gateway timeout message. If you have a longer gateway timeout limit, you can change the\ntimeout settings in ",(0,s.yg)("strong",{parentName:"p"},"superset_config.py"),":"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"SUPERSET_WEBSERVER_TIMEOUT = 60\n")),(0,s.yg)("h3",{id:"why-is-the-map-not-visible-in-the-geospatial-visualization"},"Why is the map not visible in the geospatial visualization?"),(0,s.yg)("p",null,"You need to register a free account at ",(0,s.yg)("a",{parentName:"p",href:"https://www.mapbox.com"},"Mapbox.com"),", obtain an API key, and add it\nto ",(0,s.yg)("strong",{parentName:"p"},".env")," and ",(0,s.yg)("strong",{parentName:"p"},".env-non-dev")," at the key MAPBOX_API_KEY:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},'MAPBOX_API_KEY = "longstringofalphanumer1c"\n')),(0,s.yg)("h3",{id:"how-to-limit-the-timed-refresh-on-a-dashboard"},"How to limit the timed refresh on a dashboard?"),(0,s.yg)("p",null,"By default, the dashboard timed refresh feature allows you to automatically re-query every slice on\na dashboard according to a set schedule. Sometimes, however, you won\u2019t want all of the slices to be\nrefreshed - especially if some data is slow moving, or run heavy queries. To exclude specific slices\nfrom the timed refresh process, add the ",(0,s.yg)("inlineCode",{parentName:"p"},"timed_refresh_immune_slices")," key to the dashboard JSON\nMetadata field:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},'{\n   "filter_immune_slices": [],\n    "expanded_slices": {},\n    "filter_immune_slice_fields": {},\n    "timed_refresh_immune_slices": [324]\n}\n')),(0,s.yg)("p",null,"In the example above, if a timed refresh is set for the dashboard, then every slice except 324 will\nbe automatically re-queried on schedule."),(0,s.yg)("p",null,"Slice refresh will also be staggered over the specified period. You can turn off this staggering by\nsetting the ",(0,s.yg)("inlineCode",{parentName:"p"},"stagger_refresh")," to false and modify the stagger period by setting ",(0,s.yg)("inlineCode",{parentName:"p"},"stagger_time")," to a\nvalue in milliseconds in the JSON Metadata field:"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},'{\n    "stagger_refresh": false,\n    "stagger_time": 2500\n}\n')),(0,s.yg)("p",null,"Here, the entire dashboard will refresh at once if periodic refresh is on. The stagger time of 2.5\nseconds is ignored."),(0,s.yg)("p",null,(0,s.yg)("strong",{parentName:"p"},"Why does \u2018flask fab\u2019 or superset freezed/hung/not responding when started (my home directory is\nNFS mounted)?")),(0,s.yg)("p",null,"By default, Superset creates and uses an SQLite database at ",(0,s.yg)("inlineCode",{parentName:"p"},"~/.superset/superset.db"),". SQLite is\nknown to ",(0,s.yg)("a",{parentName:"p",href:"https://www.sqlite.org/lockingv3.html"},"not work well if used on NFS")," due to broken file\nlocking implementation on NFS."),(0,s.yg)("p",null,"You can override this path using the ",(0,s.yg)("strong",{parentName:"p"},"SUPERSET_HOME")," environment variable."),(0,s.yg)("p",null,"Another workaround is to change where superset stores the sqlite database by adding the following in\n",(0,s.yg)("inlineCode",{parentName:"p"},"superset_config.py"),":"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"SQLALCHEMY_DATABASE_URI = 'sqlite:////new/location/superset.db?check_same_thread=false'\n")),(0,s.yg)("p",null,"You can read more about customizing Superset using the configuration file\n",(0,s.yg)("a",{parentName:"p",href:"/docs/installation/configuring-superset"},"here"),"."),(0,s.yg)("h3",{id:"what-if-the-table-schema-changed"},"What if the table schema changed?"),(0,s.yg)("p",null,"Table schemas evolve, and Superset needs to reflect that. It\u2019s pretty common in the life cycle of a\ndashboard to want to add a new dimension or metric. To get Superset to discover your new columns,\nall you have to do is to go to ",(0,s.yg)("strong",{parentName:"p"},"Data -> Datasets"),", click the edit icon next to the dataset\nwhose schema has changed, and hit ",(0,s.yg)("strong",{parentName:"p"},"Sync columns from source")," from the ",(0,s.yg)("strong",{parentName:"p"},"Columns")," tab.\nBehind the scene, the new columns will get merged. Following this, you may want to re-edit the\ntable afterwards to configure the Columns tab, check the appropriate boxes and save again."),(0,s.yg)("h3",{id:"what-database-engine-can-i-use-as-a-backend-for-superset"},"What database engine can I use as a backend for Superset?"),(0,s.yg)("p",null,"To clarify, the database backend is an OLTP database used by Superset to store its internal\ninformation like your list of users and dashboard definitions. While Superset supports a\n",(0,s.yg)("a",{parentName:"p",href:"/docs/databases/installing-database-drivers/"},"variety of databases as data ",(0,s.yg)("em",{parentName:"a"},"sources")),",\nonly a few database engines are supported for use as the OLTP backend / metadata store."),(0,s.yg)("p",null,"Superset is tested using MySQL, PostgreSQL, and SQLite backends. It\u2019s recommended you install\nSuperset on one of these database servers for production.  Installation on other OLTP databases\nmay work but isn\u2019t tested.  It has been reported that ",(0,s.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/issues/18961"},"Microsoft SQL Server does ",(0,s.yg)("em",{parentName:"a"},"not"),"\nwork as a Superset backend"),". Column-store,\nnon-OLTP databases are not designed for this type of workload."),(0,s.yg)("h3",{id:"how-can-i-configure-oauth-authentication-and-authorization"},"How can I configure OAuth authentication and authorization?"),(0,s.yg)("p",null,"You can take a look at this Flask-AppBuilder\n",(0,s.yg)("a",{parentName:"p",href:"https://github.com/dpgaspar/Flask-AppBuilder/blob/master/examples/oauth/config.py"},"configuration example"),"."),(0,s.yg)("h3",{id:"is-there-a-way-to-force-the-dashboard-to-use-specific-colors"},"Is there a way to force the dashboard to use specific colors?"),(0,s.yg)("p",null,"It is possible on a per-dashboard basis by providing a mapping of labels to colors in the JSON\nMetadata attribute using the ",(0,s.yg)("inlineCode",{parentName:"p"},"label_colors")," key."),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},'{\n    "label_colors": {\n        "Girls": "#FF69B4",\n        "Boys": "#ADD8E6"\n    }\n}\n')),(0,s.yg)("h3",{id:"does-superset-work-with-insert-database-engine-here"},"Does Superset work with ","[insert database engine here]","?"),(0,s.yg)("p",null,"The ",(0,s.yg)("a",{parentName:"p",href:"/docs/databases/installing-database-drivers"},"Connecting to Databases section")," provides the best\noverview for supported databases. Database engines not listed on that page may work too. We rely on\nthe community to contribute to this knowledge base."),(0,s.yg)("p",null,"For a database engine to be supported in Superset through the SQLAlchemy connector, it requires\nhaving a Python compliant ",(0,s.yg)("a",{parentName:"p",href:"https://docs.sqlalchemy.org/en/13/dialects/"},"SQLAlchemy dialect")," as well\nas a ",(0,s.yg)("a",{parentName:"p",href:"https://www.python.org/dev/peps/pep-0249/"},"DBAPI driver")," defined. Database that have limited\nSQL support may work as well. For instance it\u2019s possible to connect to Druid through the SQLAlchemy\nconnector even though Druid does not support joins and subqueries. Another key element for a\ndatabase to be supported is through the Superset Database Engine Specification interface. This\ninterface allows for defining database-specific configurations and logic that go beyond the\nSQLAlchemy and DBAPI scope. This includes features like:"),(0,s.yg)("ul",null,(0,s.yg)("li",{parentName:"ul"},"date-related SQL function that allow Superset to fetch different time granularities when running\ntime-series queries"),(0,s.yg)("li",{parentName:"ul"},"whether the engine supports subqueries. If false, Superset may run 2-phase queries to compensate\nfor the limitation"),(0,s.yg)("li",{parentName:"ul"},"methods around processing logs and inferring the percentage of completion of a query"),(0,s.yg)("li",{parentName:"ul"},"technicalities as to how to handle cursors and connections if the driver is not standard DBAPI")),(0,s.yg)("p",null,"Beyond the SQLAlchemy connector, it\u2019s also possible, though much more involved, to extend Superset\nand write your own connector. The only example of this at the moment is the Druid connector, which\nis getting superseded by Druid\u2019s growing SQL support and the recent availability of a DBAPI and\nSQLAlchemy driver. If the database you are considering integrating has any kind of of SQL support,\nit\u2019s probably preferable to go the SQLAlchemy route. Note that for a native connector to be possible\nthe database needs to have support for running OLAP-type queries and should be able to do things that\nare typical in basic SQL:"),(0,s.yg)("ul",null,(0,s.yg)("li",{parentName:"ul"},"aggregate data"),(0,s.yg)("li",{parentName:"ul"},"apply filters"),(0,s.yg)("li",{parentName:"ul"},"apply HAVING-type filters"),(0,s.yg)("li",{parentName:"ul"},"be schema-aware, expose columns and types")),(0,s.yg)("h3",{id:"does-superset-offer-a-public-api"},"Does Superset offer a public API?"),(0,s.yg)("p",null,"Yes, a public REST API, and the surface of that API formal is expanding steadily. You can read more about this API and\ninteract with it using Swagger ",(0,s.yg)("a",{parentName:"p",href:"/docs/api"},"here"),"."),(0,s.yg)("p",null,"Some of the\noriginal vision for the collection of endpoints under ",(0,s.yg)("strong",{parentName:"p"},"/api/v1")," was originally specified in\n",(0,s.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/issues/7259"},"SIP-17")," and constant progress has been\nmade to cover more and more use cases."),(0,s.yg)("p",null,"The API available is documented using ",(0,s.yg)("a",{parentName:"p",href:"https://swagger.io/"},"Swagger")," and the documentation can be\nmade available under ",(0,s.yg)("strong",{parentName:"p"},"/swagger/v1")," by enabling the following flag in ",(0,s.yg)("inlineCode",{parentName:"p"},"superset_config.py"),":"),(0,s.yg)("pre",null,(0,s.yg)("code",{parentName:"pre"},"FAB_API_SWAGGER_UI = True\n")),(0,s.yg)("p",null,"There are other undocumented ","[private]"," ways to interact with Superset programmatically that offer no\nguarantees and are not recommended but may fit your use case temporarily:"),(0,s.yg)("ul",null,(0,s.yg)("li",{parentName:"ul"},"using the ORM (SQLAlchemy) directly"),(0,s.yg)("li",{parentName:"ul"},"using the internal FAB ModelView API (to be deprecated in Superset)"),(0,s.yg)("li",{parentName:"ul"},"altering the source code in your fork")),(0,s.yg)("h3",{id:"how-can-i-see-usage-statistics-eg-monthly-active-users"},"How can I see usage statistics (e.g., monthly active users)?"),(0,s.yg)("p",null,"This functionality is not included with Superset, but you can extract and analyze Superset's application\nmetadata to see what actions have occurred.  By default, user activities are logged in the ",(0,s.yg)("inlineCode",{parentName:"p"},"logs")," table\nin Superset's metadata database.  One company has published a write-up of ",(0,s.yg)("a",{parentName:"p",href:"https://engineering.hometogo.com/monitor-superset-usage-via-superset-c7f9fba79525"},"how they analyzed Superset\nusage, including example queries"),"."),(0,s.yg)("h3",{id:"what-does-hours-offset-in-the-edit-dataset-view-do"},"What Does Hours Offset in the Edit Dataset view do?"),(0,s.yg)("p",null,"In the Edit Dataset view, you can specify a time offset. This field lets you configure the\nnumber of hours to be added or subtracted from the time column.\nThis can be used, for example, to convert UTC time to local time."),(0,s.yg)("h3",{id:"does-superset-collect-any-telemetry-data"},"Does Superset collect any telemetry data?"),(0,s.yg)("p",null,"Superset uses ",(0,s.yg)("a",{parentName:"p",href:"https://about.scarf.sh/"},"Scarf")," by default to collect basic telemetry data upon installing and/or running Superset. This data helps the maintainers of Superset better understand which versions of Superset are being used, in order to prioritize patch/minor releases and security fixes.\nWe use the ",(0,s.yg)("a",{parentName:"p",href:"https://docs.scarf.sh/gateway/"},"Scarf Gateway")," to sit in front of container registries, the ",(0,s.yg)("a",{parentName:"p",href:"https://about.scarf.sh/package-sdks"},"scarf-js")," package to track ",(0,s.yg)("inlineCode",{parentName:"p"},"npm")," installations, and a Scarf pixel to gather anonymous analytics on Superset page views.\nScarf purges PII and provides aggregated statistics. Superset users can easily opt out of analytics in various ways documented ",(0,s.yg)("a",{parentName:"p",href:"https://docs.scarf.sh/gateway/#do-not-track"},"here")," and ",(0,s.yg)("a",{parentName:"p",href:"https://docs.scarf.sh/package-analytics/#as-a-user-of-a-package-using-scarf-js-how-can-i-opt-out-of-analytics"},"here"),".\nSuperset maintainers can also opt out of telemetry data collection by setting the ",(0,s.yg)("inlineCode",{parentName:"p"},"SCARF_ANALYTICS")," environment variable to ",(0,s.yg)("inlineCode",{parentName:"p"},"false")," in the Superset container (or anywhere Superset/webpack are run).\nAdditional opt-out instructions for Docker users are available on the ",(0,s.yg)("a",{parentName:"p",href:"/docs/installation/installing-superset-using-docker-compose"},"Docker Installation")," page."),(0,s.yg)("h3",{id:"does-superset-have-an-archive-panel-or-trash-bin-from-which-a-user-can-recover-deleted-assets"},"Does Superset have an archive panel or trash bin from which a user can recover deleted assets?"),(0,s.yg)("p",null,"No. Currently, there is no way to recover a deleted Superset dashboard/chart/dataset/database from the UI. However, there is an ",(0,s.yg)("a",{parentName:"p",href:"https://github.com/apache/superset/discussions/18386"},"ongoing discussion")," about implementing such a feature."),(0,s.yg)("p",null,"Hence, it is recommended to take periodic backups of the metadata database. For recovery, you can launch a recovery instance of a Superset server with the backed-up copy of the DB attached and use the Export Dashboard button in the Superset UI (or the ",(0,s.yg)("inlineCode",{parentName:"p"},"superset export-dashboards")," CLI command). Then, take the .zip file and import it into the current Superset instance."),(0,s.yg)("p",null,"Alternatively, you can programmatically take regular exports of the assets as a backup."))}c.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.29a1022f.js b/assets/js/runtime~main.22b5cbbe.js
similarity index 97%
rename from assets/js/runtime~main.29a1022f.js
rename to assets/js/runtime~main.22b5cbbe.js
index ceb2456..4c96cbd 100644
--- a/assets/js/runtime~main.29a1022f.js
+++ b/assets/js/runtime~main.22b5cbbe.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,f,c,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=b,r.c=t,e=[],r.O=(a,f,c,d)=>{if(!f){var b=1/0;for(i=0;i<e.length;i++){f=e[i][0],c=e[i][1],d=e[i][2];for(var t=!0,o=0;o<f.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=c();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[f,c,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var b={};a=a||[null,f({}),f([]),f(f)];for(var t=2&c&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(d,b),d},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({196:"1c42a294",264:"e0a8f778",428:"f75b37f5",616:"3c585fdb",652:"0ae8b3d4",984:"dbb131dd",1008:"eb23a929",1032:"1c734f75",1156:"5818c28e",1204:"07f0ce13",1328:"1ce51947",1420:"30334fcd",1436:"3ec2c3f7",1524:"b92f705c",1528:"dc737160",1620:"2bafca50",1688:"69a4ab96",1748:"d76e6194",1856:"74876495",1933:"f5f07875",2104:"0c21af39",2572:"30256b0d",2644:"9d6fd8ea",2730:"6edc47f3",2751:"67158350",3128:"3c835dee",3480:"cd90435d",3548:"eb3b0997",3664:"f4a6e698",3808:"bd23e567",3904:"40974919",4111:"2c412ea7",4152:"9791fd42",4204:"1f391b9e",4244:"6a90d500",4304:"fe0957ee",4348:"30ec1363",4744:"afef705c",4760:"dc3fdd24",4800:"f9cc156b",5020:"25f17725",5056:"fa1a3aa0",5112:"d5417e33",5132:"4e664dc4",5164:"a9e1a7f6",5180:"57b59cd4",5336:"cf6ffe2f",5496:"a584ba2a",5680:"88eaec5a",5696:"935f2afb",5964:"600a9360",6040:"070b53d1",6044:"c296437a",6084:"6948bca1",6148:"496bf018",6200:"0a0a6d3c",6264:"36ea7a08",6452:"972382ea",6500:"0e9953cd",6544:"d83b78fc",6690:"da60bc8f",6752:"17896441",6872:"35a5de3c",7116:"507542a3",7140:"18cf5ace",7144:"71cf7fe6",7180:"e7c796a6",7228:"2f1b3cda",7268:"5e50ba72",7300:"c1424005",7344:"904d61ef",7504:"ce3fa444",7560:"9a9c044b",7652:"393be207",7672:"21b4b958",7752:"58160c0b",7800:"b46ab14b",7840:"e187e321",7852:"31e90f3c",7936:"6432bc55",7988:"f8409a7e",8396:"19682bb8",8400:"dd0670d3",8552:"1df93b7f",8644:"53bb5fc4",8696:"8660bbc8",9496:"471df853",9560:"5ea65e65",9648:"1a4e3797",9656:"1be78505",9684:"262418cd",9704:"640bc8a0",9748:"a309f86e",9792:"c76f729d",9892:"ee5d850a",9908:"4cc2c078",9980:"2461ffa2"}[e]||e)+"."+{196:"6bb71a8a",264:"456fd1ce",428:"bbb7e730",504:"3a7b75c9",532:"d5299be1",616:"edbb38f6",652:"83f331a5",984:"3a6a8245",1008:"2ef565e1",1032:"8d1cc8bc",1156:"998de4e0",1204:"917ee554",1328:"cf223d28",1420:"ec0ebf1b",1436:"de24784a",1480:"53759c72",1524:"e9380bdf",1528:"0a6cbeb4",1620:"fe144ae6",1676:"f81be4a9",1688:"d02e40f0",1748:"8e0cab52",1856:"af04cd86",1933:"10cd38c1",2104:"57de718d",2528:"180a6744",2572:"c501eece",2644:"8836b801",2730:"3bed97e5",2751:"26e61633",3128:"d87184f1",3480:"ef593608",3548:"6fcc911f",3664:"2d8655d3",3808:"7744c15c",3848:"e2a75b70",3864:"f3c2b8a7",3904:"f5145e99",4111:"8f2343dd",4152:"14a4f5d9",4204:"e5c7194c",4244:"f355e43c",4304:"a1baa283",4348:"9e9ad500",4744:"6fee4ba1",4760:"4ad87ed7",4800:"f1f99102",5020:"7375f0e0",5056:"2fce82b6",5112:"b5e5ea7b",5132:"4b67b3aa",5164:"9dd32fa3",5180:"cceaae56",5336:"c4031355",5496:"33328ae6",5680:"22b07e8e",5696:"91c5a07a",5964:"93fd3055",6040:"5ab7f68e",6044:"b173ecad",6084:"5a73dea7",6148:"0923d32f",6200:"42932d39",6264:"d3790955",6452:"90af39a4",6500:"a96c38bc",6544:"2c6d6f38",6690:"f68de3a4",6752:"51991082",6872:"8ea7a28d",6880:"d27a3c73",7116:"17eac7b1",7140:"d2997bf0",7144:"fa40d205",7180:"6d6f7083",7228:"d1199533",7268:"35221859",7300:"82f5e283",7344:"bbff6082",7504:"8b78db4a",7560:"042480cc",7652:"82b3ed53",7672:"fefcd628",7752:"adec76ae",7800:"fbf6e3f9",7840:"285ee94f",7852:"e5235a0c",7936:"e4f6b618",7988:"d7bd5bc0",8396:"f58a9685",8400:"387a9384",8464:"24d42d4d",8552:"00b8cce5",8644:"e3c349c6",8696:"7b1445a5",8879:"2f35bcd7",9160:"fad42e77",9496:"fb95e367",9560:"9a53b42a",9648:"15293a86",9656:"3715d28d",9684:"86dd5ef2",9704:"3327a0bf",9748:"174f7c1d",9772:"d7658691",9792:"f979d761",9892:"6c5273be",9908:"31095ff1",9980:"dae95944"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),c={},d="docs-v-2:",r.l=(e,a,f,b)=>{if(c[e])c[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var l=n[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==d+f){t=l;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",d+f),t.src=e),c[e]=[a];var u=(a,f)=>{t.onerror=t.onload=null,clearTimeout(s);var d=c[e];if(delete c[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(f))),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={17896441:"6752",40974919:"3904",67158350:"2751",74876495:"1856","1c42a294":"196",e0a8f778:"264",f75b37f5:"428","3c585fdb":"616","0ae8b3d4":"652",dbb131dd:"984",eb23a929:"1008","1c734f75":"1032","5818c28e":"1156","07f0ce13":"1204","1ce51947":"1328","30334fcd":"1420","3ec2c3f7":"1436",b92f705c:"1524",dc737160:"1528","2bafca50":"1620","69a4ab96":"1688",d76e6194:"1748",f5f07875:"1933","0c21af39":"2104","30256b0d":"2572","9d6fd8ea":"2644","6edc47f3":"2730","3c835dee":"3128",cd90435d:"3480",eb3b0997:"3548",f4a6e698:"3664",bd23e567:"3808","2c412ea7":"4111","9791fd42":"4152","1f391b9e":"4204","6a90d500":"4244",fe0957ee:"4304","30ec1363":"4348",afef705c:"4744",dc3fdd24:"4760",f9cc156b:"4800","25f17725":"5020",fa1a3aa0:"5056",d5417e33:"5112","4e664dc4":"5132",a9e1a7f6:"5164","57b59cd4":"5180",cf6ffe2f:"5336",a584ba2a:"5496","88eaec5a":"5680","935f2afb":"5696","600a9360":"5964","070b53d1":"6040",c296437a:"6044","6948bca1":"6084","496bf018":"6148","0a0a6d3c":"6200","36ea7a08":"6264","972382ea":"6452","0e9953cd":"6500",d83b78fc:"6544",da60bc8f:"6690","35a5de3c":"6872","507542a3":"7116","18cf5ace":"7140","71cf7fe6":"7144",e7c796a6:"7180","2f1b3cda":"7228","5e50ba72":"7268",c1424005:"7300","904d61ef":"7344",ce3fa444:"7504","9a9c044b":"7560","393be207":"7652","21b4b958":"7672","58160c0b":"7752",b46ab14b:"7800",e187e321:"7840","31e90f3c":"7852","6432bc55":"7936",f8409a7e:"7988","19682bb8":"8396",dd0670d3:"8400","1df93b7f":"8552","53bb5fc4":"8644","8660bbc8":"8696","471df853":"9496","5ea65e65":"9560","1a4e3797":"9648","1be78505":"9656","262418cd":"9684","640bc8a0":"9704",a309f86e:"9748",c76f729d:"9792",ee5d850a:"9892","4cc2c078":"9908","2461ffa2":"9980"}[e]||e,r.p+r.u(e)},(()=>{var e={296:0,2176:0};r.f.j=(a,f)=>{var c=r.o(e,a)?e[a]:void 0;if(0!==c)if(c)f.push(c[2]);else if(/^2(17|9)6$/.test(a))e[a]=0;else{var d=new Promise(((f,d)=>c=e[a]=[f,d]));f.push(c[2]=d);var b=r.p+r.u(a),t=new Error;r.l(b,(f=>{if(r.o(e,a)&&(0!==(c=e[a])&&(e[a]=void 0),c)){var d=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+b+")",t.name="ChunkLoadError",t.type=d,t.request=b,c[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var c,d,b=f[0],t=f[1],o=f[2],n=0;if(b.some((a=>0!==e[a]))){for(c in t)r.o(t,c)&&(r.m[c]=t[c]);if(o)var i=o(r)}for(a&&a(f);n<b.length;n++)d=b[n],r.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return r.O(i)},f=self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[];f.forEach(a.bind(null,0)),f.push=a.bind(null,f.push.bind(f))})()})();
\ No newline at end of file
+(()=>{"use strict";var e,a,f,c,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=b,r.c=t,e=[],r.O=(a,f,c,d)=>{if(!f){var b=1/0;for(i=0;i<e.length;i++){f=e[i][0],c=e[i][1],d=e[i][2];for(var t=!0,o=0;o<f.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=c();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[f,c,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var b={};a=a||[null,f({}),f([]),f(f)];for(var t=2&c&&e;"object"==typeof t&&!~a.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(d,b),d},r.d=(e,a)=>{for(var f in a)r.o(a,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:a[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,f)=>(r.f[f](e,a),a)),[])),r.u=e=>"assets/js/"+({196:"1c42a294",264:"e0a8f778",428:"f75b37f5",616:"3c585fdb",652:"0ae8b3d4",984:"dbb131dd",1008:"eb23a929",1032:"1c734f75",1156:"5818c28e",1204:"07f0ce13",1328:"1ce51947",1420:"30334fcd",1436:"3ec2c3f7",1524:"b92f705c",1528:"dc737160",1620:"2bafca50",1688:"69a4ab96",1748:"d76e6194",1856:"74876495",1933:"f5f07875",2104:"0c21af39",2572:"30256b0d",2644:"9d6fd8ea",2730:"6edc47f3",2751:"67158350",3128:"3c835dee",3480:"cd90435d",3548:"eb3b0997",3664:"f4a6e698",3808:"bd23e567",3904:"40974919",4111:"2c412ea7",4152:"9791fd42",4204:"1f391b9e",4244:"6a90d500",4304:"fe0957ee",4348:"30ec1363",4744:"afef705c",4760:"dc3fdd24",4800:"f9cc156b",5020:"25f17725",5056:"fa1a3aa0",5112:"d5417e33",5132:"4e664dc4",5164:"a9e1a7f6",5180:"57b59cd4",5336:"cf6ffe2f",5496:"a584ba2a",5680:"88eaec5a",5696:"935f2afb",5964:"600a9360",6040:"070b53d1",6044:"c296437a",6084:"6948bca1",6148:"496bf018",6200:"0a0a6d3c",6264:"36ea7a08",6452:"972382ea",6500:"0e9953cd",6544:"d83b78fc",6690:"da60bc8f",6752:"17896441",6872:"35a5de3c",7116:"507542a3",7140:"18cf5ace",7144:"71cf7fe6",7180:"e7c796a6",7228:"2f1b3cda",7268:"5e50ba72",7300:"c1424005",7344:"904d61ef",7504:"ce3fa444",7560:"9a9c044b",7652:"393be207",7672:"21b4b958",7752:"58160c0b",7800:"b46ab14b",7840:"e187e321",7852:"31e90f3c",7936:"6432bc55",7988:"f8409a7e",8396:"19682bb8",8400:"dd0670d3",8552:"1df93b7f",8644:"53bb5fc4",8696:"8660bbc8",9496:"471df853",9560:"5ea65e65",9648:"1a4e3797",9656:"1be78505",9684:"262418cd",9704:"640bc8a0",9748:"a309f86e",9792:"c76f729d",9892:"ee5d850a",9908:"4cc2c078",9980:"2461ffa2"}[e]||e)+"."+{196:"6bb71a8a",264:"456fd1ce",428:"bbb7e730",504:"3a7b75c9",532:"d5299be1",616:"edbb38f6",652:"83f331a5",984:"3a6a8245",1008:"2ef565e1",1032:"8d1cc8bc",1156:"998de4e0",1204:"917ee554",1328:"cf223d28",1420:"ec0ebf1b",1436:"de24784a",1480:"53759c72",1524:"84b78771",1528:"0a6cbeb4",1620:"fe144ae6",1676:"f81be4a9",1688:"d02e40f0",1748:"8e0cab52",1856:"af04cd86",1933:"10cd38c1",2104:"57de718d",2528:"180a6744",2572:"c501eece",2644:"8836b801",2730:"3bed97e5",2751:"26e61633",3128:"d87184f1",3480:"ef593608",3548:"6fcc911f",3664:"2d8655d3",3808:"7744c15c",3848:"e2a75b70",3864:"f3c2b8a7",3904:"f5145e99",4111:"8f2343dd",4152:"14a4f5d9",4204:"e5c7194c",4244:"f355e43c",4304:"a1baa283",4348:"9e9ad500",4744:"6fee4ba1",4760:"4ad87ed7",4800:"f1f99102",5020:"7375f0e0",5056:"2fce82b6",5112:"b5e5ea7b",5132:"4b67b3aa",5164:"03b799f3",5180:"cceaae56",5336:"c4031355",5496:"33328ae6",5680:"22b07e8e",5696:"835ea211",5964:"93fd3055",6040:"5ab7f68e",6044:"b173ecad",6084:"5a73dea7",6148:"0923d32f",6200:"42932d39",6264:"d3790955",6452:"90af39a4",6500:"a96c38bc",6544:"2c6d6f38",6690:"f68de3a4",6752:"51991082",6872:"8ea7a28d",6880:"d27a3c73",7116:"17eac7b1",7140:"d2997bf0",7144:"fa40d205",7180:"6d6f7083",7228:"d1199533",7268:"35221859",7300:"82f5e283",7344:"bbff6082",7504:"8b78db4a",7560:"042480cc",7652:"82b3ed53",7672:"fefcd628",7752:"adec76ae",7800:"fbf6e3f9",7840:"285ee94f",7852:"e5235a0c",7936:"e4f6b618",7988:"d7bd5bc0",8396:"f58a9685",8400:"387a9384",8464:"24d42d4d",8552:"00b8cce5",8644:"e3c349c6",8696:"7b1445a5",8879:"2f35bcd7",9160:"fad42e77",9496:"fb95e367",9560:"9a53b42a",9648:"15293a86",9656:"3715d28d",9684:"86dd5ef2",9704:"3327a0bf",9748:"174f7c1d",9772:"d7658691",9792:"f979d761",9892:"6c5273be",9908:"31095ff1",9980:"dae95944"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),c={},d="docs-v-2:",r.l=(e,a,f,b)=>{if(c[e])c[e].push(a);else{var t,o;if(void 0!==f)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var l=n[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==d+f){t=l;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",d+f),t.src=e),c[e]=[a];var u=(a,f)=>{t.onerror=t.onload=null,clearTimeout(s);var d=c[e];if(delete c[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(f))),a)return a(f)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={17896441:"6752",40974919:"3904",67158350:"2751",74876495:"1856","1c42a294":"196",e0a8f778:"264",f75b37f5:"428","3c585fdb":"616","0ae8b3d4":"652",dbb131dd:"984",eb23a929:"1008","1c734f75":"1032","5818c28e":"1156","07f0ce13":"1204","1ce51947":"1328","30334fcd":"1420","3ec2c3f7":"1436",b92f705c:"1524",dc737160:"1528","2bafca50":"1620","69a4ab96":"1688",d76e6194:"1748",f5f07875:"1933","0c21af39":"2104","30256b0d":"2572","9d6fd8ea":"2644","6edc47f3":"2730","3c835dee":"3128",cd90435d:"3480",eb3b0997:"3548",f4a6e698:"3664",bd23e567:"3808","2c412ea7":"4111","9791fd42":"4152","1f391b9e":"4204","6a90d500":"4244",fe0957ee:"4304","30ec1363":"4348",afef705c:"4744",dc3fdd24:"4760",f9cc156b:"4800","25f17725":"5020",fa1a3aa0:"5056",d5417e33:"5112","4e664dc4":"5132",a9e1a7f6:"5164","57b59cd4":"5180",cf6ffe2f:"5336",a584ba2a:"5496","88eaec5a":"5680","935f2afb":"5696","600a9360":"5964","070b53d1":"6040",c296437a:"6044","6948bca1":"6084","496bf018":"6148","0a0a6d3c":"6200","36ea7a08":"6264","972382ea":"6452","0e9953cd":"6500",d83b78fc:"6544",da60bc8f:"6690","35a5de3c":"6872","507542a3":"7116","18cf5ace":"7140","71cf7fe6":"7144",e7c796a6:"7180","2f1b3cda":"7228","5e50ba72":"7268",c1424005:"7300","904d61ef":"7344",ce3fa444:"7504","9a9c044b":"7560","393be207":"7652","21b4b958":"7672","58160c0b":"7752",b46ab14b:"7800",e187e321:"7840","31e90f3c":"7852","6432bc55":"7936",f8409a7e:"7988","19682bb8":"8396",dd0670d3:"8400","1df93b7f":"8552","53bb5fc4":"8644","8660bbc8":"8696","471df853":"9496","5ea65e65":"9560","1a4e3797":"9648","1be78505":"9656","262418cd":"9684","640bc8a0":"9704",a309f86e:"9748",c76f729d:"9792",ee5d850a:"9892","4cc2c078":"9908","2461ffa2":"9980"}[e]||e,r.p+r.u(e)},(()=>{var e={296:0,2176:0};r.f.j=(a,f)=>{var c=r.o(e,a)?e[a]:void 0;if(0!==c)if(c)f.push(c[2]);else if(/^2(17|9)6$/.test(a))e[a]=0;else{var d=new Promise(((f,d)=>c=e[a]=[f,d]));f.push(c[2]=d);var b=r.p+r.u(a),t=new Error;r.l(b,(f=>{if(r.o(e,a)&&(0!==(c=e[a])&&(e[a]=void 0),c)){var d=f&&("load"===f.type?"missing":f.type),b=f&&f.target&&f.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+b+")",t.name="ChunkLoadError",t.type=d,t.request=b,c[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,f)=>{var c,d,b=f[0],t=f[1],o=f[2],n=0;if(b.some((a=>0!==e[a]))){for(c in t)r.o(t,c)&&(r.m[c]=t[c]);if(o)var i=o(r)}for(a&&a(f);n<b.length;n++)d=b[n],r.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return r.O(i)},f=self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[];f.forEach(a.bind(null,0)),f.push=a.bind(null,f.push.bind(f))})()})();
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index 1d2ca31..88f4b7b 100644
--- a/community/index.html
+++ b/community/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/index.html b/docs/api/index.html
index 258805e..ec841be 100644
--- a/docs/api/index.html
+++ b/docs/api/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -48,7 +48,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/contributing-page/index.html b/docs/contributing/contributing-page/index.html
index 889d3fe..eaa79be 100644
--- a/docs/contributing/contributing-page/index.html
+++ b/docs/contributing/contributing-page/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/conventions-and-typing/index.html b/docs/contributing/conventions-and-typing/index.html
index 586e5a8..9d3d097 100644
--- a/docs/contributing/conventions-and-typing/index.html
+++ b/docs/contributing/conventions-and-typing/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -49,7 +49,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/creating-viz-plugins/index.html b/docs/contributing/creating-viz-plugins/index.html
index c4f0217..1252f73 100644
--- a/docs/contributing/creating-viz-plugins/index.html
+++ b/docs/contributing/creating-viz-plugins/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -61,7 +61,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/hooks-and-linting/index.html b/docs/contributing/hooks-and-linting/index.html
index c77c816..5e2c48a 100644
--- a/docs/contributing/hooks-and-linting/index.html
+++ b/docs/contributing/hooks-and-linting/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/local-backend/index.html b/docs/contributing/local-backend/index.html
index 166e5ef..36ccb68 100644
--- a/docs/contributing/local-backend/index.html
+++ b/docs/contributing/local-backend/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -48,7 +48,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/pull-request-guidelines/index.html b/docs/contributing/pull-request-guidelines/index.html
index e55fdd9..4ea96be 100644
--- a/docs/contributing/pull-request-guidelines/index.html
+++ b/docs/contributing/pull-request-guidelines/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/style-guide/index.html b/docs/contributing/style-guide/index.html
index 2667c46..3dbca9f 100644
--- a/docs/contributing/style-guide/index.html
+++ b/docs/contributing/style-guide/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -48,7 +48,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/testing-locally/index.html b/docs/contributing/testing-locally/index.html
index 47b728a..ab308a8 100644
--- a/docs/contributing/testing-locally/index.html
+++ b/docs/contributing/testing-locally/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/translations/index.html b/docs/contributing/translations/index.html
index ad6cbcf..86eff01 100644
--- a/docs/contributing/translations/index.html
+++ b/docs/contributing/translations/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -76,7 +76,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/types-of-contributions/index.html b/docs/contributing/types-of-contributions/index.html
index ee3c60c..6377571 100644
--- a/docs/contributing/types-of-contributions/index.html
+++ b/docs/contributing/types-of-contributions/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -56,7 +56,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html b/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html
index 4292d94..f46cab5 100644
--- a/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html
+++ b/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -88,7 +88,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/creating-charts-dashboards/exploring-data/index.html b/docs/creating-charts-dashboards/exploring-data/index.html
index acf0897..42c4b9a 100644
--- a/docs/creating-charts-dashboards/exploring-data/index.html
+++ b/docs/creating-charts-dashboards/exploring-data/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -141,7 +141,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/ascend/index.html b/docs/databases/ascend/index.html
index c782908..c1ac438 100644
--- a/docs/databases/ascend/index.html
+++ b/docs/databases/ascend/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/athena/index.html b/docs/databases/athena/index.html
index ea88858..fc29701 100644
--- a/docs/databases/athena/index.html
+++ b/docs/databases/athena/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/bigquery/index.html b/docs/databases/bigquery/index.html
index a0bbff9..c5ce1a6 100644
--- a/docs/databases/bigquery/index.html
+++ b/docs/databases/bigquery/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/clickhouse/index.html b/docs/databases/clickhouse/index.html
index 9dd248a..043828c 100644
--- a/docs/databases/clickhouse/index.html
+++ b/docs/databases/clickhouse/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/cockroachdb/index.html b/docs/databases/cockroachdb/index.html
index ddd0779..b3ad8b9 100644
--- a/docs/databases/cockroachdb/index.html
+++ b/docs/databases/cockroachdb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/cratedb/index.html b/docs/databases/cratedb/index.html
index d1ca63c..901c19f 100644
--- a/docs/databases/cratedb/index.html
+++ b/docs/databases/cratedb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -49,7 +49,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/databend/index.html b/docs/databases/databend/index.html
index f35276c..16be52c 100644
--- a/docs/databases/databend/index.html
+++ b/docs/databases/databend/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/databricks/index.html b/docs/databases/databricks/index.html
index 503a832..72dd236 100644
--- a/docs/databases/databricks/index.html
+++ b/docs/databases/databricks/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/db-connection-ui/index.html b/docs/databases/db-connection-ui/index.html
index 2524cf5..fafdc7e 100644
--- a/docs/databases/db-connection-ui/index.html
+++ b/docs/databases/db-connection-ui/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/docker-add-drivers/index.html b/docs/databases/docker-add-drivers/index.html
index 61fb1bb..64f1b27 100644
--- a/docs/databases/docker-add-drivers/index.html
+++ b/docs/databases/docker-add-drivers/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/doris/index.html b/docs/databases/doris/index.html
index 365560b..c90d7d2 100644
--- a/docs/databases/doris/index.html
+++ b/docs/databases/doris/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/dremio/index.html b/docs/databases/dremio/index.html
index 876542e..7b8edbb 100644
--- a/docs/databases/dremio/index.html
+++ b/docs/databases/dremio/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/drill/index.html b/docs/databases/drill/index.html
index 132db8a..6fff768 100644
--- a/docs/databases/drill/index.html
+++ b/docs/databases/drill/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/druid/index.html b/docs/databases/druid/index.html
index 5989526..dc2342a 100644
--- a/docs/databases/druid/index.html
+++ b/docs/databases/druid/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -58,7 +58,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/dynamodb/index.html b/docs/databases/dynamodb/index.html
index 76e9362..14186f8 100644
--- a/docs/databases/dynamodb/index.html
+++ b/docs/databases/dynamodb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/elasticsearch/index.html b/docs/databases/elasticsearch/index.html
index 53919bc..12811db 100644
--- a/docs/databases/elasticsearch/index.html
+++ b/docs/databases/elasticsearch/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/exasol/index.html b/docs/databases/exasol/index.html
index f812ae8..16e939f 100644
--- a/docs/databases/exasol/index.html
+++ b/docs/databases/exasol/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/extra-settings/index.html b/docs/databases/extra-settings/index.html
index 1f3629d..77e40b0 100644
--- a/docs/databases/extra-settings/index.html
+++ b/docs/databases/extra-settings/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -55,7 +55,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/firebird/index.html b/docs/databases/firebird/index.html
index ef8fb17..f666759 100644
--- a/docs/databases/firebird/index.html
+++ b/docs/databases/firebird/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/firebolt/index.html b/docs/databases/firebolt/index.html
index abd6e4c..b7f5355 100644
--- a/docs/databases/firebolt/index.html
+++ b/docs/databases/firebolt/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/google-sheets/index.html b/docs/databases/google-sheets/index.html
index 832684e..7c7e83e 100644
--- a/docs/databases/google-sheets/index.html
+++ b/docs/databases/google-sheets/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -49,7 +49,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/hana/index.html b/docs/databases/hana/index.html
index 20462fe..5651ef5 100644
--- a/docs/databases/hana/index.html
+++ b/docs/databases/hana/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/hive/index.html b/docs/databases/hive/index.html
index 93579cd..decb971 100644
--- a/docs/databases/hive/index.html
+++ b/docs/databases/hive/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/hologres/index.html b/docs/databases/hologres/index.html
index beea875..fbc7c60 100644
--- a/docs/databases/hologres/index.html
+++ b/docs/databases/hologres/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/ibm-db2/index.html b/docs/databases/ibm-db2/index.html
index 9292138..fed7b83 100644
--- a/docs/databases/ibm-db2/index.html
+++ b/docs/databases/ibm-db2/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/impala/index.html b/docs/databases/impala/index.html
index aa34888..a45b8d6 100644
--- a/docs/databases/impala/index.html
+++ b/docs/databases/impala/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/installing-database-drivers/index.html b/docs/databases/installing-database-drivers/index.html
index b9c2646..630cb3e 100644
--- a/docs/databases/installing-database-drivers/index.html
+++ b/docs/databases/installing-database-drivers/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -56,7 +56,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/kusto/index.html b/docs/databases/kusto/index.html
index 2605001..d57bd40 100644
--- a/docs/databases/kusto/index.html
+++ b/docs/databases/kusto/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/kylin/index.html b/docs/databases/kylin/index.html
index 231c32f..e3ffe9c 100644
--- a/docs/databases/kylin/index.html
+++ b/docs/databases/kylin/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/meta-database/index.html b/docs/databases/meta-database/index.html
index 9f19d5b..a0db9c6 100644
--- a/docs/databases/meta-database/index.html
+++ b/docs/databases/meta-database/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/mysql/index.html b/docs/databases/mysql/index.html
index 5533fac..c584eeb 100644
--- a/docs/databases/mysql/index.html
+++ b/docs/databases/mysql/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/netezza/index.html b/docs/databases/netezza/index.html
index 0c67723..0db59aa 100644
--- a/docs/databases/netezza/index.html
+++ b/docs/databases/netezza/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/ocient/index.html b/docs/databases/ocient/index.html
index bff457a..7366627 100644
--- a/docs/databases/ocient/index.html
+++ b/docs/databases/ocient/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/oracle/index.html b/docs/databases/oracle/index.html
index 5ea454e..d7c020d 100644
--- a/docs/databases/oracle/index.html
+++ b/docs/databases/oracle/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/pinot/index.html b/docs/databases/pinot/index.html
index b1af059..d1287c4 100644
--- a/docs/databases/pinot/index.html
+++ b/docs/databases/pinot/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/postgres/index.html b/docs/databases/postgres/index.html
index 57e5850..f6f4530 100644
--- a/docs/databases/postgres/index.html
+++ b/docs/databases/postgres/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -50,7 +50,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/presto/index.html b/docs/databases/presto/index.html
index b9c4fb4..cc95a1a 100644
--- a/docs/databases/presto/index.html
+++ b/docs/databases/presto/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/redshift/index.html b/docs/databases/redshift/index.html
index 8adaacc..3f8aa97 100644
--- a/docs/databases/redshift/index.html
+++ b/docs/databases/redshift/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/risingwave/index.html b/docs/databases/risingwave/index.html
index d4d1bb9..b3c745e 100644
--- a/docs/databases/risingwave/index.html
+++ b/docs/databases/risingwave/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/rockset/index.html b/docs/databases/rockset/index.html
index eb1ab70..bd8153b 100644
--- a/docs/databases/rockset/index.html
+++ b/docs/databases/rockset/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/snowflake/index.html b/docs/databases/snowflake/index.html
index d68833b..f5b9129 100644
--- a/docs/databases/snowflake/index.html
+++ b/docs/databases/snowflake/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -55,7 +55,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/solr/index.html b/docs/databases/solr/index.html
index 8137aad..a8dfd22 100644
--- a/docs/databases/solr/index.html
+++ b/docs/databases/solr/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/spark-sql/index.html b/docs/databases/spark-sql/index.html
index 16f66d4..b5db46e 100644
--- a/docs/databases/spark-sql/index.html
+++ b/docs/databases/spark-sql/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/sql-server/index.html b/docs/databases/sql-server/index.html
index e606a49..35f4349 100644
--- a/docs/databases/sql-server/index.html
+++ b/docs/databases/sql-server/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/starrocks/index.html b/docs/databases/starrocks/index.html
index 93c2fec..798b575 100644
--- a/docs/databases/starrocks/index.html
+++ b/docs/databases/starrocks/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/teradata/index.html b/docs/databases/teradata/index.html
index 1b72c4e..523f952 100644
--- a/docs/databases/teradata/index.html
+++ b/docs/databases/teradata/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/timescaledb/index.html b/docs/databases/timescaledb/index.html
index 225357b..55f73f9 100644
--- a/docs/databases/timescaledb/index.html
+++ b/docs/databases/timescaledb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/trino/index.html b/docs/databases/trino/index.html
index 1afdaae..fc20be4 100644
--- a/docs/databases/trino/index.html
+++ b/docs/databases/trino/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/vertica/index.html b/docs/databases/vertica/index.html
index ef049d1..6bd5e51 100644
--- a/docs/databases/vertica/index.html
+++ b/docs/databases/vertica/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/yugabytedb/index.html b/docs/databases/yugabytedb/index.html
index 5ac9bf8..ff249d7 100644
--- a/docs/databases/yugabytedb/index.html
+++ b/docs/databases/yugabytedb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/frequently-asked-questions/index.html b/docs/frequently-asked-questions/index.html
index d6411ab..588d786 100644
--- a/docs/frequently-asked-questions/index.html
+++ b/docs/frequently-asked-questions/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
 come back within client-side timeout (60 seconds by default), Superset will display warning message
 to avoid gateway timeout message. If you have a longer gateway timeout limit, you can change the
 timeout settings in <strong>superset_config.py</strong>:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">SUPERSET_WEBSERVER_TIMEOUT = 60</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="why-is-the-map-not-visible-in-the-geospatial-visualization">Why is the map not visible in the geospatial visualization?<a href="#why-is-the-map-not-visible-in-the-geospatial-visualization" class="hash-link" aria-label="Direct link to Why is the map not visible in the geospatial visualization?" title="Direct link to Why is the map not visible in the geospatial visualization?">​</a></h3><p>You need to register a free account at <a href="https://www.mapbox.com" target="_blank" rel="noopener noreferrer">Mapbox.com</a>, obtain an API key, and add it
-to <strong>.env</strong> and <strong>.env-non-dev</strong> at the key MAPBOX_API_KEY:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">MAPBOX_API_KEY = &quot;longstringofalphanumer1c&quot;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-limit-the-timed-refresh-on-a-dashboard">How to limit the timed refresh on a dashboard?<a href="#how-to-limit-the-timed-refresh-on-a-dashboard" class="hash-link" aria-label="Direct link to How to limit the timed refresh on a dashboard?" title="Direct link to How to limit the timed refresh on a dashboard?">​</a></h3><p>By default, the dashboard timed refresh feature allows you to automatically re-query every slice on
+to <strong>.env</strong> at the key MAPBOX_API_KEY:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">MAPBOX_API_KEY = &quot;longstringofalphanumer1c&quot;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-limit-the-timed-refresh-on-a-dashboard">How to limit the timed refresh on a dashboard?<a href="#how-to-limit-the-timed-refresh-on-a-dashboard" class="hash-link" aria-label="Direct link to How to limit the timed refresh on a dashboard?" title="Direct link to How to limit the timed refresh on a dashboard?">​</a></h3><p>By default, the dashboard timed refresh feature allows you to automatically re-query every slice on
 a dashboard according to a set schedule. Sometimes, however, you won’t want all of the slices to be
 refreshed - especially if some data is slow moving, or run heavy queries. To exclude specific slices
 from the timed refresh process, add the <code>timed_refresh_immune_slices</code> key to the dashboard JSON
@@ -133,7 +133,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/alerts-reports/index.html b/docs/installation/alerts-reports/index.html
index df467eb..2e9e0f4 100644
--- a/docs/installation/alerts-reports/index.html
+++ b/docs/installation/alerts-reports/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -64,7 +64,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/async-queries-celery/index.html b/docs/installation/async-queries-celery/index.html
index 58a3e11..632c4d4 100644
--- a/docs/installation/async-queries-celery/index.html
+++ b/docs/installation/async-queries-celery/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -61,7 +61,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/cache/index.html b/docs/installation/cache/index.html
index da566ea..658e44e 100644
--- a/docs/installation/cache/index.html
+++ b/docs/installation/cache/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -64,7 +64,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/configuring-superset/index.html b/docs/installation/configuring-superset/index.html
index 569fc5d..c3658b2 100644
--- a/docs/installation/configuring-superset/index.html
+++ b/docs/installation/configuring-superset/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -98,7 +98,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/docker/index.html b/docs/installation/docker/index.html
index 553e9e9..7e7c27d 100644
--- a/docs/installation/docker/index.html
+++ b/docs/installation/docker/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -78,7 +78,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/event-logging/index.html b/docs/installation/event-logging/index.html
index 3c3ac43..0a649b1 100644
--- a/docs/installation/event-logging/index.html
+++ b/docs/installation/event-logging/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -51,7 +51,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/installing-superset-from-pypi/index.html b/docs/installation/installing-superset-from-pypi/index.html
index c2a0be6..f6d5d01 100644
--- a/docs/installation/installing-superset-from-pypi/index.html
+++ b/docs/installation/installing-superset-from-pypi/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -54,7 +54,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/installing-superset-using-docker-compose/index.html b/docs/installation/installing-superset-using-docker-compose/index.html
index 8750bb2..7c71cc7 100644
--- a/docs/installation/installing-superset-using-docker-compose/index.html
+++ b/docs/installation/installing-superset-using-docker-compose/index.html
@@ -3,7 +3,7 @@
 <head>
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v2.4.3">
-<title data-rh="true">Installing Locally Using Docker Compose | Superset</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://superset.apache.org/docs/installation/installing-superset-using-docker-compose"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Installing Locally Using Docker Compose | Superset"><meta data-rh="true" name="description" content="Installing Superset Locally Using Docker Compose"><meta data-rh="true" property="og:description" content="Installing Superset Locally Using Docker Compose"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://superset.apache.org/docs/installation/installing-superset-using-docker-compose"><link data-rh="true" rel="alternate" href="https://superset.apache.org/docs/installation/installing-superset-using-docker-compose" hreflang="en"><link data-rh="true" rel="alternate" href="https://superset.apache.org/docs/installation/installing-superset-using-docker-compose" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://WR5FASX5ED-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.google-analytics.com">
+<title data-rh="true">Installing Locally Using Docker Compose | Superset</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://superset.apache.org/docs/installation/installing-superset-using-docker-compose"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Installing Locally Using Docker Compose | Superset"><meta data-rh="true" name="description" content="Using Docker Compose"><meta data-rh="true" property="og:description" content="Using Docker Compose"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://superset.apache.org/docs/installation/installing-superset-using-docker-compose"><link data-rh="true" rel="alternate" href="https://superset.apache.org/docs/installation/installing-superset-using-docker-compose" hreflang="en"><link data-rh="true" rel="alternate" href="https://superset.apache.org/docs/installation/installing-superset-using-docker-compose" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://WR5FASX5ED-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.google-analytics.com">
 <script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","G-133LHD3B3N","auto"),ga("set","anonymizeIp",!0),ga("send","pageview")</script>
 <script async src="https://www.google-analytics.com/analytics.js"></script>
 <link rel="preconnect" href="https://www.google-analytics.com">
@@ -18,38 +18,105 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
 <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
-<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/superset-logo-horiz.svg" alt="Superset Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/superset-logo-horiz-dark.svg" alt="Superset Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div></a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Documentation</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/intro">Getting Started</a></li><li><a class="dropdown__link" href="/docs/frequently-asked-questions">FAQ</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Community</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/community">Resources</a></li><li><a href="https://github.com/apache/superset" target="_blank" rel="noopener noreferrer" class="dropdown__link">GitHub<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="http://bit.ly/join-superset-slack" target="_blank" rel="noopener noreferrer" class="dropdown__link">Slack<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://lists.apache.org/list.html?dev@superset.apache.org" target="_blank" rel="noopener noreferrer" class="dropdown__link">Mailing List<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://stackoverflow.com/questions/tagged/apache-superset" target="_blank" rel="noopener noreferrer" class="dropdown__link">Stack Overflow<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link default-button-theme get-started-button" href="/docs/intro">Get Started</a><a href="https://github.com/apache/superset" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link github-button"></a><div class="searchBox_ZlJk"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/intro">Introduction</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/quickstart">Quickstart</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="/docs/installation/installing-superset-using-docker-compose">Installation and Configuration</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/installation/installing-superset-using-docker-compose">Installing Locally Using Docker Compose</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/installing-superset-from-pypi">Installing from PyPI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/running-on-kubernetes">Installing on Kubernetes</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/configuring-superset">Configuring Superset</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/networking-settings">Additional Networking Settings</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/cache">Caching</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/event-logging">Event Logging</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/upgrading-superset">Upgrading Superset</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/async-queries-celery">Async Queries via Celery</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/alerts-reports">Alerts and Reports</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/sql-templating">SQL Templating</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/setup-ssh-tunneling">Setup SSH Tunneling</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/docker">Docker builds, images and tags</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/creating-charts-dashboards/creating-your-first-dashboard">Creating Charts and Dashboards</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/databases/installing-database-drivers">Connecting to Databases</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/miscellaneous/country-map-tools">Miscellaneous</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/contributing/contributing-page">Contributing</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/frequently-asked-questions">Frequently Asked Questions</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/security/">Security</a><button aria-label="Toggle the collapsible sidebar category &#x27;Security&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/api">API</a></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><style data-emotion-css="dhwkje">.css-dhwkje{position:fixed;bottom:20px;right:20px;padding:1rem;padding-left:4rem;background-color:#444;border-radius:10px;z-index:9999;background-image:url('/img/github-dark.png');background-size:2rem;background-position:1rem center;background-repeat:no-repeat;-webkit-transition:background-color 0.3s;transition:background-color 0.3s;bpx-shadow:0 0 0 0 rgba(0,0,0,0);scale:.9;-webkit-transition:all 0.3s;transition:all 0.3s;}.css-dhwkje:hover{background-color:#333;box-shadow:5px 5px 10px 0 rgba(0,0,0,0.3);scale:1;}</style><a href="https://github.com/apache/superset/edit/master/docs/docs/installation/installing-superset-using-docker-compose.mdx" target="_blank" rel="noopener noreferrer" class="css-dhwkje">Edit this page on GitHub</a><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Installation and Configuration</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Installing Locally Using Docker Compose</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><h2 class="anchor anchorWithStickyNavbar_LWe7" id="installing-superset-locally-using-docker-compose">Installing Superset Locally Using Docker Compose<a href="#installing-superset-locally-using-docker-compose" class="hash-link" aria-label="Direct link to Installing Superset Locally Using Docker Compose" title="Direct link to Installing Superset Locally Using Docker Compose">​</a></h2><p>The fastest way to try Superset locally is using Docker and Docker Compose on a Linux or Mac OSX
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/superset-logo-horiz.svg" alt="Superset Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/superset-logo-horiz-dark.svg" alt="Superset Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div></a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Documentation</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/intro">Getting Started</a></li><li><a class="dropdown__link" href="/docs/frequently-asked-questions">FAQ</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Community</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/community">Resources</a></li><li><a href="https://github.com/apache/superset" target="_blank" rel="noopener noreferrer" class="dropdown__link">GitHub<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="http://bit.ly/join-superset-slack" target="_blank" rel="noopener noreferrer" class="dropdown__link">Slack<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://lists.apache.org/list.html?dev@superset.apache.org" target="_blank" rel="noopener noreferrer" class="dropdown__link">Mailing List<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://stackoverflow.com/questions/tagged/apache-superset" target="_blank" rel="noopener noreferrer" class="dropdown__link">Stack Overflow<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link default-button-theme get-started-button" href="/docs/intro">Get Started</a><a href="https://github.com/apache/superset" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link github-button"></a><div class="searchBox_ZlJk"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/intro">Introduction</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/quickstart">Quickstart</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="/docs/installation/installing-superset-using-docker-compose">Installation and Configuration</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/installation/installing-superset-using-docker-compose">Installing Locally Using Docker Compose</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/installing-superset-from-pypi">Installing from PyPI</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/running-on-kubernetes">Installing on Kubernetes</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/configuring-superset">Configuring Superset</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/networking-settings">Additional Networking Settings</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/cache">Caching</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/event-logging">Event Logging</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/upgrading-superset">Upgrading Superset</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/async-queries-celery">Async Queries via Celery</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/alerts-reports">Alerts and Reports</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/sql-templating">SQL Templating</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/setup-ssh-tunneling">Setup SSH Tunneling</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/docker">Docker builds, images and tags</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/creating-charts-dashboards/creating-your-first-dashboard">Creating Charts and Dashboards</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/databases/installing-database-drivers">Connecting to Databases</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/miscellaneous/country-map-tools">Miscellaneous</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/docs/contributing/contributing-page">Contributing</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/frequently-asked-questions">Frequently Asked Questions</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" aria-expanded="false" href="/docs/security/">Security</a><button aria-label="Toggle the collapsible sidebar category &#x27;Security&#x27;" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/api">API</a></li></ul></nav></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><style data-emotion-css="dhwkje">.css-dhwkje{position:fixed;bottom:20px;right:20px;padding:1rem;padding-left:4rem;background-color:#444;border-radius:10px;z-index:9999;background-image:url('/img/github-dark.png');background-size:2rem;background-position:1rem center;background-repeat:no-repeat;-webkit-transition:background-color 0.3s;transition:background-color 0.3s;bpx-shadow:0 0 0 0 rgba(0,0,0,0);scale:.9;-webkit-transition:all 0.3s;transition:all 0.3s;}.css-dhwkje:hover{background-color:#333;box-shadow:5px 5px 10px 0 rgba(0,0,0,0.3);scale:1;}</style><a href="https://github.com/apache/superset/edit/master/docs/docs/installation/installing-superset-using-docker-compose.mdx" target="_blank" rel="noopener noreferrer" class="css-dhwkje">Edit this page on GitHub</a><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Installation and Configuration</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Installing Locally Using Docker Compose</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><h2 class="anchor anchorWithStickyNavbar_LWe7" id="using-docker-compose">Using Docker Compose<a href="#using-docker-compose" class="hash-link" aria-label="Direct link to Using Docker Compose" title="Direct link to Using Docker Compose">​</a></h2><p>The fastest way to try Superset locally is using Docker and Docker Compose on a Linux or Mac OSX
 computer. Superset does not have official support for Windows, so we have provided a VM workaround
-below.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-install-a-docker-engine-and-docker-compose">1. Install a Docker Engine and Docker Compose<a href="#1-install-a-docker-engine-and-docker-compose" class="hash-link" aria-label="Direct link to 1. Install a Docker Engine and Docker Compose" title="Direct link to 1. Install a Docker Engine and Docker Compose">​</a></h3><p><strong>Mac OSX</strong></p><p><a href="https://docs.docker.com/docker-for-mac/install/" target="_blank" rel="noopener noreferrer">Install Docker for Mac</a>, which includes the Docker
+below.</p><p>It&#x27;s <strong>not</strong> typical, nor recommended to use docker-compose to productionize an
+application like Superset. docker-compose should be used for local development
+or testing the app.</p><p><strong>DO NOT USE THIS FOR PRODUCTION!</strong></p><p>Note that there are 3 major ways we support to run docker-compose:</p><ol><li><strong>docker-compose.yml:</strong> for interactive development, where we mount your local folder with the
+frontend/backend files that you can edit and experience the changes you
+make in the app in real time</li><li><strong>docker-compose-non-dev.yml</strong> where we just build a more immutable image based on the
+local branch and get all the required images running. Changes in the local branch
+at the time you fire this up will be reflected, but changes to the code
+while <code>up</code> won&#x27;t be reflected in the app</li><li><strong>docker-compose-image-tag.yml</strong> where we fetch an image from docker-hub say for the
+<code>3.0.0</code> release for instance, and fire it up so you can try it. Here what&#x27;s in
+the local branch has no effects on what&#x27;s running, we just fetch and run
+pre-built images from docker-hub</li></ol><p>More on these two approaches after setting up the requirements for either.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-install-a-docker-engine-and-docker-compose">1. Install a Docker Engine and Docker Compose<a href="#1-install-a-docker-engine-and-docker-compose" class="hash-link" aria-label="Direct link to 1. Install a Docker Engine and Docker Compose" title="Direct link to 1. Install a Docker Engine and Docker Compose">​</a></h3><p><strong>Mac OSX</strong></p><p><a href="https://docs.docker.com/docker-for-mac/install/" target="_blank" rel="noopener noreferrer">Install Docker for Mac</a>, which includes the Docker
 engine and a recent version of <code>docker compose</code> out of the box.</p><p>Once you have Docker for Mac installed, open up the preferences pane for Docker, go to the
 &quot;Resources&quot; section and increase the allocated memory to 6GB. With only the 2GB of RAM allocated by
 default, Superset will fail to start.</p><p><strong>Linux</strong></p><p><a href="https://docs.docker.com/engine/install/" target="_blank" rel="noopener noreferrer">Install Docker on Linux</a> by following Docker’s
 instructions for whichever flavor of Linux suits you. Because <code>docker compose</code> is not installed as
 part of the base Docker installation on Linux, once you have a working engine, follow the
-<a href="https://docs.docker.com/compose/install/" target="_blank" rel="noopener noreferrer">docker compose installation instructions</a> for Linux.</p><p><strong>Windows</strong></p><p>Superset is not officially supported on Windows unfortunately. One option for Windows users to
-try out Superset locally is to install an Ubuntu Desktop VM via
+<a href="https://docs.docker.com/compose/install/" target="_blank" rel="noopener noreferrer">docker compose installation instructions</a> for Linux.</p><p><strong>Windows</strong></p><p>Superset is not officially supported on Windows unfortunately. One option for Windows users to try
+out Superset locally is to install an Ubuntu Desktop VM via
 <a href="https://www.virtualbox.org/" target="_blank" rel="noopener noreferrer">VirtualBox</a> and proceed with the Docker on Linux instructions inside
 of that VM. We recommend assigning at least 8GB of RAM to the virtual machine as well as
 provisioning a hard drive of at least 40GB, so that there will be enough space for both the OS and
-all of the required dependencies. Docker Desktop <a href="https://docs.docker.com/docker-for-windows/wsl/" target="_blank" rel="noopener noreferrer">recently added support for Windows Subsystem for Linux (WSL) 2</a>, which may be another option.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-clone-supersets-github-repository">2. Clone Superset&#x27;s GitHub repository<a href="#2-clone-supersets-github-repository" class="hash-link" aria-label="Direct link to 2. Clone Superset&#x27;s GitHub repository" title="Direct link to 2. Clone Superset&#x27;s GitHub repository">​</a></h3><p><a href="https://github.com/apache/superset" target="_blank" rel="noopener noreferrer">Clone Superset&#x27;s repo</a> in your terminal with the
+all of the required dependencies. Docker Desktop <a href="https://docs.docker.com/docker-for-windows/wsl/" target="_blank" rel="noopener noreferrer">recently added support for Windows Subsystem for
+Linux (WSL) 2</a>, which may be another option.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-clone-supersets-github-repository">2. Clone Superset&#x27;s GitHub repository<a href="#2-clone-supersets-github-repository" class="hash-link" aria-label="Direct link to 2. Clone Superset&#x27;s GitHub repository" title="Direct link to 2. Clone Superset&#x27;s GitHub repository">​</a></h3><p><a href="https://github.com/apache/superset" target="_blank" rel="noopener noreferrer">Clone Superset&#x27;s repo</a> in your terminal with the
 following command:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone https://github.com/apache/superset.git</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Once that command completes successfully, you should see a new <code>superset</code> folder in your
-current directory.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-launch-superset-through-docker-compose">3. Launch Superset Through Docker Compose<a href="#3-launch-superset-through-docker-compose" class="hash-link" aria-label="Direct link to 3. Launch Superset Through Docker Compose" title="Direct link to 3. Launch Superset Through Docker Compose">​</a></h3><p>Navigate to the folder you created in step 1:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">cd</span><span class="token plain"> superset</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>When working on master branch, run the following commands to run <code>development</code> mode using <code>docker compose</code>:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose up</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>When running in development mode the <code>superset-node</code> container needs to finish building assets in order for the UI to render properly. If you would just like to try out Superset without making any code changes follow the steps documented for <code>production</code> or a specific version below.</p></div></div><p>When working on master branch, run the following commands to run <code>production</code> mode using <code>docker compose</code>:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose -f docker-compose-non-dev.yml pull</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose -f docker-compose-non-dev.yml up</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Alternatively, you can also run a specific version of Superset by first checking out
-the branch/tag, and then starting <code>docker compose</code> with the <code>TAG</code> variable.
-For example, to run the 3.0.0 version, run the following commands on Linux-based systems:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> checkout </span><span class="token number" style="color:#36acaa">3.0</span><span class="token plain">.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">TAG</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">3.0</span><span class="token plain">.0 </span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose -f docker-compose-non-dev.yml pull</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">TAG</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">3.0</span><span class="token plain">.0 </span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose -f docker-compose-non-dev.yml up</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If you are using Docker Desktop for Windows then run the following commands:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> checkout </span><span class="token number" style="color:#36acaa">3.0</span><span class="token plain">.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">set</span><span class="token plain"> </span><span class="token assign-left variable" style="color:#36acaa">TAG</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">3.0</span><span class="token plain">.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose -f docker-compose-non-dev.yml pull</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose -f docker-compose-non-dev.yml up</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Note that some configuration is mandatory for production instances of Superset. In particular, Superset will not start without a user-specified value of <code>SECRET_KEY</code> in a Superset config file or <code>SUPERSET_SECRET_KEY</code> as an <a href="https://github.com/apache/superset/blob/master/docker/.env-non-dev" target="_blank" rel="noopener noreferrer">environment variable</a>. Please see <a href="/docs/installation/configuring-superset/">Configuring Superset</a> for more details.</p></div></div><div class="theme-admonition theme-admonition-caution alert alert--warning admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>caution</div><div class="admonitionContent_S0QG"><p>All of the content belonging to a Superset instance - charts, dashboards, users, etc. - is stored in its metadata database. In production, this database should be backed up.
-The default installation with docker compose will store that data in a PostgreSQL database contained in a Docker <a href="https://docs.docker.com/storage/volumes/" target="_blank" rel="noopener noreferrer">volume</a>,
-which is not backed up.  To avoid risking data loss, either use a managed database for your metadata (recommended) or perform your own regular backups by extracting
-and storing the contents of the default PostgreSQL database from its volume (here&#x27;s an
-<a href="https://stackoverflow.com/questions/24718706/backup-restore-a-dockerized-postgresql-database" target="_blank" rel="noopener noreferrer">example of how to dump and restore</a>).</p></div></div><p>You should see a wall of logging output from the containers being launched on your machine. Once
-this output slows, you should have a running instance of Superset on your local machine!  To
-avoid the wall of text on future runs, add the <code>-d</code> option to the end of the <code>docker compose up</code> command.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="configuring-docker-compose">Configuring Docker Compose<a href="#configuring-docker-compose" class="hash-link" aria-label="Direct link to Configuring Docker Compose" title="Direct link to Configuring Docker Compose">​</a></h4><p>The following is for users who want to configure how Superset runs in Docker Compose; otherwise, you can skip to the next section.</p><p>You can install additional python packages and apply config overrides by following the steps mentioned in <a href="https://github.com/apache/superset/tree/master/docker#configuration" target="_blank" rel="noopener noreferrer">docker/README.md</a></p><p>You can configure the Docker Compose environment variables for dev and non-dev mode with <code>docker/.env</code> and <code>docker/.env-non-dev</code> respectively. These environment files set the environment for most containers in the Docker Compose setup, and some variables affect multiple containers and others only single ones.</p><p>One important variable is <code>SUPERSET_LOAD_EXAMPLES</code> which determines whether the <code>superset_init</code> container will populate example data and visualizations into the metadata database. These examples are helpful for learning and testing out Superset but unnecessary for experienced users and production deployments. The loading process can sometimes take a few minutes and a good amount of CPU, so you may want to disable it on a resource-constrained device.</p><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>Users often want to connect to other databases from Superset. Currently, the easiest way to do this is to modify the <code>docker-compose-non-dev.yml</code> file and add your database as a service that the other services depend on (via <code>x-superset-depends-on</code>). Others have attempted to set <code>network_mode: host</code> on the Superset services, but these generally break the installation, because the configuration requires use of the Docker Compose DNS resolver for the service names. If you have a good solution for this, let us know!</p></div></div><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>Superset uses <a href="https://about.scarf.sh/scarf-gateway" target="_blank" rel="noopener noreferrer">Scarf Gateway</a> to collect telemetry data. Knowing the installation counts for different Superset versions informs the project&#x27;s decisions about patching and long-term support. Scarf purges personally identifiable information (PII) and provides only aggregated statistics.</p><p>To opt-out of this data collection for packages downloaded through the Scarf Gateway by your docker compose based installation, edit the <code>x-superset-image:</code> line in your <code>docker-compose.yml</code> and <code>docker-compose-non-dev.yml</code> files, replacing <code>apachesuperset.docker.scarf.sh/apache/superset</code> with <code>apache/superset</code> to pull the image directly from Docker Hub.</p><p>To disable the Scarf telemetry pixel, set the <code>SCARF_ANALYTICS</code> environment variable to <code>False</code> in your terminal and/or in your <code>docker/.env</code> and <code>docker/.env-non-dev</code> files.</p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-log-in-to-superset">4. Log in to Superset<a href="#4-log-in-to-superset" class="hash-link" aria-label="Direct link to 4. Log in to Superset" title="Direct link to 4. Log in to Superset">​</a></h3><p>Your local Superset instance also includes a Postgres server to store your data and is already
+current directory.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-launch-superset-through-docker-compose">3. Launch Superset Through Docker Compose<a href="#3-launch-superset-through-docker-compose" class="hash-link" aria-label="Direct link to 3. Launch Superset Through Docker Compose" title="Direct link to 3. Launch Superset Through Docker Compose">​</a></h3><p>First let&#x27;s assume you&#x27;re familiar with docker-compose mechanics. Here we&#x27;ll refer generally
+to <code>docker compose up</code> even though in some cases you may want to force a check for newer remote
+images using <code>docker compose pull</code>, force a build with <code>docker compose build</code> or force a build
+on latest base images using <code>docker compose build --pull</code>. In most cases though, the simple
+<code>up</code> command should do just fine. Refer to docker compose docs for more information on the topic.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="option-1---for-an-interactive-development-environment">Option #1 - for an interactive development environment<a href="#option-1---for-an-interactive-development-environment" class="hash-link" aria-label="Direct link to Option #1 - for an interactive development environment" title="Direct link to Option #1 - for an interactive development environment">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose up</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>When running in development mode the <code>superset-node</code>
+container needs to finish building assets in order for the UI to render properly. If you would just
+like to try out Superset without making any code changes follow the steps documented for
+<code>production</code> or a specific version below.</p></div></div><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>By default, we mount the local superset-frontend folder here and run <code>npm install</code> as well
+as <code>npm run dev</code> which triggers webpack to compile/bundle the frontend code. Depending
+on your local setup, especially if you have less than 16GB of memory,  it may be very slow to
+perform those operations. In this case, we recommend you set the env var
+<code>BUILD_SUPERSET_FRONTEND_IN_DOCKER</code> to <code>false</code>, and to run this locally instead in a terminal.
+Simply trigger <code>npm i &amp;&amp; npm run dev</code>, this should be MUCH faster.</p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="option-2---build-an-immutable-image-from-the-local-branch">Option #2 - build an immutable image from the local branch<a href="#option-2---build-an-immutable-image-from-the-local-branch" class="hash-link" aria-label="Direct link to Option #2 - build an immutable image from the local branch" title="Direct link to Option #2 - build an immutable image from the local branch">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose -f docker-compose-non-dev.yml up</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="option-3---pull-and-build-a-release-image-from-docker-hub">Option #3 - pull and build a release image from docker-hub<a href="#option-3---pull-and-build-a-release-image-from-docker-hub" class="hash-link" aria-label="Direct link to Option #3 - pull and build a release image from docker-hub" title="Direct link to Option #3 - pull and build a release image from docker-hub">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:#36acaa">TAG</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">3.1</span><span class="token plain">.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose -f docker-compose-image-tag.yml up</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Here various release tags, github SHA, and latest <code>master</code> can be referenced by the TAG env var.
+Refer to the docker-related documentation to learn more about existing tags you can point to
+from Docker Hub.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="general-tips--configuration">General tips &amp; configuration<a href="#general-tips--configuration" class="hash-link" aria-label="Direct link to General tips &amp; configuration" title="Direct link to General tips &amp; configuration">​</a></h2><div class="theme-admonition theme-admonition-caution alert alert--warning admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>caution</div><div class="admonitionContent_S0QG"><p>All of the content belonging to a Superset instance - charts, dashboards, users, etc. - is stored in
+its metadata database. In production, this database should be backed up.  The default installation
+with docker compose will store that data in a PostgreSQL database contained in a Docker
+<a href="https://docs.docker.com/storage/volumes/" target="_blank" rel="noopener noreferrer">volume</a>, which is not backed up.</p><p>Again <strong>DO NOT USE THIS FOR PRODUCTION</strong></p></div></div><p>You should see a wall of logging output from the containers being launched on your machine. Once
+this output slows, you should have a running instance of Superset on your local machine!  To avoid
+the wall of text on future runs, add the <code>-d</code> option to the end of the <code>docker compose up</code> command.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="configuring-further">Configuring Further<a href="#configuring-further" class="hash-link" aria-label="Direct link to Configuring Further" title="Direct link to Configuring Further">​</a></h4><p>The following is for users who want to configure how Superset runs in Docker Compose; otherwise, you
+can skip to the next section.</p><p>You can install additional python packages and apply config overrides by following the steps
+mentioned in <a href="https://github.com/apache/superset/tree/master/docker#configuration" target="_blank" rel="noopener noreferrer">docker/README.md</a></p><p>You can configure the Docker Compose environment variables for dev and non-dev mode with
+<code>docker/.env</code>. This environment file sets the environment
+for most containers in the Docker Compose setup, and some variables affect multiple containers and
+others only single ones.</p><p>One important variable is <code>SUPERSET_LOAD_EXAMPLES</code> which determines whether the <code>superset_init</code>
+container will populate example data and visualizations into the metadata database. These examples
+are helpful for learning and testing out Superset but unnecessary for experienced users and
+production deployments. The loading process can sometimes take a few minutes and a good amount of
+CPU, so you may want to disable it on a resource-constrained device.</p><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>Users often want to connect to other databases from Superset. Currently, the easiest way to
+do this is to modify the <code>docker-compose-non-dev.yml</code> file and add your database as a service that
+the other services depend on (via <code>x-superset-depends-on</code>). Others have attempted to set
+<code>network_mode: host</code> on the Superset services, but these generally break the installation,
+because the configuration requires use of the Docker Compose DNS resolver for the service names.
+If you have a good solution for this, let us know!</p></div></div><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>Superset uses <a href="https://about.scarf.sh/scarf-gateway" target="_blank" rel="noopener noreferrer">Scarf Gateway</a> to collect telemetry
+data. Knowing the installation counts for different Superset versions informs the project&#x27;s
+decisions about patching and long-term support. Scarf purges personally identifiable information
+(PII) and provides only aggregated statistics.</p><p>To opt-out of this data collection for packages downloaded through the Scarf Gateway by your docker
+compose based installation, edit the <code>x-superset-image:</code> line in your <code>docker-compose.yml</code> and
+<code>docker-compose-non-dev.yml</code> files, replacing <code>apachesuperset.docker.scarf.sh/apache/superset</code> with
+<code>apache/superset</code> to pull the image directly from Docker Hub.</p><p>To disable the Scarf telemetry pixel, set the <code>SCARF_ANALYTICS</code> environment variable to <code>False</code> in
+your terminal and/or in your <code>docker/.env</code> file.</p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-log-in-to-superset">4. Log in to Superset<a href="#4-log-in-to-superset" class="hash-link" aria-label="Direct link to 4. Log in to Superset" title="Direct link to 4. Log in to Superset">​</a></h3><p>Your local Superset instance also includes a Postgres server to store your data and is already
 pre-loaded with some example datasets that ship with Superset. You can access Superset now via your
 web browser by visiting <code>http://localhost:8088</code>. Note that many browsers now default to <code>https</code> - if
-yours is one of them, please make sure it uses <code>http</code>.</p><p>Log in with the default username and password:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">username: admin</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">password: admin</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="5-connecting-superset-to-your-local-database-instance">5. Connecting Superset to your local database instance<a href="#5-connecting-superset-to-your-local-database-instance" class="hash-link" aria-label="Direct link to 5. Connecting Superset to your local database instance" title="Direct link to 5. Connecting Superset to your local database instance">​</a></h3><p>When running Superset using <code>docker</code> or <code>docker compose</code> it runs in its own docker container, as if the Superset was running in a separate machine entirely. Therefore attempts to connect to your local database with the hostname <code>localhost</code> won&#x27;t work as <code>localhost</code> refers to the docker container Superset is running in, and not your actual host machine. Fortunately, docker provides an easy way to access network resources in the host machine from inside a container, and we will leverage this capability to connect to our local database instance.</p><p>Here the instructions are for connecting to postgresql (which is running on your host machine) from Superset (which is running in its docker container). Other databases may have slightly different configurations but gist would be same and boils down to 2 steps -</p><ol><li><strong>(Mac users may skip this step)</strong> Configuring the local postgresql/database instance to accept public incoming connections. By default, postgresql only allows incoming connections from <code>localhost</code> and under Docker, unless you use <code>--network=host</code>, <code>localhost</code> will refer to different endpoints on the host machine and in a docker container respectively. Allowing postgresql to accept connections from the Docker involves making one-line changes to the files <code>postgresql.conf</code> and <code>pg_hba.conf</code>; you can find helpful links tailored to your OS / PG version on the web easily for this task. For Docker it suffices to only whitelist IPs <code>172.0.0.0/8</code> instead of <code>*</code>, but in any case you are <em>warned</em> that doing this in a production database <em>may</em> have disastrous consequences as you are opening your database to the public internet.</li><li>Instead of <code>localhost</code>, try using <code>host.docker.internal</code> (Mac users, Ubuntu) or <code>172.18.0.1</code> (Linux users) as the hostname when attempting to connect to the database. This is a Docker internal detail -- what is happening is that, in Mac systems, Docker Desktop creates a dns entry for the hostname <code>host.docker.internal</code> which resolves to the correct address for the host machine, whereas in Linux this is not the case (at least by default). If neither of these 2 hostnames work then you may want to find the exact hostname you want to use, for that you can do <code>ifconfig</code> or <code>ip addr show</code> and look at the IP address of <code>docker0</code> interface that must have been created by Docker for you. Alternately if you don&#x27;t even see the <code>docker0</code> interface try (if needed with sudo) <code>docker network inspect bridge</code> and see if there is an entry for <code>&quot;Gateway&quot;</code> and note the IP address.</li></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/superset/edit/master/docs/docs/installation/installing-superset-using-docker-compose.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/quickstart"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Quickstart</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/installation/installing-superset-from-pypi"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Installing from PyPI</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#installing-superset-locally-using-docker-compose" class="table-of-contents__link toc-highlight">Installing Superset Locally Using Docker Compose</a><ul><li><a href="#1-install-a-docker-engine-and-docker-compose" class="table-of-contents__link toc-highlight">1. Install a Docker Engine and Docker Compose</a></li><li><a href="#2-clone-supersets-github-repository" class="table-of-contents__link toc-highlight">2. Clone Superset&#39;s GitHub repository</a></li><li><a href="#3-launch-superset-through-docker-compose" class="table-of-contents__link toc-highlight">3. Launch Superset Through Docker Compose</a></li><li><a href="#4-log-in-to-superset" class="table-of-contents__link toc-highlight">4. Log in to Superset</a></li><li><a href="#5-connecting-superset-to-your-local-database-instance" class="table-of-contents__link toc-highlight">5. Connecting Superset to your local database instance</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">
+yours is one of them, please make sure it uses <code>http</code>.</p><p>Log in with the default username and password:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">username: admin</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">password: admin</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="5-connecting-superset-to-your-local-database-instance">5. Connecting Superset to your local database instance<a href="#5-connecting-superset-to-your-local-database-instance" class="hash-link" aria-label="Direct link to 5. Connecting Superset to your local database instance" title="Direct link to 5. Connecting Superset to your local database instance">​</a></h3><p>When running Superset using <code>docker</code> or <code>docker compose</code> it runs in its own docker container, as if
+the Superset was running in a separate machine entirely. Therefore attempts to connect to your local
+database with the hostname <code>localhost</code> won&#x27;t work as <code>localhost</code> refers to the docker container
+Superset is running in, and not your actual host machine. Fortunately, docker provides an easy way
+to access network resources in the host machine from inside a container, and we will leverage this
+capability to connect to our local database instance.</p><p>Here the instructions are for connecting to postgresql (which is running on your host machine) from
+Superset (which is running in its docker container). Other databases may have slightly different
+configurations but gist would be same and boils down to 2 steps -</p><ol><li><strong>(Mac users may skip this step)</strong> Configuring the local postgresql/database instance to accept
+public incoming connections. By default, postgresql only allows incoming connections from
+<code>localhost</code> and under Docker, unless you use <code>--network=host</code>, <code>localhost</code> will refer to different
+endpoints on the host machine and in a docker container respectively. Allowing postgresql to accept
+connections from the Docker involves making one-line changes to the files <code>postgresql.conf</code> and
+<code>pg_hba.conf</code>; you can find helpful links tailored to your OS / PG version on the web easily for
+this task. For Docker it suffices to only whitelist IPs <code>172.0.0.0/8</code> instead of <code>*</code>, but in any
+case you are <em>warned</em> that doing this in a production database <em>may</em> have disastrous consequences as
+you are opening your database to the public internet.  2. Instead of <code>localhost</code>, try using
+<code>host.docker.internal</code> (Mac users, Ubuntu) or <code>172.18.0.1</code> (Linux users) as the hostname when
+attempting to connect to the database. This is a Docker internal detail -- what is happening is
+that, in Mac systems, Docker Desktop creates a dns entry for the hostname <code>host.docker.internal</code>
+which resolves to the correct address for the host machine, whereas in Linux this is not the case
+(at least by default). If neither of these 2 hostnames work then you may want to find the exact
+hostname you want to use, for that you can do <code>ifconfig</code> or <code>ip addr show</code> and look at the IP
+address of <code>docker0</code> interface that must have been created by Docker for you. Alternately if you
+don&#x27;t even see the <code>docker0</code> interface try (if needed with sudo) <code>docker network inspect bridge</code> and
+see if there is an entry for <code>&quot;Gateway&quot;</code> and note the IP address.</li></ol></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/superset/edit/master/docs/docs/installation/installing-superset-using-docker-compose.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/quickstart"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Quickstart</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/installation/installing-superset-from-pypi"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Installing from PyPI</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#using-docker-compose" class="table-of-contents__link toc-highlight">Using Docker Compose</a><ul><li><a href="#1-install-a-docker-engine-and-docker-compose" class="table-of-contents__link toc-highlight">1. Install a Docker Engine and Docker Compose</a></li><li><a href="#2-clone-supersets-github-repository" class="table-of-contents__link toc-highlight">2. Clone Superset&#39;s GitHub repository</a></li><li><a href="#3-launch-superset-through-docker-compose" class="table-of-contents__link toc-highlight">3. Launch Superset Through Docker Compose</a></li><li><a href="#option-1---for-an-interactive-development-environment" class="table-of-contents__link toc-highlight">Option #1 - for an interactive development environment</a></li><li><a href="#option-2---build-an-immutable-image-from-the-local-branch" class="table-of-contents__link toc-highlight">Option #2 - build an immutable image from the local branch</a></li><li><a href="#option-3---pull-and-build-a-release-image-from-docker-hub" class="table-of-contents__link toc-highlight">Option #3 - pull and build a release image from docker-hub</a></li></ul></li><li><a href="#general-tips--configuration" class="table-of-contents__link toc-highlight">General tips &amp; configuration</a><ul><li><a href="#4-log-in-to-superset" class="table-of-contents__link toc-highlight">4. Log in to Superset</a></li><li><a href="#5-connecting-superset-to-your-local-database-instance" class="table-of-contents__link toc-highlight">5. Connecting Superset to your local database instance</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">
           <div class="footer__applitools">
             We use &nbsp;<a href="https://applitools.com/" target="_blank" rel="nofollow"><img src="/img/applitools.png" title="Applitools"></a>
           </div>
@@ -71,7 +138,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/networking-settings/index.html b/docs/installation/networking-settings/index.html
index 52f5671..976629f 100644
--- a/docs/installation/networking-settings/index.html
+++ b/docs/installation/networking-settings/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -55,7 +55,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/running-on-kubernetes/index.html b/docs/installation/running-on-kubernetes/index.html
index 5bd0592..a7f459d 100644
--- a/docs/installation/running-on-kubernetes/index.html
+++ b/docs/installation/running-on-kubernetes/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -53,7 +53,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/setup-ssh-tunneling/index.html b/docs/installation/setup-ssh-tunneling/index.html
index fab68fb..c4465e4 100644
--- a/docs/installation/setup-ssh-tunneling/index.html
+++ b/docs/installation/setup-ssh-tunneling/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/sql-templating/index.html b/docs/installation/sql-templating/index.html
index e810227..bd2ecd9 100644
--- a/docs/installation/sql-templating/index.html
+++ b/docs/installation/sql-templating/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -83,7 +83,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/upgrading-superset/index.html b/docs/installation/upgrading-superset/index.html
index ee9438c..8e98351 100644
--- a/docs/installation/upgrading-superset/index.html
+++ b/docs/installation/upgrading-superset/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/intro/index.html b/docs/intro/index.html
index 242d872..c349bd2 100644
--- a/docs/intro/index.html
+++ b/docs/intro/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -55,7 +55,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/chart-params/index.html b/docs/miscellaneous/chart-params/index.html
index 8953fb5..8b64199 100644
--- a/docs/miscellaneous/chart-params/index.html
+++ b/docs/miscellaneous/chart-params/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/country-map-tools/index.html b/docs/miscellaneous/country-map-tools/index.html
index 75ba819..336b1b3 100644
--- a/docs/miscellaneous/country-map-tools/index.html
+++ b/docs/miscellaneous/country-map-tools/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -51,7 +51,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/importing-exporting-datasources/index.html b/docs/miscellaneous/importing-exporting-datasources/index.html
index f41301b..673a372 100644
--- a/docs/miscellaneous/importing-exporting-datasources/index.html
+++ b/docs/miscellaneous/importing-exporting-datasources/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -56,7 +56,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/issue-codes/index.html b/docs/miscellaneous/issue-codes/index.html
index dc26129..e24c0cc 100644
--- a/docs/miscellaneous/issue-codes/index.html
+++ b/docs/miscellaneous/issue-codes/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -74,7 +74,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/timezones/index.html b/docs/miscellaneous/timezones/index.html
index e361dad..c1bb075 100644
--- a/docs/miscellaneous/timezones/index.html
+++ b/docs/miscellaneous/timezones/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/quickstart/index.html b/docs/quickstart/index.html
index e24274d..9178f01 100644
--- a/docs/quickstart/index.html
+++ b/docs/quickstart/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -53,7 +53,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/security/cves/index.html b/docs/security/cves/index.html
index 31dc69e..6534901 100644
--- a/docs/security/cves/index.html
+++ b/docs/security/cves/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/security/index.html b/docs/security/index.html
index 62f44cf..e1b8534 100644
--- a/docs/security/index.html
+++ b/docs/security/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -144,7 +144,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 5e91b1d..f6cb7b4 100644
--- a/index.html
+++ b/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/markdown-page/index.html b/markdown-page/index.html
index a8460df..85de544 100644
--- a/markdown-page/index.html
+++ b/markdown-page/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/search/index.html b/search/index.html
index 0561b50..fbba428 100644
--- a/search/index.html
+++ b/search/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.686b4caa.css">
-<link rel="preload" href="/assets/js/runtime~main.29a1022f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.22b5cbbe.js" as="script">
 <link rel="preload" href="/assets/js/main.ecd8e30e.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.29a1022f.js"></script>
+<script src="/assets/js/runtime~main.22b5cbbe.js"></script>
 <script src="/assets/js/main.ecd8e30e.js"></script>
 </body>
 </html>
\ No newline at end of file