apache / superset

Apache Superset is a Data Visualization and Data Exploration Platform
https://superset.apache.org/
Apache License 2.0
62.36k stars 13.7k forks source link

An error occurred while fetching charts: 'Query' object has no attribute 'explore_url' #25619

Closed akeeme closed 7 months ago

akeeme commented 1 year ago

As of recently, when accessing the charts tab in Superset, I encounter an AttributeError, suggesting that the application is trying to access an attribute or method that doesn't exist or is inaccessible in the context it's being called.

How to reproduce the bug

  1. Click on the chart's tab
  2. See error

Expected results

Expected to see all charts

Actual results

image

Environment

(please complete the following information):

Checklist

Make sure to follow these steps before submitting your issue - thank you!

Additional context

all packages and versions alembic 1.11.3 amqp 5.1.1 apache-superset 2.1.0 apispec 6.3.0 async-timeout 4.0.3 attrs 23.1.0 Babel 2.12.1 backoff 2.2.1 bcrypt 4.0.1 billiard 4.1.0 bleach 3.3.1 Brotli 1.0.9 cachelib 0.4.1 celery 5.3.1 certifi 2023.7.22 cffi 1.15.1 click 8.1.7 click-didyoumean 0.3.0 click-plugins 1.1.1 click-repl 0.3.0 colorama 0.4.6 convertdate 2.4.0 cron-descriptor 1.4.0 croniter 1.4.1 cryptography 39.0.0 Deprecated 1.2.14 deprecation 2.1.0 dnspython 2.4.2 email-validator 1.3.1 exceptiongroup 1.1.3 Flask 2.1.3 Flask-AppBuilder 4.3.6 Flask-Babel 2.0.0 Flask-Caching 1.10.1 Flask-Compress 1.13 Flask-JWT-Extended 4.5.2 Flask-Limiter 3.4.0 Flask-Login 0.6.0 Flask-Migrate 3.1.0 Flask-SQLAlchemy 2.5.1 flask-talisman 1.1.0 Flask-WTF 1.0.1 func-timeout 4.3.5 geographiclib 2.0 geopy 2.3.0 graphlib-backport 1.0.3 greenlet 2.0.2 gunicorn 21.2.0 h11 0.14.0 hashids 1.3.1 hijri-converter 2.3.1 holidays 0.17.2 humanize 4.8.0 ibm-db 3.2.0 ibm-db-sa 0.4.0 idna 3.4 importlib-metadata 6.8.0 importlib-resources 6.0.1 isodate 0.6.1 itsdangerous 2.1.2 Jinja2 3.1.2 jsonschema 4.19.0 jsonschema-specifications 2023.7.1 kombu 5.3.1 korean-lunar-calendar 0.3.1 limits 3.5.0 Mako 1.2.4 Markdown 3.4.4 markdown-it-py 3.0.0 MarkupSafe 2.1.3 marshmallow 3.20.1 marshmallow-enum 1.5.1 marshmallow-sqlalchemy 0.26.1 mdurl 0.1.2 msgpack 1.0.5 numpy 1.23.5 ordered-set 4.1.0 outcome 1.2.0 packaging 23.1 pandas 1.5.3 paramiko 3.3.1 parsedatetime 2.6 pgsanity 0.2.9 pip 20.2.4 polyline 2.0.0 prison 0.2.1 prompt-toolkit 3.0.39 psycopg2-binary 2.9.7 pyarrow 10.0.1 pycparser 2.21 Pygments 2.16.1 PyJWT 2.8.0 PyMeeus 0.5.12 PyNaCl 1.5.0 pyparsing 3.1.1 PySocks 1.7.1 python-dateutil 2.8.2 python-dotenv 1.0.0 python-geohash 0.8.5 pytz 2023.3 PyYAML 6.0.1 redis 5.0.0 referencing 0.30.2 rich 13.5.2 rpds-py 0.9.2 selenium 4.11.2 setuptools 50.3.2 simplejson 3.19.1 six 1.16.0 slack-sdk 3.21.3 sniffio 1.3.0 sortedcontainers 2.4.0 SQLAlchemy 1.4.49 SQLAlchemy-Utils 0.38.3 sqlparse 0.4.3 sshtunnel 0.4.0 supervisor 4.2.5 tabulate 0.8.10 trio 0.22.2 trio-websocket 0.10.3 typing-extensions 4.7.1 tzdata 2023.3 urllib3 2.0.4 vine 5.0.0 wcwidth 0.2.6 webencodings 0.5.1 werkzeug 2.3.7 wrapt 1.15.0 wsproto 1.2.0 WTForms 2.3.3 WTForms-JSON 0.3.5 XlsxWriter 3.0.9 zipp 3.16.2

