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 2025/12/23 07:06:46 UTC
(superset) 05/07: feat(docs): promote Databases to top-level nav and improve documentation
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
commit e1fa7a8464c9caf670f06abcb716d3401fe45157
Author: Evan Rusackas <ev...@rusackas.com>
AuthorDate: Mon Dec 22 09:55:49 2025 -0800
feat(docs): promote Databases to top-level nav and improve documentation
- Move Databases section from Configuration to top-level navigation
- Add Databases to Documentation dropdown menu in navbar
- Set "Next" version as default documentation version
- Improve database page layout with larger logos (height: 120)
- Hide duplicate H1 headings via hide_title frontmatter
- Fix diagnostics preservation in fallback mode when Flask context unavailable
- Add logos and homepage URLs to DATABASE_DOCS in lib.py
- Show compatible databases (e.g., YugabyteDB) in overview table
- Dynamically generate front page database grid from databases.json
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <no...@anthropic.com>
---
.../databases/aurora-mysql-data-api.mdx | 29 -
.../databases/aurora-postgresql-data-api.mdx | 29 -
.../docs/configuration/databases/azure-synapse.mdx | 29 -
.../databases/clickhouse-connect-superset.mdx | 29 -
.../databases/databricks-interactive-cluster.mdx | 29 -
.../configuration/databases/databricks-legacy.mdx | 29 -
.../databases/databricks-sql-endpoint.mdx | 29 -
.../databases/elasticsearch-opendistro-sql.mdx | 29 -
.../databases/elasticsearch-sql-api.mdx | 29 -
.../docs/configuration/databases/ibm-db2-for-i.mdx | 29 -
.../databases/ibm-netezza-performance-server.mdx | 29 -
docs/docs/configuration/databases/kustokql.mdx | 29 -
docs/docs/configuration/databases/kustosql.mdx | 29 -
docs/docs/configuration/databases/motherduck.mdx | 29 -
docs/docs/configuration/databases/shillelagh.mdx | 29 -
.../databases/superset-meta-database.mdx | 29 -
.../{configuration => }/databases/_category_.json | 2 +-
.../{configuration => }/databases/apache-doris.mdx | 1 +
.../{configuration => }/databases/apache-drill.mdx | 1 +
.../{configuration => }/databases/apache-druid.mdx | 1 +
.../{configuration => }/databases/apache-hive.mdx | 1 +
.../databases/apache-impala.mdx | 1 +
.../{configuration => }/databases/apache-kylin.mdx | 1 +
.../{configuration => }/databases/apache-pinot.mdx | 1 +
.../{configuration => }/databases/apache-solr.mdx | 1 +
.../databases/apache-spark-sql.mdx | 1 +
.../databases/base.mdx => databases/arc.mdx} | 9 +-
.../ascend.mdx => databases/ascend-io.mdx} | 9 +-
.../apache-doris.mdx => databases/aws-athena.mdx} | 9 +-
.../aws-dynamodb.mdx} | 9 +-
.../aws-redshift.mdx} | 9 +-
.../{configuration => }/databases/clickhouse.mdx | 1 +
.../cloudflare-d1.mdx} | 9 +-
.../{configuration => }/databases/cockroachdb.mdx | 1 +
.../{configuration => }/databases/couchbase.mdx | 1 +
.../docs/{configuration => }/databases/cratedb.mdx | 1 +
.../{configuration => }/databases/databend.mdx | 1 +
.../{configuration => }/databases/databricks.mdx | 1 +
docs/docs/{configuration => }/databases/denodo.mdx | 1 +
docs/docs/{configuration => }/databases/dremio.mdx | 1 +
docs/docs/{configuration => }/databases/duckdb.mdx | 1 +
.../elasticsearch.mdx} | 9 +-
docs/docs/{configuration => }/databases/exasol.mdx | 1 +
.../{configuration => }/databases/firebird.mdx | 1 +
.../{configuration => }/databases/firebolt.mdx | 1 +
.../google-bigquery.mdx} | 9 +-
.../databases/google-sheets.mdx | 1 +
.../docs/{configuration => }/databases/ibm-db2.mdx | 1 +
.../ibm-netezza.mdx} | 9 +-
docs/docs/{configuration => }/databases/index.mdx | 2 +-
.../amazon-athena.mdx => databases/kusto.mdx} | 9 +-
.../docs/{configuration => }/databases/mariadb.mdx | 1 +
.../databases/microsoft-sql-server.mdx | 1 +
docs/docs/{configuration => }/databases/mysql.mdx | 1 +
.../{configuration => }/databases/oceanbase.mdx | 1 +
docs/docs/{configuration => }/databases/ocient.mdx | 1 +
docs/docs/{configuration => }/databases/oracle.mdx | 1 +
.../{configuration => }/databases/parseable.mdx | 1 +
.../{configuration => }/databases/postgresql.mdx | 1 +
docs/docs/{configuration => }/databases/presto.mdx | 1 +
.../{configuration => }/databases/risingwave.mdx | 1 +
.../{configuration => }/databases/sap-hana.mdx | 1 +
.../{configuration => }/databases/singlestore.mdx | 1 +
.../{configuration => }/databases/snowflake.mdx | 1 +
docs/docs/{configuration => }/databases/sqlite.mdx | 1 +
.../{configuration => }/databases/starrocks.mdx | 1 +
.../{configuration => }/databases/tdengine.mdx | 1 +
.../{configuration => }/databases/teradata.mdx | 1 +
docs/docs/{configuration => }/databases/trino.mdx | 1 +
.../docs/{configuration => }/databases/vertica.mdx | 1 +
docs/docs/{configuration => }/databases/ydb.mdx | 1 +
docs/docusaurus.config.ts | 9 +-
docs/scripts/generate-database-docs.mjs | 246 +-
docs/sidebars.js | 14 +
docs/src/components/databases/DatabaseIndex.tsx | 4 +-
docs/src/components/databases/DatabasePage.tsx | 50 +-
docs/src/components/databases/types.ts | 4 +
docs/src/data/databases.json | 5624 ++++++--------------
docs/src/pages/index.tsx | 27 +-
docs/tsconfig.json | 2 +
docs/versions-config.json | 4 +-
superset/db_engine_specs/lib.py | 87 +
82 files changed, 2177 insertions(+), 4495 deletions(-)
diff --git a/docs/docs/configuration/databases/aurora-mysql-data-api.mdx b/docs/docs/configuration/databases/aurora-mysql-data-api.mdx
deleted file mode 100644
index 58939855cc..0000000000
--- a/docs/docs/configuration/databases/aurora-mysql-data-api.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Aurora MySQL (Data API)
-sidebar_label: Aurora MySQL (Data API)
-description: "Documentation for Aurora MySQL (Data API) database connection."
----
-
-{/*
-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="Aurora MySQL (Data API)" database={databaseData.databases["Aurora MySQL (Data API)"]} />
diff --git a/docs/docs/configuration/databases/aurora-postgresql-data-api.mdx b/docs/docs/configuration/databases/aurora-postgresql-data-api.mdx
deleted file mode 100644
index b7627b001a..0000000000
--- a/docs/docs/configuration/databases/aurora-postgresql-data-api.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Aurora PostgreSQL (Data API)
-sidebar_label: Aurora PostgreSQL (Data API)
-description: "Documentation for Aurora PostgreSQL (Data API) database connection."
----
-
-{/*
-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="Aurora PostgreSQL (Data API)" database={databaseData.databases["Aurora PostgreSQL (Data API)"]} />
diff --git a/docs/docs/configuration/databases/azure-synapse.mdx b/docs/docs/configuration/databases/azure-synapse.mdx
deleted file mode 100644
index 0d79774afb..0000000000
--- a/docs/docs/configuration/databases/azure-synapse.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Azure Synapse
-sidebar_label: Azure Synapse
-description: "Documentation for Azure Synapse database connection."
----
-
-{/*
-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="Azure Synapse" database={databaseData.databases["Azure Synapse"]} />
diff --git a/docs/docs/configuration/databases/clickhouse-connect-superset.mdx b/docs/docs/configuration/databases/clickhouse-connect-superset.mdx
deleted file mode 100644
index 9f4970e2e1..0000000000
--- a/docs/docs/configuration/databases/clickhouse-connect-superset.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: ClickHouse Connect (Superset)
-sidebar_label: ClickHouse Connect (Superset)
-description: "Documentation for ClickHouse Connect (Superset) database connection."
----
-
-{/*
-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 Connect (Superset)" database={databaseData.databases["ClickHouse Connect (Superset)"]} />
diff --git a/docs/docs/configuration/databases/databricks-interactive-cluster.mdx b/docs/docs/configuration/databases/databricks-interactive-cluster.mdx
deleted file mode 100644
index 78e1db99c9..0000000000
--- a/docs/docs/configuration/databases/databricks-interactive-cluster.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Databricks Interactive Cluster
-sidebar_label: Databricks Interactive Cluster
-description: "Documentation for Databricks Interactive Cluster database connection."
----
-
-{/*
-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 Interactive Cluster" database={databaseData.databases["Databricks Interactive Cluster"]} />
diff --git a/docs/docs/configuration/databases/databricks-legacy.mdx b/docs/docs/configuration/databases/databricks-legacy.mdx
deleted file mode 100644
index 1f58f32cfc..0000000000
--- a/docs/docs/configuration/databases/databricks-legacy.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Databricks (legacy)
-sidebar_label: Databricks (legacy)
-description: "Documentation for Databricks (legacy) database connection."
----
-
-{/*
-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 (legacy)" database={databaseData.databases["Databricks (legacy)"]} />
diff --git a/docs/docs/configuration/databases/databricks-sql-endpoint.mdx b/docs/docs/configuration/databases/databricks-sql-endpoint.mdx
deleted file mode 100644
index 4bc7040d77..0000000000
--- a/docs/docs/configuration/databases/databricks-sql-endpoint.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Databricks SQL Endpoint
-sidebar_label: Databricks SQL Endpoint
-description: "Documentation for Databricks SQL Endpoint database connection."
----
-
-{/*
-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 SQL Endpoint" database={databaseData.databases["Databricks SQL Endpoint"]} />
diff --git a/docs/docs/configuration/databases/elasticsearch-opendistro-sql.mdx b/docs/docs/configuration/databases/elasticsearch-opendistro-sql.mdx
deleted file mode 100644
index 52071cadc7..0000000000
--- a/docs/docs/configuration/databases/elasticsearch-opendistro-sql.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: ElasticSearch (OpenDistro SQL)
-sidebar_label: ElasticSearch (OpenDistro SQL)
-description: "Documentation for ElasticSearch (OpenDistro SQL) database connection."
----
-
-{/*
-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 (OpenDistro SQL)" database={databaseData.databases["ElasticSearch (OpenDistro SQL)"]} />
diff --git a/docs/docs/configuration/databases/elasticsearch-sql-api.mdx b/docs/docs/configuration/databases/elasticsearch-sql-api.mdx
deleted file mode 100644
index aa191d3428..0000000000
--- a/docs/docs/configuration/databases/elasticsearch-sql-api.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: ElasticSearch (SQL API)
-sidebar_label: ElasticSearch (SQL API)
-description: "Documentation for ElasticSearch (SQL API) database connection."
----
-
-{/*
-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 (SQL API)" database={databaseData.databases["ElasticSearch (SQL API)"]} />
diff --git a/docs/docs/configuration/databases/ibm-db2-for-i.mdx b/docs/docs/configuration/databases/ibm-db2-for-i.mdx
deleted file mode 100644
index 3eb4e96c86..0000000000
--- a/docs/docs/configuration/databases/ibm-db2-for-i.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: IBM Db2 for i
-sidebar_label: IBM Db2 for i
-description: "Documentation for IBM Db2 for i database connection."
----
-
-{/*
-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/configuration/databases/ibm-netezza-performance-server.mdx b/docs/docs/configuration/databases/ibm-netezza-performance-server.mdx
deleted file mode 100644
index 392760a805..0000000000
--- a/docs/docs/configuration/databases/ibm-netezza-performance-server.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: IBM Netezza Performance Server
-sidebar_label: IBM Netezza Performance Server
-description: "Documentation for IBM Netezza Performance Server database connection."
----
-
-{/*
-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 Performance Server" database={databaseData.databases["IBM Netezza Performance Server"]} />
diff --git a/docs/docs/configuration/databases/kustokql.mdx b/docs/docs/configuration/databases/kustokql.mdx
deleted file mode 100644
index c1b22ad258..0000000000
--- a/docs/docs/configuration/databases/kustokql.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: KustoKQL
-sidebar_label: KustoKQL
-description: "Documentation for KustoKQL database connection."
----
-
-{/*
-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="KustoKQL" database={databaseData.databases["KustoKQL"]} />
diff --git a/docs/docs/configuration/databases/kustosql.mdx b/docs/docs/configuration/databases/kustosql.mdx
deleted file mode 100644
index e7d12636c0..0000000000
--- a/docs/docs/configuration/databases/kustosql.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: KustoSQL
-sidebar_label: KustoSQL
-description: "Documentation for KustoSQL database connection."
----
-
-{/*
-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="KustoSQL" database={databaseData.databases["KustoSQL"]} />
diff --git a/docs/docs/configuration/databases/motherduck.mdx b/docs/docs/configuration/databases/motherduck.mdx
deleted file mode 100644
index 5f5aaf9384..0000000000
--- a/docs/docs/configuration/databases/motherduck.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: MotherDuck
-sidebar_label: MotherDuck
-description: "Documentation for MotherDuck database connection."
----
-
-{/*
-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/configuration/databases/shillelagh.mdx b/docs/docs/configuration/databases/shillelagh.mdx
deleted file mode 100644
index c4062d8df8..0000000000
--- a/docs/docs/configuration/databases/shillelagh.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Shillelagh
-sidebar_label: Shillelagh
-description: "Documentation for Shillelagh database connection."
----
-
-{/*
-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="Shillelagh" database={databaseData.databases["Shillelagh"]} />
diff --git a/docs/docs/configuration/databases/superset-meta-database.mdx b/docs/docs/configuration/databases/superset-meta-database.mdx
deleted file mode 100644
index fb9ec3b4c1..0000000000
--- a/docs/docs/configuration/databases/superset-meta-database.mdx
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Superset meta database
-sidebar_label: Superset meta database
-description: "Documentation for Superset meta database database connection."
----
-
-{/*
-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="Superset meta database" database={databaseData.databases["Superset meta database"]} />
diff --git a/docs/docs/configuration/databases/_category_.json b/docs/docs/databases/_category_.json
similarity index 64%
rename from docs/docs/configuration/databases/_category_.json
rename to docs/docs/databases/_category_.json
index 1611054d64..05a7c9acca 100644
--- a/docs/docs/configuration/databases/_category_.json
+++ b/docs/docs/databases/_category_.json
@@ -3,6 +3,6 @@
"position": 1,
"link": {
"type": "doc",
- "id": "configuration/databases/index"
+ "id": "databases/index"
}
}
\ No newline at end of file
diff --git a/docs/docs/configuration/databases/apache-doris.mdx b/docs/docs/databases/apache-doris.mdx
similarity index 98%
copy from docs/docs/configuration/databases/apache-doris.mdx
copy to docs/docs/databases/apache-doris.mdx
index 524003549b..5143905bd9 100644
--- a/docs/docs/configuration/databases/apache-doris.mdx
+++ b/docs/docs/databases/apache-doris.mdx
@@ -2,6 +2,7 @@
title: Apache Doris
sidebar_label: Apache Doris
description: "Apache Doris is a high-performance real-time analytical database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/apache-drill.mdx b/docs/docs/databases/apache-drill.mdx
similarity index 98%
rename from docs/docs/configuration/databases/apache-drill.mdx
rename to docs/docs/databases/apache-drill.mdx
index 9e0ae5b7b5..2c2cc31e77 100644
--- a/docs/docs/configuration/databases/apache-drill.mdx
+++ b/docs/docs/databases/apache-drill.mdx
@@ -2,6 +2,7 @@
title: Apache Drill
sidebar_label: Apache Drill
description: "Apache Drill is a schema-free SQL query engine for Hadoop and NoSQL."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/apache-druid.mdx b/docs/docs/databases/apache-druid.mdx
similarity index 98%
rename from docs/docs/configuration/databases/apache-druid.mdx
rename to docs/docs/databases/apache-druid.mdx
index 7a11be6269..6c03cab9ed 100644
--- a/docs/docs/configuration/databases/apache-druid.mdx
+++ b/docs/docs/databases/apache-druid.mdx
@@ -2,6 +2,7 @@
title: Apache Druid
sidebar_label: Apache Druid
description: "Apache Druid is a high performance real-time analytics database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/apache-hive.mdx b/docs/docs/databases/apache-hive.mdx
similarity index 98%
rename from docs/docs/configuration/databases/apache-hive.mdx
rename to docs/docs/databases/apache-hive.mdx
index 6a97e96236..d7df3784f9 100644
--- a/docs/docs/configuration/databases/apache-hive.mdx
+++ b/docs/docs/databases/apache-hive.mdx
@@ -2,6 +2,7 @@
title: Apache Hive
sidebar_label: Apache Hive
description: "Apache Hive is a data warehouse infrastructure built on Hadoop."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/apache-impala.mdx b/docs/docs/databases/apache-impala.mdx
similarity index 98%
rename from docs/docs/configuration/databases/apache-impala.mdx
rename to docs/docs/databases/apache-impala.mdx
index 5171d342fe..16a9befc1d 100644
--- a/docs/docs/configuration/databases/apache-impala.mdx
+++ b/docs/docs/databases/apache-impala.mdx
@@ -2,6 +2,7 @@
title: Apache Impala
sidebar_label: Apache Impala
description: "Apache Impala is an open-source massively parallel processing SQL query engine."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/apache-kylin.mdx b/docs/docs/databases/apache-kylin.mdx
similarity index 98%
rename from docs/docs/configuration/databases/apache-kylin.mdx
rename to docs/docs/databases/apache-kylin.mdx
index 98c387fa35..af7ff99284 100644
--- a/docs/docs/configuration/databases/apache-kylin.mdx
+++ b/docs/docs/databases/apache-kylin.mdx
@@ -2,6 +2,7 @@
title: Apache Kylin
sidebar_label: Apache Kylin
description: "Apache Kylin is an open-source OLAP engine for big data."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/apache-pinot.mdx b/docs/docs/databases/apache-pinot.mdx
similarity index 98%
rename from docs/docs/configuration/databases/apache-pinot.mdx
rename to docs/docs/databases/apache-pinot.mdx
index cf083771cb..fda5dc02f3 100644
--- a/docs/docs/configuration/databases/apache-pinot.mdx
+++ b/docs/docs/databases/apache-pinot.mdx
@@ -2,6 +2,7 @@
title: Apache Pinot
sidebar_label: Apache Pinot
description: "Apache Pinot is a real-time distributed OLAP datastore."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/apache-solr.mdx b/docs/docs/databases/apache-solr.mdx
similarity index 98%
rename from docs/docs/configuration/databases/apache-solr.mdx
rename to docs/docs/databases/apache-solr.mdx
index 6260309cb9..b2b397648a 100644
--- a/docs/docs/configuration/databases/apache-solr.mdx
+++ b/docs/docs/databases/apache-solr.mdx
@@ -2,6 +2,7 @@
title: Apache Solr
sidebar_label: Apache Solr
description: "Apache Solr is an open-source enterprise search platform."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/apache-spark-sql.mdx b/docs/docs/databases/apache-spark-sql.mdx
similarity index 98%
rename from docs/docs/configuration/databases/apache-spark-sql.mdx
rename to docs/docs/databases/apache-spark-sql.mdx
index 2781f67d3c..b3b0bd271e 100644
--- a/docs/docs/configuration/databases/apache-spark-sql.mdx
+++ b/docs/docs/databases/apache-spark-sql.mdx
@@ -2,6 +2,7 @@
title: Apache Spark SQL
sidebar_label: Apache Spark SQL
description: "Apache Spark SQL is a module for structured data processing."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/base.mdx b/docs/docs/databases/arc.mdx
similarity index 82%
rename from docs/docs/configuration/databases/base.mdx
rename to docs/docs/databases/arc.mdx
index 88a03fdfa7..e2e338c0d3 100644
--- a/docs/docs/configuration/databases/base.mdx
+++ b/docs/docs/databases/arc.mdx
@@ -1,7 +1,8 @@
---
-title: base
-sidebar_label: base
-description: "Documentation for base database connection."
+title: Arc
+sidebar_label: Arc
+description: "Arc is a data platform with multiple connection options."
+hide_title: true
---
{/*
@@ -26,4 +27,4 @@ under the License.
import { DatabasePage } from '@site/src/components/databases';
import databaseData from '@site/src/data/databases.json';
-<DatabasePage name="base" database={databaseData.databases["base"]} />
+<DatabasePage name="Arc" database={databaseData.databases["Arc"]} />
diff --git a/docs/docs/configuration/databases/ascend.mdx b/docs/docs/databases/ascend-io.mdx
similarity index 82%
rename from docs/docs/configuration/databases/ascend.mdx
rename to docs/docs/databases/ascend-io.mdx
index 4563c1b0bc..c135cc328c 100644
--- a/docs/docs/configuration/databases/ascend.mdx
+++ b/docs/docs/databases/ascend-io.mdx
@@ -1,7 +1,8 @@
---
-title: Ascend
-sidebar_label: Ascend
-description: "Documentation for Ascend database connection."
+title: Ascend.io
+sidebar_label: Ascend.io
+description: "Ascend.io is a data automation platform."
+hide_title: true
---
{/*
@@ -26,4 +27,4 @@ under the License.
import { DatabasePage } from '@site/src/components/databases';
import databaseData from '@site/src/data/databases.json';
-<DatabasePage name="Ascend" database={databaseData.databases["Ascend"]} />
+<DatabasePage name="Ascend.io" database={databaseData.databases["Ascend.io"]} />
diff --git a/docs/docs/configuration/databases/apache-doris.mdx b/docs/docs/databases/aws-athena.mdx
similarity index 78%
copy from docs/docs/configuration/databases/apache-doris.mdx
copy to docs/docs/databases/aws-athena.mdx
index 524003549b..9648b79cc1 100644
--- a/docs/docs/configuration/databases/apache-doris.mdx
+++ b/docs/docs/databases/aws-athena.mdx
@@ -1,7 +1,8 @@
---
-title: Apache Doris
-sidebar_label: Apache Doris
-description: "Apache Doris is a high-performance real-time analytical database."
+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
---
{/*
@@ -26,4 +27,4 @@ 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"]} />
+<DatabasePage name="AWS Athena" database={databaseData.databases["AWS Athena"]} />
diff --git a/docs/docs/configuration/databases/apache-doris.mdx b/docs/docs/databases/aws-dynamodb.mdx
similarity index 79%
copy from docs/docs/configuration/databases/apache-doris.mdx
copy to docs/docs/databases/aws-dynamodb.mdx
index 524003549b..d4c82c0bd8 100644
--- a/docs/docs/configuration/databases/apache-doris.mdx
+++ b/docs/docs/databases/aws-dynamodb.mdx
@@ -1,7 +1,8 @@
---
-title: Apache Doris
-sidebar_label: Apache Doris
-description: "Apache Doris is a high-performance real-time analytical database."
+title: AWS DynamoDB
+sidebar_label: AWS DynamoDB
+description: "Amazon DynamoDB is a fully managed NoSQL database service."
+hide_title: true
---
{/*
@@ -26,4 +27,4 @@ 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"]} />
+<DatabasePage name="AWS DynamoDB" database={databaseData.databases["AWS DynamoDB"]} />
diff --git a/docs/docs/configuration/databases/apache-doris.mdx b/docs/docs/databases/aws-redshift.mdx
similarity index 79%
copy from docs/docs/configuration/databases/apache-doris.mdx
copy to docs/docs/databases/aws-redshift.mdx
index 524003549b..ba4138c434 100644
--- a/docs/docs/configuration/databases/apache-doris.mdx
+++ b/docs/docs/databases/aws-redshift.mdx
@@ -1,7 +1,8 @@
---
-title: Apache Doris
-sidebar_label: Apache Doris
-description: "Apache Doris is a high-performance real-time analytical database."
+title: AWS Redshift
+sidebar_label: AWS Redshift
+description: "Amazon Redshift is a fully managed data warehouse service."
+hide_title: true
---
{/*
@@ -26,4 +27,4 @@ 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"]} />
+<DatabasePage name="AWS Redshift" database={databaseData.databases["AWS Redshift"]} />
diff --git a/docs/docs/configuration/databases/clickhouse.mdx b/docs/docs/databases/clickhouse.mdx
similarity index 98%
rename from docs/docs/configuration/databases/clickhouse.mdx
rename to docs/docs/databases/clickhouse.mdx
index 66ff6a0a8e..19a336874c 100644
--- a/docs/docs/configuration/databases/clickhouse.mdx
+++ b/docs/docs/databases/clickhouse.mdx
@@ -2,6 +2,7 @@
title: ClickHouse
sidebar_label: ClickHouse
description: "ClickHouse is an open-source column-oriented OLAP database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/amazon-dynamodb.mdx b/docs/docs/databases/cloudflare-d1.mdx
similarity index 80%
rename from docs/docs/configuration/databases/amazon-dynamodb.mdx
rename to docs/docs/databases/cloudflare-d1.mdx
index eccbc03df4..035f92ad1a 100644
--- a/docs/docs/configuration/databases/amazon-dynamodb.mdx
+++ b/docs/docs/databases/cloudflare-d1.mdx
@@ -1,7 +1,8 @@
---
-title: Amazon DynamoDB
-sidebar_label: Amazon DynamoDB
-description: "Documentation for Amazon DynamoDB database connection."
+title: Cloudflare D1
+sidebar_label: Cloudflare D1
+description: "Cloudflare D1 is a serverless SQLite database."
+hide_title: true
---
{/*
@@ -26,4 +27,4 @@ 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"]} />
+<DatabasePage name="Cloudflare D1" database={databaseData.databases["Cloudflare D1"]} />
diff --git a/docs/docs/configuration/databases/cockroachdb.mdx b/docs/docs/databases/cockroachdb.mdx
similarity index 98%
rename from docs/docs/configuration/databases/cockroachdb.mdx
rename to docs/docs/databases/cockroachdb.mdx
index 9becdc4628..6cb08d26fe 100644
--- a/docs/docs/configuration/databases/cockroachdb.mdx
+++ b/docs/docs/databases/cockroachdb.mdx
@@ -2,6 +2,7 @@
title: CockroachDB
sidebar_label: CockroachDB
description: "CockroachDB is a distributed SQL database built for cloud applications."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/couchbase.mdx b/docs/docs/databases/couchbase.mdx
similarity index 98%
rename from docs/docs/configuration/databases/couchbase.mdx
rename to docs/docs/databases/couchbase.mdx
index 36ef32f098..df8fdf9d2d 100644
--- a/docs/docs/configuration/databases/couchbase.mdx
+++ b/docs/docs/databases/couchbase.mdx
@@ -2,6 +2,7 @@
title: Couchbase
sidebar_label: Couchbase
description: "Couchbase is a distributed NoSQL document database with SQL support."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/cratedb.mdx b/docs/docs/databases/cratedb.mdx
similarity index 98%
rename from docs/docs/configuration/databases/cratedb.mdx
rename to docs/docs/databases/cratedb.mdx
index 40c7f02bdd..49082b2580 100644
--- a/docs/docs/configuration/databases/cratedb.mdx
+++ b/docs/docs/databases/cratedb.mdx
@@ -2,6 +2,7 @@
title: CrateDB
sidebar_label: CrateDB
description: "CrateDB is a distributed SQL database for machine data."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/databend.mdx b/docs/docs/databases/databend.mdx
similarity index 98%
rename from docs/docs/configuration/databases/databend.mdx
rename to docs/docs/databases/databend.mdx
index ba6e7983a0..7314e40006 100644
--- a/docs/docs/configuration/databases/databend.mdx
+++ b/docs/docs/databases/databend.mdx
@@ -2,6 +2,7 @@
title: Databend
sidebar_label: Databend
description: "Databend is an open-source cloud data warehouse."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/databricks.mdx b/docs/docs/databases/databricks.mdx
similarity index 98%
rename from docs/docs/configuration/databases/databricks.mdx
rename to docs/docs/databases/databricks.mdx
index 9cce5b85db..a954f02bdb 100644
--- a/docs/docs/configuration/databases/databricks.mdx
+++ b/docs/docs/databases/databricks.mdx
@@ -2,6 +2,7 @@
title: Databricks
sidebar_label: Databricks
description: "Databricks is a unified analytics platform built on Apache Spark."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/denodo.mdx b/docs/docs/databases/denodo.mdx
similarity index 98%
rename from docs/docs/configuration/databases/denodo.mdx
rename to docs/docs/databases/denodo.mdx
index b8258a633b..a967319cae 100644
--- a/docs/docs/configuration/databases/denodo.mdx
+++ b/docs/docs/databases/denodo.mdx
@@ -2,6 +2,7 @@
title: Denodo
sidebar_label: Denodo
description: "Denodo is a data virtualization platform."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/dremio.mdx b/docs/docs/databases/dremio.mdx
similarity index 98%
rename from docs/docs/configuration/databases/dremio.mdx
rename to docs/docs/databases/dremio.mdx
index 79c5d24393..3cb55bfffe 100644
--- a/docs/docs/configuration/databases/dremio.mdx
+++ b/docs/docs/databases/dremio.mdx
@@ -2,6 +2,7 @@
title: Dremio
sidebar_label: Dremio
description: "Dremio is a data lake engine for self-service analytics."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/duckdb.mdx b/docs/docs/databases/duckdb.mdx
similarity index 98%
rename from docs/docs/configuration/databases/duckdb.mdx
rename to docs/docs/databases/duckdb.mdx
index d76b580bd3..5b3f12dda4 100644
--- a/docs/docs/configuration/databases/duckdb.mdx
+++ b/docs/docs/databases/duckdb.mdx
@@ -2,6 +2,7 @@
title: DuckDB
sidebar_label: DuckDB
description: "DuckDB is an in-process analytical database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/apache-doris.mdx b/docs/docs/databases/elasticsearch.mdx
similarity index 79%
copy from docs/docs/configuration/databases/apache-doris.mdx
copy to docs/docs/databases/elasticsearch.mdx
index 524003549b..019b099d69 100644
--- a/docs/docs/configuration/databases/apache-doris.mdx
+++ b/docs/docs/databases/elasticsearch.mdx
@@ -1,7 +1,8 @@
---
-title: Apache Doris
-sidebar_label: Apache Doris
-description: "Apache Doris is a high-performance real-time analytical database."
+title: Elasticsearch
+sidebar_label: Elasticsearch
+description: "Elasticsearch is a distributed search and analytics engine."
+hide_title: true
---
{/*
@@ -26,4 +27,4 @@ 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"]} />
+<DatabasePage name="Elasticsearch" database={databaseData.databases["Elasticsearch"]} />
diff --git a/docs/docs/configuration/databases/exasol.mdx b/docs/docs/databases/exasol.mdx
similarity index 98%
rename from docs/docs/configuration/databases/exasol.mdx
rename to docs/docs/databases/exasol.mdx
index 7080ec461f..427968d659 100644
--- a/docs/docs/configuration/databases/exasol.mdx
+++ b/docs/docs/databases/exasol.mdx
@@ -2,6 +2,7 @@
title: Exasol
sidebar_label: Exasol
description: "Exasol is a high-performance in-memory analytics database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/firebird.mdx b/docs/docs/databases/firebird.mdx
similarity index 98%
rename from docs/docs/configuration/databases/firebird.mdx
rename to docs/docs/databases/firebird.mdx
index af8b8e3f32..b59199aba1 100644
--- a/docs/docs/configuration/databases/firebird.mdx
+++ b/docs/docs/databases/firebird.mdx
@@ -2,6 +2,7 @@
title: Firebird
sidebar_label: Firebird
description: "Firebird is an open-source relational database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/firebolt.mdx b/docs/docs/databases/firebolt.mdx
similarity index 98%
rename from docs/docs/configuration/databases/firebolt.mdx
rename to docs/docs/databases/firebolt.mdx
index fecb6eb6ed..42edb32b4b 100644
--- a/docs/docs/configuration/databases/firebolt.mdx
+++ b/docs/docs/databases/firebolt.mdx
@@ -2,6 +2,7 @@
title: Firebolt
sidebar_label: Firebolt
description: "Firebolt is a cloud data warehouse for sub-second analytics."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/apache-doris.mdx b/docs/docs/databases/google-bigquery.mdx
similarity index 78%
rename from docs/docs/configuration/databases/apache-doris.mdx
rename to docs/docs/databases/google-bigquery.mdx
index 524003549b..1a225ff5ac 100644
--- a/docs/docs/configuration/databases/apache-doris.mdx
+++ b/docs/docs/databases/google-bigquery.mdx
@@ -1,7 +1,8 @@
---
-title: Apache Doris
-sidebar_label: Apache Doris
-description: "Apache Doris is a high-performance real-time analytical database."
+title: Google BigQuery
+sidebar_label: Google BigQuery
+description: "Google BigQuery is a serverless, highly scalable data warehouse."
+hide_title: true
---
{/*
@@ -26,4 +27,4 @@ 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"]} />
+<DatabasePage name="Google BigQuery" database={databaseData.databases["Google BigQuery"]} />
diff --git a/docs/docs/configuration/databases/google-sheets.mdx b/docs/docs/databases/google-sheets.mdx
similarity index 98%
rename from docs/docs/configuration/databases/google-sheets.mdx
rename to docs/docs/databases/google-sheets.mdx
index deba34876d..66da8e1ae4 100644
--- a/docs/docs/configuration/databases/google-sheets.mdx
+++ b/docs/docs/databases/google-sheets.mdx
@@ -2,6 +2,7 @@
title: Google Sheets
sidebar_label: Google Sheets
description: "Query Google Sheets using SQL via the shillelagh library."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/ibm-db2.mdx b/docs/docs/databases/ibm-db2.mdx
similarity index 98%
rename from docs/docs/configuration/databases/ibm-db2.mdx
rename to docs/docs/databases/ibm-db2.mdx
index ab38f882ed..9da1272bdc 100644
--- a/docs/docs/configuration/databases/ibm-db2.mdx
+++ b/docs/docs/databases/ibm-db2.mdx
@@ -2,6 +2,7 @@
title: IBM Db2
sidebar_label: IBM Db2
description: "IBM Db2 is a family of data management products."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/amazon-redshift.mdx b/docs/docs/databases/ibm-netezza.mdx
similarity index 79%
rename from docs/docs/configuration/databases/amazon-redshift.mdx
rename to docs/docs/databases/ibm-netezza.mdx
index 1d1a9a8666..45285814d6 100644
--- a/docs/docs/configuration/databases/amazon-redshift.mdx
+++ b/docs/docs/databases/ibm-netezza.mdx
@@ -1,7 +1,8 @@
---
-title: Amazon Redshift
-sidebar_label: Amazon Redshift
-description: "Documentation for Amazon Redshift database connection."
+title: IBM Netezza
+sidebar_label: IBM Netezza
+description: "IBM Netezza Performance Server is a data warehouse appliance."
+hide_title: true
---
{/*
@@ -26,4 +27,4 @@ under the License.
import { DatabasePage } from '@site/src/components/databases';
import databaseData from '@site/src/data/databases.json';
-<DatabasePage name="Amazon Redshift" database={databaseData.databases["Amazon Redshift"]} />
+<DatabasePage name="IBM Netezza" database={databaseData.databases["IBM Netezza"]} />
diff --git a/docs/docs/configuration/databases/index.mdx b/docs/docs/databases/index.mdx
similarity index 97%
rename from docs/docs/configuration/databases/index.mdx
rename to docs/docs/databases/index.mdx
index b041cc56c7..52f927dcc3 100644
--- a/docs/docs/configuration/databases/index.mdx
+++ b/docs/docs/databases/index.mdx
@@ -40,7 +40,7 @@ installation documentations ([Docker Compose](/docs/installation/docker-compose)
## Supported Databases
-Superset supports **64 databases** with varying levels of feature support.
+Superset supports **53 databases** with varying levels of feature support.
Click on any database name to see detailed documentation including connection strings,
authentication methods, and configuration options.
diff --git a/docs/docs/configuration/databases/amazon-athena.mdx b/docs/docs/databases/kusto.mdx
similarity index 80%
rename from docs/docs/configuration/databases/amazon-athena.mdx
rename to docs/docs/databases/kusto.mdx
index 2bd96d0d6d..f8014fec7b 100644
--- a/docs/docs/configuration/databases/amazon-athena.mdx
+++ b/docs/docs/databases/kusto.mdx
@@ -1,7 +1,8 @@
---
-title: Amazon Athena
-sidebar_label: Amazon Athena
-description: "Documentation for Amazon Athena database connection."
+title: Kusto
+sidebar_label: Kusto
+description: "Azure Data Explorer (Kusto) is a fast, fully managed data analytics service."
+hide_title: true
---
{/*
@@ -26,4 +27,4 @@ under the License.
import { DatabasePage } from '@site/src/components/databases';
import databaseData from '@site/src/data/databases.json';
-<DatabasePage name="Amazon Athena" database={databaseData.databases["Amazon Athena"]} />
+<DatabasePage name="Kusto" database={databaseData.databases["Kusto"]} />
diff --git a/docs/docs/configuration/databases/mariadb.mdx b/docs/docs/databases/mariadb.mdx
similarity index 98%
rename from docs/docs/configuration/databases/mariadb.mdx
rename to docs/docs/databases/mariadb.mdx
index f5149d73f1..8cdca897e5 100644
--- a/docs/docs/configuration/databases/mariadb.mdx
+++ b/docs/docs/databases/mariadb.mdx
@@ -2,6 +2,7 @@
title: MariaDB
sidebar_label: MariaDB
description: "MariaDB is a community-developed fork of MySQL."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/microsoft-sql-server.mdx b/docs/docs/databases/microsoft-sql-server.mdx
similarity index 98%
rename from docs/docs/configuration/databases/microsoft-sql-server.mdx
rename to docs/docs/databases/microsoft-sql-server.mdx
index 2f8e04b45f..0d72d15d95 100644
--- a/docs/docs/configuration/databases/microsoft-sql-server.mdx
+++ b/docs/docs/databases/microsoft-sql-server.mdx
@@ -2,6 +2,7 @@
title: Microsoft SQL Server
sidebar_label: Microsoft SQL Server
description: "Microsoft SQL Server is a relational database management system."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/mysql.mdx b/docs/docs/databases/mysql.mdx
similarity index 98%
rename from docs/docs/configuration/databases/mysql.mdx
rename to docs/docs/databases/mysql.mdx
index 2f9a50ec97..c6abda523f 100644
--- a/docs/docs/configuration/databases/mysql.mdx
+++ b/docs/docs/databases/mysql.mdx
@@ -2,6 +2,7 @@
title: MySQL
sidebar_label: MySQL
description: "MySQL is a popular open-source relational database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/oceanbase.mdx b/docs/docs/databases/oceanbase.mdx
similarity index 98%
rename from docs/docs/configuration/databases/oceanbase.mdx
rename to docs/docs/databases/oceanbase.mdx
index 76dc533d4c..e77177b9c2 100644
--- a/docs/docs/configuration/databases/oceanbase.mdx
+++ b/docs/docs/databases/oceanbase.mdx
@@ -2,6 +2,7 @@
title: OceanBase
sidebar_label: OceanBase
description: "OceanBase is a distributed relational database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/ocient.mdx b/docs/docs/databases/ocient.mdx
similarity index 98%
rename from docs/docs/configuration/databases/ocient.mdx
rename to docs/docs/databases/ocient.mdx
index e94d460f5b..bcd3f61c2d 100644
--- a/docs/docs/configuration/databases/ocient.mdx
+++ b/docs/docs/databases/ocient.mdx
@@ -2,6 +2,7 @@
title: Ocient
sidebar_label: Ocient
description: "Ocient is a hyperscale data analytics database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/oracle.mdx b/docs/docs/databases/oracle.mdx
similarity index 98%
rename from docs/docs/configuration/databases/oracle.mdx
rename to docs/docs/databases/oracle.mdx
index d8e4dbad40..ad4090cd9d 100644
--- a/docs/docs/configuration/databases/oracle.mdx
+++ b/docs/docs/databases/oracle.mdx
@@ -2,6 +2,7 @@
title: Oracle
sidebar_label: Oracle
description: "Oracle Database is a multi-model database management system."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/parseable.mdx b/docs/docs/databases/parseable.mdx
similarity index 98%
rename from docs/docs/configuration/databases/parseable.mdx
rename to docs/docs/databases/parseable.mdx
index d2b543121f..522874a94c 100644
--- a/docs/docs/configuration/databases/parseable.mdx
+++ b/docs/docs/databases/parseable.mdx
@@ -2,6 +2,7 @@
title: Parseable
sidebar_label: Parseable
description: "Parseable is a distributed log analytics database with SQL-like query interface."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/postgresql.mdx b/docs/docs/databases/postgresql.mdx
similarity index 98%
rename from docs/docs/configuration/databases/postgresql.mdx
rename to docs/docs/databases/postgresql.mdx
index 0f9e88e8e0..b00b43431e 100644
--- a/docs/docs/configuration/databases/postgresql.mdx
+++ b/docs/docs/databases/postgresql.mdx
@@ -2,6 +2,7 @@
title: PostgreSQL
sidebar_label: PostgreSQL
description: "PostgreSQL is an advanced open-source relational database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/presto.mdx b/docs/docs/databases/presto.mdx
similarity index 98%
rename from docs/docs/configuration/databases/presto.mdx
rename to docs/docs/databases/presto.mdx
index 0b5cddf330..c15027e95a 100644
--- a/docs/docs/configuration/databases/presto.mdx
+++ b/docs/docs/databases/presto.mdx
@@ -2,6 +2,7 @@
title: Presto
sidebar_label: Presto
description: "Presto is a distributed SQL query engine for big data."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/risingwave.mdx b/docs/docs/databases/risingwave.mdx
similarity index 98%
rename from docs/docs/configuration/databases/risingwave.mdx
rename to docs/docs/databases/risingwave.mdx
index b31e14eea9..cfe83cc351 100644
--- a/docs/docs/configuration/databases/risingwave.mdx
+++ b/docs/docs/databases/risingwave.mdx
@@ -2,6 +2,7 @@
title: RisingWave
sidebar_label: RisingWave
description: "RisingWave is a distributed streaming database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/sap-hana.mdx b/docs/docs/databases/sap-hana.mdx
similarity index 98%
rename from docs/docs/configuration/databases/sap-hana.mdx
rename to docs/docs/databases/sap-hana.mdx
index 9745d840a2..43d5d5909b 100644
--- a/docs/docs/configuration/databases/sap-hana.mdx
+++ b/docs/docs/databases/sap-hana.mdx
@@ -2,6 +2,7 @@
title: SAP HANA
sidebar_label: SAP HANA
description: "SAP HANA is an in-memory relational database and application platform."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/singlestore.mdx b/docs/docs/databases/singlestore.mdx
similarity index 98%
rename from docs/docs/configuration/databases/singlestore.mdx
rename to docs/docs/databases/singlestore.mdx
index 184936d7b0..928d6aac80 100644
--- a/docs/docs/configuration/databases/singlestore.mdx
+++ b/docs/docs/databases/singlestore.mdx
@@ -2,6 +2,7 @@
title: SingleStore
sidebar_label: SingleStore
description: "SingleStore is a distributed SQL database for real-time analytics."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/snowflake.mdx b/docs/docs/databases/snowflake.mdx
similarity index 98%
rename from docs/docs/configuration/databases/snowflake.mdx
rename to docs/docs/databases/snowflake.mdx
index 4348e15454..f5820f79be 100644
--- a/docs/docs/configuration/databases/snowflake.mdx
+++ b/docs/docs/databases/snowflake.mdx
@@ -2,6 +2,7 @@
title: Snowflake
sidebar_label: Snowflake
description: "Snowflake is a cloud-native data warehouse."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/sqlite.mdx b/docs/docs/databases/sqlite.mdx
similarity index 98%
rename from docs/docs/configuration/databases/sqlite.mdx
rename to docs/docs/databases/sqlite.mdx
index 21410f6c20..3b015ed699 100644
--- a/docs/docs/configuration/databases/sqlite.mdx
+++ b/docs/docs/databases/sqlite.mdx
@@ -2,6 +2,7 @@
title: SQLite
sidebar_label: SQLite
description: "SQLite is a self-contained, serverless SQL database engine."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/starrocks.mdx b/docs/docs/databases/starrocks.mdx
similarity index 98%
rename from docs/docs/configuration/databases/starrocks.mdx
rename to docs/docs/databases/starrocks.mdx
index 6422e9f549..4a7e2bcece 100644
--- a/docs/docs/configuration/databases/starrocks.mdx
+++ b/docs/docs/databases/starrocks.mdx
@@ -2,6 +2,7 @@
title: StarRocks
sidebar_label: StarRocks
description: "StarRocks is a next-generation sub-second MPP database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/tdengine.mdx b/docs/docs/databases/tdengine.mdx
similarity index 98%
rename from docs/docs/configuration/databases/tdengine.mdx
rename to docs/docs/databases/tdengine.mdx
index 6b2b9492a6..e6046922d8 100644
--- a/docs/docs/configuration/databases/tdengine.mdx
+++ b/docs/docs/databases/tdengine.mdx
@@ -2,6 +2,7 @@
title: TDengine
sidebar_label: TDengine
description: "TDengine is a high-performance time-series database for IoT."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/teradata.mdx b/docs/docs/databases/teradata.mdx
similarity index 98%
rename from docs/docs/configuration/databases/teradata.mdx
rename to docs/docs/databases/teradata.mdx
index b7fafa78a3..43a069836e 100644
--- a/docs/docs/configuration/databases/teradata.mdx
+++ b/docs/docs/databases/teradata.mdx
@@ -2,6 +2,7 @@
title: Teradata
sidebar_label: Teradata
description: "Teradata is an enterprise data warehouse platform."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/trino.mdx b/docs/docs/databases/trino.mdx
similarity index 98%
rename from docs/docs/configuration/databases/trino.mdx
rename to docs/docs/databases/trino.mdx
index e7c70426c5..a55b03e779 100644
--- a/docs/docs/configuration/databases/trino.mdx
+++ b/docs/docs/databases/trino.mdx
@@ -2,6 +2,7 @@
title: Trino
sidebar_label: Trino
description: "Trino is a distributed SQL query engine for big data analytics."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/vertica.mdx b/docs/docs/databases/vertica.mdx
similarity index 98%
rename from docs/docs/configuration/databases/vertica.mdx
rename to docs/docs/databases/vertica.mdx
index dec50d80a0..59b7f109bf 100644
--- a/docs/docs/configuration/databases/vertica.mdx
+++ b/docs/docs/databases/vertica.mdx
@@ -2,6 +2,7 @@
title: Vertica
sidebar_label: Vertica
description: "Vertica is a column-oriented analytics database."
+hide_title: true
---
{/*
diff --git a/docs/docs/configuration/databases/ydb.mdx b/docs/docs/databases/ydb.mdx
similarity index 98%
rename from docs/docs/configuration/databases/ydb.mdx
rename to docs/docs/databases/ydb.mdx
index 329ef8edaa..7c2b2cc21f 100644
--- a/docs/docs/configuration/databases/ydb.mdx
+++ b/docs/docs/databases/ydb.mdx
@@ -2,6 +2,7 @@
title: YDB
sidebar_label: YDB
description: "YDB is a distributed SQL database by Yandex."
+hide_title: true
---
{/*
diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts
index f5590de7d1..092f468ed1 100644
--- a/docs/docusaurus.config.ts
+++ b/docs/docusaurus.config.ts
@@ -214,7 +214,7 @@ const config: Config = {
from: '/gallery.html',
},
{
- to: '/docs/configuration/databases',
+ to: '/docs/databases',
from: '/druid.html',
},
{
@@ -266,7 +266,7 @@ const config: Config = {
from: '/docs/contributing/contribution-page',
},
{
- to: '/docs/configuration/databases',
+ to: '/docs/databases',
from: '/docs/databases/yugabyte/',
},
{
@@ -398,6 +398,11 @@ const config: Config = {
docId: 'intro',
label: 'Getting Started',
},
+ {
+ type: 'doc',
+ docId: 'databases/index',
+ label: 'Databases',
+ },
{
type: 'doc',
docId: 'faq',
diff --git a/docs/scripts/generate-database-docs.mjs b/docs/scripts/generate-database-docs.mjs
index 9164cd3d5e..acb4461298 100644
--- a/docs/scripts/generate-database-docs.mjs
+++ b/docs/scripts/generate-database-docs.mjs
@@ -40,7 +40,7 @@ const ROOT_DIR = path.resolve(__dirname, '../..');
const DOCS_DIR = path.resolve(__dirname, '..');
const DATA_OUTPUT_DIR = path.join(DOCS_DIR, 'src/data');
const DATA_OUTPUT_FILE = path.join(DATA_OUTPUT_DIR, 'databases.json');
-const MDX_OUTPUT_DIR = path.join(DOCS_DIR, 'docs/configuration/databases');
+const MDX_OUTPUT_DIR = path.join(DOCS_DIR, 'docs/databases');
const LIB_PY_PATH = path.join(ROOT_DIR, 'superset/db_engine_specs/lib.py');
/**
@@ -127,7 +127,8 @@ print(json.dumps(exec_globals.get('DATABASE_DOCS', {}), default=str))
}
/**
- * Simple extraction - just import the DATABASE_DOCS dict
+ * Simple extraction - import DATABASE_DOCS and try to get diagnostics
+ * This version attempts to load engine specs individually, skipping failures
*/
function extractDatabaseDocsSimple() {
console.log('Using simple extraction method...');
@@ -137,37 +138,106 @@ function extractDatabaseDocsSimple() {
`cd ${ROOT_DIR} && python3 -c "
import sys
import json
+import importlib
+import pkgutil
+import warnings
sys.path.insert(0, '.')
+warnings.filterwarnings('ignore')
# Import just the DATABASE_DOCS constant
-from superset.db_engine_specs.lib import DATABASE_DOCS
-
-# Build the output structure (without diagnose() features)
+from superset.db_engine_specs.lib import DATABASE_DOCS, diagnose, get_name
+
+# Try to load engine specs individually, skipping failures
+loaded_specs = {}
+failed_imports = []
+
+import superset.db_engine_specs as specs_package
+for importer, modname, ispkg in pkgutil.iter_modules(specs_package.__path__):
+ if modname in ('base', 'lib', '__init__'):
+ continue
+ try:
+ module = importlib.import_module(f'superset.db_engine_specs.{modname}')
+ for attr_name in dir(module):
+ attr = getattr(module, attr_name)
+ if (isinstance(attr, type) and
+ hasattr(attr, 'engine') and
+ hasattr(attr, '__module__') and
+ attr.__module__.startswith('superset.db_engine_specs')):
+ try:
+ name = get_name(attr)
+ if name and name not in loaded_specs:
+ loaded_specs[name] = attr
+ except:
+ pass
+ except Exception as e:
+ failed_imports.append(modname)
+
+# Build output with diagnostics where available
output = {}
for name, docs in DATABASE_DOCS.items():
- output[name] = {
- 'engine': name.lower().replace(' ', '_'),
- 'engine_name': name,
- 'documentation': docs,
- # Placeholder values for diagnostics (not available without Flask)
- 'time_grains': {},
- 'score': 0,
- 'max_score': 0,
- 'joins': True,
- 'subqueries': True,
- 'supports_dynamic_schema': False,
- 'supports_catalog': False,
- }
-
-print(json.dumps(output, default=str))
+ spec = loaded_specs.get(name)
+ if spec:
+ try:
+ diag = diagnose(spec)
+ output[name] = {
+ 'engine': getattr(spec, 'engine', name.lower().replace(' ', '_')),
+ 'engine_name': name,
+ 'documentation': docs,
+ 'time_grains': diag.get('time_grains', {}),
+ 'score': diag.get('score', 0),
+ 'max_score': diag.get('max_score', 0),
+ 'joins': diag.get('joins', True),
+ 'subqueries': diag.get('subqueries', True),
+ 'supports_dynamic_schema': diag.get('supports_dynamic_schema', False),
+ 'supports_catalog': diag.get('supports_catalog', False),
+ 'supports_dynamic_catalog': diag.get('supports_dynamic_catalog', False),
+ 'ssh_tunneling': diag.get('ssh_tunneling', False),
+ 'query_cancelation': diag.get('query_cancelation', False),
+ 'supports_file_upload': diag.get('supports_file_upload', False),
+ 'user_impersonation': diag.get('user_impersonation', False),
+ 'query_cost_estimation': diag.get('query_cost_estimation', False),
+ 'sql_validation': diag.get('sql_validation', False),
+ }
+ except Exception as e:
+ # Fallback for this specific database
+ output[name] = {
+ 'engine': name.lower().replace(' ', '_'),
+ 'engine_name': name,
+ 'documentation': docs,
+ 'time_grains': {},
+ 'score': 0,
+ 'max_score': 0,
+ 'joins': True,
+ 'subqueries': True,
+ 'supports_dynamic_schema': False,
+ 'supports_catalog': False,
+ }
+ else:
+ # No spec found, use placeholder
+ output[name] = {
+ 'engine': name.lower().replace(' ', '_'),
+ 'engine_name': name,
+ 'documentation': docs,
+ 'time_grains': {},
+ 'score': 0,
+ 'max_score': 0,
+ 'joins': True,
+ 'subqueries': True,
+ 'supports_dynamic_schema': False,
+ 'supports_catalog': False,
+ }
+
+print(json.dumps({'databases': output, 'loaded': len(loaded_specs), 'failed': failed_imports}, default=str))
"`,
{
encoding: 'utf-8',
- timeout: 30000,
+ timeout: 60000,
maxBuffer: 10 * 1024 * 1024,
}
);
- return JSON.parse(result);
+ const data = JSON.parse(result);
+ console.log(`Loaded ${data.loaded} engine specs (failed: ${data.failed.join(', ') || 'none'})`);
+ return data.databases;
} catch (error) {
console.error('Failed to extract DATABASE_DOCS:', error.message);
return null;
@@ -291,6 +361,7 @@ function generateDatabaseMDX(name, db, slug) {
title: ${name}
sidebar_label: ${name}
description: "${shortDesc}"
+hide_title: true
---
{/*
@@ -417,7 +488,7 @@ To add or update database documentation, edit the \`DATABASE_DOCS\` dictionary i
}
/**
- * Load existing database data if available and valid
+ * Load existing database data if available
*/
function loadExistingData() {
if (!fs.existsSync(DATA_OUTPUT_FILE)) {
@@ -426,22 +497,45 @@ function loadExistingData() {
try {
const content = fs.readFileSync(DATA_OUTPUT_FILE, 'utf-8');
- const data = JSON.parse(content);
-
- // Check if the data has scores (meaning it was generated with full Flask context)
- const hasScores = Object.values(data.databases || {}).some(
- (db) => db.score > 0
- );
-
- if (hasScores && Object.keys(data.databases || {}).length > 50) {
- console.log('Using existing databases.json with full diagnostic data');
- return data;
- }
+ return JSON.parse(content);
} catch (error) {
console.log('Could not load existing data:', error.message);
+ return null;
}
+}
- return null;
+/**
+ * Merge new documentation with existing diagnostics
+ * Preserves score, time_grains, and feature flags from existing data
+ */
+function mergeWithExistingDiagnostics(newDatabases, existingData) {
+ if (!existingData?.databases) return newDatabases;
+
+ const diagnosticFields = [
+ 'score', 'max_score', 'time_grains', 'joins', 'subqueries',
+ 'supports_dynamic_schema', 'supports_catalog', 'supports_dynamic_catalog',
+ 'ssh_tunneling', 'query_cancelation', 'supports_file_upload',
+ 'user_impersonation', 'query_cost_estimation', 'sql_validation'
+ ];
+
+ for (const [name, db] of Object.entries(newDatabases)) {
+ const existingDb = existingData.databases[name];
+ if (existingDb && existingDb.score > 0) {
+ // Preserve diagnostics from existing data
+ for (const field of diagnosticFields) {
+ if (existingDb[field] !== undefined) {
+ db[field] = existingDb[field];
+ }
+ }
+ }
+ }
+
+ const preserved = Object.values(newDatabases).filter(d => d.score > 0).length;
+ if (preserved > 0) {
+ console.log(`Preserved diagnostics for ${preserved} databases from existing data`);
+ }
+
+ return newDatabases;
}
/**
@@ -458,44 +552,58 @@ async function main() {
fs.mkdirSync(MDX_OUTPUT_DIR, { recursive: true });
}
- // First, try to use existing data if it has full diagnostics
- let existingData = loadExistingData();
- let databases;
- let statistics;
-
- if (existingData) {
- databases = existingData.databases;
- statistics = existingData.statistics;
- console.log(`Using cached data with ${Object.keys(databases).length} databases\n`);
- } else {
- // Try to run the full script first, fall back to extraction
- databases = tryRunFullScript();
-
- if (!databases) {
- databases = extractDatabaseDocsSimple();
- }
+ // Load existing data for potential merge
+ const existingData = loadExistingData();
- if (!databases || Object.keys(databases).length === 0) {
- console.error('Failed to generate database documentation data.');
- console.error('Make sure superset is properly installed or lib.py is accessible.');
- process.exit(1);
- }
+ // Try to run the full script first, fall back to extraction
+ let databases = tryRunFullScript();
+
+ if (!databases) {
+ databases = extractDatabaseDocsSimple();
+ }
+
+ if (!databases || Object.keys(databases).length === 0) {
+ console.error('Failed to generate database documentation data.');
+ console.error('Make sure superset is properly installed or lib.py is accessible.');
+ process.exit(1);
+ }
+
+ console.log(`Processed ${Object.keys(databases).length} databases\n`);
+
+ // Check if new data has scores; if not, preserve existing diagnostics
+ const hasNewScores = Object.values(databases).some((db) => db.score > 0);
+ if (!hasNewScores && existingData) {
+ databases = mergeWithExistingDiagnostics(databases, existingData);
+ }
- console.log(`Processed ${Object.keys(databases).length} databases\n`);
+ // Build statistics
+ const statistics = buildStatistics(databases);
- // Build statistics
- statistics = buildStatistics(databases);
+ // Create the final output structure
+ const output = {
+ generated: new Date().toISOString(),
+ statistics,
+ databases,
+ };
+
+ // Write the JSON file
+ fs.writeFileSync(DATA_OUTPUT_FILE, JSON.stringify(output, null, 2));
+ console.log(`Generated: ${path.relative(DOCS_DIR, DATA_OUTPUT_FILE)}`);
- // Create the final output structure
- const output = {
- generated: new Date().toISOString(),
- statistics,
- databases,
- };
- // Write the JSON file
- fs.writeFileSync(DATA_OUTPUT_FILE, JSON.stringify(output, null, 2));
- console.log(`Generated: ${path.relative(DOCS_DIR, DATA_OUTPUT_FILE)}`);
+ // Clean up old MDX files that are no longer in the database list
+ console.log(`\nCleaning up old MDX files in ${path.relative(DOCS_DIR, MDX_OUTPUT_DIR)}/`);
+ const existingMdxFiles = fs.readdirSync(MDX_OUTPUT_DIR).filter(f => f.endsWith('.mdx') && f !== 'index.mdx');
+ const validSlugs = new Set(Object.keys(databases).map(name => `${toSlug(name)}.mdx`));
+ let removedCount = 0;
+ for (const file of existingMdxFiles) {
+ if (!validSlugs.has(file)) {
+ fs.unlinkSync(path.join(MDX_OUTPUT_DIR, file));
+ removedCount++;
+ }
+ }
+ if (removedCount > 0) {
+ console.log(` Removed ${removedCount} outdated MDX files`);
}
// Generate individual MDX files for each database
@@ -523,7 +631,7 @@ async function main() {
position: 1,
link: {
type: 'doc',
- id: 'configuration/databases/index',
+ id: 'databases/index',
},
};
fs.writeFileSync(
diff --git a/docs/sidebars.js b/docs/sidebars.js
index 4f231d16a5..8a808ed31b 100644
--- a/docs/sidebars.js
+++ b/docs/sidebars.js
@@ -57,6 +57,20 @@ const sidebars = {
},
],
},
+ {
+ type: 'category',
+ label: 'Databases',
+ link: {
+ type: 'doc',
+ id: 'databases/index',
+ },
+ items: [
+ {
+ type: 'autogenerated',
+ dirName: 'databases',
+ },
+ ],
+ },
{
type: 'category',
label: 'Using Superset',
diff --git a/docs/src/components/databases/DatabaseIndex.tsx b/docs/src/components/databases/DatabaseIndex.tsx
index 0f8bab1d49..a727864f22 100644
--- a/docs/src/components/databases/DatabaseIndex.tsx
+++ b/docs/src/components/databases/DatabaseIndex.tsx
@@ -226,8 +226,8 @@ const DatabaseIndex: React.FC<DatabaseIndexProps> = ({ data }) => {
// Link to parent for compatible DBs, otherwise to own page
const linkTarget = record.isCompatible && record.compatibleWith
- ? `/docs/configuration/databases/${toSlug(record.compatibleWith)}`
- : `/docs/configuration/databases/${toSlug(name)}`;
+ ? `/docs/databases/${toSlug(record.compatibleWith)}`
+ : `/docs/databases/${toSlug(name)}`;
return (
<div>
diff --git a/docs/src/components/databases/DatabasePage.tsx b/docs/src/components/databases/DatabasePage.tsx
index 763d62ac36..0ed92514a5 100644
--- a/docs/src/components/databases/DatabasePage.tsx
+++ b/docs/src/components/databases/DatabasePage.tsx
@@ -248,14 +248,35 @@ const DatabasePage: React.FC<DatabasePageProps> = ({ database, name }) => {
const renderCompatibleDatabases = () => {
if (!docs?.compatible_databases?.length) return null;
+ // Create array of all panel keys to expand by default
+ const allPanelKeys = docs.compatible_databases.map((_, idx) => idx);
+
return (
<Card title="Compatible Databases" style={{ marginBottom: 16 }}>
<Paragraph>
The following databases are compatible with the {name} driver:
</Paragraph>
- <Collapse>
+ <Collapse defaultActiveKey={allPanelKeys}>
{docs.compatible_databases.map((compat, idx) => (
- <Panel header={compat.name} key={idx}>
+ <Panel
+ header={
+ <div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>
+ {compat.logo && (
+ <img
+ src={`/img/databases/${compat.logo}`}
+ alt={compat.name}
+ style={{
+ width: 28,
+ height: 28,
+ objectFit: 'contain',
+ }}
+ />
+ )}
+ <span>{compat.name}</span>
+ </div>
+ }
+ key={idx}
+ >
{compat.description && (
<Paragraph>{compat.description}</Paragraph>
)}
@@ -400,7 +421,30 @@ const DatabasePage: React.FC<DatabasePageProps> = ({ database, name }) => {
className="database-page"
id={name.toLowerCase().replace(/\s+/g, '-')}
>
- <Title level={2}>{name}</Title>
+ <div style={{ marginBottom: 16 }}>
+ {docs?.logo && (
+ <img
+ src={`/img/databases/${docs.logo}`}
+ alt={name}
+ style={{
+ height: 120,
+ objectFit: 'contain',
+ marginBottom: 12,
+ }}
+ />
+ )}
+ <Title level={1} style={{ margin: 0 }}>{name}</Title>
+ {docs?.homepage_url && (
+ <a
+ href={docs.homepage_url}
+ target="_blank"
+ rel="noreferrer"
+ style={{ fontSize: 14 }}
+ >
+ <LinkOutlined /> {docs.homepage_url}
+ </a>
+ )}
+ </div>
{docs?.description && <Paragraph>{docs.description}</Paragraph>}
diff --git a/docs/src/components/databases/types.ts b/docs/src/components/databases/types.ts
index 52bc156e10..2231792953 100644
--- a/docs/src/components/databases/types.ts
+++ b/docs/src/components/databases/types.ts
@@ -75,6 +75,8 @@ export interface SSLConfiguration {
export interface CompatibleDatabase {
name: string;
description?: string;
+ logo?: string;
+ homepage_url?: string;
pypi_packages?: string[];
connection_string?: string;
parameters?: Record<string, string>;
@@ -85,6 +87,8 @@ export interface CompatibleDatabase {
export interface DatabaseDocumentation {
description?: string;
+ logo?: string;
+ homepage_url?: string;
pypi_packages?: string[];
connection_string?: string;
default_port?: number;
diff --git a/docs/src/data/databases.json b/docs/src/data/databases.json
index a4e8165e7b..15377adb6c 100644
--- a/docs/src/data/databases.json
+++ b/docs/src/data/databases.json
@@ -1,1422 +1,176 @@
{
- "generated": "2025-12-21T12:01:42.014650",
+ "generated": "2025-12-22T07:44:12.184Z",
"statistics": {
- "totalDatabases": 64,
- "withDocumentation": 43,
- "withConnectionString": 62,
- "withDrivers": 7,
- "withAuthMethods": 3,
- "supportsJoins": 58,
- "supportsSubqueries": 61,
- "supportsDynamicSchema": 23,
- "supportsCatalog": 14,
- "averageScore": 53,
+ "totalDatabases": 53,
+ "withDocumentation": 53,
+ "withConnectionString": 50,
+ "withDrivers": 10,
+ "withAuthMethods": 5,
+ "supportsJoins": 49,
+ "supportsSubqueries": 50,
+ "supportsDynamicSchema": 17,
+ "supportsCatalog": 10,
+ "averageScore": 45,
"maxScore": 201,
- "byCategory": {},
- "errors": [
- "Module bigquery: module 'google._upb._message' has no attribute 'MessageMapContainer'"
- ]
+ "byCategory": {
+ "Traditional RDBMS": [
+ "PostgreSQL",
+ "MySQL",
+ "SQLite",
+ "MariaDB"
+ ],
+ "Cloud - AWS": [
+ "AWS Athena",
+ "AWS DynamoDB",
+ "AWS Redshift"
+ ],
+ "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",
+ "SAP HANA",
+ "IBM Db2",
+ "IBM Netezza",
+ "Kusto",
+ "OceanBase",
+ "Ocient",
+ "Oracle",
+ "Parseable",
+ "RisingWave",
+ "SingleStore",
+ "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": {
- "Amazon Athena": {
- "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
- },
- "module": "superset.db_engine_specs.athena",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": false,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 20,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
- },
- "engine": "awsathena",
- "engine_name": "Amazon Athena",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Amazon DynamoDB": {
- "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": true,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": true,
- "MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
- "YEAR": true
- },
- "module": "superset.db_engine_specs.dynamodb",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 32,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
- },
- "engine": "dynamodb",
- "engine_name": "Amazon DynamoDB",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Amazon Redshift": {
- "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
- },
- "module": "superset.db_engine_specs.redshift",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 127,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 44,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "redshift+psycopg2://user:password@host:port/dbname[?key=value&key=value...]"
- },
- "engine": "redshift",
- "engine_name": "Amazon Redshift",
- "engine_aliases": [],
- "default_driver": "psycopg2",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Apache Doris": {
- "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
- },
- "module": "superset.db_engine_specs.doris",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 64,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 79,
- "max_score": 201,
+ "PostgreSQL": {
+ "engine": "postgresql",
+ "engine_name": "PostgreSQL",
"documentation": {
- "description": "Apache Doris is a high-performance real-time analytical database.",
+ "description": "PostgreSQL is an advanced open-source relational database.",
+ "logo": "postgresql.svg",
+ "homepage_url": "https://www.postgresql.org/",
"pypi_packages": [
- "pydoris"
+ "psycopg2"
],
- "connection_string": "doris://{username}:{password}@{host}:{port}/{catalog}.{database}",
+ "connection_string": "postgresql://{username}:{password}@{host}:{port}/{database}",
+ "default_port": 5432,
"parameters": {
- "username": "User name",
- "password": "Password",
- "host": "Doris FE Host",
- "port": "Doris FE port",
- "catalog": "Catalog name",
+ "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"
- }
- },
- "engine": "pydoris",
- "engine_name": "Apache Doris",
- "engine_aliases": [
- "doris"
- ],
- "default_driver": "pydoris",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "Apache Drill": {
- "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
- },
- "module": "superset.db_engine_specs.drill",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": true,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 50,
- "max_score": 201,
- "documentation": {
- "description": "Apache Drill is a schema-free SQL query engine for Hadoop and NoSQL.",
- "drivers": [
- {
- "name": "SQLAlchemy (REST)",
- "pypi_package": "sqlalchemy-drill",
- "connection_string": "drill+sadrill://{username}:{password}@{host}:{port}/{storage_plugin}?use_ssl=True",
- "is_recommended": true
- },
+ },
+ "notes": "The psycopg2 library comes bundled with Superset Docker images.",
+ "connection_examples": [
{
- "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/"
+ "description": "Basic connection",
+ "connection_string": "postgresql://{username}:{password}@{host}:{port}/{database}"
},
{
- "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/"
+ "description": "With SSL required",
+ "connection_string": "postgresql://{username}:{password}@{host}:{port}/{database}?sslmode=require"
}
],
- "connection_examples": [
+ "docs_url": "https://www.postgresql.org/docs/",
+ "sqlalchemy_docs_url": "https://docs.sqlalchemy.org/en/13/dialects/postgresql.html",
+ "compatible_databases": [
{
- "description": "Local embedded mode",
- "connection_string": "drill+sadrill://localhost:8047/dfs?use_ssl=False"
- }
- ]
- },
- "engine": "drill",
- "engine_name": "Apache Drill",
- "engine_aliases": [],
- "default_driver": "sadrill",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false
- },
- "Apache Druid": {
- "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
- },
- "module": "superset.db_engine_specs.druid",
- "limit_method": 1,
- "limit_clause": true,
- "joins": false,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": true,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 47,
- "max_score": 201,
- "documentation": {
- "description": "Apache Druid is a high performance real-time analytics database.",
- "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."
- },
- "engine": "druid",
- "engine_name": "Apache Druid",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Apache Hive": {
- "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
- },
- "module": "superset.db_engine_specs.hive",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": false,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 767,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": true,
- "user_impersonation": true,
- "file_upload": true,
- "get_extra_table_metadata": true,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": true,
- "expand_data": true,
- "query_cost_estimation": true,
- "sql_validation": false,
- "score": 140,
- "max_score": 201,
- "documentation": {
- "description": "Apache Hive is a data warehouse infrastructure built on Hadoop.",
- "pypi_packages": [
- "pyhive"
- ],
- "connection_string": "hive://hive@{hostname}:{port}/{database}"
- },
- "engine": "hive",
- "engine_name": "Apache Hive",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "Apache Impala": {
- "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
- },
- "module": "superset.db_engine_specs.impala",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 37,
- "max_score": 201,
- "documentation": {
- "description": "Apache Impala is an open-source massively parallel processing SQL query engine.",
- "pypi_packages": [
- "impyla"
- ],
- "connection_string": "impala://{hostname}:{port}/{database}"
- },
- "engine": "impala",
- "engine_name": "Apache Impala",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Apache Kylin": {
- "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
- },
- "module": "superset.db_engine_specs.kylin",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 28,
- "max_score": 201,
- "documentation": {
- "description": "Apache Kylin is an open-source OLAP engine for big data.",
- "pypi_packages": [
- "kylinpy"
- ],
- "connection_string": "kylin://{username}:{password}@{hostname}:{port}/{project}?{param1}={value1}&{param2}={value2}"
- },
- "engine": "kylin",
- "engine_name": "Apache Kylin",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Apache Pinot": {
- "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
- },
- "module": "superset.db_engine_specs.pinot",
- "limit_method": 1,
- "limit_clause": true,
- "joins": false,
- "subqueries": false,
- "alias_in_select": false,
- "alias_in_orderby": false,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 32,
- "max_score": 201,
- "documentation": {
- "description": "Apache Pinot is a real-time distributed OLAP datastore.",
- "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"
- }
- ]
- },
- "engine": "pinot",
- "engine_name": "Apache Pinot",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Apache Solr": {
- "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
- },
- "module": "superset.db_engine_specs.solr",
- "limit_method": 1,
- "limit_clause": true,
- "joins": false,
- "subqueries": false,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 20,
- "max_score": 201,
- "documentation": {
- "description": "Apache Solr is an open-source enterprise search platform.",
- "pypi_packages": [
- "sqlalchemy-solr"
- ],
- "connection_string": "solr://{username}:{password}@{host}:{port}/{server_path}/{collection}[/?use_ssl=true|false]"
- },
- "engine": "solr",
- "engine_name": "Apache Solr",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Apache Spark SQL": {
- "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
- },
- "module": "superset.db_engine_specs.spark",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": false,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 767,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": true,
- "user_impersonation": true,
- "file_upload": true,
- "get_extra_table_metadata": true,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": true,
- "expand_data": true,
- "query_cost_estimation": true,
- "sql_validation": false,
- "score": 140,
- "max_score": 201,
- "documentation": {
- "description": "Apache Spark SQL is a module for structured data processing.",
- "pypi_packages": [
- "pyhive"
- ],
- "connection_string": "hive://hive@{hostname}:{port}/{database}"
- },
- "engine": "hive",
- "engine_name": "Apache Spark SQL",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "Ascend": {
- "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
- },
- "module": "superset.db_engine_specs.ascend",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 38,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
- },
- "engine": "ascend",
- "engine_name": "Ascend",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Aurora MySQL (Data API)": {
- "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
- },
- "module": "superset.db_engine_specs.aurora",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 64,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 59,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "mysql+auroradataapi://{aws_access_id}:{aws_secret_access_key}@/{database_name}?aurora_cluster_arn={aurora_cluster_arn}&secret_arn={secret_arn}®ion_name={region_name}"
- },
- "engine": "mysql",
- "engine_name": "Aurora MySQL (Data API)",
- "engine_aliases": [],
- "default_driver": "auroradataapi",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false
- },
- "Aurora PostgreSQL (Data API)": {
- "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
- },
- "module": "superset.db_engine_specs.aurora",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 63,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": true,
- "sql_validation": true,
- "score": 104,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "postgresql+auroradataapi://{aws_access_id}:{aws_secret_access_key}@/{database_name}?aurora_cluster_arn={aurora_cluster_arn}&secret_arn={secret_arn}®ion_name={region_name}"
- },
- "engine": "postgresql",
- "engine_name": "Aurora PostgreSQL (Data API)",
- "engine_aliases": [
- "postgres"
- ],
- "default_driver": "auroradataapi",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "Azure Synapse": {
- "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
- },
- "module": "superset.db_engine_specs.mssql",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": false,
- "max_column_name": 128,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 44,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
- },
- "engine": "mssql",
- "engine_name": "Azure Synapse",
- "engine_aliases": [],
- "default_driver": "pyodbc",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "ClickHouse": {
- "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
- },
- "module": "superset.db_engine_specs.clickhouse",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": true,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": true,
- "user_impersonation": false,
- "file_upload": false,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": true,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 51,
- "max_score": 201,
- "documentation": {
- "description": "ClickHouse is an open-source column-oriented OLAP database.",
- "pypi_packages": [
- "clickhouse-connect"
- ],
- "connection_string": "clickhousedb://{username}:{password}@{hostname}:{port}/{database}",
- "version_requirements": "clickhouse-connect>=0.6.8",
- "connection_examples": [
+ "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"
+ }
+ },
{
- "description": "Altinity Cloud",
- "connection_string": "clickhousedb://demo:demo@github.demo.trial.altinity.cloud/default?secure=true"
+ "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/"
},
{
- "description": "Local (no auth, no SSL)",
- "connection_string": "clickhousedb://localhost/default"
+ "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/"
}
- ],
- "install_instructions": "echo \"clickhouse-connect>=0.6.8\" >> ./docker/requirements-local.txt"
- },
- "engine": "clickhouse",
- "engine_name": "ClickHouse",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": false,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "ClickHouse Connect (Superset)": {
- "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
- },
- "module": "superset.db_engine_specs.clickhouse",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": true,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": true,
- "user_impersonation": false,
- "file_upload": false,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": true,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 61,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "clickhousedb://user:password@host[:port][/dbname][?secure=value&=value...]"
+ ]
},
- "engine": "clickhousedb",
- "engine_name": "ClickHouse Connect (Superset)",
- "engine_aliases": [],
- "default_driver": "connect",
- "supports_file_upload": false,
- "supports_dynamic_schema": true,
- "supports_catalog": false
- },
- "CockroachDB": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": true,
@@ -1440,60 +194,73 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.cockroachdb",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 104,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 63,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
+ "supports_dynamic_schema": true,
+ "supports_catalog": true,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": true,
- "sql_validation": false,
- "score": 94,
- "max_score": 201,
+ "sql_validation": true
+ },
+ "MySQL": {
+ "engine": "mysql",
+ "engine_name": "MySQL",
"documentation": {
- "description": "CockroachDB is a distributed SQL database built for cloud applications.",
+ "description": "MySQL is a popular open-source relational database.",
+ "logo": "mysql.jpg",
+ "homepage_url": "https://www.mysql.com/",
"pypi_packages": [
- "cockroachdb"
+ "mysqlclient"
],
- "connection_string": "cockroachdb://root@{hostname}:{port}/{database}?sslmode=disable",
- "docs_url": "https://github.com/cockroachdb/sqlalchemy-cockroachdb"
+ "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."
+ }
+ ]
},
- "engine": "cockroachdb",
- "engine_name": "CockroachDB",
- "engine_aliases": [
- "postgres"
- ],
- "default_driver": "psycopg2",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "Couchbase": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -1507,9 +274,9 @@
"HOUR": true,
"SIX_HOURS": false,
"DAY": true,
- "WEEK": false,
+ "WEEK": true,
"WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
+ "WEEK_STARTING_MONDAY": true,
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
@@ -1517,156 +284,234 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.couchbase",
- "limit_method": 1,
- "limit_clause": true,
- "joins": false,
- "subqueries": false,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "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": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "query_cancelation": true,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 27,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "SQLite": {
+ "engine": "sqlite",
+ "engine_name": "SQLite",
"documentation": {
- "description": "Couchbase is a distributed NoSQL document database with SQL support.",
- "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"
+ "description": "SQLite is a self-contained, serverless SQL database engine.",
+ "logo": "sqlite.jpg",
+ "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."
},
- "engine": "couchbase",
- "engine_name": "Couchbase",
- "engine_aliases": [
- "couchbasedb"
- ],
- "default_driver": "couchbase",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "CrateDB": {
"time_grains": {
"SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
+ "FIVE_SECONDS": true,
+ "THIRTY_SECONDS": true,
"MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
- "HALF_HOUR": false,
+ "FIVE_MINUTES": true,
+ "TEN_MINUTES": true,
+ "FIFTEEN_MINUTES": true,
+ "THIRTY_MINUTES": true,
+ "HALF_HOUR": true,
"HOUR": true,
- "SIX_HOURS": false,
+ "SIX_HOURS": true,
"DAY": true,
"WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
+ "WEEK_STARTING_SUNDAY": true,
+ "WEEK_STARTING_MONDAY": true,
+ "WEEK_ENDING_SATURDAY": true,
+ "WEEK_ENDING_SUNDAY": true,
"MONTH": true,
"QUARTER": true,
- "QUARTER_YEAR": false,
+ "QUARTER_YEAR": true,
"YEAR": true
},
- "module": "superset.db_engine_specs.crate",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 41,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
+ "ssh_tunneling": false,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 28,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "AWS Athena": {
+ "engine": "aws_athena",
+ "engine_name": "AWS Athena",
"documentation": {
- "description": "CrateDB is a distributed SQL database for machine data.",
+ "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
+ },
+ "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": [
- "sqlalchemy-cratedb"
+ "pydynamodb"
],
- "version_requirements": "sqlalchemy-cratedb>=0.40.1,<1",
- "default_port": 4200,
- "connection_examples": [
+ "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
+ },
+ "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": [
{
- "description": "Self-Managed (localhost)",
- "connection_string": "crate://crate@127.0.0.1:4200"
+ "name": "psycopg2",
+ "pypi_package": "psycopg2",
+ "connection_string": "redshift+psycopg2://{username}:{password}@{host}:5439/{database}",
+ "is_recommended": true
},
{
- "description": "CrateDB Cloud",
- "connection_string": "crate://{username}:{password}@{clustername}.cratedb.net:4200/?ssl=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."
}
],
- "install_instructions": "echo \"sqlalchemy-cratedb\" >> ./docker/requirements-local.txt",
- "docs_url": "https://cratedb.com/product/cloud"
+ "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>"
+ }
+ }
+ }
+ ]
},
- "engine": "crate",
- "engine_name": "CrateDB",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
+ "time_grains": {},
+ "score": 0,
+ "max_score": 0,
+ "joins": true,
+ "subqueries": true,
"supports_dynamic_schema": false,
"supports_catalog": false
},
- "Databend": {
+ "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": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
+ "FIVE_MINUTES": false,
+ "TEN_MINUTES": false,
+ "FIFTEEN_MINUTES": false,
"THIRTY_MINUTES": false,
"HALF_HOUR": false,
"HOUR": true,
@@ -1674,7 +519,7 @@
"DAY": true,
"WEEK": true,
"WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
+ "WEEK_STARTING_MONDAY": true,
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
@@ -1682,64 +527,57 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.databend",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 79,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": true,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": true,
- "user_impersonation": false,
- "file_upload": false,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": true,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": true,
+ "supports_catalog": true,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "query_cancelation": true,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 51,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Apache Drill": {
+ "engine": "apache_drill",
+ "engine_name": "Apache Drill",
"documentation": {
- "description": "Databend is an open-source cloud data warehouse.",
- "pypi_packages": [
- "databend-sqlalchemy"
+ "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/"
+ }
],
- "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"
+ "description": "Local embedded mode",
+ "connection_string": "drill+sadrill://localhost:8047/dfs?use_ssl=False"
}
]
},
- "engine": "databend",
- "engine_name": "Databend",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": false,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Databricks": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -1747,136 +585,83 @@
"MINUTE": true,
"FIVE_MINUTES": false,
"TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
+ "FIFTEEN_MINUTES": true,
+ "THIRTY_MINUTES": true,
"HALF_HOUR": false,
"HOUR": true,
"SIX_HOURS": false,
"DAY": true,
"WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
+ "WEEK_STARTING_SUNDAY": false,
"WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": true,
+ "WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
"QUARTER": true,
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.databricks",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 50,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": true,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
+ "supports_dynamic_schema": true,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": true,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 70,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Apache Druid": {
+ "engine": "apache_druid",
+ "engine_name": "Apache Druid",
"documentation": {
- "description": "Databricks is a unified analytics platform built on Apache Spark.",
+ "description": "Apache Druid is a high performance real-time analytics database.",
+ "logo": "druid.png",
+ "homepage_url": "https://druid.apache.org/",
"pypi_packages": [
- "databricks-sql-connector",
- "sqlalchemy-databricks"
+ "pydruid"
],
- "install_instructions": "pip install \"apache-superset[databricks]\"",
- "connection_string": "databricks+connector://token:{access_token}@{server_hostname}:{port}/{database_name}",
+ "connection_string": "druid://{username}:{password}@{host}:{port}/druid/v2/sql",
+ "default_port": 9088,
"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"
+ "username": "Database username",
+ "password": "Database password",
+ "host": "IP address or URL of the host",
+ "port": "Default 9088"
},
- "engine_parameters": [
- {
- "name": "HTTP Path (Required)",
- "description": "Must be specified in Engine Parameters",
- "json": {
+ "ssl_configuration": {
+ "custom_certificate": "Add certificate in Root Certificate field. pydruid will automatically use https.",
+ "disable_ssl_verification": {
+ "engine_params": {
"connect_args": {
- "http_path": "sql/protocolv1/o/****"
+ "scheme": "https",
+ "ssl_verify_cert": false
}
}
}
- ],
- "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"
- }
- ]
+ },
+ "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."
},
- "engine": "databricks",
- "engine_name": "Databricks",
- "engine_aliases": [],
- "default_driver": "databricks-sql-python",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "Databricks (legacy)": {
"time_grains": {
"SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
+ "FIVE_SECONDS": true,
+ "THIRTY_SECONDS": true,
"MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
+ "FIVE_MINUTES": true,
+ "TEN_MINUTES": true,
+ "FIFTEEN_MINUTES": true,
+ "THIRTY_MINUTES": true,
"HALF_HOUR": false,
"HOUR": true,
- "SIX_HOURS": false,
+ "SIX_HOURS": true,
"DAY": true,
"WEEK": true,
"WEEK_STARTING_SUNDAY": true,
@@ -1888,54 +673,32 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.databricks",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
+ "score": 47,
+ "max_score": 201,
+ "joins": false,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": true,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 70,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Apache Hive": {
+ "engine": "apache_hive",
+ "engine_name": "Apache Hive",
"documentation": {
- "pypi_packages": [],
- "connection_string": "databricks+connector://token:{access_token}@{host}:{port}/{database_name}"
+ "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}"
},
- "engine": "databricks",
- "engine_name": "Databricks (legacy)",
- "engine_aliases": [],
- "default_driver": "connector",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "Databricks Interactive Cluster": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -1959,56 +722,34 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.databricks",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 140,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": false,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 767,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": true,
- "user_impersonation": true,
- "file_upload": true,
- "get_extra_table_metadata": true,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
+ "supports_dynamic_schema": true,
+ "supports_catalog": true,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": true,
- "expand_data": true,
+ "supports_file_upload": true,
+ "user_impersonation": true,
"query_cost_estimation": true,
- "sql_validation": false,
- "score": 140,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Apache Impala": {
+ "engine": "apache_impala",
+ "engine_name": "Apache Impala",
"documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
+ "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}"
},
- "engine": "databricks",
- "engine_name": "Databricks Interactive Cluster",
- "engine_aliases": [],
- "default_driver": "pyhive",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "Databricks SQL Endpoint": {
"time_grains": {
- "SECOND": true,
+ "SECOND": false,
"FIVE_SECONDS": false,
"THIRTY_SECONDS": false,
"MINUTE": true,
@@ -2021,65 +762,43 @@
"SIX_HOURS": false,
"DAY": true,
"WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
+ "WEEK_STARTING_SUNDAY": false,
"WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": true,
+ "WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
"QUARTER": true,
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.databricks",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 37,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "query_cancelation": true,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 30,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Apache Kylin": {
+ "engine": "apache_kylin",
+ "engine_name": "Apache Kylin",
"documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
+ "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}"
},
- "engine": "databricks",
- "engine_name": "Databricks SQL Endpoint",
- "engine_aliases": [],
- "default_driver": "pyodbc",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Denodo": {
"time_grains": {
- "SECOND": false,
+ "SECOND": true,
"FIVE_SECONDS": false,
"THIRTY_SECONDS": false,
"MINUTE": true,
@@ -2101,67 +820,59 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.denodo",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 28,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 27,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Apache Pinot": {
+ "engine": "apache_pinot",
+ "engine_name": "Apache Pinot",
"documentation": {
- "description": "Denodo is a data virtualization platform.",
+ "description": "Apache Pinot is a real-time distributed OLAP datastore.",
+ "logo": "apache-pinot.svg",
+ "homepage_url": "https://pinot.apache.org/",
"pypi_packages": [
- "denodo-sqlalchemy"
+ "pinotdb"
],
- "connection_string": "denodo://{username}:{password}@{hostname}:{port}/{database}",
- "default_port": 9996
+ "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"
+ }
+ ]
},
- "engine": "denodo",
- "engine_name": "Denodo",
- "engine_aliases": [],
- "default_driver": "psycopg2",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Dremio": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
"THIRTY_SECONDS": false,
"MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
+ "FIVE_MINUTES": true,
+ "TEN_MINUTES": true,
+ "FIFTEEN_MINUTES": true,
+ "THIRTY_MINUTES": true,
"HALF_HOUR": false,
"HOUR": true,
"SIX_HOURS": false,
@@ -2176,151 +887,79 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.dremio",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "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,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 28,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Apache Solr": {
+ "engine": "apache_solr",
+ "engine_name": "Apache Solr",
"documentation": {
- "description": "Dremio is a data lake engine for self-service analytics.",
+ "description": "Apache Solr is an open-source enterprise search platform.",
+ "homepage_url": "https://solr.apache.org/",
"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
- }
+ "sqlalchemy-solr"
],
- "tutorials": [
- "https://www.dremio.com/tutorials/dremio-apache-superset/"
- ]
+ "connection_string": "solr://{username}:{password}@{host}:{port}/{server_path}/{collection}[/?use_ssl=true|false]"
},
- "engine": "dremio",
- "engine_name": "Dremio",
- "engine_aliases": [
- "dremio+flight"
- ],
- "default_driver": "flight",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "DuckDB": {
"time_grains": {
- "SECOND": true,
+ "SECOND": false,
"FIVE_SECONDS": false,
"THIRTY_SECONDS": false,
- "MINUTE": true,
+ "MINUTE": false,
"FIVE_MINUTES": false,
"TEN_MINUTES": false,
"FIFTEEN_MINUTES": false,
"THIRTY_MINUTES": false,
"HALF_HOUR": false,
- "HOUR": true,
+ "HOUR": false,
"SIX_HOURS": false,
- "DAY": true,
- "WEEK": true,
+ "DAY": false,
+ "WEEK": false,
"WEEK_STARTING_SUNDAY": false,
"WEEK_STARTING_MONDAY": false,
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
+ "MONTH": false,
+ "QUARTER": false,
"QUARTER_YEAR": false,
- "YEAR": true
+ "YEAR": false
},
- "module": "superset.db_engine_specs.duckdb",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": 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,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 38,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Apache Spark SQL": {
+ "engine": "apache_spark_sql",
+ "engine_name": "Apache Spark SQL",
"documentation": {
- "description": "DuckDB is an in-process analytical database.",
+ "description": "Apache Spark SQL is a module for structured data processing.",
+ "homepage_url": "https://spark.apache.org/sql/",
"pypi_packages": [
- "duckdb-engine"
+ "pyhive"
],
- "connection_string": "duckdb:///path/to/file.db",
- "notes": "Great for local development. In-process database, no server needed."
+ "connection_string": "hive://hive@{hostname}:{port}/{database}"
},
- "engine": "duckdb",
- "engine_name": "DuckDB",
- "engine_aliases": [],
- "default_driver": "duckdb_engine",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "ElasticSearch (OpenDistro SQL)": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -2334,73 +973,111 @@
"HOUR": true,
"SIX_HOURS": false,
"DAY": true,
- "WEEK": false,
- "WEEK_STARTING_SUNDAY": false,
+ "WEEK": true,
+ "WEEK_STARTING_SUNDAY": true,
"WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
+ "WEEK_ENDING_SATURDAY": true,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
- "QUARTER": false,
+ "QUARTER": true,
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.elasticsearch",
- "limit_method": 1,
- "limit_clause": true,
- "joins": false,
+ "score": 140,
+ "max_score": 201,
+ "joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": true,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": false,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": true,
+ "supports_catalog": true,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 26,
- "max_score": 201,
+ "query_cancelation": true,
+ "supports_file_upload": true,
+ "user_impersonation": true,
+ "query_cost_estimation": true,
+ "sql_validation": false
+ },
+ "Arc": {
+ "engine": "arc",
+ "engine_name": "Arc",
"documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
+ "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."
},
- "engine": "odelasticsearch",
- "engine_name": "ElasticSearch (OpenDistro SQL)",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
+ "time_grains": {},
+ "score": 0,
+ "max_score": 0,
+ "joins": true,
+ "subqueries": true,
+ "supports_dynamic_schema": false,
+ "supports_catalog": 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
},
- "ElasticSearch (SQL API)": {
+ "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": true,
+ "SECOND": false,
"FIVE_SECONDS": false,
"THIRTY_SECONDS": false,
"MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
+ "FIVE_MINUTES": true,
+ "TEN_MINUTES": true,
+ "FIFTEEN_MINUTES": true,
+ "THIRTY_MINUTES": true,
"HALF_HOUR": false,
"HOUR": true,
"SIX_HOURS": false,
@@ -2411,67 +1088,64 @@
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
- "QUARTER": false,
+ "QUARTER": true,
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.elasticsearch",
- "limit_method": 1,
- "limit_clause": true,
- "joins": false,
+ "score": 51,
+ "max_score": 201,
+ "joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": true,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": false,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": true,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": false,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 37,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Cloudflare D1": {
+ "engine": "cloudflare_d1",
+ "engine_name": "Cloudflare D1",
"documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
+ "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
+ },
+ "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"
},
- "engine": "elasticsearch",
- "engine_name": "ElasticSearch (SQL API)",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Exasol": {
"time_grains": {
"SECOND": true,
- "FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
+ "FIVE_SECONDS": true,
+ "THIRTY_SECONDS": true,
"MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
+ "FIVE_MINUTES": true,
+ "TEN_MINUTES": true,
+ "FIFTEEN_MINUTES": true,
+ "THIRTY_MINUTES": true,
"HALF_HOUR": false,
"HOUR": true,
"SIX_HOURS": false,
@@ -2486,58 +1160,34 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.exasol",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 94,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 128,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": true,
+ "supports_catalog": true,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 28,
- "max_score": 201,
+ "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": "Exasol is a high-performance in-memory analytics database.",
+ "description": "Couchbase is a distributed NoSQL document database with SQL support.",
+ "logo": "couchbase.svg",
+ "homepage_url": "https://www.couchbase.com/",
"pypi_packages": [
- "sqlalchemy-exasol"
+ "couchbase-sqlalchemy"
],
- "connection_string": "exa+pyodbc://{username}:{password}@{hostname}:{port}/{schema}?CONNECTIONLCALL=en_US.UTF-8&driver=EXAODBC",
- "docs_url": "https://github.com/exasol/sqlalchemy-exasol"
+ "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"
},
- "engine": "exa",
- "engine_name": "Exasol",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Firebird": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -2557,68 +1207,48 @@
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
- "QUARTER": false,
+ "QUARTER": true,
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.firebird",
- "limit_method": 3,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "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,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 26,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "CrateDB": {
+ "engine": "cratedb",
+ "engine_name": "CrateDB",
"documentation": {
- "description": "Firebird is an open-source relational database.",
+ "description": "CrateDB is a distributed SQL database for machine data.",
+ "homepage_url": "https://cratedb.com/",
"pypi_packages": [
- "sqlalchemy-firebird"
+ "sqlalchemy-cratedb"
],
- "version_requirements": "sqlalchemy-firebird>=0.7.0,<0.8",
- "connection_string": "firebird+fdb://{username}:{password}@{host}:{port}//{path_to_db_file}",
+ "version_requirements": "sqlalchemy-cratedb>=0.40.1,<1",
+ "default_port": 4200,
"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"
+ "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"
},
- "engine": "firebird",
- "engine_name": "Firebird",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Firebolt": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -2642,161 +1272,47 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.firebolt",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 28,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 28,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Databend": {
+ "engine": "databend",
+ "engine_name": "Databend",
"documentation": {
- "description": "Firebolt is a cloud data warehouse for sub-second analytics.",
+ "description": "Databend is an open-source cloud data warehouse.",
+ "logo": "databend.png",
+ "homepage_url": "https://www.databend.com/",
"pypi_packages": [
- "firebolt-sqlalchemy"
+ "databend-sqlalchemy"
],
+ "version_requirements": "databend-sqlalchemy>=0.2.3",
+ "connection_string": "databend://{username}:{password}@{host}:{port}/{database_name}",
"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}"
+ "description": "Local connection",
+ "connection_string": "databend://user:password@localhost:8000/default?secure=false"
}
]
},
- "engine": "firebolt",
- "engine_name": "Firebolt",
- "engine_aliases": [],
- "default_driver": "firebolt",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Google Sheets": {
"time_grains": {
"SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
+ "FIVE_SECONDS": false,
+ "THIRTY_SECONDS": false,
"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
- },
- "module": "superset.db_engine_specs.gsheets",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": true,
- "user_impersonation": true,
- "file_upload": true,
- "get_extra_table_metadata": true,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 61,
- "max_score": 201,
- "documentation": {
- "description": "Query Google Sheets using SQL via the shillelagh library.",
- "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"
- },
- "engine": "gsheets",
- "engine_name": "Google Sheets",
- "engine_aliases": [],
- "default_driver": "apsw",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "IBM Db2": {
- "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,
@@ -2812,72 +1328,83 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.db2",
- "limit_method": 2,
- "limit_clause": true,
+ "score": 51,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 30,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": false,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 38,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Databricks": {
+ "engine": "databricks",
+ "engine_name": "Databricks",
"documentation": {
- "description": "IBM Db2 is a family of data management products.",
+ "description": "Databricks is a unified analytics platform built on Apache Spark.",
+ "logo": "databricks.png",
+ "homepage_url": "https://www.databricks.com/",
"pypi_packages": [
- "ibm_db_sa"
+ "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": "ibm_db_sa (with LIMIT)",
- "connection_string": "db2+ibm_db://{username}:{password}@{hostname}:{port}/{database}",
+ "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": "ibm_db_sa (without LIMIT syntax)",
- "connection_string": "ibm_db_sa://{username}:{password}@{hostname}:{port}/{database}",
+ "name": "databricks-dbapi (Legacy)",
+ "pypi_package": "databricks-dbapi[sqlalchemy]",
"is_recommended": false,
- "notes": "Use for older DB2 versions without LIMIT [n] syntax. Recommended for SQL Lab."
+ "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"
}
- ],
- "docs_url": "https://github.com/ibmdb/python-ibmdbsa"
+ ]
},
- "engine": "db2",
- "engine_name": "IBM Db2",
- "engine_aliases": [
- "ibm_db_sa"
- ],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false
- },
- "IBM Db2 for i": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -2892,67 +1419,44 @@
"SIX_HOURS": false,
"DAY": true,
"WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
+ "WEEK_STARTING_SUNDAY": true,
"WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
+ "WEEK_ENDING_SATURDAY": true,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
"QUARTER": true,
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.ibmi",
- "limit_method": 2,
- "limit_clause": true,
+ "score": 70,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 128,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": true,
+ "supports_catalog": true,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 38,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Denodo": {
+ "engine": "denodo",
+ "engine_name": "Denodo",
"documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
+ "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
},
- "engine": "ibmi",
- "engine_name": "IBM Db2 for i",
- "engine_aliases": [
- "ibm_db_sa"
- ],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false
- },
- "IBM Netezza Performance Server": {
"time_grains": {
- "SECOND": true,
+ "SECOND": false,
"FIVE_SECONDS": false,
"THIRTY_SECONDS": false,
"MINUTE": true,
@@ -2974,63 +1478,58 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.netezza",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 27,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 28,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Dremio": {
+ "engine": "dremio",
+ "engine_name": "Dremio",
"documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
+ "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/"
+ ]
},
- "engine": "netezza",
- "engine_name": "IBM Netezza Performance Server",
- "engine_aliases": [],
- "default_driver": "nzpy",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "KustoKQL": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
- "THIRTY_SECONDS": true,
+ "THIRTY_SECONDS": false,
"MINUTE": true,
- "FIVE_MINUTES": true,
+ "FIVE_MINUTES": false,
"TEN_MINUTES": false,
"FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": true,
+ "THIRTY_MINUTES": false,
"HALF_HOUR": false,
"HOUR": true,
"SIX_HOURS": false,
@@ -3041,129 +1540,36 @@
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
- "QUARTER": false,
+ "QUARTER": true,
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.kusto",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 28,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": true,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": false,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": true,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 40,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
- },
- "engine": "kustokql",
- "engine_name": "KustoKQL",
- "engine_aliases": [],
- "default_driver": null,
"supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "KustoSQL": {
- "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": true,
- "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
- },
- "module": "superset.db_engine_specs.kusto",
- "limit_method": 2,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": true,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": false,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
"user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": true,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 54,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "DuckDB": {
+ "engine": "duckdb",
+ "engine_name": "DuckDB",
"documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
+ "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."
},
- "engine": "kustosql",
- "engine_name": "KustoSQL",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "MariaDB": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -3179,7 +1585,7 @@
"DAY": true,
"WEEK": true,
"WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": true,
+ "WEEK_STARTING_MONDAY": false,
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
@@ -3187,149 +1593,83 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.mariadb",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 64,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 59,
+ "score": 38,
"max_score": 201,
- "documentation": {
- "description": "MariaDB is a community-developed fork of MySQL.",
- "pypi_packages": [
- "mysqlclient"
- ],
- "connection_string": "mysql://{username}:{password}@{host}/{database}",
- "default_port": 3306,
- "notes": "Uses the MySQL driver. Fully compatible with MySQL connector."
- },
- "engine": "mariadb",
- "engine_name": "MariaDB",
- "engine_aliases": [],
- "default_driver": "mysqldb",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false
- },
- "Microsoft SQL Server": {
- "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
- },
- "module": "superset.db_engine_specs.mssql",
- "limit_method": 1,
- "limit_clause": true,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": false,
- "max_column_name": 128,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 44,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Elasticsearch": {
+ "engine": "elasticsearch",
+ "engine_name": "Elasticsearch",
"documentation": {
- "description": "Microsoft SQL Server is a relational database management system.",
+ "description": "Elasticsearch is a distributed search and analytics engine.",
+ "homepage_url": "https://www.elastic.co/elasticsearch/",
"pypi_packages": [
- "pymssql"
+ "elasticsearch-dbapi"
],
- "default_port": 1433,
- "drivers": [
+ "connection_string": "elasticsearch+http://{username}:{password}@{host}:9200/",
+ "default_port": 9200,
+ "connection_examples": [
{
- "name": "pymssql",
- "pypi_package": "pymssql",
- "connection_string": "mssql+pymssql://{username}:{password}@{host}:{port}/{database}",
- "is_recommended": true
+ "description": "HTTPS",
+ "connection_string": "elasticsearch+https://{username}:{password}@{host}:9200/"
},
{
- "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."
+ "description": "Disable SSL verification",
+ "connection_string": "elasticsearch+https://{username}:{password}@{host}:9200/?verify_certs=False"
}
],
- "docs_url": "https://docs.sqlalchemy.org/en/20/core/engines.html#escaping-special-characters-such-as-signs-in-passwords"
+ "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"
},
- "engine": "mssql",
- "engine_name": "Microsoft SQL Server",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
+ "time_grains": {},
+ "score": 0,
+ "max_score": 0,
+ "joins": true,
+ "subqueries": true,
"supports_dynamic_schema": false,
"supports_catalog": false
},
- "MotherDuck": {
+ "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,
@@ -3353,56 +1693,39 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.duckdb",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 28,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": true,
- "dynamic_catalog": true,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 58,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Firebird": {
+ "engine": "firebird",
+ "engine_name": "Firebird",
"documentation": {
- "pypi_packages": [],
- "connection_string": "duckdb:///md:{database_name}?motherduck_token={SERVICE_TOKEN}"
+ "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"
+ }
+ ]
},
- "engine": "motherduck",
- "engine_name": "MotherDuck",
- "engine_aliases": [
- "duckdb"
- ],
- "default_driver": "duckdb_engine",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": true
- },
- "MySQL": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -3416,108 +1739,59 @@
"HOUR": true,
"SIX_HOURS": false,
"DAY": true,
- "WEEK": true,
+ "WEEK": false,
"WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": true,
+ "WEEK_STARTING_MONDAY": false,
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
- "QUARTER": true,
+ "QUARTER": false,
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.mysql",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 26,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 64,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "query_cancelation": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 59,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Firebolt": {
+ "engine": "firebolt",
+ "engine_name": "Firebolt",
"documentation": {
- "description": "MySQL is a popular open-source relational database.",
+ "description": "Firebolt is a cloud data warehouse for sub-second analytics.",
+ "logo": "firebolt.png",
+ "homepage_url": "https://www.firebolt.io/",
"pypi_packages": [
- "mysqlclient"
+ "firebolt-sqlalchemy"
],
- "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"
- },
+ "connection_examples": [
{
- "platform": "Docker on Linux",
- "host": "172.18.0.1"
+ "description": "User authentication",
+ "connection_string": "firebolt://{username}:{password}@{database}?account_name={name}"
},
{
- "platform": "Docker on macOS",
- "host": "docker.for.mac.host.internal"
+ "description": "User auth with engine",
+ "connection_string": "firebolt://{username}:{password}@{database}/{engine_name}?account_name={name}"
},
{
- "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."
+ "description": "Service account",
+ "connection_string": "firebolt://{client_id}:{client_secret}@{database}?account_name={name}"
},
{
- "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."
+ "description": "Service account with engine",
+ "connection_string": "firebolt://{client_id}:{client_secret}@{database}/{engine_name}?account_name={name}"
}
]
},
- "engine": "mysql",
- "engine_name": "MySQL",
- "engine_aliases": [],
- "default_driver": "mysqldb",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false
- },
- "OceanBase": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -3533,7 +1807,7 @@
"DAY": true,
"WEEK": true,
"WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": true,
+ "WEEK_STARTING_MONDAY": false,
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
@@ -3541,60 +1815,135 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.oceanbase",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 28,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 128,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "query_cancelation": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 59,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Google BigQuery": {
+ "engine": "google_bigquery",
+ "engine_name": "Google BigQuery",
"documentation": {
- "description": "OceanBase is a distributed relational database.",
+ "description": "Google BigQuery is a serverless, highly scalable data warehouse.",
+ "logo": "google-big-query.svg",
+ "homepage_url": "https://cloud.google.com/bigquery/",
"pypi_packages": [
- "oceanbase_py"
+ "sqlalchemy-bigquery"
],
- "connection_string": "oceanbase://{username}:{password}@{host}:{port}/{database}"
+ "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"
},
- "engine": "oceanbase",
- "engine_name": "OceanBase",
- "engine_aliases": [
- "oceanbase_py",
- "oceanbase"
- ],
- "default_driver": "oceanbase",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
+ "time_grains": {},
+ "score": 0,
+ "max_score": 0,
+ "joins": true,
+ "subqueries": true,
+ "supports_dynamic_schema": false,
"supports_catalog": false
},
- "Ocient": {
+ "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.jpg",
+ "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,
@@ -3608,68 +1957,53 @@
"HOUR": true,
"SIX_HOURS": false,
"DAY": true,
- "WEEK": 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": true,
+ "QUARTER": true,
+ "QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.ocient",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 27,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": false,
- "max_column_name": 30,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "query_cancelation": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 38,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "IBM Db2": {
+ "engine": "ibm_db2",
+ "engine_name": "IBM Db2",
"documentation": {
- "description": "Ocient is a hyperscale data analytics database.",
+ "description": "IBM Db2 is a family of data management products.",
"pypi_packages": [
- "sqlalchemy-ocient"
+ "ibm_db_sa"
],
- "connection_string": "ocient://{username}:{password}@{host}:{port}/{database}",
- "install_instructions": "pip install sqlalchemy-ocient"
+ "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"
},
- "engine": "ocient",
- "engine_name": "Ocient",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Oracle": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -3693,59 +2027,83 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.oracle",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 38,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 128,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": true,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 28,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "IBM Netezza": {
+ "engine": "ibm_netezza",
+ "engine_name": "IBM Netezza",
"documentation": {
- "description": "Oracle Database is a multi-model database management system.",
+ "description": "IBM Netezza Performance Server is a data warehouse appliance.",
+ "logo": "netezza.png",
+ "homepage_url": "https://www.ibm.com/products/netezza",
"pypi_packages": [
- "oracledb"
+ "nzalchemy"
],
- "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"
+ "connection_string": "netezza+nzpy://{username}:{password}@{hostname}:{port}/{database}"
},
- "engine": "oracle",
- "engine_name": "Oracle",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
+ "time_grains": {},
+ "score": 0,
+ "max_score": 0,
+ "joins": true,
+ "subqueries": true,
+ "supports_dynamic_schema": false,
+ "supports_catalog": 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
},
- "Parseable": {
+ "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,
@@ -3761,7 +2119,7 @@
"DAY": true,
"WEEK": true,
"WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
+ "WEEK_STARTING_MONDAY": true,
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
@@ -3769,69 +2127,52 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.parseable",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 59,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": true,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "query_cancelation": true,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 28,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Microsoft SQL Server": {
+ "engine": "microsoft_sql_server",
+ "engine_name": "Microsoft SQL Server",
"documentation": {
- "description": "Parseable is a distributed log analytics database with SQL-like query interface.",
+ "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": [
- "sqlalchemy-parseable"
+ "pymssql"
],
- "connection_string": "parseable://{username}:{password}@{hostname}:{port}/{stream_name}",
- "connection_examples": [
+ "default_port": 1433,
+ "drivers": [
{
- "description": "Example connection",
- "connection_string": "parseable://admin:admin@demo.parseable.com:443/ingress-nginx"
+ "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."
}
],
- "notes": "Stream name in URI represents the Parseable logstream to query. Supports HTTP (80) and HTTPS (443).",
- "docs_url": "https://www.parseable.io"
+ "docs_url": "https://docs.sqlalchemy.org/en/20/core/engines.html#escaping-special-characters-such-as-signs-in-passwords"
},
- "engine": "parseable",
- "engine_name": "Parseable",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "PostgreSQL": {
"time_grains": {
"SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
+ "FIVE_SECONDS": false,
+ "THIRTY_SECONDS": false,
"MINUTE": true,
"FIVE_MINUTES": true,
"TEN_MINUTES": true,
@@ -3842,8 +2183,8 @@
"SIX_HOURS": false,
"DAY": true,
"WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
+ "WEEK_STARTING_SUNDAY": true,
+ "WEEK_STARTING_MONDAY": true,
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
@@ -3851,241 +2192,89 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.postgres",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 44,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 63,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": true,
- "sql_validation": true,
- "score": 104,
- "max_score": 201,
+ "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": "PostgreSQL is an advanced open-source relational database.",
+ "description": "OceanBase is a distributed relational database.",
+ "logo": "oceanbase.svg",
+ "homepage_url": "https://www.oceanbase.com/",
"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"
- }
+ "oceanbase_py"
],
- "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.",
- "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.",
- "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.",
- "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/"
- }
- ]
+ "connection_string": "oceanbase://{username}:{password}@{host}:{port}/{database}"
},
- "engine": "postgresql",
- "engine_name": "PostgreSQL",
- "engine_aliases": [
- "postgres"
- ],
- "default_driver": "psycopg2",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "Presto": {
"time_grains": {
"SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
+ "FIVE_SECONDS": false,
+ "THIRTY_SECONDS": false,
"MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
+ "FIVE_MINUTES": false,
+ "TEN_MINUTES": false,
+ "FIFTEEN_MINUTES": false,
"THIRTY_MINUTES": false,
- "HALF_HOUR": true,
+ "HALF_HOUR": false,
"HOUR": true,
- "SIX_HOURS": true,
+ "SIX_HOURS": false,
"DAY": true,
"WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
+ "WEEK_STARTING_SUNDAY": false,
"WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": true,
+ "WEEK_ENDING_SATURDAY": false,
+ "WEEK_ENDING_SUNDAY": false,
"MONTH": true,
"QUARTER": true,
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.presto",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 59,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": true,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": true,
- "user_impersonation": true,
- "file_upload": true,
- "get_extra_table_metadata": true,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
+ "supports_dynamic_schema": true,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": true,
- "expand_data": true,
- "query_cost_estimation": true,
- "sql_validation": true,
- "score": 159,
- "max_score": 201,
+ "supports_file_upload": true,
+ "user_impersonation": false,
+ "query_cost_estimation": false,
+ "sql_validation": false
+ },
+ "Ocient": {
+ "engine": "ocient",
+ "engine_name": "Ocient",
"documentation": {
- "description": "Presto is a distributed SQL query engine for big data.",
+ "description": "Ocient is a hyperscale data analytics database.",
"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"
- }
+ "sqlalchemy-ocient"
],
- "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
- }
- }
- }
- }
- ]
+ "connection_string": "ocient://{username}:{password}@{host}:{port}/{database}",
+ "install_instructions": "pip install sqlalchemy-ocient"
},
- "engine": "presto",
- "engine_name": "Presto",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "RisingWave": {
"time_grains": {
"SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
+ "FIVE_SECONDS": false,
+ "THIRTY_SECONDS": false,
"MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
+ "FIVE_MINUTES": false,
+ "TEN_MINUTES": false,
+ "FIFTEEN_MINUTES": false,
+ "THIRTY_MINUTES": false,
"HALF_HOUR": false,
"HOUR": true,
"SIX_HOURS": false,
@@ -4096,64 +2285,38 @@
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
- "QUARTER": true,
- "QUARTER_YEAR": false,
+ "QUARTER": false,
+ "QUARTER_YEAR": true,
"YEAR": true
},
- "module": "superset.db_engine_specs.risingwave",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 38,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 63,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": true,
- "sql_validation": false,
- "score": 94,
- "max_score": 201,
+ "supports_file_upload": true,
+ "user_impersonation": false,
+ "query_cost_estimation": false,
+ "sql_validation": false
+ },
+ "Oracle": {
+ "engine": "oracle",
+ "engine_name": "Oracle",
"documentation": {
- "description": "RisingWave is a distributed streaming database.",
+ "description": "Oracle Database is a multi-model database management system.",
+ "logo": "oraclelogo.png",
+ "homepage_url": "https://www.oracle.com/database/",
"pypi_packages": [
- "sqlalchemy-risingwave"
+ "oracledb"
],
- "connection_string": "risingwave://root@{hostname}:{port}/{database}?sslmode=disable",
- "docs_url": "https://github.com/risingwavelabs/sqlalchemy-risingwave"
+ "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"
},
- "engine": "risingwave",
- "engine_name": "RisingWave",
- "engine_aliases": [
- "postgres"
- ],
- "default_driver": "",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "SAP HANA": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -4167,7 +2330,7 @@
"HOUR": true,
"SIX_HOURS": false,
"DAY": true,
- "WEEK": false,
+ "WEEK": true,
"WEEK_STARTING_SUNDAY": false,
"WEEK_STARTING_MONDAY": false,
"WEEK_ENDING_SATURDAY": false,
@@ -4177,133 +2340,122 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.hana",
- "limit_method": 2,
- "limit_clause": true,
+ "score": 28,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 30,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 27,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Parseable": {
+ "engine": "parseable",
+ "engine_name": "Parseable",
"documentation": {
- "description": "SAP HANA is an in-memory relational database and application platform.",
+ "description": "Parseable is a distributed log analytics database with SQL-like query interface.",
"pypi_packages": [
- "hdbcli",
- "sqlalchemy-hana"
+ "sqlalchemy-parseable"
],
- "install_instructions": "pip install apache_superset[hana]",
- "connection_string": "hana://{username}:{password}@{host}:{port}",
- "docs_url": "https://github.com/SAP/sqlalchemy-hana"
+ "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"
},
- "engine": "hana",
- "engine_name": "SAP HANA",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "SQLite": {
"time_grains": {
"SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
+ "FIVE_SECONDS": false,
+ "THIRTY_SECONDS": false,
"MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": true,
+ "FIVE_MINUTES": false,
+ "TEN_MINUTES": false,
+ "FIFTEEN_MINUTES": false,
+ "THIRTY_MINUTES": false,
+ "HALF_HOUR": false,
"HOUR": true,
- "SIX_HOURS": true,
+ "SIX_HOURS": false,
"DAY": true,
"WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": true,
+ "WEEK_STARTING_SUNDAY": false,
+ "WEEK_STARTING_MONDAY": false,
+ "WEEK_ENDING_SATURDAY": false,
+ "WEEK_ENDING_SUNDAY": false,
"MONTH": true,
"QUARTER": true,
- "QUARTER_YEAR": true,
+ "QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.sqlite",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 28,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": true,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
+ "ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 41,
- "max_score": 201,
+ "sql_validation": false
+ },
+ "Presto": {
+ "engine": "presto",
+ "engine_name": "Presto",
"documentation": {
- "description": "SQLite is a self-contained, serverless SQL database engine.",
- "pypi_packages": [],
- "connection_string": "sqlite:///path/to/file.db?check_same_thread=false",
- "notes": "No additional library needed. SQLite is bundled with Python."
+ "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
+ }
+ }
+ }
+ }
+ ]
},
- "engine": "sqlite",
- "engine_name": "SQLite",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Shillelagh": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": true,
@@ -4312,7 +2464,7 @@
"FIVE_MINUTES": true,
"TEN_MINUTES": true,
"FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
+ "THIRTY_MINUTES": false,
"HALF_HOUR": true,
"HOUR": true,
"SIX_HOURS": true,
@@ -4324,66 +2476,43 @@
"WEEK_ENDING_SUNDAY": true,
"MONTH": true,
"QUARTER": true,
- "QUARTER_YEAR": true,
+ "QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.shillelagh",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 159,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": true,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 41,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "shillelagh://"
- },
- "engine": "shillelagh",
- "engine_name": "Shillelagh",
- "engine_aliases": [],
- "default_driver": "apsw",
+ "supports_dynamic_schema": true,
+ "supports_catalog": true,
+ "supports_dynamic_catalog": false,
+ "ssh_tunneling": true,
+ "query_cancelation": true,
"supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
+ "user_impersonation": true,
+ "query_cost_estimation": true,
+ "sql_validation": true
},
- "SingleStore": {
+ "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": false,
- "THIRTY_SECONDS": false,
+ "FIVE_SECONDS": true,
+ "THIRTY_SECONDS": true,
"MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
+ "FIVE_MINUTES": true,
+ "TEN_MINUTES": true,
+ "FIFTEEN_MINUTES": true,
+ "THIRTY_MINUTES": true,
"HALF_HOUR": false,
"HOUR": true,
"SIX_HOURS": false,
@@ -4398,41 +2527,23 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.singlestore",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 94,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 256,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": true,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": true,
+ "supports_catalog": true,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 68,
- "max_score": 201,
+ "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": [
@@ -4441,24 +2552,15 @@
"connection_string": "singlestoredb://{username}:{password}@{host}:{port}/{database}",
"docs_url": "https://github.com/singlestore-labs/sqlalchemy-singlestoredb"
},
- "engine": "singlestoredb",
- "engine_name": "SingleStore",
- "engine_aliases": [],
- "default_driver": "singlestoredb",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false
- },
- "Snowflake": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
"THIRTY_SECONDS": false,
"MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
+ "FIVE_MINUTES": false,
+ "TEN_MINUTES": false,
+ "FIFTEEN_MINUTES": false,
+ "THIRTY_MINUTES": false,
"HALF_HOUR": false,
"HOUR": true,
"SIX_HOURS": false,
@@ -4473,43 +2575,27 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.snowflake",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 68,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 256,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
+ "supports_dynamic_schema": true,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 72,
- "max_score": 201,
+ "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"
],
@@ -4554,31 +2640,22 @@
"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"
},
- "engine": "snowflake",
- "engine_name": "Snowflake",
- "engine_aliases": [],
- "default_driver": "snowflake",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "StarRocks": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
"THIRTY_SECONDS": false,
"MINUTE": true,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
+ "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": true,
+ "WEEK_STARTING_MONDAY": false,
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
"MONTH": true,
@@ -4586,43 +2663,27 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.starrocks",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 72,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 64,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": false,
- "user_impersonation": true,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": true,
+ "supports_catalog": true,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 69,
- "max_score": 201,
+ "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"
],
@@ -4637,86 +2698,6 @@
},
"docs_url": "https://docs.starrocks.io/docs/integrations/BI_integrations/Superset/"
},
- "engine": "starrocks",
- "engine_name": "StarRocks",
- "engine_aliases": [],
- "default_driver": "starrocks",
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": false
- },
- "Superset meta database": {
- "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
- },
- "module": "superset.db_engine_specs.superset",
- "limit_method": 1,
- "limit_clause": true,
- "joins": true,
- "subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": true,
- "user_impersonation": false,
- "file_upload": false,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
- "ssh_tunneling": false,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 31,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "superset://"
- },
- "engine": "superset",
- "engine_name": "Superset meta database",
- "engine_aliases": [],
- "default_driver": "",
- "supports_file_upload": false,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "TDengine": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": false,
@@ -4732,51 +2713,35 @@
"DAY": true,
"WEEK": true,
"WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
+ "WEEK_STARTING_MONDAY": true,
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
- "MONTH": false,
- "QUARTER": false,
+ "MONTH": true,
+ "QUARTER": true,
"QUARTER_YEAR": false,
- "YEAR": false
+ "YEAR": true
},
- "module": "superset.db_engine_specs.tdengine",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 69,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 64,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": true,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "query_cancelation": true,
+ "supports_file_upload": true,
+ "user_impersonation": true,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 25,
- "max_score": 201,
+ "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"
@@ -4791,17 +2756,8 @@
],
"docs_url": "https://www.tdengine.com"
},
- "engine": "taosws",
- "engine_name": "TDengine",
- "engine_aliases": [],
- "default_driver": "taosws",
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Teradata": {
"time_grains": {
- "SECOND": false,
+ "SECOND": true,
"FIVE_SECONDS": false,
"THIRTY_SECONDS": false,
"MINUTE": true,
@@ -4818,48 +2774,32 @@
"WEEK_STARTING_MONDAY": false,
"WEEK_ENDING_SATURDAY": false,
"WEEK_ENDING_SUNDAY": false,
- "MONTH": true,
- "QUARTER": true,
+ "MONTH": false,
+ "QUARTER": false,
"QUARTER_YEAR": false,
- "YEAR": true
+ "YEAR": false
},
- "module": "superset.db_engine_specs.teradata",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 25,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": 30,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 27,
- "max_score": 201,
+ "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"
],
@@ -4885,75 +2825,50 @@
}
]
},
- "engine": "teradatasql",
- "engine_name": "Teradata",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "Trino": {
"time_grains": {
- "SECOND": true,
- "FIVE_SECONDS": true,
- "THIRTY_SECONDS": true,
+ "SECOND": false,
+ "FIVE_SECONDS": false,
+ "THIRTY_SECONDS": false,
"MINUTE": true,
- "FIVE_MINUTES": true,
- "TEN_MINUTES": true,
- "FIFTEEN_MINUTES": true,
+ "FIVE_MINUTES": false,
+ "TEN_MINUTES": false,
+ "FIFTEEN_MINUTES": false,
"THIRTY_MINUTES": false,
- "HALF_HOUR": true,
+ "HALF_HOUR": false,
"HOUR": true,
- "SIX_HOURS": true,
+ "SIX_HOURS": false,
"DAY": true,
"WEEK": true,
- "WEEK_STARTING_SUNDAY": true,
- "WEEK_STARTING_MONDAY": true,
- "WEEK_ENDING_SATURDAY": true,
- "WEEK_ENDING_SUNDAY": 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
},
- "module": "superset.db_engine_specs.trino",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 27,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": true,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": true,
- "function_names": true,
- "user_impersonation": true,
- "file_upload": true,
- "get_extra_table_metadata": true,
- "dbapi_exception_mapping": true,
- "custom_errors": false,
- "dynamic_schema": true,
- "catalog": true,
- "dynamic_catalog": true,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": true,
- "get_metrics": false,
- "where_latest_partition": true,
- "expand_data": false,
- "query_cost_estimation": true,
- "sql_validation": false,
- "score": 149,
- "max_score": 201,
+ "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"
],
@@ -5034,15 +2949,6 @@
"https://trino.io/episodes/12.html"
]
},
- "engine": "trino",
- "engine_name": "Trino",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": true,
- "supports_catalog": true
- },
- "Vertica": {
"time_grains": {
"SECOND": true,
"FIVE_SECONDS": true,
@@ -5051,58 +2957,42 @@
"FIVE_MINUTES": true,
"TEN_MINUTES": true,
"FIFTEEN_MINUTES": true,
- "THIRTY_MINUTES": true,
- "HALF_HOUR": false,
+ "THIRTY_MINUTES": false,
+ "HALF_HOUR": true,
"HOUR": true,
- "SIX_HOURS": false,
+ "SIX_HOURS": true,
"DAY": true,
"WEEK": true,
- "WEEK_STARTING_SUNDAY": false,
- "WEEK_STARTING_MONDAY": false,
- "WEEK_ENDING_SATURDAY": false,
- "WEEK_ENDING_SUNDAY": false,
+ "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
},
- "module": "superset.db_engine_specs.vertica",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 149,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": true,
+ "supports_catalog": true,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
- "query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
- "query_cost_estimation": false,
- "sql_validation": false,
- "score": 34,
- "max_score": 201,
+ "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"
],
@@ -5118,18 +3008,9 @@
"notes": "Supports load balancer backup host configuration.",
"docs_url": "http://www.vertica.com/"
},
- "engine": "vertica",
- "engine_name": "Vertica",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "YDB": {
"time_grains": {
"SECOND": true,
- "FIVE_SECONDS": false,
+ "FIVE_SECONDS": true,
"THIRTY_SECONDS": true,
"MINUTE": true,
"FIVE_MINUTES": true,
@@ -5150,43 +3031,27 @@
"QUARTER_YEAR": false,
"YEAR": true
},
- "module": "superset.db_engine_specs.ydb",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 34,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": false,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": true,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 23,
- "max_score": 201,
+ "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"
],
@@ -5239,87 +3104,42 @@
],
"docs_url": "https://ydb.tech/"
},
- "engine": "yql",
- "engine_name": "YDB",
- "engine_aliases": [
- "ydb",
- "yql+ydb"
- ],
- "default_driver": "ydb",
- "supports_file_upload": false,
- "supports_dynamic_schema": false,
- "supports_catalog": false
- },
- "base": {
"time_grains": {
- "SECOND": false,
+ "SECOND": true,
"FIVE_SECONDS": false,
- "THIRTY_SECONDS": false,
- "MINUTE": false,
- "FIVE_MINUTES": false,
- "TEN_MINUTES": false,
- "FIFTEEN_MINUTES": false,
- "THIRTY_MINUTES": false,
+ "THIRTY_SECONDS": true,
+ "MINUTE": true,
+ "FIVE_MINUTES": true,
+ "TEN_MINUTES": true,
+ "FIFTEEN_MINUTES": true,
+ "THIRTY_MINUTES": true,
"HALF_HOUR": false,
- "HOUR": false,
+ "HOUR": true,
"SIX_HOURS": false,
- "DAY": false,
- "WEEK": 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,
+ "MONTH": true,
+ "QUARTER": true,
"QUARTER_YEAR": false,
- "YEAR": false
+ "YEAR": true
},
- "module": "superset.db_engine_specs.base",
- "limit_method": 1,
- "limit_clause": true,
+ "score": 23,
+ "max_score": 201,
"joins": true,
"subqueries": true,
- "alias_in_select": true,
- "alias_in_orderby": true,
- "time_groupby_inline": false,
- "alias_to_source_column": false,
- "order_by_not_in_select": true,
- "expressions_in_orderby": false,
- "cte_in_subquery": true,
- "max_column_name": null,
- "sql_comments": true,
- "escaped_colons": true,
- "masked_encrypted_extra": false,
- "column_type_mapping": false,
- "function_names": false,
- "user_impersonation": false,
- "file_upload": true,
- "get_extra_table_metadata": false,
- "dbapi_exception_mapping": false,
- "custom_errors": false,
- "dynamic_schema": false,
- "catalog": false,
- "dynamic_catalog": false,
+ "supports_dynamic_schema": false,
+ "supports_catalog": false,
+ "supports_dynamic_catalog": false,
"ssh_tunneling": true,
"query_cancelation": false,
- "get_metrics": false,
- "where_latest_partition": false,
- "expand_data": false,
+ "supports_file_upload": false,
+ "user_impersonation": false,
"query_cost_estimation": false,
- "sql_validation": false,
- "score": 20,
- "max_score": 201,
- "documentation": {
- "pypi_packages": [],
- "connection_string": "engine+driver://user:password@host:port/dbname[?key=value&key=value...]"
- },
- "engine": "base",
- "engine_name": "base",
- "engine_aliases": [],
- "default_driver": null,
- "supports_file_upload": true,
- "supports_dynamic_schema": false,
- "supports_catalog": false
+ "sql_validation": false
}
}
-}
+}
\ No newline at end of file
diff --git a/docs/src/pages/index.tsx b/docs/src/pages/index.tsx
index acf099a519..e11598d9da 100644
--- a/docs/src/pages/index.tsx
+++ b/docs/src/pages/index.tsx
@@ -23,12 +23,25 @@ import { Card, Carousel, Flex } from 'antd';
import styled from '@emotion/styled';
import GitHubButton from 'react-github-btn';
import { mq } from '../utils';
-import { Databases } from '../resources/data';
import SectionHeader from '../components/SectionHeader';
+import databaseData from '../data/databases.json';
import BlurredSection from '../components/BlurredSection';
import DataSet from '../../../RESOURCES/INTHEWILD.yaml';
+import type { DatabaseData } from '../components/databases/types';
import '../styles/main.less';
+// Build database list from databases.json (databases with logos)
+const typedDatabaseData = databaseData as DatabaseData;
+const Databases = Object.entries(typedDatabaseData.databases)
+ .filter(([, db]) => db.documentation?.logo && db.documentation?.homepage_url)
+ .map(([name, db]) => ({
+ title: name,
+ href: db.documentation?.homepage_url,
+ imgName: db.documentation?.logo,
+ docPath: `/docs/databases/${name.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '')}`,
+ }))
+ .sort((a, b) => a.title.localeCompare(b.title));
+
interface Organization {
name: string;
url: string;
@@ -761,21 +774,17 @@ export default function Home(): JSX.Element {
<StyledIntegrations>
<SectionHeader level="h2" title="Supported Databases" />
<div className="database-grid">
- {Databases.map(({ title, href, imgName }) => (
+ {Databases.map(({ title, imgName, docPath }) => (
<div className="item" key={title}>
- {href ? (
- <a href={href} aria-label={`Go to ${title} page`}>
- <img src={`/img/databases/${imgName}`} title={title} />
- </a>
- ) : (
+ <a href={docPath} aria-label={`${title} documentation`}>
<img src={`/img/databases/${imgName}`} title={title} />
- )}
+ </a>
</div>
))}
</div>
<span className="database-sub">
...and many other{' '}
- <a href="/docs/configuration/databases#installing-database-drivers">
+ <a href="/docs/databases#installing-database-drivers">
compatible databases
</a>
</span>
diff --git a/docs/tsconfig.json b/docs/tsconfig.json
index cd998d5a69..b29d41ca6d 100644
--- a/docs/tsconfig.json
+++ b/docs/tsconfig.json
@@ -8,6 +8,8 @@
"strict": false,
"jsx": "react-jsx",
"moduleResolution": "node",
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
"types": ["@docusaurus/module-type-aliases"],
"paths": {
"@superset-ui/core": ["../superset-frontend/packages/superset-ui-core/src"],
diff --git a/docs/versions-config.json b/docs/versions-config.json
index 402cb720ab..3587ebb9d6 100644
--- a/docs/versions-config.json
+++ b/docs/versions-config.json
@@ -1,7 +1,7 @@
{
"docs": {
"disabled": false,
- "lastVersion": "6.0.0",
+ "lastVersion": "current",
"includeCurrentVersion": true,
"onlyIncludeVersions": [
"current",
@@ -11,7 +11,7 @@
"current": {
"label": "Next",
"path": "",
- "banner": "unreleased"
+ "banner": "none"
},
"6.0.0": {
"label": "6.0.0",
diff --git a/superset/db_engine_specs/lib.py b/superset/db_engine_specs/lib.py
index 34b9b1122f..f724311717 100644
--- a/superset/db_engine_specs/lib.py
+++ b/superset/db_engine_specs/lib.py
@@ -33,6 +33,8 @@ from superset.db_engine_specs.base import BaseEngineSpec
DATABASE_DOCS: dict[str, dict[str, Any]] = {
"PostgreSQL": {
"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,
@@ -60,6 +62,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
{
"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": {
@@ -73,6 +77,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
{
"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": [
@@ -87,6 +93,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
{
"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.",
@@ -96,6 +104,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"MySQL": {
"description": "MySQL is a popular open-source relational database.",
+ "logo": "mysql.jpg",
+ "homepage_url": "https://www.mysql.com/",
"pypi_packages": ["mysqlclient"],
"connection_string": "mysql://{username}:{password}@{host}/{database}",
"default_port": 3306,
@@ -130,12 +140,16 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"SQLite": {
"description": "SQLite is a self-contained, serverless SQL database engine.",
+ "logo": "sqlite.jpg",
+ "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.",
},
"AWS Athena": {
"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)",
@@ -163,12 +177,15 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"AWS DynamoDB": {
"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",
},
"AWS Redshift": {
"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": {
@@ -228,6 +245,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Apache Doris": {
"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": {
@@ -241,6 +260,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Apache Drill": {
"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)",
@@ -273,6 +294,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Apache Druid": {
"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,
@@ -298,21 +321,29 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Apache Hive": {
"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}",
},
"Apache Impala": {
"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}",
},
"Apache Kylin": {
"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}",
},
"Apache Pinot": {
"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": [
@@ -332,11 +363,13 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Apache Solr": {
"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]",
},
"Apache Spark SQL": {
"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}",
},
@@ -366,6 +399,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"ClickHouse": {
"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",
@@ -389,12 +424,15 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"CockroachDB": {
"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",
},
"Couchbase": {
"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.",
@@ -402,6 +440,7 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"CrateDB": {
"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,
@@ -420,6 +459,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Databend": {
"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}",
@@ -432,6 +473,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Databricks": {
"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}",
@@ -483,12 +526,16 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Denodo": {
"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,
},
"Dremio": {
"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": [
{
@@ -509,12 +556,14 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"DuckDB": {
"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.",
},
"Elasticsearch": {
"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,
@@ -547,12 +596,16 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Exasol": {
"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",
},
"Firebird": {
"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}",
@@ -565,6 +618,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Firebolt": {
"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": [
{
@@ -587,6 +642,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Google BigQuery": {
"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',
@@ -618,6 +675,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Google Sheets": {
"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.",
@@ -626,6 +685,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"SAP HANA": {
"description": "SAP HANA is an in-memory relational database and application platform.",
+ "logo": "sap-hana.jpg",
+ "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}",
@@ -651,6 +712,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"IBM Netezza": {
"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}",
},
@@ -672,6 +735,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"MariaDB": {
"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,
@@ -679,6 +744,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Microsoft SQL Server": {
"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": [
@@ -700,6 +767,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"OceanBase": {
"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}",
},
@@ -711,6 +780,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Oracle": {
"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.",
@@ -731,6 +802,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Presto": {
"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": [
@@ -779,6 +852,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Snowflake": {
"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',
@@ -823,6 +898,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"StarRocks": {
"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": {
@@ -837,6 +914,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"TDengine": {
"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,
@@ -850,6 +929,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Teradata": {
"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": [
@@ -875,6 +956,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Trino": {
"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",
@@ -945,6 +1028,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"Vertica": {
"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,
@@ -960,6 +1045,8 @@ DATABASE_DOCS: dict[str, dict[str, Any]] = {
},
"YDB": {
"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": [