This is an automated email from the ASF dual-hosted git repository.
beto pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new a102715 add ascend engine spec (#14682)
a102715 is described below
commit a1027152ba01883722266a34ec0248f7cecdae5a
Author: Daniel Wood <[email protected]>
AuthorDate: Fri Jun 18 10:35:55 2021 -0700
add ascend engine spec (#14682)
---
.../pages/docs/Connecting to Databases/ascend.mdx | 17 +++++++++
.../pages/docs/Connecting to Databases/index.mdx | 1 +
superset/db_engine_specs/ascend.py | 40 ++++++++++++++++++++++
tests/db_engine_specs/ascend_tests.py | 32 +++++++++++++++++
4 files changed, 90 insertions(+)
diff --git a/docs/src/pages/docs/Connecting to Databases/ascend.mdx
b/docs/src/pages/docs/Connecting to Databases/ascend.mdx
new file mode 100644
index 0000000..eb0d6c3
--- /dev/null
+++ b/docs/src/pages/docs/Connecting to Databases/ascend.mdx
@@ -0,0 +1,17 @@
+---
+name: Ascend.io
+menu: Connecting to Databases
+route: /docs/databases/ascend
+index: 7
+version: 1
+---
+
+## Ascend.io
+
+The recommended connector library to Ascend.io is
[impyla](https://github.com/cloudera/impyla).
+
+The expected connection string is formatted as follows:
+
+```
+ascend://{username}:{password}@{hostname}:{port}/{database}?auth_mechanism=PLAIN;use_ssl=true
+```
diff --git a/docs/src/pages/docs/Connecting to Databases/index.mdx
b/docs/src/pages/docs/Connecting to Databases/index.mdx
index 40082f7..05492ff 100644
--- a/docs/src/pages/docs/Connecting to Databases/index.mdx
+++ b/docs/src/pages/docs/Connecting to Databases/index.mdx
@@ -33,6 +33,7 @@ A list of some of the recommended packages.
|[Apache Pinot](/docs/databases/pinot)|```pip install
pinotdb```|```pinot://BROKER:5436/query?server=http://CONTROLLER:5983/```|
|[Apache Solr](/docs/databases/solr)|```pip install
sqlalchemy-solr```|```solr://{username}:{password}@{hostname}:{port}/{server_path}/{collection}```
|[Apache Spark SQL](/docs/databases/spark-sql)|```pip install
pyhive```|```hive://hive@{hostname}:{port}/{database}```
+|[Ascend.io](/docs/databases/ascend)|```pip install
impyla```|```ascend://{username}:{password}@{hostname}:{port}/{database}?auth_mechanism=PLAIN;use_ssl=true```|
|[Azure MS SQL](/docs/databases/sql-server)|```pip install pymssql```
|```mssql+pymssql://UserName@presetSQL:[email protected]:1433/TestSchema```
|[Big Query](/docs/databases/bigquery)|```pip install
pybigquery```|```bigquery://{project_id}```|
|[ClickHouse](/docs/databases/clickhouse)|```pip install
clickhouse-driver==0.2.0 && pip install
clickhouse-sqlalchemy==0.1.6```|```clickhouse+native://{username}:{password}@{hostname}:{port}/{database}```|
diff --git a/superset/db_engine_specs/ascend.py
b/superset/db_engine_specs/ascend.py
new file mode 100644
index 0000000..ee7bab9
--- /dev/null
+++ b/superset/db_engine_specs/ascend.py
@@ -0,0 +1,40 @@
+# 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.
+from sqlalchemy.dialects import registry
+
+from superset.db_engine_specs.impala import ImpalaEngineSpec
+
+
+class AscendEngineSpec(ImpalaEngineSpec):
+ """Engine spec for Ascend.io (Hive2+TLS) using Cloudera's Impala"""
+
+ engine = "ascend"
+ registry.register("ascend", "impala.sqlalchemy", "ImpalaDialect")
+
+ engine_name = "Ascend"
+
+ _time_grain_expressions = {
+ None: "{col}",
+ "PT1S": "DATE_TRUNC('second', {col})",
+ "PT1M": "DATE_TRUNC('minute', {col})",
+ "PT1H": "DATE_TRUNC('hour', {col})",
+ "P1D": "DATE_TRUNC('day', {col})",
+ "P1W": "DATE_TRUNC('week', {col})",
+ "P1M": "DATE_TRUNC('month', {col})",
+ "P0.25Y": "DATE_TRUNC('quarter', {col})",
+ "P1Y": "DATE_TRUNC('year', {col})",
+ }
diff --git a/tests/db_engine_specs/ascend_tests.py
b/tests/db_engine_specs/ascend_tests.py
new file mode 100644
index 0000000..edbfb4c
--- /dev/null
+++ b/tests/db_engine_specs/ascend_tests.py
@@ -0,0 +1,32 @@
+# 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.
+from superset.db_engine_specs.ascend import AscendEngineSpec
+from tests.db_engine_specs.base_tests import TestDbEngineSpec
+
+
+class TestAscendDbEngineSpec(TestDbEngineSpec):
+ def test_convert_dttm(self):
+ dttm = self.get_dttm()
+
+ self.assertEqual(
+ AscendEngineSpec.convert_dttm("DATE", dttm), "CAST('2019-01-02' AS
DATE)"
+ )
+
+ self.assertEqual(
+ AscendEngineSpec.convert_dttm("TIMESTAMP", dttm),
+ "CAST('2019-01-02T03:04:05.678900' AS TIMESTAMP)",
+ )