Installation

Python Version

We recommend using the latest version of Python. Mara supports Python 3.6 and newer.

Dependencies

These packages will be installed automatically when installing Mara Superset.

  • Mara DB implements database integration withing the Mara Framework.

  • Mara Page the basics for UI pages based on Flask.

  • Mara Schema modelling of data models within the Mara Framework.

  • Click is a framework for writing command line applications. It provides the flask command and allows adding custom management commands.

  • Requests is a simple HTTP library used to interact with the Superset API.

Install Mara Superset

There are two options to install:

  • Option 1: Install with local superset instance

  • Option 2: Using an already existing superset database

For option 1 follow the step-by-step guide until the end. For option 2 follow the guide and skip the steps 3 to 6.

  1. Add the mara-superset package to your mara project

  2. Add .scripts/mara-superset/superset.mk to your Makefile

  3. Call make install-local-superset

  4. In case you want to connect to a Microsoft SQL database, call make install-local-superset-mssql as well

  5. Create a new postgres database via sql statement

    CREATE DATABASE superset_metadata ENCODING UTF8 TEMPLATE template0;
    
  6. Create a supserset config file at app/superset_config.py with the following content:

    # Superset specific config
    ROW_LIMIT = 5000
    
    SUPERSET_WEBSERVER_PORT = 8088
    
    # Flask App Builder configuration
    # Your App secret key
    SECRET_KEY = 'USE_YOUR_OWN_SECURE_RANDOM_KEY'
    
    # The SQLAlchemy connection string to your database backend
    # This connection defines the path to the database that stores your
    # superset metadata (slices, connections, tables, dashboards, ...).
    # Note that the connection information to connect to the datasources
    # you want to explore are managed directly in the web UI
    SQLALCHEMY_DATABASE_URI = 'postgresql:///superset_metadata'
    
    # Flask-WTF flag for CSRF
    WTF_CSRF_ENABLED = True
    # Add endpoints that need to be exempt from CSRF protection
    WTF_CSRF_EXEMPT_LIST = []
    # A CSRF token that expires in 1 year
    WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365
    
    # Set this API key to enable Mapbox visualizations
    MAPBOX_API_KEY = ''
    
  7. Call make install-superset to initialize the superset database and then call make run-superset which will start Apache Superset in a gunicorn app in console.

    Now you should be able to log in to superset via http://localhost:8088

    The default username is admin and the password admin as well.

  8. Patch the app/local_setup.py file with the following content:

    import mara_superset.config
    
    # the external URL for your superset instance
    patch(mara_superset.config.external_superset_url)(lambda: 'https://external-superset-url.com/')
    
    # the internal URL used for API calls
    patch(mara_superset.config.internal_superset_url)(lambda: 'https://internal-superset-dns-name.local/')
    
    # the api username and password
    patch(mara_superset.config.superset_api_username)(lambda: 'admin')
    patch(mara_superset.config.superset_api_password)(lambda: 'admin')
    
    # the mara db alias for the database containing superset datasets
    patch(mara_superset.config.superset_data_db_alias)(lambda: 'superset-data-read')
    
    # the name of the database in Superset
    patch(mara_superset.config.superset_data_db_name)(lambda: 'MyCompany DWH')
    
    # the schema to be used for superset data sets
    patch(mara_superset.config.superset_data_db_schema)(lambda: 'superset')