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)",
+        )

Reply via email to