apache / superset

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

Unable to create/see datasets #29930

Open techieravishah opened 3 months ago

techieravishah commented 3 months ago

Bug description

Hi Team,

I recently installed Superset 4.0.2 with MYSQL as database. Both of them are installed in the same VM. I have one database that I need to use to generate dashboards. We tried creating datasets but unable to create one.

How to reproduce the bug

  1. Installed Superset 4.0.2 + MYSQL8

  2. OS - Linux Ubuntu 22.04 LTS

  3. Logged in as an admin in superset. Navigate to Settings -> Database Connections -> Added a MYSQL Database - image

  4. Connection was successful.

  5. Navigated to Datasets -> Clicked on +Dataset

  6. Selected Database, Schema, Table

  7. Clicked on Create Dataset and Create Chart

  8. Got redirected to Charts screen, there I was unable to select the dataset. image

Not sure, what is the issue. The only thing I was able to see in logs is - "POST /api/v1/dataset/ HTTP/1.1" 422

Can anyone assist with this errors?

Screenshots/recordings

No response

Superset version

master / latest-dev

Python version

I don't know

Node version

I don't know

Browser

Chrome

Additional context

No response

Checklist

dosubot[bot] commented 3 months ago

Hey @techieravishah! I'm here to help you with the issue you're facing. I'm a bot that can assist with bug fixes, answer questions, and guide you on becoming a contributor. Let's tackle this together!

The error message "POST /api/v1/dataset/ HTTP/1.1" 422 indicates a validation issue with the data being sent to create the dataset. The 422 status code means "Unprocessable Entity," which typically points to validation errors in the request payload.

To diagnose and resolve this issue, follow these steps:

  1. Ensure Correct JSON Payload: Verify that the JSON payload sent to the /api/v1/dataset/ endpoint is correctly formatted and contains all required fields. The DatasetPostSchema class defines the required fields and their validation rules:

    class DatasetPostSchema(Schema):
        database = fields.Integer(required=True)
        catalog = fields.String(allow_none=True, validate=Length(0, 250))
        schema = fields.String(allow_none=True, validate=Length(0, 250))
        table_name = fields.String(required=True, allow_none=False, validate=Length(1, 250))
        sql = fields.String(allow_none=True)
        owners = fields.List(fields.Integer())
        is_managed_externally = fields.Boolean(allow_none=True, dump_default=False)
        external_url = fields.String(allow_none=True)
        normalize_columns = fields.Boolean(load_default=False)
        always_filter_main_dttm = fields.Boolean(load_default=False)
  2. Check Server Logs: Look for detailed error messages in the server logs that might provide more context about why the dataset creation failed.

  3. Enable Detailed Logging: To capture more information, enable detailed logging by setting the logger level to DEBUG for the relevant module. You can do this by adding the following configuration:

    import logging
    
    # Set the logger for the specific module to DEBUG level
    logging.getLogger('superset.datasets.api').setLevel(logging.DEBUG)

    You can place this configuration in your main application setup or configuration file where the logging is initialized.

  4. Known Issues: There are known issues in Superset 4.0.2 related to dataset creation that might cause a 422 error due to DatasetInvalidError or DatasetCreateFailedError during the dataset creation process [1].

By following these steps, you should be able to identify and resolve the issue causing the 422 error during dataset creation.

To continue talking to Dosu, mention @dosu.