You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by GitBox <gi...@apache.org> on 2021/09/01 10:05:10 UTC
[GitHub] [superset] ApfelPresse opened a new issue #16541: Cannot create a Dataset of an Exasol Database View
ApfelPresse opened a new issue #16541:
URL: https://github.com/apache/superset/issues/16541
Hey,
we tried to connect to our Exasol Database and followed the instructions on this page
https://superset.apache.org/docs/databases/exasol
Well, this did not work quite well, because of a missing dependency unixodbc-dev, which is needed by sqlalchemy-exasol.
We solved that with the steps below, but now we cannot create a Dataset of a Database View (Tables are working)
### Expected results
A Dataset of an Exasol View
### Actual results
It is not possible to create a Dataset of an Exasol Database View, but Tables are working
`
superset_app | Traceback (most recent call last):
superset_app | File "/app/superset/datasets/commands/create.py", line 51, in run
superset_app | dataset.fetch_metadata(commit=False)
superset_app | File "/app/superset/connectors/sqla/models.py", line 1503, in fetch_metadata
superset_app | new_columns = self.external_metadata()
superset_app | File "/app/superset/connectors/sqla/models.py", line 667, in external_metadata
superset_app | database=self.database, table_name=self.table_name, schema_name=self.schema,
superset_app | File "/app/superset/connectors/sqla/utils.py", line 47, in get_physical_table_metadata
superset_app | raise NoSuchTableError
superset_app | sqlalchemy.exc.NoSuchTableError: ()
superset_app | 2021-09-01 09:30:18,077:WARNING:superset.datasets.commands.create)
superset_app | Traceback (most recent call last):
superset_app | File "/app/superset/datasets/commands/create.py", line 51, in run
superset_app | dataset.fetch_metadata(commit=False)
superset_app | File "/app/superset/connectors/sqla/models.py", line 1503, in fetch_metadata
superset_app | new_columns = self.external_metadata()
superset_app | File "/app/superset/connectors/sqla/models.py", line 667, in external_metadata
superset_app | database=self.database, table_name=self.table_name, schema_name=self.schema,
superset_app | File "/app/superset/connectors/sqla/utils.py", line 47, in get_physical_table_metadata
superset_app | raise NoSuchTableError
superset_app | sqlalchemy.exc.NoSuchTableError: ()
superset_app | Error creating model DatasetRestApi: Dataset could not be created.
superset_app | Traceback (most recent call last):
superset_app | File "/app/superset/datasets/commands/create.py", line 51, in run
superset_app | dataset.fetch_metadata(commit=False)
superset_app | File "/app/superset/connectors/sqla/models.py", line 1503, in fetch_metadata
superset_app | new_columns = self.external_metadata()
superset_app | File "/app/superset/connectors/sqla/models.py", line 667, in external_metadata
superset_app | database=self.database, table_name=self.table_name, schema_name=self.schema,
superset_app | File "/app/superset/connectors/sqla/utils.py", line 47, in get_physical_table_metadata
superset_app | raise NoSuchTableError
superset_app | sqlalchemy.exc.NoSuchTableError: ()
superset_app |
superset_app | The above exception was the direct cause of the following exception:
superset_app |
superset_app | Traceback (most recent call last):
superset_app | File "/app/superset/datasets/api.py", line 251, in post
superset_app | new_model = CreateDatasetCommand(g.user, item).run()
superset_app | File "/app/superset/datasets/commands/create.py", line 65, in run
superset_app | raise DatasetCreateFailedError() from ex
superset_app | superset.datasets.commands.exceptions.DatasetCreateFailedError: Dataset could not be created.
superset_app | 2021-09-01 09:30:18,079:ERROR:superset.datasets.api:Error creating model DatasetRestApi: Dataset could not be created.
superset_app | Traceback (most recent call last):
superset_app | File "/app/superset/datasets/commands/create.py", line 51, in run
superset_app | dataset.fetch_metadata(commit=False)
superset_app | File "/app/superset/connectors/sqla/models.py", line 1503, in fetch_metadata
superset_app | new_columns = self.external_metadata()
superset_app | File "/app/superset/connectors/sqla/models.py", line 667, in external_metadata
superset_app | database=self.database, table_name=self.table_name, schema_name=self.schema,
superset_app | File "/app/superset/connectors/sqla/utils.py", line 47, in get_physical_table_metadata
superset_app | raise NoSuchTableError
superset_app | sqlalchemy.exc.NoSuchTableError: ()
superset_app |
superset_app | The above exception was the direct cause of the following exception:
superset_app |
superset_app | Traceback (most recent call last):
superset_app | File "/app/superset/datasets/api.py", line 251, in post
superset_app | new_model = CreateDatasetCommand(g.user, item).run()
superset_app | File "/app/superset/datasets/commands/create.py", line 65, in run
superset_app | raise DatasetCreateFailedError() from ex
superset_app | superset.datasets.commands.exceptions.DatasetCreateFailedError: Dataset could not be created.
`
#### Screenshots
![image](https://user-images.githubusercontent.com/14179555/131652124-b5e3fc1a-9cad-42cf-a9f0-f90439ab45b8.png)
#### How to reproduce the bug
Steps we did to install the exasol odbc driver:
First, we added the pip dep to the requirements-local.txt, as describes in the documentation (only 2.0.10 is working properly)
`
cat <<EOT >> ./docker/requirements-local.txt
sqlalchemy-exasol==2.0.10
EOT
`
Then we modified the Dockerfile, to add the missing dependency unixodbc-dev
`
cat <<EOT >> Dockerfile
FROM apache/superset:latest-dev
USER root
RUN apt-get update && apt-get install -y unixodbc-dev
RUN wget https://www.exasol.com/support/secure/attachment/135973/EXASOL_ODBC-7.1.0.tar.gz -O exasol_odbc.tar.gz
RUN tar -xzf exasol_odbc.tar.gz
RUN mv EXASOL_ODBC-7.* exasol_odbc
CMD /app/docker/docker-ci.sh
EOT
`
Configured the odbc.ini
`
cat <<EOT >> .odbc.ini
[ODBC Data Sources]
exasolution-uo2214lv2_64 = unixODBC 2.2.14 or later, libversion 2 (64bit)
[exasolution-uo2214lv2_64]
DRIVER = /app/EXASOL_ODBC-7.0.9/lib/linux/x86_64/libexaodbc-uo2214lv2.so
EXAHOST = dap-dev.node0..3.exasol.datenbaeren-test.comp.db.de:8563
EXAUID = ETL_USER
EXAPWD = <PASS>
[exasolution-uo2214lv2_64-debug]
DRIVER = /app/EXASOL_ODBC-7.0.9/lib/linux/x86_64/libexaodbc-uo2214lv2.so
EXAHOST = dap-dev.node0..3.exasol.datenbaeren-test.comp.db.de:8563
EXAUID = ETL_USER
EXAPWD = <PASS>
EXALOGFILE = /home/ubuntu/test/EXASOL_ODBC-7.0.9/exaodbc.log
LOGMODE = Debug Comm
EOT
`
Connection String
exa+pyodbc://USER:XXXXXXXXXX@IP:PORT/SCHEMA?driver=EXAODBC
### Environment
we used the latest superset version
- superset version: latest
- python version: we did not change anything
- node.js version: we did not change anything
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org
[GitHub] [superset] ApfelPresse edited a comment on issue #16541: Cannot create a Dataset of an Exasol Database View
Posted by GitBox <gi...@apache.org>.
ApfelPresse edited a comment on issue #16541:
URL: https://github.com/apache/superset/issues/16541#issuecomment-910214825
I found a workaround, but that's not how it meant to be
added some lines
```
superset/connectors/sqla/models.py:667
def external_metadata(self) -> List[Dict[str, str]]:
table_name = str(self.table_name)
schema = str(self.schema)
self.sql = f"SELECT * FROM {schema}.{table_name}"
print(self.sql)
if self.sql:
return get_virtual_table_metadata(dataset=self)
return get_physical_table_metadata(database=self.database, table_name=self.table_name, schema_name=self.schema,)
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org
[GitHub] [superset] ApfelPresse commented on issue #16541: Cannot create a Dataset of an Exasol Database View
Posted by GitBox <gi...@apache.org>.
ApfelPresse commented on issue #16541:
URL: https://github.com/apache/superset/issues/16541#issuecomment-910214825
I found a workaround, but that's not how it meant to be
add some lines
```
superset/connectors/sqla/models.py:667
def external_metadata(self) -> List[Dict[str, str]]:
table_name = str(self.table_name)
schema = str(self.schema)
self.sql = f"SELECT * FROM {schema}.{table_name}"
print(self.sql)
if self.sql:
return get_virtual_table_metadata(dataset=self)
return get_physical_table_metadata(database=self.database, table_name=self.table_name, schema_name=self.schema,)
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org