You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/01/15 06:32:07 UTC
(superset) branch feat/db-engine-docs updated: feat(db-docs): add metadata linter and gitignore generated docs
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch feat/db-engine-docs
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/feat/db-engine-docs by this push:
new c713e1c8cf feat(db-docs): add metadata linter and gitignore generated docs
c713e1c8cf is described below
commit c713e1c8cf3baacf018b122375d395dc3d8a4f79
Author: Evan Rusackas <ev...@rusackas.com>
AuthorDate: Wed Jan 14 22:31:53 2026 -0800
feat(db-docs): add metadata linter and gitignore generated docs
- Add lint_metadata.py script to validate metadata completeness
- Defines required, recommended, and optional fields
- Reports coverage statistics and missing fields per spec
- Can run standalone using AST parsing (no Flask dependency)
- Usage: python superset/db_engine_specs/lint_metadata.py
- Gitignore generated database documentation files
- docs/docs/databases/*.mdx are generated at build time
- docs/src/data/databases.json is generated at build time
- Source of truth is now engine spec metadata attributes
This prevents confusion about where to edit database documentation.
Generated files are excluded from git but will be created during
yarn start/build via generate-database-docs.mjs.
Co-Authored-By: Claude Opus 4.5 <no...@anthropic.com>
---
docs/.gitignore | 5 +
docs/docs/databases/_category_.json | 8 -
docs/docs/databases/amazon-dynamodb.mdx | 30 -
docs/docs/databases/apache-doris.mdx | 30 -
docs/docs/databases/apache-drill.mdx | 30 -
docs/docs/databases/apache-druid.mdx | 30 -
docs/docs/databases/apache-hive.mdx | 30 -
docs/docs/databases/apache-impala.mdx | 30 -
docs/docs/databases/apache-kylin.mdx | 30 -
docs/docs/databases/apache-pinot.mdx | 30 -
docs/docs/databases/apache-solr.mdx | 30 -
docs/docs/databases/apache-spark-sql.mdx | 30 -
docs/docs/databases/arc.mdx | 30 -
docs/docs/databases/ascend-io.mdx | 30 -
docs/docs/databases/aws-athena.mdx | 30 -
docs/docs/databases/aws-dynamodb.mdx | 30 -
docs/docs/databases/aws-redshift.mdx | 30 -
docs/docs/databases/clickhouse.mdx | 30 -
docs/docs/databases/cloudflare-d1.mdx | 30 -
docs/docs/databases/cockroachdb.mdx | 30 -
docs/docs/databases/couchbase.mdx | 30 -
docs/docs/databases/cratedb.mdx | 30 -
docs/docs/databases/databend.mdx | 30 -
docs/docs/databases/databricks.mdx | 30 -
docs/docs/databases/denodo.mdx | 30 -
docs/docs/databases/dremio.mdx | 30 -
docs/docs/databases/duckdb.mdx | 30 -
docs/docs/databases/elasticsearch.mdx | 30 -
docs/docs/databases/exasol.mdx | 30 -
docs/docs/databases/firebird.mdx | 30 -
docs/docs/databases/firebolt.mdx | 30 -
docs/docs/databases/google-bigquery.mdx | 30 -
docs/docs/databases/google-sheets.mdx | 30 -
docs/docs/databases/greenplum.mdx | 30 -
docs/docs/databases/ibm-db2-for-i.mdx | 30 -
docs/docs/databases/ibm-db2.mdx | 30 -
docs/docs/databases/ibm-netezza.mdx | 30 -
docs/docs/databases/index.mdx | 90 -
docs/docs/databases/kusto.mdx | 30 -
docs/docs/databases/mariadb.mdx | 30 -
docs/docs/databases/microsoft-sql-server.mdx | 30 -
docs/docs/databases/monetdb.mdx | 30 -
docs/docs/databases/motherduck.mdx | 30 -
docs/docs/databases/mysql.mdx | 30 -
docs/docs/databases/oceanbase.mdx | 30 -
docs/docs/databases/ocient.mdx | 30 -
docs/docs/databases/oracle.mdx | 30 -
docs/docs/databases/parseable.mdx | 30 -
docs/docs/databases/postgresql.mdx | 30 -
docs/docs/databases/presto.mdx | 30 -
docs/docs/databases/risingwave.mdx | 30 -
docs/docs/databases/sap-hana.mdx | 30 -
docs/docs/databases/sap-sybase.mdx | 30 -
docs/docs/databases/singlestore.mdx | 30 -
docs/docs/databases/snowflake.mdx | 30 -
docs/docs/databases/sqlite.mdx | 30 -
docs/docs/databases/starrocks.mdx | 30 -
docs/docs/databases/tdengine.mdx | 30 -
docs/docs/databases/teradata.mdx | 30 -
docs/docs/databases/trino.mdx | 30 -
docs/docs/databases/vertica.mdx | 30 -
docs/docs/databases/ydb.mdx | 30 -
docs/src/data/databases.json | 3431 --------------------------
superset/db_engine_specs/lint_metadata.py | 445 ++++
64 files changed, 450 insertions(+), 5299 deletions(-)
diff --git a/docs/.gitignore b/docs/.gitignore
index 6880a0863d..55cef072c1 100644
--- a/docs/.gitignore
+++ b/docs/.gitignore
@@ -26,3 +26,8 @@ docs/intro.md
# Generated badge images (downloaded at build time by remark-localize-badges plugin)
static/badges/
+
+# Generated database documentation (regenerated at build time by generate-database-docs.mjs)
+# Source of truth is in superset/db_engine_specs/*.py metadata attributes
+docs/databases/
+src/data/databases.json
diff --git a/docs/docs/databases/_category_.json b/docs/docs/databases/_category_.json
deleted file mode 100644
index 6276c6d10f..0000000000
--- a/docs/docs/databases/_category_.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "label": "Databases",
- "position": 1,
- "link": {
- "type": "doc",
- "id": "databases/index"
- }
-}
diff --git a/docs/docs/databases/amazon-dynamodb.mdx b/docs/docs/databases/amazon-dynamodb.mdx
deleted file mode 100644
index d54d77fda1..0000000000
--- a/docs/docs/databases/amazon-dynamodb.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Amazon DynamoDB
-sidebar_label: Amazon DynamoDB
-description: "Amazon DynamoDB is a serverless NoSQL database with SQL via PartiQL."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Amazon DynamoDB" database={databaseData.databases["Amazon DynamoDB"]} />
diff --git a/docs/docs/databases/apache-doris.mdx b/docs/docs/databases/apache-doris.mdx
deleted file mode 100644
index 5143905bd9..0000000000
--- a/docs/docs/databases/apache-doris.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Apache Doris
-sidebar_label: Apache Doris
-description: "Apache Doris is a high-performance real-time analytical database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Apache Doris" database={databaseData.databases["Apache Doris"]} />
diff --git a/docs/docs/databases/apache-drill.mdx b/docs/docs/databases/apache-drill.mdx
deleted file mode 100644
index 2c2cc31e77..0000000000
--- a/docs/docs/databases/apache-drill.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Apache Drill
-sidebar_label: Apache Drill
-description: "Apache Drill is a schema-free SQL query engine for Hadoop and NoSQL."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Apache Drill" database={databaseData.databases["Apache Drill"]} />
diff --git a/docs/docs/databases/apache-druid.mdx b/docs/docs/databases/apache-druid.mdx
deleted file mode 100644
index 6c03cab9ed..0000000000
--- a/docs/docs/databases/apache-druid.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Apache Druid
-sidebar_label: Apache Druid
-description: "Apache Druid is a high performance real-time analytics database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Apache Druid" database={databaseData.databases["Apache Druid"]} />
diff --git a/docs/docs/databases/apache-hive.mdx b/docs/docs/databases/apache-hive.mdx
deleted file mode 100644
index d7df3784f9..0000000000
--- a/docs/docs/databases/apache-hive.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Apache Hive
-sidebar_label: Apache Hive
-description: "Apache Hive is a data warehouse infrastructure built on Hadoop."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Apache Hive" database={databaseData.databases["Apache Hive"]} />
diff --git a/docs/docs/databases/apache-impala.mdx b/docs/docs/databases/apache-impala.mdx
deleted file mode 100644
index 16a9befc1d..0000000000
--- a/docs/docs/databases/apache-impala.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Apache Impala
-sidebar_label: Apache Impala
-description: "Apache Impala is an open-source massively parallel processing SQL query engine."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Apache Impala" database={databaseData.databases["Apache Impala"]} />
diff --git a/docs/docs/databases/apache-kylin.mdx b/docs/docs/databases/apache-kylin.mdx
deleted file mode 100644
index af7ff99284..0000000000
--- a/docs/docs/databases/apache-kylin.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Apache Kylin
-sidebar_label: Apache Kylin
-description: "Apache Kylin is an open-source OLAP engine for big data."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Apache Kylin" database={databaseData.databases["Apache Kylin"]} />
diff --git a/docs/docs/databases/apache-pinot.mdx b/docs/docs/databases/apache-pinot.mdx
deleted file mode 100644
index fda5dc02f3..0000000000
--- a/docs/docs/databases/apache-pinot.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Apache Pinot
-sidebar_label: Apache Pinot
-description: "Apache Pinot is a real-time distributed OLAP datastore."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Apache Pinot" database={databaseData.databases["Apache Pinot"]} />
diff --git a/docs/docs/databases/apache-solr.mdx b/docs/docs/databases/apache-solr.mdx
deleted file mode 100644
index b2b397648a..0000000000
--- a/docs/docs/databases/apache-solr.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Apache Solr
-sidebar_label: Apache Solr
-description: "Apache Solr is an open-source enterprise search platform."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Apache Solr" database={databaseData.databases["Apache Solr"]} />
diff --git a/docs/docs/databases/apache-spark-sql.mdx b/docs/docs/databases/apache-spark-sql.mdx
deleted file mode 100644
index b3b0bd271e..0000000000
--- a/docs/docs/databases/apache-spark-sql.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Apache Spark SQL
-sidebar_label: Apache Spark SQL
-description: "Apache Spark SQL is a module for structured data processing."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Apache Spark SQL" database={databaseData.databases["Apache Spark SQL"]} />
diff --git a/docs/docs/databases/arc.mdx b/docs/docs/databases/arc.mdx
deleted file mode 100644
index e2e338c0d3..0000000000
--- a/docs/docs/databases/arc.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Arc
-sidebar_label: Arc
-description: "Arc is a data platform with multiple connection options."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Arc" database={databaseData.databases["Arc"]} />
diff --git a/docs/docs/databases/ascend-io.mdx b/docs/docs/databases/ascend-io.mdx
deleted file mode 100644
index c135cc328c..0000000000
--- a/docs/docs/databases/ascend-io.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Ascend.io
-sidebar_label: Ascend.io
-description: "Ascend.io is a data automation platform."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Ascend.io" database={databaseData.databases["Ascend.io"]} />
diff --git a/docs/docs/databases/aws-athena.mdx b/docs/docs/databases/aws-athena.mdx
deleted file mode 100644
index 9648b79cc1..0000000000
--- a/docs/docs/databases/aws-athena.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: AWS Athena
-sidebar_label: AWS Athena
-description: "Amazon Athena is an interactive query service for analyzing data in S3 using SQL."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="AWS Athena" database={databaseData.databases["AWS Athena"]} />
diff --git a/docs/docs/databases/aws-dynamodb.mdx b/docs/docs/databases/aws-dynamodb.mdx
deleted file mode 100644
index d4c82c0bd8..0000000000
--- a/docs/docs/databases/aws-dynamodb.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: AWS DynamoDB
-sidebar_label: AWS DynamoDB
-description: "Amazon DynamoDB is a fully managed NoSQL database service."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="AWS DynamoDB" database={databaseData.databases["AWS DynamoDB"]} />
diff --git a/docs/docs/databases/aws-redshift.mdx b/docs/docs/databases/aws-redshift.mdx
deleted file mode 100644
index ba4138c434..0000000000
--- a/docs/docs/databases/aws-redshift.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: AWS Redshift
-sidebar_label: AWS Redshift
-description: "Amazon Redshift is a fully managed data warehouse service."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="AWS Redshift" database={databaseData.databases["AWS Redshift"]} />
diff --git a/docs/docs/databases/clickhouse.mdx b/docs/docs/databases/clickhouse.mdx
deleted file mode 100644
index 19a336874c..0000000000
--- a/docs/docs/databases/clickhouse.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: ClickHouse
-sidebar_label: ClickHouse
-description: "ClickHouse is an open-source column-oriented OLAP database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="ClickHouse" database={databaseData.databases["ClickHouse"]} />
diff --git a/docs/docs/databases/cloudflare-d1.mdx b/docs/docs/databases/cloudflare-d1.mdx
deleted file mode 100644
index 035f92ad1a..0000000000
--- a/docs/docs/databases/cloudflare-d1.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Cloudflare D1
-sidebar_label: Cloudflare D1
-description: "Cloudflare D1 is a serverless SQLite database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Cloudflare D1" database={databaseData.databases["Cloudflare D1"]} />
diff --git a/docs/docs/databases/cockroachdb.mdx b/docs/docs/databases/cockroachdb.mdx
deleted file mode 100644
index 6cb08d26fe..0000000000
--- a/docs/docs/databases/cockroachdb.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: CockroachDB
-sidebar_label: CockroachDB
-description: "CockroachDB is a distributed SQL database built for cloud applications."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="CockroachDB" database={databaseData.databases["CockroachDB"]} />
diff --git a/docs/docs/databases/couchbase.mdx b/docs/docs/databases/couchbase.mdx
deleted file mode 100644
index df8fdf9d2d..0000000000
--- a/docs/docs/databases/couchbase.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Couchbase
-sidebar_label: Couchbase
-description: "Couchbase is a distributed NoSQL document database with SQL support."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Couchbase" database={databaseData.databases["Couchbase"]} />
diff --git a/docs/docs/databases/cratedb.mdx b/docs/docs/databases/cratedb.mdx
deleted file mode 100644
index 49082b2580..0000000000
--- a/docs/docs/databases/cratedb.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: CrateDB
-sidebar_label: CrateDB
-description: "CrateDB is a distributed SQL database for machine data."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="CrateDB" database={databaseData.databases["CrateDB"]} />
diff --git a/docs/docs/databases/databend.mdx b/docs/docs/databases/databend.mdx
deleted file mode 100644
index 7314e40006..0000000000
--- a/docs/docs/databases/databend.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Databend
-sidebar_label: Databend
-description: "Databend is an open-source cloud data warehouse."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Databend" database={databaseData.databases["Databend"]} />
diff --git a/docs/docs/databases/databricks.mdx b/docs/docs/databases/databricks.mdx
deleted file mode 100644
index a954f02bdb..0000000000
--- a/docs/docs/databases/databricks.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Databricks
-sidebar_label: Databricks
-description: "Databricks is a unified analytics platform built on Apache Spark."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Databricks" database={databaseData.databases["Databricks"]} />
diff --git a/docs/docs/databases/denodo.mdx b/docs/docs/databases/denodo.mdx
deleted file mode 100644
index a967319cae..0000000000
--- a/docs/docs/databases/denodo.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Denodo
-sidebar_label: Denodo
-description: "Denodo is a data virtualization platform."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Denodo" database={databaseData.databases["Denodo"]} />
diff --git a/docs/docs/databases/dremio.mdx b/docs/docs/databases/dremio.mdx
deleted file mode 100644
index 3cb55bfffe..0000000000
--- a/docs/docs/databases/dremio.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Dremio
-sidebar_label: Dremio
-description: "Dremio is a data lake engine for self-service analytics."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Dremio" database={databaseData.databases["Dremio"]} />
diff --git a/docs/docs/databases/duckdb.mdx b/docs/docs/databases/duckdb.mdx
deleted file mode 100644
index 5b3f12dda4..0000000000
--- a/docs/docs/databases/duckdb.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: DuckDB
-sidebar_label: DuckDB
-description: "DuckDB is an in-process analytical database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="DuckDB" database={databaseData.databases["DuckDB"]} />
diff --git a/docs/docs/databases/elasticsearch.mdx b/docs/docs/databases/elasticsearch.mdx
deleted file mode 100644
index 019b099d69..0000000000
--- a/docs/docs/databases/elasticsearch.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Elasticsearch
-sidebar_label: Elasticsearch
-description: "Elasticsearch is a distributed search and analytics engine."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Elasticsearch" database={databaseData.databases["Elasticsearch"]} />
diff --git a/docs/docs/databases/exasol.mdx b/docs/docs/databases/exasol.mdx
deleted file mode 100644
index 427968d659..0000000000
--- a/docs/docs/databases/exasol.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Exasol
-sidebar_label: Exasol
-description: "Exasol is a high-performance in-memory analytics database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Exasol" database={databaseData.databases["Exasol"]} />
diff --git a/docs/docs/databases/firebird.mdx b/docs/docs/databases/firebird.mdx
deleted file mode 100644
index b59199aba1..0000000000
--- a/docs/docs/databases/firebird.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Firebird
-sidebar_label: Firebird
-description: "Firebird is an open-source relational database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Firebird" database={databaseData.databases["Firebird"]} />
diff --git a/docs/docs/databases/firebolt.mdx b/docs/docs/databases/firebolt.mdx
deleted file mode 100644
index 42edb32b4b..0000000000
--- a/docs/docs/databases/firebolt.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Firebolt
-sidebar_label: Firebolt
-description: "Firebolt is a cloud data warehouse for sub-second analytics."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Firebolt" database={databaseData.databases["Firebolt"]} />
diff --git a/docs/docs/databases/google-bigquery.mdx b/docs/docs/databases/google-bigquery.mdx
deleted file mode 100644
index 1a225ff5ac..0000000000
--- a/docs/docs/databases/google-bigquery.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Google BigQuery
-sidebar_label: Google BigQuery
-description: "Google BigQuery is a serverless, highly scalable data warehouse."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Google BigQuery" database={databaseData.databases["Google BigQuery"]} />
diff --git a/docs/docs/databases/google-sheets.mdx b/docs/docs/databases/google-sheets.mdx
deleted file mode 100644
index 66da8e1ae4..0000000000
--- a/docs/docs/databases/google-sheets.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Google Sheets
-sidebar_label: Google Sheets
-description: "Query Google Sheets using SQL via the shillelagh library."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Google Sheets" database={databaseData.databases["Google Sheets"]} />
diff --git a/docs/docs/databases/greenplum.mdx b/docs/docs/databases/greenplum.mdx
deleted file mode 100644
index 897c6da72d..0000000000
--- a/docs/docs/databases/greenplum.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Greenplum
-sidebar_label: Greenplum
-description: "VMware Greenplum is a massively parallel processing (MPP) database built on PostgreSQL."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Greenplum" database={databaseData.databases["Greenplum"]} />
diff --git a/docs/docs/databases/ibm-db2-for-i.mdx b/docs/docs/databases/ibm-db2-for-i.mdx
deleted file mode 100644
index 1b5ed5d724..0000000000
--- a/docs/docs/databases/ibm-db2-for-i.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: IBM Db2 for i
-sidebar_label: IBM Db2 for i
-description: "IBM Db2 for i (AS/400) is a database integrated with IBM i OS."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="IBM Db2 for i" database={databaseData.databases["IBM Db2 for i"]} />
diff --git a/docs/docs/databases/ibm-db2.mdx b/docs/docs/databases/ibm-db2.mdx
deleted file mode 100644
index 9da1272bdc..0000000000
--- a/docs/docs/databases/ibm-db2.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: IBM Db2
-sidebar_label: IBM Db2
-description: "IBM Db2 is a family of data management products."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="IBM Db2" database={databaseData.databases["IBM Db2"]} />
diff --git a/docs/docs/databases/ibm-netezza.mdx b/docs/docs/databases/ibm-netezza.mdx
deleted file mode 100644
index 45285814d6..0000000000
--- a/docs/docs/databases/ibm-netezza.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: IBM Netezza
-sidebar_label: IBM Netezza
-description: "IBM Netezza Performance Server is a data warehouse appliance."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="IBM Netezza" database={databaseData.databases["IBM Netezza"]} />
diff --git a/docs/docs/databases/index.mdx b/docs/docs/databases/index.mdx
deleted file mode 100644
index c8faf6f475..0000000000
--- a/docs/docs/databases/index.mdx
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: Connecting to Databases
-sidebar_label: Overview
-sidebar_position: 1
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabaseIndex } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-# Connecting to Databases
-
-Superset does not ship bundled with connectivity to databases. The main step in connecting
-Superset to a database is to **install the proper database driver(s)** in your environment.
-
-:::note
-You'll need to install the required packages for the database you want to use as your metadata database
-as well as the packages needed to connect to the databases you want to access through Superset.
-For information about setting up Superset's metadata database, please refer to
-installation documentations ([Docker Compose](/docs/installation/docker-compose), [Kubernetes](/docs/installation/kubernetes))
-:::
-
-## Supported Databases
-
-Superset supports **59 databases** with varying levels of feature support.
-Click on any database name to see detailed documentation including connection strings,
-authentication methods, and configuration options.
-
-<DatabaseIndex data={databaseData} />
-
-## Installing Database Drivers
-
-Superset requires a Python [DB-API database driver](https://peps.python.org/pep-0249/)
-and a [SQLAlchemy dialect](https://docs.sqlalchemy.org/en/20/dialects/) to be installed for
-each database engine you want to connect to.
-
-### Installing Drivers in Docker
-
-For Docker deployments, create a `requirements-local.txt` file in the `docker` directory:
-
-```bash
-# Create the requirements file
-touch ./docker/requirements-local.txt
-
-# Add your driver (e.g., for PostgreSQL)
-echo "psycopg2-binary" >> ./docker/requirements-local.txt
-```
-
-Then restart your containers. The drivers will be installed automatically.
-
-### Installing Drivers with pip
-
-For non-Docker installations:
-
-```bash
-pip install <driver-package>
-```
-
-See individual database pages for the specific driver packages needed.
-
-## Connecting Through the UI
-
-1. Go to **Settings → Data: Database Connections**
-2. Click **+ DATABASE**
-3. Select your database type or enter a SQLAlchemy URI
-4. Click **Test Connection** to verify
-5. Click **Connect** to save
-
-## Contributing
-
-To add or update database documentation, edit the `DATABASE_DOCS` dictionary in
-`superset/db_engine_specs/lib.py`. Documentation pages are auto-generated from this data.
diff --git a/docs/docs/databases/kusto.mdx b/docs/docs/databases/kusto.mdx
deleted file mode 100644
index f8014fec7b..0000000000
--- a/docs/docs/databases/kusto.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Kusto
-sidebar_label: Kusto
-description: "Azure Data Explorer (Kusto) is a fast, fully managed data analytics service."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Kusto" database={databaseData.databases["Kusto"]} />
diff --git a/docs/docs/databases/mariadb.mdx b/docs/docs/databases/mariadb.mdx
deleted file mode 100644
index 8cdca897e5..0000000000
--- a/docs/docs/databases/mariadb.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: MariaDB
-sidebar_label: MariaDB
-description: "MariaDB is a community-developed fork of MySQL."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="MariaDB" database={databaseData.databases["MariaDB"]} />
diff --git a/docs/docs/databases/microsoft-sql-server.mdx b/docs/docs/databases/microsoft-sql-server.mdx
deleted file mode 100644
index 0d72d15d95..0000000000
--- a/docs/docs/databases/microsoft-sql-server.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Microsoft SQL Server
-sidebar_label: Microsoft SQL Server
-description: "Microsoft SQL Server is a relational database management system."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Microsoft SQL Server" database={databaseData.databases["Microsoft SQL Server"]} />
diff --git a/docs/docs/databases/monetdb.mdx b/docs/docs/databases/monetdb.mdx
deleted file mode 100644
index bd65714004..0000000000
--- a/docs/docs/databases/monetdb.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: MonetDB
-sidebar_label: MonetDB
-description: "MonetDB is an open-source column-oriented relational database for high-performance analytics."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="MonetDB" database={databaseData.databases["MonetDB"]} />
diff --git a/docs/docs/databases/motherduck.mdx b/docs/docs/databases/motherduck.mdx
deleted file mode 100644
index ad85cfd662..0000000000
--- a/docs/docs/databases/motherduck.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: MotherDuck
-sidebar_label: MotherDuck
-description: "MotherDuck is a serverless cloud analytics platform built on DuckDB."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="MotherDuck" database={databaseData.databases["MotherDuck"]} />
diff --git a/docs/docs/databases/mysql.mdx b/docs/docs/databases/mysql.mdx
deleted file mode 100644
index c6abda523f..0000000000
--- a/docs/docs/databases/mysql.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: MySQL
-sidebar_label: MySQL
-description: "MySQL is a popular open-source relational database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="MySQL" database={databaseData.databases["MySQL"]} />
diff --git a/docs/docs/databases/oceanbase.mdx b/docs/docs/databases/oceanbase.mdx
deleted file mode 100644
index e77177b9c2..0000000000
--- a/docs/docs/databases/oceanbase.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: OceanBase
-sidebar_label: OceanBase
-description: "OceanBase is a distributed relational database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="OceanBase" database={databaseData.databases["OceanBase"]} />
diff --git a/docs/docs/databases/ocient.mdx b/docs/docs/databases/ocient.mdx
deleted file mode 100644
index bcd3f61c2d..0000000000
--- a/docs/docs/databases/ocient.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Ocient
-sidebar_label: Ocient
-description: "Ocient is a hyperscale data analytics database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Ocient" database={databaseData.databases["Ocient"]} />
diff --git a/docs/docs/databases/oracle.mdx b/docs/docs/databases/oracle.mdx
deleted file mode 100644
index ad4090cd9d..0000000000
--- a/docs/docs/databases/oracle.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Oracle
-sidebar_label: Oracle
-description: "Oracle Database is a multi-model database management system."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Oracle" database={databaseData.databases["Oracle"]} />
diff --git a/docs/docs/databases/parseable.mdx b/docs/docs/databases/parseable.mdx
deleted file mode 100644
index 522874a94c..0000000000
--- a/docs/docs/databases/parseable.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Parseable
-sidebar_label: Parseable
-description: "Parseable is a distributed log analytics database with SQL-like query interface."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Parseable" database={databaseData.databases["Parseable"]} />
diff --git a/docs/docs/databases/postgresql.mdx b/docs/docs/databases/postgresql.mdx
deleted file mode 100644
index b00b43431e..0000000000
--- a/docs/docs/databases/postgresql.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: PostgreSQL
-sidebar_label: PostgreSQL
-description: "PostgreSQL is an advanced open-source relational database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="PostgreSQL" database={databaseData.databases["PostgreSQL"]} />
diff --git a/docs/docs/databases/presto.mdx b/docs/docs/databases/presto.mdx
deleted file mode 100644
index c15027e95a..0000000000
--- a/docs/docs/databases/presto.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Presto
-sidebar_label: Presto
-description: "Presto is a distributed SQL query engine for big data."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Presto" database={databaseData.databases["Presto"]} />
diff --git a/docs/docs/databases/risingwave.mdx b/docs/docs/databases/risingwave.mdx
deleted file mode 100644
index cfe83cc351..0000000000
--- a/docs/docs/databases/risingwave.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: RisingWave
-sidebar_label: RisingWave
-description: "RisingWave is a distributed streaming database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="RisingWave" database={databaseData.databases["RisingWave"]} />
diff --git a/docs/docs/databases/sap-hana.mdx b/docs/docs/databases/sap-hana.mdx
deleted file mode 100644
index 43d5d5909b..0000000000
--- a/docs/docs/databases/sap-hana.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: SAP HANA
-sidebar_label: SAP HANA
-description: "SAP HANA is an in-memory relational database and application platform."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="SAP HANA" database={databaseData.databases["SAP HANA"]} />
diff --git a/docs/docs/databases/sap-sybase.mdx b/docs/docs/databases/sap-sybase.mdx
deleted file mode 100644
index 01e041f165..0000000000
--- a/docs/docs/databases/sap-sybase.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: SAP Sybase
-sidebar_label: SAP Sybase
-description: "SAP ASE (formerly Sybase) is an enterprise relational database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="SAP Sybase" database={databaseData.databases["SAP Sybase"]} />
diff --git a/docs/docs/databases/singlestore.mdx b/docs/docs/databases/singlestore.mdx
deleted file mode 100644
index 928d6aac80..0000000000
--- a/docs/docs/databases/singlestore.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: SingleStore
-sidebar_label: SingleStore
-description: "SingleStore is a distributed SQL database for real-time analytics."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="SingleStore" database={databaseData.databases["SingleStore"]} />
diff --git a/docs/docs/databases/snowflake.mdx b/docs/docs/databases/snowflake.mdx
deleted file mode 100644
index f5820f79be..0000000000
--- a/docs/docs/databases/snowflake.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Snowflake
-sidebar_label: Snowflake
-description: "Snowflake is a cloud-native data warehouse."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Snowflake" database={databaseData.databases["Snowflake"]} />
diff --git a/docs/docs/databases/sqlite.mdx b/docs/docs/databases/sqlite.mdx
deleted file mode 100644
index 3b015ed699..0000000000
--- a/docs/docs/databases/sqlite.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: SQLite
-sidebar_label: SQLite
-description: "SQLite is a self-contained, serverless SQL database engine."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="SQLite" database={databaseData.databases["SQLite"]} />
diff --git a/docs/docs/databases/starrocks.mdx b/docs/docs/databases/starrocks.mdx
deleted file mode 100644
index 4a7e2bcece..0000000000
--- a/docs/docs/databases/starrocks.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: StarRocks
-sidebar_label: StarRocks
-description: "StarRocks is a next-generation sub-second MPP database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="StarRocks" database={databaseData.databases["StarRocks"]} />
diff --git a/docs/docs/databases/tdengine.mdx b/docs/docs/databases/tdengine.mdx
deleted file mode 100644
index e6046922d8..0000000000
--- a/docs/docs/databases/tdengine.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: TDengine
-sidebar_label: TDengine
-description: "TDengine is a high-performance time-series database for IoT."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="TDengine" database={databaseData.databases["TDengine"]} />
diff --git a/docs/docs/databases/teradata.mdx b/docs/docs/databases/teradata.mdx
deleted file mode 100644
index 43a069836e..0000000000
--- a/docs/docs/databases/teradata.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Teradata
-sidebar_label: Teradata
-description: "Teradata is an enterprise data warehouse platform."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Teradata" database={databaseData.databases["Teradata"]} />
diff --git a/docs/docs/databases/trino.mdx b/docs/docs/databases/trino.mdx
deleted file mode 100644
index a55b03e779..0000000000
--- a/docs/docs/databases/trino.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Trino
-sidebar_label: Trino
-description: "Trino is a distributed SQL query engine for big data analytics."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Trino" database={databaseData.databases["Trino"]} />
diff --git a/docs/docs/databases/vertica.mdx b/docs/docs/databases/vertica.mdx
deleted file mode 100644
index 59b7f109bf..0000000000
--- a/docs/docs/databases/vertica.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Vertica
-sidebar_label: Vertica
-description: "Vertica is a column-oriented analytics database."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="Vertica" database={databaseData.databases["Vertica"]} />
diff --git a/docs/docs/databases/ydb.mdx b/docs/docs/databases/ydb.mdx
deleted file mode 100644
index 7c2b2cc21f..0000000000
--- a/docs/docs/databases/ydb.mdx
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: YDB
-sidebar_label: YDB
-description: "YDB is a distributed SQL database by Yandex."
-hide_title: true
----
-
-{/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/}
-
-import { DatabasePage } from '@site/src/components/databases';
-import databaseData from '@site/src/data/databases.json';
-
-<DatabasePage name="YDB" database={databaseData.databases["YDB"]} />
diff --git a/docs/src/data/databases.json b/docs/src/data/databases.json
deleted file mode 100644
index cae268e2a7..0000000000
--- a/docs/src/data/databases.json
+++ /dev/null
@@ -1,3431 +0,0 @@
-{
- "generated": "2026-01-06T16:19:01.313Z",
- "statistics": {
- "totalDatabases": 59,
- "withDocumentation": 59,
- "withConnectionString": 56,
- "withDrivers": 10,
- "withAuthMethods": 5,
- "supportsJoins": 55,
- "supportsSubqueries": 56,
- "supportsDynamicSchema": 17,
- "supportsCatalog": 10,
- "averageScore": 40,
- "maxScore": 201,
- "byCategory": {
- "Traditional RDBMS": [
- "PostgreSQL",
- "MySQL",
- "SQLite",
- "MariaDB"
- ],
- "Cloud - AWS": [
- "AWS Athena",
- "AWS DynamoDB",
- "AWS Redshift",
- "Amazon DynamoDB"
- ],
- "Apache Projects": [
- "Apache Doris",
- "Apache Drill",
- "Apache Druid",
- "Apache Hive",
- "Apache Impala",
- "Apache Kylin",
- "Apache Pinot",
- "Apache Solr",
- "Apache Spark SQL"
- ],
- "Other Databases": [
- "Arc",
- "Ascend.io",
- "Cloudflare D1",
- "CockroachDB",
- "CrateDB",
- "Databend",
- "Denodo",
- "Dremio",
- "DuckDB",
- "Exasol",
- "Firebird",
- "Firebolt",
- "Greenplum",
- "SAP HANA",
- "IBM Db2",
- "IBM Db2 for i",
- "IBM Netezza",
- "Kusto",
- "MonetDB",
- "MotherDuck",
- "OceanBase",
- "Ocient",
- "Oracle",
- "Parseable",
- "RisingWave",
- "SingleStore",
- "SAP Sybase",
- "TDengine",
- "Teradata",
- "YDB"
- ],
- "Analytical Databases": [
- "ClickHouse",
- "StarRocks",
- "Vertica"
- ],
- "Search & NoSQL": [
- "Couchbase",
- "Elasticsearch"
- ],
- "Cloud Data Warehouses": [
- "Databricks",
- "Snowflake"
- ],
- "Cloud - Google": [
- "Google BigQuery",
- "Google Sheets"
- ],
- "Cloud - Azure": [
- "Microsoft SQL Server"
- ],
- "Query Engines": [
- "Presto",
- "Trino"
- ]
- }
- },
- "databases": {
- "PostgreSQL": {
- "engine": "postgresql",
- "engine_name": "PostgreSQL",
- "documentation": {
- "description": "PostgreSQL is an advanced open-source relational database.",
- "logo": "postgresql.svg",
- "homepage_url": "https://www.postgresql.org/",
- "pypi_packages": [
- "psycopg2"
- ],
- "connection_string": "postgresql://{username}:{password}@{host}:{port}/{database}",
- "default_port": 5432,
- "parameters": {
- "username": "Database username",
- "password": "Database password",
- "host": "For localhost: localhost or 127.0.0.1. For AWS: endpoint URL",
- "port": "Default 5432",
- "database": "Database name"
- },
- "notes": "The psycopg2 library comes bundled with Superset Docker images.",
- "connection_examples": [
- {
- "description": "Basic connection",
- "connection_string": "postgresql://{username}:{password}@{host}:{port}/{database}"
- },
- {
- "description": "With SSL required",
- "connection_string": "postgresql://{username}:{password}@{host}:{port}/{database}?sslmode=require"
- }
- ],
- "docs_url": "https://www.postgresql.org/docs/",
- "sqlalchemy_docs_url": "https://docs.sqlalchemy.org/en/13/dialects/postgresql.html",
- "compatible_databases": [
- {
- "name": "Hologres",
- "description": "Alibaba Cloud real-time interactive analytics service, fully compatible with PostgreSQL 11.",
- "logo": "hologres.png",
- "homepage_url": "https://www.alibabacloud.com/product/hologres",
- "pypi_packages": [
- "psycopg2"
- ],
- "connection_string": "postgresql+psycopg2://{username}:{password}@{host}:{port}/{database}",
- "parameters": {
- "username": "AccessKey ID of your Alibaba Cloud account",
- "password": "AccessKey secret of your Alibaba Cloud account",
- "host": "Public endpoint of the Hologres instance",
- "port": "Port number of the Hologres instance",
- "database": "Name of the Hologres database"
- }
- },
- {
- "name": "TimescaleDB",
- "description": "Open-source relational database for time-series and analytics, built on PostgreSQL.",
- "logo": "timescale.png",
- "homepage_url": "https://www.timescale.com/",
- "pypi_packages": [
- "psycopg2"
- ],
- "connection_string": "postgresql://{username}:{password}@{host}:{port}/{database}",
- "connection_examples": [
- {
- "description": "Timescale Cloud (SSL required)",
- "connection_string": "postgresql://{username}:{password}@{host}:{port}/{database}?sslmode=require"
- }
- ],
- "notes": "psycopg2 comes bundled with Superset Docker images.",
- "docs_url": "https://docs.timescale.com/"
- },
- {
- "name": "YugabyteDB",
- "description": "Distributed SQL database built on top of PostgreSQL.",
- "logo": "yugabyte.png",
- "homepage_url": "https://www.yugabyte.com/",
- "pypi_packages": [
- "psycopg2"
- ],
- "connection_string": "postgresql://{username}:{password}@{host}:{port}/{database}",
- "notes": "psycopg2 comes bundled with Superset Docker images.",
- "docs_url": "https://www.yugabyte.com/"
- }
- ]
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 104,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": true,
- "sql_validation": true
- },
- "MySQL": {
- "engine": "mysql",
- "engine_name": "MySQL",
- "documentation": {
- "description": "MySQL is a popular open-source relational database.",
- "logo": "mysql.png",
- "homepage_url": "https://www.mysql.com/",
- "pypi_packages": [
- "mysqlclient"
- ],
- "connection_string": "mysql://{username}:{password}@{host}/{database}",
- "default_port": 3306,
- "parameters": {
- "username": "Database username",
- "password": "Database password",
- "host": "localhost, 127.0.0.1, IP address, or hostname",
- "database": "Database name"
- },
- "host_examples": [
- {
- "platform": "Localhost",
- "host": "localhost or 127.0.0.1"
- },
- {
- "platform": "Docker on Linux",
- "host": "172.18.0.1"
- },
- {
- "platform": "Docker on macOS",
- "host": "docker.for.mac.host.internal"
- },
- {
- "platform": "On-premise",
- "host": "IP address or hostname"
- }
- ],
- "drivers": [
- {
- "name": "mysqlclient",
- "pypi_package": "mysqlclient",
- "connection_string": "mysql://{username}:{password}@{host}/{database}",
- "is_recommended": true,
- "notes": "Recommended driver. May fail with caching_sha2_password auth."
- },
- {
- "name": "mysql-connector-python",
- "pypi_package": "mysql-connector-python",
- "connection_string": "mysql+mysqlconnector://{username}:{password}@{host}/{database}",
- "is_recommended": false,
- "notes": "Required for newer MySQL databases using caching_sha2_password authentication."
- }
- ]
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 59,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "SQLite": {
- "engine": "sqlite",
- "engine_name": "SQLite",
- "documentation": {
- "description": "SQLite is a self-contained, serverless SQL database engine.",
- "logo": "sqlite.png",
- "homepage_url": "https://www.sqlite.org/",
- "pypi_packages": [],
- "connection_string": "sqlite:///path/to/file.db?check_same_thread=false",
- "notes": "No additional library needed. SQLite is bundled with Python."
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": true,
- "HOUR": true,
- "SIX_HOURS": true,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": true,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": true,
- "YEAR": true
- },
- "score": 41,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "AWS Athena": {
- "engine": "aws_athena",
- "engine_name": "AWS Athena",
- "documentation": {
- "description": "Amazon Athena is an interactive query service for analyzing data in S3 using SQL.",
- "logo": "amazon-athena.jpg",
- "homepage_url": "https://aws.amazon.com/athena/",
- "drivers": [
- {
- "name": "PyAthena (REST)",
- "pypi_package": "pyathena[pandas]",
- "connection_string": "awsathena+rest://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}",
- "is_recommended": true,
- "notes": "No Java required. URL-encode special characters (e.g., s3:// -> s3%3A//)."
- },
- {
- "name": "PyAthenaJDBC",
- "pypi_package": "PyAthenaJDBC",
- "connection_string": "awsathena+jdbc://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}",
- "is_recommended": false,
- "notes": "Requires Amazon Athena JDBC driver."
- }
- ],
- "engine_parameters": [
- {
- "name": "IAM Role Assumption",
- "description": "Assume a specific IAM role for queries",
- "json": {
- "connect_args": {
- "role_arn": "<role arn>"
- }
- }
- }
- ],
- "notes": "URL-encode special characters in s3_staging_dir (e.g., s3:// becomes s3%3A//)."
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "AWS DynamoDB": {
- "engine": "aws_dynamodb",
- "engine_name": "AWS DynamoDB",
- "documentation": {
- "description": "Amazon DynamoDB is a fully managed NoSQL database service.",
- "homepage_url": "https://aws.amazon.com/dynamodb/",
- "pypi_packages": [
- "pydynamodb"
- ],
- "connection_string": "dynamodb://{access_key_id}:{secret_access_key}@dynamodb.{region_name}.amazonaws.com:443?connector=superset",
- "docs_url": "https://github.com/passren/PyDynamoDB/wiki/5.-Superset"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "AWS Redshift": {
- "engine": "aws_redshift",
- "engine_name": "AWS Redshift",
- "documentation": {
- "description": "Amazon Redshift is a fully managed data warehouse service.",
- "logo": "redshift.png",
- "homepage_url": "https://aws.amazon.com/redshift/",
- "pypi_packages": [
- "sqlalchemy-redshift"
- ],
- "default_port": 5439,
- "parameters": {
- "username": "Database username",
- "password": "Database password",
- "host": "AWS Endpoint",
- "port": "Default 5439",
- "database": "Database name"
- },
- "drivers": [
- {
- "name": "psycopg2",
- "pypi_package": "psycopg2",
- "connection_string": "redshift+psycopg2://{username}:{password}@{host}:5439/{database}",
- "is_recommended": true
- },
- {
- "name": "redshift_connector",
- "pypi_package": "redshift_connector",
- "connection_string": "redshift+redshift_connector://{username}:{password}@{host}:5439/{database}",
- "is_recommended": false,
- "notes": "Supports IAM-based credentials for clusters and serverless."
- }
- ],
- "authentication_methods": [
- {
- "name": "IAM Credentials (Cluster)",
- "description": "Use IAM-based temporary database credentials for Redshift clusters",
- "requirements": "IAM role must have redshift:GetClusterCredentials permission",
- "connection_string": "redshift+redshift_connector://",
- "engine_parameters": {
- "connect_args": {
- "iam": true,
- "database": "<database>",
- "cluster_identifier": "<cluster_identifier>",
- "db_user": "<db_user>"
- }
- }
- },
- {
- "name": "IAM Credentials (Serverless)",
- "description": "Use IAM-based credentials for Redshift Serverless",
- "requirements": "IAM role must have redshift-serverless:GetCredentials and redshift-serverless:GetWorkgroup permissions",
- "connection_string": "redshift+redshift_connector://",
- "engine_parameters": {
- "connect_args": {
- "iam": true,
- "is_serverless": true,
- "serverless_acct_id": "<aws account number>",
- "serverless_work_group": "<redshift work group>",
- "database": "<database>",
- "user": "IAMR:<superset iam role name>"
- }
- }
- }
- ]
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Apache Doris": {
- "engine": "apache_doris",
- "engine_name": "Apache Doris",
- "documentation": {
- "description": "Apache Doris is a high-performance real-time analytical database.",
- "logo": "doris.png",
- "homepage_url": "https://doris.apache.org/",
- "pypi_packages": [
- "pydoris"
- ],
- "connection_string": "doris://{username}:{password}@{host}:{port}/{catalog}.{database}",
- "parameters": {
- "username": "User name",
- "password": "Password",
- "host": "Doris FE Host",
- "port": "Doris FE port",
- "catalog": "Catalog name",
- "database": "Database name"
- }
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 79,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Amazon DynamoDB": {
- "engine": "amazon_dynamodb",
- "engine_name": "Amazon DynamoDB",
- "documentation": {
- "description": "Amazon DynamoDB is a serverless NoSQL database with SQL via PartiQL.",
- "homepage_url": "https://aws.amazon.com/dynamodb/",
- "pypi_packages": [
- "pydynamodb"
- ],
- "connection_string": "dynamodb://{aws_access_key_id}:{aws_secret_access_key}@dynamodb.{region}.amazonaws.com:443?connector=superset",
- "parameters": {
- "aws_access_key_id": "AWS access key ID",
- "aws_secret_access_key": "AWS secret access key",
- "region": "AWS region (e.g., us-east-1)"
- },
- "notes": "Uses PartiQL for SQL queries. Requires connector=superset parameter.",
- "docs_url": "https://github.com/passren/PyDynamoDB"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Apache Drill": {
- "engine": "apache_drill",
- "engine_name": "Apache Drill",
- "documentation": {
- "description": "Apache Drill is a schema-free SQL query engine for Hadoop and NoSQL.",
- "logo": "apache-drill.png",
- "homepage_url": "https://drill.apache.org/",
- "drivers": [
- {
- "name": "SQLAlchemy (REST)",
- "pypi_package": "sqlalchemy-drill",
- "connection_string": "drill+sadrill://{username}:{password}@{host}:{port}/{storage_plugin}?use_ssl=True",
- "is_recommended": true
- },
- {
- "name": "JDBC",
- "pypi_package": "sqlalchemy-drill",
- "connection_string": "drill+jdbc://{username}:{password}@{host}:{port}",
- "is_recommended": false,
- "notes": "Requires Drill JDBC Driver installation.",
- "docs_url": "https://drill.apache.org/docs/using-the-jdbc-driver/"
- },
- {
- "name": "ODBC",
- "pypi_package": "sqlalchemy-drill",
- "is_recommended": false,
- "notes": "See Apache Drill documentation for ODBC setup.",
- "docs_url": "https://drill.apache.org/docs/installing-the-driver-on-linux/"
- }
- ],
- "connection_examples": [
- {
- "description": "Local embedded mode",
- "connection_string": "drill+sadrill://localhost:8047/dfs?use_ssl=False"
- }
- ]
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 50,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": true,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Apache Druid": {
- "engine": "apache_druid",
- "engine_name": "Apache Druid",
- "documentation": {
- "description": "Apache Druid is a high performance real-time analytics database.",
- "logo": "druid.png",
- "homepage_url": "https://druid.apache.org/",
- "pypi_packages": [
- "pydruid"
- ],
- "connection_string": "druid://{username}:{password}@{host}:{port}/druid/v2/sql",
- "default_port": 9088,
- "parameters": {
- "username": "Database username",
- "password": "Database password",
- "host": "IP address or URL of the host",
- "port": "Default 9088"
- },
- "ssl_configuration": {
- "custom_certificate": "Add certificate in Root Certificate field. pydruid will automatically use https.",
- "disable_ssl_verification": {
- "engine_params": {
- "connect_args": {
- "scheme": "https",
- "ssl_verify_cert": false
- }
- }
- }
- },
- "advanced_features": {
- "aggregations": "Define common aggregations in datasource edit view under List Druid Column tab.",
- "post_aggregations": "Create metrics with postagg as Metric Type and provide valid JSON post-aggregation definition."
- },
- "notes": "A native Druid connector ships with Superset (behind DRUID_IS_ACTIVE flag) but SQLAlchemy connector via pydruid is preferred."
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": true,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 47,
- "max_score": 201,
- "joins": false,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Apache Hive": {
- "engine": "apache_hive",
- "engine_name": "Apache Hive",
- "documentation": {
- "description": "Apache Hive is a data warehouse infrastructure built on Hadoop.",
- "logo": "apache-hive.svg",
- "homepage_url": "https://hive.apache.org/",
- "pypi_packages": [
- "pyhive"
- ],
- "connection_string": "hive://hive@{hostname}:{port}/{database}"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 140,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": true,
- "query_cost_estimation": true,
- "sql_validation": false
- },
- "Apache Impala": {
- "engine": "apache_impala",
- "engine_name": "Apache Impala",
- "documentation": {
- "description": "Apache Impala is an open-source massively parallel processing SQL query engine.",
- "logo": "apache-impala.png",
- "homepage_url": "https://impala.apache.org/",
- "pypi_packages": [
- "impyla"
- ],
- "connection_string": "impala://{hostname}:{port}/{database}"
- },
- "time_grains": {
- "SECOND": false,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 37,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Apache Kylin": {
- "engine": "apache_kylin",
- "engine_name": "Apache Kylin",
- "documentation": {
- "description": "Apache Kylin is an open-source OLAP engine for big data.",
- "logo": "apache-kylin.png",
- "homepage_url": "https://kylin.apache.org/",
- "pypi_packages": [
- "kylinpy"
- ],
- "connection_string": "kylin://{username}:{password}@{hostname}:{port}/{project}?{param1}={value1}&{param2}={value2}"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 28,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Apache Pinot": {
- "engine": "apache_pinot",
- "engine_name": "Apache Pinot",
- "documentation": {
- "description": "Apache Pinot is a real-time distributed OLAP datastore.",
- "logo": "apache-pinot.svg",
- "homepage_url": "https://pinot.apache.org/",
- "pypi_packages": [
- "pinotdb"
- ],
- "connection_string": "pinot+http://{broker_host}:{broker_port}/query?controller=http://{controller_host}:{controller_port}/",
- "connection_examples": [
- {
- "description": "With authentication",
- "connection_string": "pinot://{username}:{password}@{broker_host}:{broker_port}/query/sql?controller=http://{controller_host}:{controller_port}/verify_ssl=true"
- }
- ],
- "engine_parameters": [
- {
- "name": "Multi-stage Query Engine",
- "description": "Enable for Explore view, joins, window functions",
- "json": {
- "connect_args": {
- "use_multistage_engine": "true"
- }
- },
- "docs_url": "https://docs.pinot.apache.org/reference/multi-stage-engine"
- }
- ]
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 32,
- "max_score": 201,
- "joins": false,
- "subqueries": false,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Apache Solr": {
- "engine": "apache_solr",
- "engine_name": "Apache Solr",
- "documentation": {
- "description": "Apache Solr is an open-source enterprise search platform.",
- "homepage_url": "https://solr.apache.org/",
- "pypi_packages": [
- "sqlalchemy-solr"
- ],
- "connection_string": "solr://{username}:{password}@{host}:{port}/{server_path}/{collection}[/?use_ssl=true|false]"
- },
- "time_grains": {
- "SECOND": false,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": false,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": false,
- "SIX_HOURS": false,
- "DAY": false,
- "WEEK": false,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": false,
- "QUARTER": false,
- "QUARTER_YEAR": false,
- "YEAR": false
- },
- "score": 20,
- "max_score": 201,
- "joins": false,
- "subqueries": false,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Apache Spark SQL": {
- "engine": "apache_spark_sql",
- "engine_name": "Apache Spark SQL",
- "documentation": {
- "description": "Apache Spark SQL is a module for structured data processing.",
- "homepage_url": "https://spark.apache.org/sql/",
- "pypi_packages": [
- "pyhive"
- ],
- "connection_string": "hive://hive@{hostname}:{port}/{database}"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 140,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": true,
- "query_cost_estimation": true,
- "sql_validation": false
- },
- "Arc": {
- "engine": "arc",
- "engine_name": "Arc",
- "documentation": {
- "description": "Arc is a data platform with multiple connection options.",
- "drivers": [
- {
- "name": "Apache Arrow (Recommended)",
- "pypi_package": "arc-superset-arrow",
- "connection_string": "arc+arrow://{api_key}@{hostname}:{port}/{database}",
- "is_recommended": true,
- "notes": "Recommended for production. Provides 3-5x better performance using Apache Arrow IPC binary format."
- },
- {
- "name": "JSON",
- "pypi_package": "arc-superset-dialect",
- "connection_string": "arc+json://{api_key}@{hostname}:{port}/{database}",
- "is_recommended": false
- }
- ],
- "notes": "Arc supports multiple databases (schemas) within a single instance. Each Arc database appears as a schema in SQL Lab."
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Ascend.io": {
- "engine": "ascend.io",
- "engine_name": "Ascend.io",
- "documentation": {
- "description": "Ascend.io is a data automation platform.",
- "pypi_packages": [
- "impyla"
- ],
- "connection_string": "ascend://{username}:{password}@{hostname}:{port}/{database}?auth_mechanism=PLAIN;use_ssl=true"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "ClickHouse": {
- "engine": "clickhouse",
- "engine_name": "ClickHouse",
- "documentation": {
- "description": "ClickHouse is an open-source column-oriented OLAP database.",
- "logo": "clickhouse.png",
- "homepage_url": "https://clickhouse.com/",
- "pypi_packages": [
- "clickhouse-connect"
- ],
- "connection_string": "clickhousedb://{username}:{password}@{hostname}:{port}/{database}",
- "version_requirements": "clickhouse-connect>=0.6.8",
- "connection_examples": [
- {
- "description": "Altinity Cloud",
- "connection_string": "clickhousedb://demo:demo@github.demo.trial.altinity.cloud/default?secure=true"
- },
- {
- "description": "Local (no auth, no SSL)",
- "connection_string": "clickhousedb://localhost/default"
- }
- ],
- "install_instructions": "echo \"clickhouse-connect>=0.6.8\" >> ./docker/requirements-local.txt"
- },
- "time_grains": {
- "SECOND": false,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 51,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Cloudflare D1": {
- "engine": "cloudflare_d1",
- "engine_name": "Cloudflare D1",
- "documentation": {
- "description": "Cloudflare D1 is a serverless SQLite database.",
- "pypi_packages": [
- "superset-engine-d1"
- ],
- "connection_string": "d1://{cloudflare_account_id}:{cloudflare_api_token}@{cloudflare_d1_database_id}",
- "install_instructions": "pip install superset-engine-d1"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "CockroachDB": {
- "engine": "cockroachdb",
- "engine_name": "CockroachDB",
- "documentation": {
- "description": "CockroachDB is a distributed SQL database built for cloud applications.",
- "homepage_url": "https://www.cockroachlabs.com/",
- "pypi_packages": [
- "cockroachdb"
- ],
- "connection_string": "cockroachdb://root@{hostname}:{port}/{database}?sslmode=disable",
- "docs_url": "https://github.com/cockroachdb/sqlalchemy-cockroachdb"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 94,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": true,
- "sql_validation": false
- },
- "Couchbase": {
- "engine": "couchbase",
- "engine_name": "Couchbase",
- "documentation": {
- "description": "Couchbase is a distributed NoSQL document database with SQL support.",
- "logo": "couchbase.svg",
- "homepage_url": "https://www.couchbase.com/",
- "pypi_packages": [
- "couchbase-sqlalchemy"
- ],
- "connection_string": "couchbase://{username}:{password}@{hostname}:{port}?truststorepath={certificate_path}?ssl={true|false}",
- "notes": "Supports Couchbase Analytics and Couchbase Columnar services.",
- "docs_url": "https://github.com/couchbase/couchbase-sqlalchemy"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": false,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 27,
- "max_score": 201,
- "joins": false,
- "subqueries": false,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "CrateDB": {
- "engine": "cratedb",
- "engine_name": "CrateDB",
- "documentation": {
- "description": "CrateDB is a distributed SQL database for machine data.",
- "homepage_url": "https://cratedb.com/",
- "pypi_packages": [
- "sqlalchemy-cratedb"
- ],
- "version_requirements": "sqlalchemy-cratedb>=0.40.1,<1",
- "default_port": 4200,
- "connection_examples": [
- {
- "description": "Self-Managed (localhost)",
- "connection_string": "crate://crate@127.0.0.1:4200"
- },
- {
- "description": "CrateDB Cloud",
- "connection_string": "crate://{username}:{password}@{clustername}.cratedb.net:4200/?ssl=true"
- }
- ],
- "install_instructions": "echo \"sqlalchemy-cratedb\" >> ./docker/requirements-local.txt",
- "docs_url": "https://cratedb.com/product/cloud"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 28,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Databend": {
- "engine": "databend",
- "engine_name": "Databend",
- "documentation": {
- "description": "Databend is an open-source cloud data warehouse.",
- "logo": "databend.png",
- "homepage_url": "https://www.databend.com/",
- "pypi_packages": [
- "databend-sqlalchemy"
- ],
- "version_requirements": "databend-sqlalchemy>=0.2.3",
- "connection_string": "databend://{username}:{password}@{host}:{port}/{database_name}",
- "connection_examples": [
- {
- "description": "Local connection",
- "connection_string": "databend://user:password@localhost:8000/default?secure=false"
- }
- ]
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 51,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Databricks": {
- "engine": "databricks",
- "engine_name": "Databricks",
- "documentation": {
- "description": "Databricks is a unified analytics platform built on Apache Spark.",
- "logo": "databricks.png",
- "homepage_url": "https://www.databricks.com/",
- "pypi_packages": [
- "databricks-sql-connector",
- "sqlalchemy-databricks"
- ],
- "install_instructions": "pip install \"apache-superset[databricks]\"",
- "connection_string": "databricks+connector://token:{access_token}@{server_hostname}:{port}/{database_name}",
- "parameters": {
- "server_hostname": "Found in Configuration -> Advanced Options -> JDBC/ODBC",
- "port": "Found in Configuration -> Advanced Options -> JDBC/ODBC",
- "http_path": "Found in Configuration -> Advanced Options -> JDBC/ODBC",
- "access_token": "From Settings -> User Settings -> Access Tokens"
- },
- "engine_parameters": [
- {
- "name": "HTTP Path (Required)",
- "description": "Must be specified in Engine Parameters",
- "json": {
- "connect_args": {
- "http_path": "sql/protocolv1/o/****"
- }
- }
- }
- ],
- "drivers": [
- {
- "name": "Native Connector (Recommended)",
- "pypi_package": "databricks-sql-connector",
- "connection_string": "databricks+connector://token:{access_token}@{server_hostname}:{port}/{database_name}",
- "is_recommended": true
- },
- {
- "name": "databricks-dbapi (Legacy)",
- "pypi_package": "databricks-dbapi[sqlalchemy]",
- "is_recommended": false,
- "notes": "Older connector. Try if having problems with official connector."
- },
- {
- "name": "Hive Connector",
- "pypi_package": "databricks-dbapi[sqlalchemy]",
- "connection_string": "databricks+pyhive://token:{access_token}@{server_hostname}:{port}/{database_name}",
- "is_recommended": false
- },
- {
- "name": "ODBC",
- "pypi_package": "databricks-dbapi[sqlalchemy]",
- "connection_string": "databricks+pyodbc://token:{access_token}@{server_hostname}:{port}/{database_name}",
- "is_recommended": false,
- "notes": "Requires ODBC drivers. Use for SQL endpoints.",
- "odbc_driver_paths": {
- "macOS": "/Library/simba/spark/lib/libsparkodbc_sbu.dylib",
- "Linux": "/opt/simba/spark/lib/64/libsparkodbc_sb64.so"
- },
- "docs_url": "https://databricks.com/spark/odbc-drivers-download"
- }
- ]
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 70,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Denodo": {
- "engine": "denodo",
- "engine_name": "Denodo",
- "documentation": {
- "description": "Denodo is a data virtualization platform.",
- "logo": "denodo.png",
- "homepage_url": "https://www.denodo.com/",
- "pypi_packages": [
- "denodo-sqlalchemy"
- ],
- "connection_string": "denodo://{username}:{password}@{hostname}:{port}/{database}",
- "default_port": 9996
- },
- "time_grains": {
- "SECOND": false,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 27,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Dremio": {
- "engine": "dremio",
- "engine_name": "Dremio",
- "documentation": {
- "description": "Dremio is a data lake engine for self-service analytics.",
- "logo": "dremio.png",
- "homepage_url": "https://www.dremio.com/",
- "pypi_packages": [
- "sqlalchemy_dremio"
- ],
- "drivers": [
- {
- "name": "Arrow Flight (Recommended)",
- "connection_string": "dremio+flight://{username}:{password}@{host}:32010/dremio",
- "default_port": 32010,
- "is_recommended": true,
- "notes": "Better performance with Arrow Flight."
- },
- {
- "name": "ODBC",
- "connection_string": "dremio+pyodbc://{username}:{password}@{host}:31010/{database_name}/dremio?SSL=1",
- "default_port": 31010,
- "is_recommended": false
- }
- ],
- "tutorials": [
- "https://www.dremio.com/tutorials/dremio-apache-superset/"
- ]
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 28,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "DuckDB": {
- "engine": "duckdb",
- "engine_name": "DuckDB",
- "documentation": {
- "description": "DuckDB is an in-process analytical database.",
- "homepage_url": "https://duckdb.org/",
- "pypi_packages": [
- "duckdb-engine"
- ],
- "connection_string": "duckdb:///path/to/file.db",
- "notes": "Great for local development. In-process database, no server needed."
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 38,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Elasticsearch": {
- "engine": "elasticsearch",
- "engine_name": "Elasticsearch",
- "documentation": {
- "description": "Elasticsearch is a distributed search and analytics engine.",
- "homepage_url": "https://www.elastic.co/elasticsearch/",
- "pypi_packages": [
- "elasticsearch-dbapi"
- ],
- "connection_string": "elasticsearch+http://{username}:{password}@{host}:9200/",
- "default_port": 9200,
- "connection_examples": [
- {
- "description": "HTTPS",
- "connection_string": "elasticsearch+https://{username}:{password}@{host}:9200/"
- },
- {
- "description": "Disable SSL verification",
- "connection_string": "elasticsearch+https://{username}:{password}@{host}:9200/?verify_certs=False"
- }
- ],
- "engine_parameters": [
- {
- "name": "Time Zone",
- "description": "Override default UTC time zone",
- "json": {
- "connect_args": {
- "time_zone": "Asia/Shanghai"
- }
- }
- }
- ],
- "notes": "Default row limit is 10000. Can be changed via ROW_LIMIT config.",
- "advanced_features": {
- "multi_index_queries": "Use SQL Lab to query multiple indices (e.g., SELECT * FROM \"logstash\")",
- "multi_index_visualization": "Create an alias index for visualizations with multiple indices"
- },
- "warnings": [
- "Before Elasticsearch 7.8, CAST function doesn't support time_zone setting. Use DATETIME_PARSE instead."
- ],
- "docs_url": "https://github.com/preset-io/elasticsearch-dbapi"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Exasol": {
- "engine": "exasol",
- "engine_name": "Exasol",
- "documentation": {
- "description": "Exasol is a high-performance in-memory analytics database.",
- "logo": "exasol.png",
- "homepage_url": "https://www.exasol.com/",
- "pypi_packages": [
- "sqlalchemy-exasol"
- ],
- "connection_string": "exa+pyodbc://{username}:{password}@{hostname}:{port}/{schema}?CONNECTIONLCALL=en_US.UTF-8&driver=EXAODBC",
- "docs_url": "https://github.com/exasol/sqlalchemy-exasol"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 28,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Firebird": {
- "engine": "firebird",
- "engine_name": "Firebird",
- "documentation": {
- "description": "Firebird is an open-source relational database.",
- "logo": "firebird.png",
- "homepage_url": "https://firebirdsql.org/",
- "pypi_packages": [
- "sqlalchemy-firebird"
- ],
- "version_requirements": "sqlalchemy-firebird>=0.7.0,<0.8",
- "connection_string": "firebird+fdb://{username}:{password}@{host}:{port}//{path_to_db_file}",
- "connection_examples": [
- {
- "description": "Local database",
- "connection_string": "firebird+fdb://SYSDBA:masterkey@192.168.86.38:3050//Library/Frameworks/Firebird.framework/Versions/A/Resources/examples/empbuild/employee.fdb"
- }
- ]
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": false,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": false,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 26,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Firebolt": {
- "engine": "firebolt",
- "engine_name": "Firebolt",
- "documentation": {
- "description": "Firebolt is a cloud data warehouse for sub-second analytics.",
- "logo": "firebolt.png",
- "homepage_url": "https://www.firebolt.io/",
- "pypi_packages": [
- "firebolt-sqlalchemy"
- ],
- "connection_examples": [
- {
- "description": "User authentication",
- "connection_string": "firebolt://{username}:{password}@{database}?account_name={name}"
- },
- {
- "description": "User auth with engine",
- "connection_string": "firebolt://{username}:{password}@{database}/{engine_name}?account_name={name}"
- },
- {
- "description": "Service account",
- "connection_string": "firebolt://{client_id}:{client_secret}@{database}?account_name={name}"
- },
- {
- "description": "Service account with engine",
- "connection_string": "firebolt://{client_id}:{client_secret}@{database}/{engine_name}?account_name={name}"
- }
- ]
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 28,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Greenplum": {
- "engine": "greenplum",
- "engine_name": "Greenplum",
- "documentation": {
- "description": "VMware Greenplum is a massively parallel processing (MPP) database built on PostgreSQL.",
- "logo": "greenplum.png",
- "homepage_url": "https://greenplum.org/",
- "pypi_packages": [
- "sqlalchemy-greenplum",
- "psycopg2"
- ],
- "connection_string": "greenplum://{username}:{password}@{host}:{port}/{database}",
- "default_port": 5432,
- "parameters": {
- "username": "Database username",
- "password": "Database password",
- "host": "Greenplum coordinator host",
- "port": "Default 5432",
- "database": "Database name"
- },
- "docs_url": "https://docs.vmware.com/en/VMware-Greenplum/"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Google BigQuery": {
- "engine": "google_bigquery",
- "engine_name": "Google BigQuery",
- "documentation": {
- "description": "Google BigQuery is a serverless, highly scalable data warehouse.",
- "logo": "google-big-query.svg",
- "homepage_url": "https://cloud.google.com/bigquery/",
- "pypi_packages": [
- "sqlalchemy-bigquery"
- ],
- "connection_string": "bigquery://{project_id}",
- "install_instructions": "echo \"sqlalchemy-bigquery\" >> ./docker/requirements-local.txt",
- "authentication_methods": [
- {
- "name": "Service Account JSON",
- "description": "Upload service account credentials JSON or paste in Secure Extra",
- "secure_extra": {
- "credentials_info": {
- "type": "service_account",
- "project_id": "...",
- "private_key_id": "...",
- "private_key": "...",
- "client_email": "...",
- "client_id": "...",
- "auth_uri": "...",
- "token_uri": "...",
- "auth_provider_x509_cert_url": "...",
- "client_x509_cert_url": "..."
- }
- }
- }
- ],
- "notes": "Create a Service Account via GCP console with access to BigQuery datasets. For CSV/Excel uploads, also install pandas_gbq.",
- "warnings": [
- "Google BigQuery Python SDK is not compatible with gevent. Use a worker type other than gevent when deploying with gunicorn."
- ],
- "docs_url": "https://github.com/googleapis/python-bigquery-sqlalchemy"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Google Sheets": {
- "engine": "google_sheets",
- "engine_name": "Google Sheets",
- "documentation": {
- "description": "Query Google Sheets using SQL via the shillelagh library.",
- "logo": "google-sheets.svg",
- "homepage_url": "https://www.google.com/sheets/about/",
- "pypi_packages": [
- "shillelagh[gsheetsapi]"
- ],
- "connection_string": "gsheets://",
- "notes": "Google Sheets has a limited SQL API.",
- "tutorials": [
- "https://preset.io/blog/2020-06-01-connect-superset-google-sheets/"
- ],
- "docs_url": "https://github.com/betodealmeida/shillelagh"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": true,
- "HOUR": true,
- "SIX_HOURS": true,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": true,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": true,
- "YEAR": true
- },
- "score": 61,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": true,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "SAP HANA": {
- "engine": "sap_hana",
- "engine_name": "SAP HANA",
- "documentation": {
- "description": "SAP HANA is an in-memory relational database and application platform.",
- "logo": "sap-hana.png",
- "homepage_url": "https://www.sap.com/products/technology-platform/hana.html",
- "pypi_packages": [
- "hdbcli",
- "sqlalchemy-hana"
- ],
- "install_instructions": "pip install apache_superset[hana]",
- "connection_string": "hana://{username}:{password}@{host}:{port}",
- "docs_url": "https://github.com/SAP/sqlalchemy-hana"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": false,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 27,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "IBM Db2": {
- "engine": "ibm_db2",
- "engine_name": "IBM Db2",
- "documentation": {
- "description": "IBM Db2 is a family of data management products.",
- "logo": "ibm-db2.svg",
- "homepage_url": "https://www.ibm.com/db2",
- "pypi_packages": [
- "ibm_db_sa"
- ],
- "drivers": [
- {
- "name": "ibm_db_sa (with LIMIT)",
- "connection_string": "db2+ibm_db://{username}:{password}@{hostname}:{port}/{database}",
- "is_recommended": true
- },
- {
- "name": "ibm_db_sa (without LIMIT syntax)",
- "connection_string": "ibm_db_sa://{username}:{password}@{hostname}:{port}/{database}",
- "is_recommended": false,
- "notes": "Use for older DB2 versions without LIMIT [n] syntax. Recommended for SQL Lab."
- }
- ],
- "docs_url": "https://github.com/ibmdb/python-ibmdbsa"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 38,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "IBM Db2 for i": {
- "engine": "ibm_db2_for_i",
- "engine_name": "IBM Db2 for i",
- "documentation": {
- "description": "IBM Db2 for i (AS/400) is a database integrated with IBM i OS.",
- "homepage_url": "https://www.ibm.com/products/db2-for-i",
- "pypi_packages": [
- "sqlalchemy-ibmi"
- ],
- "connection_string": "ibmi://{username}:{password}@{host}/{database}",
- "parameters": {
- "username": "IBM i username",
- "password": "IBM i password",
- "host": "IBM i system host",
- "database": "Library/schema name"
- },
- "docs_url": "https://github.com/IBM/sqlalchemy-ibmi"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "IBM Netezza": {
- "engine": "ibm_netezza",
- "engine_name": "IBM Netezza",
- "documentation": {
- "description": "IBM Netezza Performance Server is a data warehouse appliance.",
- "logo": "netezza.png",
- "homepage_url": "https://www.ibm.com/products/netezza",
- "pypi_packages": [
- "nzalchemy"
- ],
- "connection_string": "netezza+nzpy://{username}:{password}@{hostname}:{port}/{database}"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Kusto": {
- "engine": "kusto",
- "engine_name": "Kusto",
- "documentation": {
- "description": "Azure Data Explorer (Kusto) is a fast, fully managed data analytics service.",
- "pypi_packages": [
- "sqlalchemy-kusto"
- ],
- "version_requirements": "sqlalchemy-kusto>=2.0.0",
- "connection_examples": [
- {
- "description": "SQL dialect",
- "connection_string": "kustosql+https://{cluster_url}/{database}?azure_ad_client_id={client_id}&azure_ad_client_secret={secret}&azure_ad_tenant_id={tenant_id}&msi=False"
- },
- {
- "description": "KQL dialect",
- "connection_string": "kustokql+https://{cluster_url}/{database}?azure_ad_client_id={client_id}&azure_ad_client_secret={secret}&azure_ad_tenant_id={tenant_id}&msi=False"
- }
- ],
- "notes": "Ensure user has privileges to access all required databases/tables/views."
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "MariaDB": {
- "engine": "mariadb",
- "engine_name": "MariaDB",
- "documentation": {
- "description": "MariaDB is a community-developed fork of MySQL.",
- "logo": "mariadb.png",
- "homepage_url": "https://mariadb.org/",
- "pypi_packages": [
- "mysqlclient"
- ],
- "connection_string": "mysql://{username}:{password}@{host}/{database}",
- "default_port": 3306,
- "notes": "Uses the MySQL driver. Fully compatible with MySQL connector."
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 59,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "MonetDB": {
- "engine": "monetdb",
- "engine_name": "MonetDB",
- "documentation": {
- "description": "MonetDB is an open-source column-oriented relational database for high-performance analytics.",
- "logo": "monet-db.png",
- "homepage_url": "https://www.monetdb.org/",
- "pypi_packages": [
- "sqlalchemy-monetdb",
- "pymonetdb"
- ],
- "connection_string": "monetdb://{username}:{password}@{host}:{port}/{database}",
- "default_port": 50000,
- "parameters": {
- "username": "Database username (default: monetdb)",
- "password": "Database password (default: monetdb)",
- "host": "MonetDB server host",
- "port": "Default 50000",
- "database": "Database name"
- },
- "docs_url": "https://www.monetdb.org/documentation/"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "MotherDuck": {
- "engine": "motherduck",
- "engine_name": "MotherDuck",
- "documentation": {
- "description": "MotherDuck is a serverless cloud analytics platform built on DuckDB.",
- "homepage_url": "https://motherduck.com/",
- "pypi_packages": [
- "duckdb",
- "duckdb-engine"
- ],
- "connection_string": "duckdb:///md:{database}?motherduck_token={token}",
- "parameters": {
- "database": "MotherDuck database name (optional)",
- "token": "MotherDuck authentication token"
- },
- "notes": "Set MOTHERDUCK_TOKEN env var or pass token in connection string.",
- "docs_url": "https://motherduck.com/docs/"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Microsoft SQL Server": {
- "engine": "microsoft_sql_server",
- "engine_name": "Microsoft SQL Server",
- "documentation": {
- "description": "Microsoft SQL Server is a relational database management system.",
- "logo": "msql.png",
- "homepage_url": "https://www.microsoft.com/en-us/sql-server",
- "pypi_packages": [
- "pymssql"
- ],
- "default_port": 1433,
- "drivers": [
- {
- "name": "pymssql",
- "pypi_package": "pymssql",
- "connection_string": "mssql+pymssql://{username}:{password}@{host}:{port}/{database}",
- "is_recommended": true
- },
- {
- "name": "pyodbc",
- "pypi_package": "pyodbc",
- "connection_string": "mssql+pyodbc:///?odbc_connect=Driver%3D%7BODBC+Driver+17+for+SQL+Server%7D%3BServer%3Dtcp%3A%3C{host}%3E%2C1433%3BDatabase%3D{database}%3BUid%3D{username}%3BPwd%3D{password}%3BEncrypt%3Dyes%3BConnection+Timeout%3D30",
- "is_recommended": false,
- "notes": "Connection string must be URL-encoded. Special characters like @ need encoding."
- }
- ],
- "docs_url": "https://docs.sqlalchemy.org/en/20/core/engines.html#escaping-special-characters-such-as-signs-in-passwords"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 44,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "OceanBase": {
- "engine": "oceanbase",
- "engine_name": "OceanBase",
- "documentation": {
- "description": "OceanBase is a distributed relational database.",
- "logo": "oceanbase.svg",
- "homepage_url": "https://www.oceanbase.com/",
- "pypi_packages": [
- "oceanbase_py"
- ],
- "connection_string": "oceanbase://{username}:{password}@{host}:{port}/{database}"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 59,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Ocient": {
- "engine": "ocient",
- "engine_name": "Ocient",
- "documentation": {
- "description": "Ocient is a hyperscale data analytics database.",
- "pypi_packages": [
- "sqlalchemy-ocient"
- ],
- "connection_string": "ocient://{username}:{password}@{host}:{port}/{database}",
- "install_instructions": "pip install sqlalchemy-ocient"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": false,
- "QUARTER_YEAR": true,
- "YEAR": true
- },
- "score": 38,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Oracle": {
- "engine": "oracle",
- "engine_name": "Oracle",
- "documentation": {
- "description": "Oracle Database is a multi-model database management system.",
- "logo": "oraclelogo.png",
- "homepage_url": "https://www.oracle.com/database/",
- "pypi_packages": [
- "oracledb"
- ],
- "connection_string": "oracle://{username}:{password}@{hostname}:{port}",
- "notes": "Previously used cx_Oracle, now uses oracledb.",
- "docs_url": "https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 28,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Parseable": {
- "engine": "parseable",
- "engine_name": "Parseable",
- "documentation": {
- "description": "Parseable is a distributed log analytics database with SQL-like query interface.",
- "pypi_packages": [
- "sqlalchemy-parseable"
- ],
- "connection_string": "parseable://{username}:{password}@{hostname}:{port}/{stream_name}",
- "connection_examples": [
- {
- "description": "Example connection",
- "connection_string": "parseable://admin:admin@demo.parseable.com:443/ingress-nginx"
- }
- ],
- "notes": "Stream name in URI represents the Parseable logstream to query. Supports HTTP (80) and HTTPS (443).",
- "docs_url": "https://www.parseable.io"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 28,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Presto": {
- "engine": "presto",
- "engine_name": "Presto",
- "documentation": {
- "description": "Presto is a distributed SQL query engine for big data.",
- "logo": "presto-og.png",
- "homepage_url": "https://prestodb.io/",
- "pypi_packages": [
- "pyhive"
- ],
- "connection_string": "presto://{username}:{password}@{hostname}:{port}/{database}",
- "connection_examples": [
- {
- "description": "Basic connection",
- "connection_string": "presto://{hostname}:{port}/{database}"
- },
- {
- "description": "With authentication",
- "connection_string": "presto://{username}:{password}@{hostname}:{port}/{database}"
- },
- {
- "description": "Example with values",
- "connection_string": "presto://datascientist:securepassword@presto.example.com:8080/hive"
- }
- ],
- "engine_parameters": [
- {
- "name": "Older Presto Version",
- "description": "Configure for older Presto versions",
- "json": {
- "version": "0.123"
- }
- },
- {
- "name": "SSL Configuration",
- "description": "Enable HTTPS with SSL",
- "json": {
- "connect_args": {
- "protocol": "https",
- "requests_kwargs": {
- "verify": false
- }
- }
- }
- }
- ]
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": true,
- "HOUR": true,
- "SIX_HOURS": true,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": true,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 159,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": true,
- "query_cost_estimation": true,
- "sql_validation": true
- },
- "RisingWave": {
- "engine": "risingwave",
- "engine_name": "RisingWave",
- "documentation": {
- "description": "RisingWave is a distributed streaming database.",
- "pypi_packages": [
- "sqlalchemy-risingwave"
- ],
- "connection_string": "risingwave://root@{hostname}:{port}/{database}?sslmode=disable",
- "docs_url": "https://github.com/risingwavelabs/sqlalchemy-risingwave"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 94,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": true,
- "sql_validation": false
- },
- "SingleStore": {
- "engine": "singlestore",
- "engine_name": "SingleStore",
- "documentation": {
- "description": "SingleStore is a distributed SQL database for real-time analytics.",
- "pypi_packages": [
- "sqlalchemy-singlestoredb"
- ],
- "connection_string": "singlestoredb://{username}:{password}@{host}:{port}/{database}",
- "docs_url": "https://github.com/singlestore-labs/sqlalchemy-singlestoredb"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 68,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Snowflake": {
- "engine": "snowflake",
- "engine_name": "Snowflake",
- "documentation": {
- "description": "Snowflake is a cloud-native data warehouse.",
- "logo": "snowflake.svg",
- "homepage_url": "https://www.snowflake.com/",
- "pypi_packages": [
- "snowflake-sqlalchemy"
- ],
- "connection_string": "snowflake://{user}:{password}@{account}.{region}/{database}?role={role}&warehouse={warehouse}",
- "install_instructions": "echo \"snowflake-sqlalchemy\" >> ./docker/requirements-local.txt",
- "connection_examples": [
- {
- "description": "With role and warehouse",
- "connection_string": "snowflake://{user}:{password}@{account}.{region}/{database}?role={role}&warehouse={warehouse}"
- },
- {
- "description": "With defaults (role/warehouse optional)",
- "connection_string": "snowflake://{user}:{password}@{account}.{region}/{database}"
- }
- ],
- "authentication_methods": [
- {
- "name": "Key Pair Authentication",
- "description": "Use RSA key pair instead of password",
- "requirements": "Key pair must be generated and public key registered in Snowflake",
- "secure_extra_body": {
- "auth_method": "keypair",
- "auth_params": {
- "privatekey_body": "-----BEGIN ENCRYPTED PRIVATE KEY-----\\n...\\n-----END ENCRYPTED PRIVATE KEY-----",
- "privatekey_pass": "Your Private Key Password"
- }
- },
- "notes": "Merge multi-line private key to one line with \\n between lines."
- },
- {
- "name": "Key Pair (File Path)",
- "description": "Key pair with private key stored on server",
- "secure_extra_path": {
- "auth_method": "keypair",
- "auth_params": {
- "privatekey_path": "Your Private Key Path",
- "privatekey_pass": "Your Private Key Password"
- }
- }
- }
- ],
- "notes": "Schema is not required in connection string (defined per table/query). Ensure user has privileges for all databases/schemas/tables/views/warehouses.",
- "docs_url": "https://docs.snowflake.com/en/user-guide/key-pair-auth.html"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 72,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "SAP Sybase": {
- "engine": "sap_sybase",
- "engine_name": "SAP Sybase",
- "documentation": {
- "description": "SAP ASE (formerly Sybase) is an enterprise relational database.",
- "logo": "sybase.png",
- "homepage_url": "https://www.sap.com/products/technology-platform/sybase-ase.html",
- "pypi_packages": [
- "sqlalchemy-sybase",
- "pyodbc"
- ],
- "connection_string": "sybase+pyodbc://{username}:{password}@{dsn}",
- "parameters": {
- "username": "Database username",
- "password": "Database password",
- "dsn": "ODBC Data Source Name configured for SAP ASE"
- },
- "notes": "Requires SAP ASE ODBC driver installed and configured as a DSN.",
- "docs_url": "https://help.sap.com/docs/SAP_ASE"
- },
- "time_grains": {},
- "score": 0,
- "max_score": 0,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "StarRocks": {
- "engine": "starrocks",
- "engine_name": "StarRocks",
- "documentation": {
- "description": "StarRocks is a next-generation sub-second MPP database.",
- "logo": "starrocks.png",
- "homepage_url": "https://www.starrocks.io/",
- "pypi_packages": [
- "starrocks"
- ],
- "connection_string": "starrocks://{username}:{password}@{host}:{port}/{catalog}.{database}",
- "parameters": {
- "username": "User name",
- "password": "Database password",
- "host": "StarRocks FE Host",
- "port": "StarRocks FE port",
- "catalog": "Catalog name",
- "database": "Database name"
- },
- "docs_url": "https://docs.starrocks.io/docs/integrations/BI_integrations/Superset/"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 69,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": true,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "TDengine": {
- "engine": "tdengine",
- "engine_name": "TDengine",
- "documentation": {
- "description": "TDengine is a high-performance time-series database for IoT.",
- "logo": "tdengine.png",
- "homepage_url": "https://tdengine.com/",
- "pypi_packages": [
- "taospy",
- "taos-ws-py"
- ],
- "connection_string": "taosws://{user}:{password}@{host}:{port}",
- "default_port": 6041,
- "connection_examples": [
- {
- "description": "Local connection",
- "connection_string": "taosws://root:taosdata@127.0.0.1:6041"
- }
- ],
- "docs_url": "https://www.tdengine.com"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": false,
- "QUARTER": false,
- "QUARTER_YEAR": false,
- "YEAR": false
- },
- "score": 25,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Teradata": {
- "engine": "teradata",
- "engine_name": "Teradata",
- "documentation": {
- "description": "Teradata is an enterprise data warehouse platform.",
- "logo": "teradata.png",
- "homepage_url": "https://www.teradata.com/",
- "pypi_packages": [
- "teradatasqlalchemy"
- ],
- "connection_string": "teradatasql://{user}:{password}@{host}",
- "drivers": [
- {
- "name": "teradatasqlalchemy (Recommended)",
- "pypi_package": "teradatasqlalchemy",
- "connection_string": "teradatasql://{user}:{password}@{host}",
- "is_recommended": true,
- "notes": "No ODBC drivers required."
- },
- {
- "name": "sqlalchemy-teradata (ODBC)",
- "pypi_package": "sqlalchemy-teradata",
- "is_recommended": false,
- "notes": "Requires ODBC driver installation.",
- "environment_variables": {
- "ODBCINI": "/.../teradata/client/ODBC_64/odbc.ini",
- "ODBCINST": "/.../teradata/client/ODBC_64/odbcinst.ini"
- },
- "docs_url": "https://downloads.teradata.com/download/connectivity/odbc-driver/linux"
- }
- ]
- },
- "time_grains": {
- "SECOND": false,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 27,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "Trino": {
- "engine": "trino",
- "engine_name": "Trino",
- "documentation": {
- "description": "Trino is a distributed SQL query engine for big data analytics.",
- "logo": "trino.png",
- "homepage_url": "https://trino.io/",
- "pypi_packages": [
- "trino"
- ],
- "connection_string": "trino://{username}:{password}@{hostname}:{port}/{catalog}",
- "version_requirements": "Trino version 352 and higher",
- "connection_examples": [
- {
- "description": "Docker local",
- "connection_string": "trino://trino@host.docker.internal:8080"
- }
- ],
- "authentication_methods": [
- {
- "name": "Basic Authentication",
- "description": "Username/password in connection string or Secure Extra",
- "connection_string": "trino://{username}:{password}@{hostname}:{port}/{catalog}",
- "secure_extra": {
- "auth_method": "basic",
- "auth_params": {
- "username": "<username>",
- "password": "<password>"
- }
- },
- "notes": "Secure Extra takes priority if both are provided."
- },
- {
- "name": "Kerberos Authentication",
- "description": "Kerberos-based authentication",
- "requirements": "Install trino[all] or trino[kerberos]",
- "secure_extra": {
- "auth_method": "kerberos",
- "auth_params": {
- "service_name": "superset",
- "config": "/path/to/krb5.config"
- }
- }
- },
- {
- "name": "Certificate Authentication",
- "description": "Client certificate authentication",
- "secure_extra": {
- "auth_method": "certificate",
- "auth_params": {
- "cert": "/path/to/cert.pem",
- "key": "/path/to/key.pem"
- }
- }
- },
- {
- "name": "JWT Authentication",
- "description": "JSON Web Token authentication",
- "secure_extra": {
- "auth_method": "jwt",
- "auth_params": {
- "token": "<your-jwt-token>"
- }
- }
- },
- {
- "name": "Custom Authentication",
- "description": "Custom auth class or factory function",
- "requirements": "Add to ALLOWED_EXTRA_AUTHENTICATIONS in config",
- "config_example": {
- "ALLOWED_EXTRA_AUTHENTICATIONS": {
- "trino": {
- "custom_auth": "AuthClass",
- "another_auth_method": "auth_method"
- }
- }
- },
- "secure_extra": {
- "auth_method": "custom_auth",
- "auth_params": {}
- }
- }
- ],
- "tutorials": [
- "https://trino.io/episodes/12.html"
- ]
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": true,
- "HOUR": true,
- "SIX_HOURS": true,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": true,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 149,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "supports_file_upload": true,
- "user_impersonation": true,
- "query_cost_estimation": true,
- "sql_validation": false
- },
- "Vertica": {
- "engine": "vertica",
- "engine_name": "Vertica",
- "documentation": {
- "description": "Vertica is a column-oriented analytics database.",
- "logo": "vertica.png",
- "homepage_url": "https://www.vertica.com/",
- "pypi_packages": [
- "sqlalchemy-vertica-python"
- ],
- "connection_string": "vertica+vertica_python://{username}:{password}@{host}/{database}",
- "default_port": 5433,
- "parameters": {
- "username": "Database username",
- "password": "Database password",
- "host": "localhost, IP address, or hostname (cloud or on-prem)",
- "database": "Database name",
- "port": "Default 5433"
- },
- "notes": "Supports load balancer backup host configuration.",
- "docs_url": "http://www.vertica.com/"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 34,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": true,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- },
- "YDB": {
- "engine": "ydb",
- "engine_name": "YDB",
- "documentation": {
- "description": "YDB is a distributed SQL database by Yandex.",
- "logo": "ydb.svg",
- "homepage_url": "https://ydb.tech/",
- "pypi_packages": [
- "ydb-sqlalchemy"
- ],
- "connection_string": "ydb://{host}:{port}/{database_name}",
- "engine_parameters": [
- {
- "name": "Protocol",
- "description": "Specify connection protocol (default: grpc)",
- "secure_extra": {
- "protocol": "grpcs"
- }
- }
- ],
- "authentication_methods": [
- {
- "name": "Static Credentials",
- "description": "Username/password authentication",
- "secure_extra": {
- "credentials": {
- "username": "...",
- "password": "..."
- }
- }
- },
- {
- "name": "Access Token",
- "description": "Token-based authentication",
- "secure_extra": {
- "credentials": {
- "token": "..."
- }
- }
- },
- {
- "name": "Service Account",
- "description": "Service account JSON credentials",
- "secure_extra": {
- "credentials": {
- "service_account_json": {
- "id": "...",
- "service_account_id": "...",
- "created_at": "...",
- "key_algorithm": "...",
- "public_key": "...",
- "private_key": "..."
- }
- }
- }
- }
- ],
- "docs_url": "https://ydb.tech/"
- },
- "time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": true,
- "MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
- "HOUR": true,
- "SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "score": 23,
- "max_score": 201,
- "joins": true,
- "subqueries": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false,
- "supports_dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "supports_file_upload": false,
- "user_impersonation": false,
- "query_cost_estimation": false,
- "sql_validation": false
- }
- }
-}
diff --git a/superset/db_engine_specs/lint_metadata.py b/superset/db_engine_specs/lint_metadata.py
new file mode 100644
index 0000000000..2bd76b7bc4
--- /dev/null
+++ b/superset/db_engine_specs/lint_metadata.py
@@ -0,0 +1,445 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+"""
+Metadata completeness linter for DB engine specs.
+
+This script validates that all DB engine specs have complete metadata
+as defined by the DBEngineSpecMetadata TypedDict in base.py.
+
+Usage:
+ python superset/db_engine_specs/lint_metadata.py [--json] [--strict]
+
+Options:
+ --json Output results as JSON
+ --strict Return non-zero exit code if any required fields are missing
+ --help Show this help message
+
+The script categorizes metadata fields into:
+- REQUIRED: Must be present for proper documentation
+- RECOMMENDED: Should be present for good documentation
+- OPTIONAL: Nice to have but not critical
+
+Example output:
+ === Metadata Completeness Report ===
+
+ PostgreSQL (postgres.py)
+ ✓ description, category, pypi_packages, connection_string
+ ⚠ Missing recommended: logo, homepage_url
+
+ MySQL (mysql.py)
+ ✓ All required and recommended fields present
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import sys
+from dataclasses import dataclass
+from typing import Any
+
+# Schema definition - fields grouped by importance
+REQUIRED_FIELDS = {
+ "description": "Brief description of the database",
+ "category": "DatabaseCategory constant for grouping",
+ "pypi_packages": "Python packages needed for connection",
+ "connection_string": "SQLAlchemy URI template",
+}
+
+RECOMMENDED_FIELDS = {
+ "logo": "Logo filename (in docs/static/img/databases/)",
+ "homepage_url": "Official database homepage",
+ "default_port": "Default port number",
+}
+
+OPTIONAL_FIELDS = {
+ "docs_url": "Documentation URL",
+ "sqlalchemy_docs_url": "SQLAlchemy dialect documentation",
+ "notes": "Additional configuration notes",
+ "warnings": "Important warnings for users",
+ "install_instructions": "How to install the driver",
+ "version_requirements": "Version compatibility info",
+ "connection_examples": "Example connection strings",
+ "authentication_methods": "Supported auth methods",
+ "drivers": "Available driver options",
+ "compatible_databases": "Related/compatible databases",
+ "engine_parameters": "Advanced JSON config options",
+ "host_examples": "Platform-specific host examples",
+ "ssl_configuration": "SSL setup documentation",
+ "advanced_features": "Advanced feature documentation",
+ "parameters": "Connection parameter descriptions",
+ "tutorials": "Tutorial links",
+}
+
+
+@dataclass
+class MetadataReport:
+ """Report for a single engine spec's metadata."""
+
+ engine_name: str
+ module: str
+ has_metadata: bool
+ present_fields: set[str]
+ missing_required: set[str]
+ missing_recommended: set[str]
+ missing_optional: set[str]
+ completeness_score: float # 0-100
+
+ def to_dict(self) -> dict[str, Any]:
+ return {
+ "engine_name": self.engine_name,
+ "module": self.module,
+ "has_metadata": self.has_metadata,
+ "present_fields": sorted(self.present_fields),
+ "missing_required": sorted(self.missing_required),
+ "missing_recommended": sorted(self.missing_recommended),
+ "missing_optional": sorted(self.missing_optional),
+ "completeness_score": self.completeness_score,
+ }
+
+
+def analyze_spec(spec_data: dict[str, Any]) -> MetadataReport:
+ """Analyze a single engine spec for metadata completeness."""
+ metadata = spec_data.get("metadata", {})
+ engine_name = spec_data.get("engine_name", spec_data.get("class_name", "Unknown"))
+ module = spec_data.get("module", "unknown")
+
+ # Handle unparseable metadata
+ if metadata.get("_unparseable"):
+ metadata = {}
+
+ present = set(metadata.keys()) if metadata else set()
+ missing_required = set(REQUIRED_FIELDS.keys()) - present
+ missing_recommended = set(RECOMMENDED_FIELDS.keys()) - present
+ missing_optional = set(OPTIONAL_FIELDS.keys()) - present
+
+ # Calculate completeness score
+ # Required fields: 60%, Recommended: 30%, Optional: 10%
+ total_required = len(REQUIRED_FIELDS)
+ total_recommended = len(RECOMMENDED_FIELDS)
+ total_optional = len(OPTIONAL_FIELDS)
+
+ required_present = total_required - len(missing_required)
+ recommended_present = total_recommended - len(missing_recommended)
+ optional_present = total_optional - len(missing_optional)
+
+ score = (
+ (required_present / total_required) * 60
+ + (recommended_present / total_recommended) * 30
+ + (optional_present / total_optional) * 10
+ )
+
+ return MetadataReport(
+ engine_name=engine_name,
+ module=module,
+ has_metadata=bool(metadata),
+ present_fields=present,
+ missing_required=missing_required,
+ missing_recommended=missing_recommended,
+ missing_optional=missing_optional,
+ completeness_score=round(score, 1),
+ )
+
+
+def get_all_engine_specs_ast() -> list[dict[str, Any]]:
+ """
+ Discover all DB engine specs using AST parsing.
+
+ This avoids needing to initialize the Flask app.
+ Returns a list of dicts with engine_name, module, and metadata.
+ """
+ import ast
+ import os
+ import re
+
+ specs = []
+ db_engine_specs_dir = os.path.dirname(__file__)
+
+ for filename in os.listdir(db_engine_specs_dir):
+ if not filename.endswith(".py"):
+ continue
+ if filename in ("__init__.py", "base.py", "lint_metadata.py", "lib.py"):
+ continue
+
+ filepath = os.path.join(db_engine_specs_dir, filename)
+ try:
+ with open(filepath) as f:
+ content = f.read()
+
+ tree = ast.parse(content)
+
+ # Find all class definitions that inherit from *EngineSpec
+ for node in ast.walk(tree):
+ if not isinstance(node, ast.ClassDef):
+ continue
+
+ # Check if it looks like an engine spec class
+ is_engine_spec = any(
+ "EngineSpec" in ast.unparse(base) if hasattr(ast, "unparse") else True
+ for base in node.bases
+ )
+
+ if not is_engine_spec:
+ continue
+
+ # Extract engine_name and metadata
+ engine_name = node.name
+ metadata = {}
+
+ for item in node.body:
+ if isinstance(item, ast.Assign):
+ for target in item.targets:
+ if isinstance(target, ast.Name):
+ if target.id == "engine_name":
+ if isinstance(item.value, ast.Constant):
+ engine_name = item.value.value
+ elif target.id == "metadata":
+ try:
+ metadata = _eval_ast_dict(item.value)
+ except Exception:
+ # If we can't parse metadata, just note it exists
+ metadata = {"_unparseable": True}
+
+ specs.append({
+ "class_name": node.name,
+ "engine_name": engine_name,
+ "module": filename[:-3], # Remove .py
+ "metadata": metadata,
+ })
+
+ except Exception as e:
+ print(f"Warning: Could not parse {filename}: {e}", file=sys.stderr)
+
+ return sorted(specs, key=lambda s: s["engine_name"])
+
+
+def _eval_ast_dict(node: Any) -> dict[str, Any]:
+ """Safely evaluate an AST node as a dict literal."""
+ import ast
+
+ if isinstance(node, ast.Dict):
+ result = {}
+ for k, v in zip(node.keys, node.values):
+ if k is None:
+ continue
+ key = _eval_ast_value(k)
+ value = _eval_ast_value(v)
+ if key is not None:
+ result[key] = value
+ return result
+ return {}
+
+
+def _eval_ast_value(node: Any) -> Any:
+ """Safely evaluate an AST node as a value."""
+ import ast
+
+ if isinstance(node, ast.Constant):
+ return node.value
+ elif isinstance(node, ast.Str): # Python 3.7 compat
+ return node.s
+ elif isinstance(node, ast.Num): # Python 3.7 compat
+ return node.n
+ elif isinstance(node, ast.List):
+ return [_eval_ast_value(e) for e in node.elts]
+ elif isinstance(node, ast.Dict):
+ return _eval_ast_dict(node)
+ elif isinstance(node, ast.Name):
+ # Handle DatabaseCategory.* constants
+ return node.id
+ elif isinstance(node, ast.Attribute):
+ # Handle DatabaseCategory.TRADITIONAL_RDBMS etc
+ if hasattr(ast, "unparse"):
+ return ast.unparse(node)
+ return f"{_eval_ast_value(node.value)}.{node.attr}"
+ elif isinstance(node, ast.BinOp) and isinstance(node.op, ast.Add):
+ # String concatenation
+ left = _eval_ast_value(node.left)
+ right = _eval_ast_value(node.right)
+ if isinstance(left, str) and isinstance(right, str):
+ return left + right
+ return None
+ elif isinstance(node, ast.JoinedStr):
+ # f-strings - just return placeholder
+ return "<f-string>"
+ elif isinstance(node, ast.Tuple):
+ return tuple(_eval_ast_value(e) for e in node.elts)
+ return None
+
+
+def get_all_engine_specs() -> list[type]:
+ """Discover all DB engine specs using Flask app (if available)."""
+ # Import here to avoid issues when running standalone
+ from superset.db_engine_specs import load_engine_specs
+
+ specs = []
+ for spec in load_engine_specs():
+ # Skip base classes and internal specs
+ if spec.__name__ in ("BaseEngineSpec", "BasicParametersMixin"):
+ continue
+ specs.append(spec)
+
+ return sorted(specs, key=lambda s: getattr(s, "engine_name", s.__name__))
+
+
+def print_report(reports: list[MetadataReport], verbose: bool = False) -> None:
+ """Print a human-readable report."""
+ print("\n" + "=" * 60)
+ print("METADATA COMPLETENESS REPORT")
+ print("=" * 60 + "\n")
+
+ # Summary statistics
+ total = len(reports)
+ with_metadata = sum(1 for r in reports if r.has_metadata)
+ fully_complete = sum(1 for r in reports if not r.missing_required)
+ avg_score = sum(r.completeness_score for r in reports) / total if total else 0
+
+ print(f"Total engine specs: {total}")
+ print(f"With metadata: {with_metadata} ({with_metadata * 100 // total}%)")
+ print(f"All required fields: {fully_complete} ({fully_complete * 100 // total}%)")
+ print(f"Average completeness: {avg_score:.1f}%")
+ print()
+
+ # Group by completeness
+ complete = [r for r in reports if not r.missing_required and not r.missing_recommended]
+ needs_work = [r for r in reports if r.missing_required or r.missing_recommended]
+ no_metadata = [r for r in reports if not r.has_metadata]
+
+ if complete:
+ print(f"\n✅ COMPLETE ({len(complete)} specs - all required & recommended):")
+ print("-" * 50)
+ for r in complete:
+ print(f" {r.engine_name:30} {r.completeness_score:5.1f}%")
+
+ if needs_work:
+ print(f"\n⚠️ NEEDS WORK ({len(needs_work)} specs):")
+ print("-" * 50)
+ for r in sorted(needs_work, key=lambda x: -x.completeness_score):
+ status = []
+ if r.missing_required:
+ status.append(f"missing required: {', '.join(sorted(r.missing_required))}")
+ if r.missing_recommended:
+ status.append(
+ f"missing recommended: {', '.join(sorted(r.missing_recommended))}"
+ )
+ print(f" {r.engine_name:30} {r.completeness_score:5.1f}%")
+ for s in status:
+ print(f" └─ {s}")
+
+ if no_metadata:
+ print(f"\n❌ NO METADATA ({len(no_metadata)} specs):")
+ print("-" * 50)
+ for r in no_metadata:
+ print(f" {r.engine_name} ({r.module}.py)")
+
+ # Field coverage summary
+ print("\n" + "=" * 60)
+ print("FIELD COVERAGE SUMMARY")
+ print("=" * 60)
+
+ all_fields = {**REQUIRED_FIELDS, **RECOMMENDED_FIELDS, **OPTIONAL_FIELDS}
+ field_counts: dict[str, int] = {f: 0 for f in all_fields}
+
+ for r in reports:
+ for field in r.present_fields:
+ if field in field_counts:
+ field_counts[field] += 1
+
+ print("\nRequired fields:")
+ for field, desc in REQUIRED_FIELDS.items():
+ count = field_counts[field]
+ pct = count * 100 // total
+ bar = "█" * (pct // 5) + "░" * (20 - pct // 5)
+ print(f" {field:25} {bar} {count:3}/{total} ({pct}%)")
+
+ print("\nRecommended fields:")
+ for field, desc in RECOMMENDED_FIELDS.items():
+ count = field_counts[field]
+ pct = count * 100 // total
+ bar = "█" * (pct // 5) + "░" * (20 - pct // 5)
+ print(f" {field:25} {bar} {count:3}/{total} ({pct}%)")
+
+ if verbose:
+ print("\nOptional fields:")
+ for field, desc in OPTIONAL_FIELDS.items():
+ count = field_counts[field]
+ pct = count * 100 // total
+ bar = "█" * (pct // 5) + "░" * (20 - pct // 5)
+ print(f" {field:25} {bar} {count:3}/{total} ({pct}%)")
+
+
+def main() -> int:
+ parser = argparse.ArgumentParser(
+ description="Lint DB engine spec metadata for completeness"
+ )
+ parser.add_argument("--json", action="store_true", help="Output as JSON")
+ parser.add_argument(
+ "--strict",
+ action="store_true",
+ help="Exit with error if required fields missing",
+ )
+ parser.add_argument(
+ "--verbose", "-v", action="store_true", help="Show optional field coverage"
+ )
+ args = parser.parse_args()
+
+ # Use AST parsing to avoid Flask app dependency
+ specs = get_all_engine_specs_ast()
+
+ if not specs:
+ print("Error: No engine specs found.", file=sys.stderr)
+ return 1
+
+ reports = [analyze_spec(spec) for spec in specs]
+
+ if args.json:
+ output = {
+ "summary": {
+ "total": len(reports),
+ "with_metadata": sum(1 for r in reports if r.has_metadata),
+ "all_required": sum(1 for r in reports if not r.missing_required),
+ "average_score": round(
+ sum(r.completeness_score for r in reports) / len(reports), 1
+ ),
+ },
+ "schema": {
+ "required": REQUIRED_FIELDS,
+ "recommended": RECOMMENDED_FIELDS,
+ "optional": OPTIONAL_FIELDS,
+ },
+ "reports": [r.to_dict() for r in reports],
+ }
+ print(json.dumps(output, indent=2))
+ else:
+ print_report(reports, verbose=args.verbose)
+
+ # In strict mode, fail if any required fields are missing
+ if args.strict:
+ missing_count = sum(1 for r in reports if r.missing_required)
+ if missing_count > 0:
+ print(
+ f"\n❌ STRICT MODE: {missing_count} specs missing required fields",
+ file=sys.stderr,
+ )
+ return 1
+
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())