12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # 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 typing import Any, List, Tuple
- from superset.db_engine_specs.base import BaseEngineSpec
- class ExasolEngineSpec(BaseEngineSpec): # pylint: disable=abstract-method
- """Engine spec for Exasol"""
- engine = "exa"
- max_column_name_length = 128
- # Exasol's DATE_TRUNC function is PostgresSQL compatible
- _time_grain_functions = {
- 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 fetch_data(cls, cursor: Any, limit: int) -> List[Tuple]:
- data = super().fetch_data(cursor, limit)
- # Lists of `pyodbc.Row` need to be unpacked further
- return cls.pyodbc_rows_to_tuples(data)
|