diff --git a/docs/src/images/databases/netezza.png b/docs/src/images/databases/netezza.png new file mode 100644 index 000000000..2658d8629 Binary files /dev/null and b/docs/src/images/databases/netezza.png differ diff --git a/docs/src/resources/data.js b/docs/src/resources/data.js index aae3b075b..28b9e5e5d 100644 --- a/docs/src/resources/data.js +++ b/docs/src/resources/data.js @@ -235,4 +235,9 @@ export const Databases = [ href: 'https://www.alibabacloud.com/product/hologres', imgName: 'hologres.png', }, + { + title: 'IBM Netezza Performance Server', + href: 'https://www.ibm.com/products/netezza', + imgName: 'netezza.png', + }, ]; diff --git a/setup.py b/setup.py index 31cadf2b3..ef66af9e0 100644 --- a/setup.py +++ b/setup.py @@ -153,6 +153,7 @@ setup( "teradata": ["sqlalchemy-teradata==0.9.0.dev0"], "thumbnails": ["Pillow>=7.0.0, <8.0.0"], "vertica": ["sqlalchemy-vertica-python>=0.5.9, < 0.6"], + "netezza": ["nzalchemy>=11.0.2"], }, python_requires="~=3.7", author="Apache Software Foundation", diff --git a/superset/db_engine_specs/netezza.py b/superset/db_engine_specs/netezza.py new file mode 100644 index 000000000..469ac4fa1 --- /dev/null +++ b/superset/db_engine_specs/netezza.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 superset.db_engine_specs.postgres import PostgresBaseEngineSpec + + +class NetezzaEngineSpec(PostgresBaseEngineSpec): + + engine = "netezza" + default_driver = "nzpy" + engine_name = "IBM Netezza Performance Server" + + _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})", + } + + @classmethod + def epoch_to_dttm(cls) -> str: + return "(timestamp 'epoch' + {col} * interval '1 second')"