Logs when accessing charts tab


Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
2023-10-11 17:45:52,713:WARNING:superset.db_engine_specs:Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
2023-10-11 17:45:52,715:WARNING:superset.db_engine_specs:Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
2023-10-11 17:45:52,716:WARNING:superset.db_engine_specs:Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
2023-10-11 17:45:52,810:INFO:werkzeug:172.24.2.11 - - [11/Oct/2023 17:45:52] "GET /chart/list/?pageIndex=0&sortColumn=changed_on_delta_humanized&sortOrder=desc&viewMode=table HTTP/1.1" 200 -
HTTPException
Traceback (most recent call last):
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/app.py", line 1517, in full_dispatch_request
    rv = self.dispatch_request()
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/app.py", line 1503, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/scaffold.py", line 322, in send_static_file
    return send_from_directory(
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/helpers.py", line 676, in send_from_directory
    return werkzeug.utils.send_from_directory(  # type: ignore
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/werkzeug/utils.py", line 574, in send_from_directory
    raise NotFound()
werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
2023-10-11 17:45:52,931:WARNING:superset.views.base:HTTPException
Traceback (most recent call last):
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/app.py", line 1517, in full_dispatch_request
    rv = self.dispatch_request()
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/app.py", line 1503, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/scaffold.py", line 322, in send_static_file
    return send_from_directory(
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/helpers.py", line 676, in send_from_directory
    return werkzeug.utils.send_from_directory(  # type: ignore
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/werkzeug/utils.py", line 574, in send_from_directory
    raise NotFound()
werkzeug.exceptions.NotFound: 404 Not Found: The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
2023-10-11 17:45:52,933:INFO:werkzeug:172.24.2.11 - - [11/Oct/2023 17:45:52] "GET /static/appbuilder/css/font-awesome.min.css HTTP/1.1" 404 -
2023-10-11 17:45:53,495:INFO:werkzeug:172.24.2.11 - - [11/Oct/2023 17:45:53] "GET /api/v1/database/?q=(filters:!((col:allow_file_upload,opr:upload_is_enabled,value:!t))) HTTP/1.1" 200 -
2023-10-11 17:45:53,502:INFO:werkzeug:172.24.2.11 - - [11/Oct/2023 17:45:53] "GET /api/v1/database/?q=(filters:!((col:database_name,opr:neq,value:examples))) HTTP/1.1" 200 -
2023-10-11 17:45:53,760:INFO:werkzeug:172.24.2.11 - - [11/Oct/2023 17:45:53] "GET /api/v1/chart/_info?q=(keys:!(permissions)) HTTP/1.1" 200 -
'Query' object has no attribute 'explore_url'
Traceback (most recent call last):
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/superset/views/base.py", line 250, in wraps
    return f(self, *args, **kwargs)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/superset/views/base_api.py", line 460, in get_list_headless
    duration, response = time_function(super().get_list_headless, **kwargs)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/superset/utils/core.py", line 1586, in time_function
    response = func(*args, **kwargs)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_appbuilder/api/__init__.py", line 1613, in get_list_headless
    response[API_RESULT_RES_KEY] = list_model_schema.dump(lst, many=True)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/schema.py", line 549, in dump
    result = self._serialize(processed_obj, many=many)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/schema.py", line 511, in _serialize
    return [
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/schema.py", line 512, in <listcomp>
    self._serialize(d, many=False)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/schema.py", line 517, in _serialize
    value = field_obj.serialize(attr_name, obj, accessor=self.get_attribute)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/fields.py", line 340, in serialize
    return self._serialize(value, attr, obj, **kwargs)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/fields.py", line 2037, in _serialize
    return self._call_or_raise(self.serialize_func, obj, attr)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/fields.py", line 2050, in _call_or_raise
    return func(value)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/superset/models/slice.py", line 172, in datasource_url
    return datasource.explore_url if datasource else None
AttributeError: 'Query' object has no attribute 'explore_url'
2023-10-11 17:45:53,819:ERROR:superset.views.base:'Query' object has no attribute 'explore_url'
Traceback (most recent call last):
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/superset/views/base.py", line 250, in wraps
    return f(self, *args, **kwargs)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/superset/views/base_api.py", line 460, in get_list_headless
    duration, response = time_function(super().get_list_headless, **kwargs)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/superset/utils/core.py", line 1586, in time_function
    response = func(*args, **kwargs)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_appbuilder/api/__init__.py", line 1613, in get_list_headless
    response[API_RESULT_RES_KEY] = list_model_schema.dump(lst, many=True)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/schema.py", line 549, in dump
    result = self._serialize(processed_obj, many=many)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/schema.py", line 511, in _serialize
    return [
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/schema.py", line 512, in <listcomp>
    self._serialize(d, many=False)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/schema.py", line 517, in _serialize
    value = field_obj.serialize(attr_name, obj, accessor=self.get_attribute)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/fields.py", line 340, in serialize
    return self._serialize(value, attr, obj, **kwargs)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/fields.py", line 2037, in _serialize
    return self._call_or_raise(self.serialize_func, obj, attr)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/marshmallow/fields.py", line 2050, in _call_or_raise
    return func(value)
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/superset/models/slice.py", line 172, in datasource_url
    return datasource.explore_url if datasource else None
AttributeError: 'Query' object has no attribute 'explore_url'
2023-10-11 17:45:53,830:INFO:werkzeug:172.24.2.11 - - [11/Oct/2023 17:45:53] "GET /api/v1/chart/?q=(order_column:changed_on_delta_humanized,order_direction:desc,page:0,page_size:25) HTTP/1.1" 500 -
2023-10-11 17:45:54,334:INFO:flask_wtf.csrf:The CSRF token is missing.
Refresh CSRF token error
Traceback (most recent call last):
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_wtf/csrf.py", line 261, in protect
    validate_csrf(self._get_csrf_token())
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_wtf/csrf.py", line 100, in validate_csrf
    raise ValidationError("The CSRF token is missing.")
wtforms.validators.ValidationError: The CSRF token is missing.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/app.py", line 1515, in full_dispatch_request
    rv = self.preprocess_request()
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/app.py", line 1857, in preprocess_request
    rv = self.ensure_sync(before_func)()
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_wtf/csrf.py", line 229, in csrf_protect
    self.protect()
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_wtf/csrf.py", line 264, in protect
    self._error_response(e.args[0])
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_wtf/csrf.py", line 307, in _error_response
    raise CSRFError(reason)
flask_wtf.csrf.CSRFError: 400 Bad Request: The CSRF token is missing.
2023-10-11 17:45:54,334:WARNING:superset.views.base:Refresh CSRF token error
Traceback (most recent call last):
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_wtf/csrf.py", line 261, in protect
    validate_csrf(self._get_csrf_token())
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_wtf/csrf.py", line 100, in validate_csrf
    raise ValidationError("The CSRF token is missing.")
wtforms.validators.ValidationError: The CSRF token is missing.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/app.py", line 1515, in full_dispatch_request
    rv = self.preprocess_request()
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask/app.py", line 1857, in preprocess_request
    rv = self.ensure_sync(before_func)()
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_wtf/csrf.py", line 229, in csrf_protect
    self.protect()
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_wtf/csrf.py", line 264, in protect
    self._error_response(e.args[0])
  File "/mnt/sprset-folder/superset-venv/lib64/python3.9/site-packages/flask_wtf/csrf.py", line 307, in _error_response
    raise CSRFError(reason)
flask_wtf.csrf.CSRFError: 400 Bad Request: The CSRF token is missing.
2023-10-11 17:45:54,335:INFO:werkzeug:172.24.2.11 - - [11/Oct/2023 17:45:54] "POST /superset/log/?explode=events HTTP/1.1" 302 -
2023-10-11 17:45:54,409:INFO:werkzeug:172.24.2.11 - - [11/Oct/2023 17:45:54] "GET /login/ HTTP/1.1" 302 -
2023-10-11 17:45:54,475:INFO:werkzeug:172.24.2.11 - - [11/Oct/2023 17:45:54] "GET / HTTP/1.1" 302 -
Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
2023-10-11 17:45:54,573:WARNING:superset.db_engine_specs:Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
2023-10-11 17:45:54,574:WARNING:superset.db_engine_specs:Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
2023-10-11 17:45:54,575:WARNING:superset.db_engine_specs:Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
2023-10-11 17:45:54,576:WARNING:superset.db_engine_specs:Unable to load SQLAlchemy dialect <class 'ibm_db_sa.pyodbc.AS400Dialect_pyodbc'>: No module named 'sqlalchemy.connectors.zxJDBC'
2023-10-11 17:45:54,692:INFO:werkzeug:172.24.2.11 - - [11/Oct/2023 17:45:54] "GET /superset/welcome/ HTTP/1.1" 200 -```

any help is appreciated!
rusackas commented 7 months ago

Hi there, and sorry this has gone quiet for so long. We're no longer supporting Superset 2.x or prior, and since it's been a while since this thread saw any activity, I'll close this as stale. If it is still an issue in Superset 3.x or nweer, we can re-open this, or feel free to open a new issue with updated context. Thanks!

scaffarelli commented 3 months ago

This is still an issue with 3.1.3 version.

hcai commented 3 weeks ago

We are seeing this with 4.0.0 as well @rusackas

Thanks