aliyun / aliyun-odps-python-sdk

ODPS Python SDK and data analysis framework
http://pyodps.readthedocs.io
Apache License 2.0
434 stars 97 forks source link

superset 3.x integration error #221

Closed luozhouyang closed 9 months ago

luozhouyang commented 10 months ago

When adding odps dataset to superset, en error occurs: 422 UNPROCESSIABLE ENTITY

image

request:

curl $'https://mydomain.com/api/v1/database/2/tables/?q=(force:\u0021f,schema_name:lmdata_prod_ezmode)' \
  -H 'Accept: application/json' \
  -H 'Accept-Language: zh-CN,zh;q=0.9' \
  -H 'Cache-Control: no-cache' \
  -H 'Connection: keep-alive' \
 -H 'Cookie: xxxx' \
  -H 'Pragma: no-cache' \
  -H 'Referer: https://superset.linkedmall.store/dataset/add/' \
  -H 'Sec-Fetch-Dest: empty' \
  -H 'Sec-Fetch-Mode: same-origin' \
  -H 'Sec-Fetch-Site: same-origin' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36' \
  -H 'X-CSRFToken: xxxx' \
  -H 'sec-ch-ua: "Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "macOS"' \
  --compressed

response:

{"message":"Unexpected error occurred, please check your logs for details"}

superset version: 3.0.1

luozhouyang commented 10 months ago

The original superset exception tracebacks are not dumped, I modified the source code to dump these exceptions as follow


Traceback (most recent call last):
  File "/app/superset/databases/commands/tables.py", line 64, in run
    views_datasource_names = self._model.get_all_view_names_in_schema(
  File "/app/superset/utils/cache.py", line 130, in wrapped_f
    return f(*args, **kwargs)
  File "/app/superset/models/core.py", line 740, in get_all_view_names_in_schema
    raise self.db_engine_spec.get_dbapi_mapped_exception(ex)
  File "/app/superset/models/core.py", line 733, in get_all_view_names_in_schema
    for view in self.db_engine_spec.get_view_names(
  File "/app/superset/db_engine_specs/base.py", line 1231, in get_view_names
    raise cls.get_dbapi_mapped_exception(ex) from ex
  File "/app/superset/db_engine_specs/base.py", line 1229, in get_view_names
    views = set(inspector.get_view_names(schema))
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py", line 412, in get_view_names
    return self.dialect.get_view_names(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/interfaces.py", line 332, in get_view_names
    raise NotImplementedError()
NotImplementedError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/databases/api.py", line 666, in tables
    payload = command.run()
  File "/app/superset/databases/commands/tables.py", line 122, in run
    raise DatabaseTablesUnexpectedError(ex) from ex
superset.databases.commands.exceptions.DatabaseTablesUnexpectedError
2023-12-10 10:34:42,179:ERROR:superset.databases.api:
Traceback (most recent call last):
  File "/app/superset/databases/commands/tables.py", line 64, in run
    views_datasource_names = self._model.get_all_view_names_in_schema(
  File "/app/superset/utils/cache.py", line 130, in wrapped_f
    return f(*args, **kwargs)
  File "/app/superset/models/core.py", line 740, in get_all_view_names_in_schema
    raise self.db_engine_spec.get_dbapi_mapped_exception(ex)
  File "/app/superset/models/core.py", line 733, in get_all_view_names_in_schema
    for view in self.db_engine_spec.get_view_names(
  File "/app/superset/db_engine_specs/base.py", line 1231, in get_view_names
    raise cls.get_dbapi_mapped_exception(ex) from ex
  File "/app/superset/db_engine_specs/base.py", line 1229, in get_view_names
    views = set(inspector.get_view_names(schema))
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/reflection.py", line 412, in get_view_names
    return self.dialect.get_view_names(
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/interfaces.py", line 332, in get_view_names
    raise NotImplementedError()
NotImplementedError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/app/superset/databases/api.py", line 666, in tables
    payload = command.run()
  File "/app/superset/databases/commands/tables.py", line 122, in run
    raise DatabaseTablesUnexpectedError(ex) from ex
superset.databases.commands.exceptions.DatabaseTablesUnexpectedError
wjsi commented 9 months ago

Already fixed with v0.11.5.