redash Documentation

Make Your Company Data Driven. Connect to any data source, easily visualize, dashboard and share your data.

RAW Doc

Docker & Self-Hosted Deployment Verified OCI

Deploy redash on any server, homelab, or cloud container platform.

1-Click Terminal Command
bash (docker run)
docker run -d --name redash -p 5001:5001 --restart always redis:7-alpine
Configured Services & Ports
โš™๏ธ server
image: build locally
๐Ÿ”Œ Ports: 5001:5000, 5678:5678
โš™๏ธ scheduler
image: build locally
โš™๏ธ worker
image: build locally
โš™๏ธ redis
image: redis:7-alpine
โš™๏ธ postgres
image: postgres:18-alpine
๐Ÿ”Œ Ports: 15432:5432
โš™๏ธ email
image: maildev/maildev
๐Ÿ”Œ Ports: 1080:1080, 1025:1025
docker-compose.yml
yaml (docker-compose.yml)
# This configuration file is for the **development** setup.
# For a production example please refer to getredash/setup repository on GitHub.
x-redash-service: &redash-service
  build:
    context: .
    args:
      skip_frontend_build: "true"  # set to empty string to build
  volumes:
    - .:/app
  env_file:
    - .env
x-redash-environment: &redash-environment
  REDASH_HOST: http://localhost:5001
  REDASH_LOG_LEVEL: "INFO"
  REDASH_REDIS_URL: "redis://redis:6379/0"
  REDASH_DATABASE_URL: "postgresql://postgres@postgres/postgres"
  REDASH_RATELIMIT_ENABLED: "false"
  REDASH_MAIL_DEFAULT_SENDER: "[email protected]"
  REDASH_MAIL_SERVER: "email"
  REDASH_MAIL_PORT: 1025
  REDASH_ENFORCE_CSRF: "true"
  REDASH_GUNICORN_TIMEOUT: 60
  # Set secret keys in the .env file
services:
  server:
    <<: *redash-service
    command: dev_server
    depends_on:
      - postgres
      - redis
    ports:
      - "5001:5000"
      - "5678:5678"
    environment:
      <<: *redash-environment
      PYTHONUNBUFFERED: 0
  scheduler:
    <<: *redash-service
    command: dev_scheduler
    depends_on:
      - server
    environment:
      <<: *redash-environment
  worker:
    <<: *redash-service
    command: dev_worker
    depends_on:
      - server
    environment:
      <<: *redash-environment
      PYTHONUNBUFFERED: 0
  redis:
    image: redis:7-alpine
    restart: unless-stopped
  postgres:
    image: postgres:18-alpine
    ports:
      - "15432:5432"
    # The following turns the DB into less durable, but gains significant performance improvements for the tests run (x3
    # improvement on my personal machine). We should consider moving this into a dedicated Docker Compose configuration for
    # tests.
    command: "postgres -c fsync=off -c full_page_writes=off -c synchronous_commit=OFF"
    restart: unless-stopped
    environment:
      POSTGRES_HOST_AUTH_METHOD: "trust"
  email:
    image: maildev/maildev
    ports:
      - "1080:1080"
      - "1025:1025"
    restart: unless-stopped

1. Project Overview & Quickstart (getredash/redash)

File: README.md


Redash is designed to enable anyone, regardless of the level of technical sophistication, to harness the power of data big and small. SQL users leverage Redash to explore, query, visualize, and share data from any data source. Their work, in turn, enables anybody in their organization to use the data. Every day, millions of users at thousands of organizations around the world use Redash to develop insights and make data-driven decisions.

Redash features:

  1. Browser-based: Everything in your browser, with a shareable URL.
  2. Ease-of-use: Become immediately productive with data without the need to master complex software.
  3. Query editor: Quickly compose SQL and NoSQL queries with a schema browser and auto-complete.
  4. Visualization and dashboards: Create beautiful visualizations with drag and drop, and combine them into a single dashboard.
  5. Sharing: Collaborate easily by sharing visualizations and their associated queries, enabling peer review of reports and queries.
  6. Schedule refreshes: Automatically update your charts and dashboards at regular intervals you define.
  7. Alerts: Define conditions and be alerted instantly when your data changes.
  8. REST API: Everything that can be done in the UI is also available through the REST API.
  9. Broad support for data sources: An extensible data source API with native support for a long list of common databases and platforms.

Getting Started

Supported Data Sources

Redash supports more than 35 SQL and NoSQL data sources. It can also be extended to support more. Below is a list of built-in sources:

  • Amazon Athena
  • Amazon CloudWatch / Insights
  • Amazon DynamoDB
  • Amazon Redshift
  • ArangoDB
  • Axibase Time Series Database
  • Apache Cassandra
  • ClickHouse
  • CockroachDB
  • Couchbase
  • CSV
  • Databricks
  • DB2 by IBM
  • Dgraph
  • Apache Drill
  • Apache Druid
  • e6data
  • Eccenca Corporate Memory
  • Elasticsearch
  • Exasol
  • Microsoft Excel
  • Firebolt
  • Databend
  • Google Analytics
  • Google BigQuery
  • Google Spreadsheets
  • Graphite
  • Greenplum
  • Apache Hive
  • Apache Impala
  • InfluxDB
  • InfluxDBv2
  • IBM Netezza Performance Server
  • JIRA (JQL)
  • JSON
  • Apache Kylin
  • OmniSciDB (Formerly MapD)
  • MariaDB
  • MemSQL
  • Microsoft Azure Data Warehouse / Synapse
  • Microsoft Azure SQL Database
  • Microsoft Azure Data Explorer / Kusto
  • Microsoft SQL Server
  • MongoDB
  • MySQL
  • Oracle
  • Apache Phoenix
  • Apache Pinot
  • PostgreSQL
  • Presto
  • Prometheus
  • Python
  • Qubole
  • Rockset
  • RisingWave
  • Salesforce
  • ScyllaDB
  • Shell Scripts
  • Snowflake
  • SPARQL
  • SQLite
  • TiDB
  • Tinybird
  • TreasureData
  • Trino
  • Uptycs
  • Vertica
  • Yandex AppMetrica
  • Yandex Metrica

Getting Help

Reporting Bugs and Contributing Code

  • Want to report a bug or request a feature? Please open an issue.
  • Want to help us build Redash? Fork the project, edit in a dev environment and make a pull request. We need all the help we can get!

Security

Please email [email protected] to report any security vulnerabilities. We will acknowledge receipt of your vulnerability and strive to send you regular updates about our progress. If you're curious about the status of your disclosure please feel free to email us again. If you want to encrypt your disclosure email, you can use this PGP key.

License

BSD-2-Clause.


File: client/app/assets/images/illustrations/readme.md

The illustrations shared in this folder are covered by the CC-BY-SA-NC-ND License v4.0 (or newer). You are allowed to use them when using unmodified versions of the Redash source code for non-commercial purposes (meaning for yourself), but you are not allowed to use for any other use or to distribute them as part of your software or fork of Redash.

For any questions, please contact us.


File: scripts/README.md

You can use this folder to add scripts and configurations to customize Redash build and development loop.

How to customize Webpack

Configurable parameters

You can override the values of configurable parameters by exporting a CONFIG object from the module located at scripts/config.

Currently the following parameters are supported:

  • staticPath: Override the location of Redash static files (default = /static/).

Example Configuration (`scripts/config.js`):

javascript
module.exports = {
  staticPath: "my/redash/static/path"
};

Programmatically

For advanced customization, you can provide a script to apply any kind of overrides to the default config as provided by webpack.config.js.

The override module must be located under scripts/webpack/overrides. It should export a function that receives the Webpack configuration object and returns the overridden version.

Example Override Script (`scripts/webpack/overrides.js`):

This is an example of an override that enables Webpack stats.

javascript
function applyOverrides(webpackConfig) {
  return {
    ...webpackConfig,
    stats: {
      children: true,
      modules: true,
      chunkModules: true
    }
  };
}

module.exports = applyOverrides;

File: setup/README.md

Setup script for Redash with Docker on Ubuntu 18.04.

The setup script moved to its own repository:

https://github.com/getredash/setup


File: viz-lib/README.md

@redash/viz

@redash/viz is a library containing the visualizations used by Redash.

Installation

Required libraries:

  • react (>=16.8.0)
  • react-dom (>=16.8.0)
  • antd (>=4.0.0)

Using npm:

bash
npm install @redash/viz

Using pnpm:

bash
pnpm add @redash/viz

Usage

Basic Usage

You can check our live example or follow the code below:

jsx
import React, { useState } from "react";
import { Renderer, Editor } from "@redash/viz";

const exampleData = {
  columns: [
    { type: null, name: "Country" },
    { type: null, name: "Amount" },
  ],
  rows: [
    { Amount: 37.620000000000005, Country: "Argentina" },
    { Amount: 37.620000000000005, Country: "Australia" },
    { Amount: 42.62, Country: "Austria" },
    { Amount: 37.62, Country: "Belgium" },
    { Amount: 190.09999999999997, Country: "Brazil" },
    { Amount: 303.9599999999999, Country: "Canada" },
    { Amount: 46.62, Country: "Chile" },
    { Amount: 90.24000000000001, Country: "Czech Republic" },
    { Amount: 37.620000000000005, Country: "Denmark" },
    { Amount: 41.620000000000005, Country: "Finland" },
    { Amount: 195.09999999999994, Country: "France" },
  ],
};

function Example() {
  const [options, setOptions] = useState({ countRows: true });

  return (
    
      <Editor
        type="COUNTER"
        visualizationName="Example Visualization"
        options={options}
        data={exampleData}
        onChange={setOptions}
      />
      <Renderer type="COUNTER" visualizationName="Example Visualization" options={options} data={exampleData} />
    
  );
}

Available Types

  • Chart: CHART
  • Cohort: COHORT
  • Counter: COUNTER
  • Details View: DETAILS
  • Funnel: FUNNEL
  • Map (Choropleth): CHOROPLETH
  • Map (Markers): MAP
  • Pivot Table: PIVOT
  • Sankey: SANKEY
  • Sunburst Sequence: SUNBURST_SEQUENCE
  • Table: TABLE
  • Word Cloud: WORD_CLOUD

Column Types

Types used for the columns property in the data object. Currently used to determine the default column view for the Table Visualization. This field is not mandatory and can receive a null value.

Example:

js
const data = {
  columns: [
    { type: "string", name: "Country" },
    { type: "float", name: "Amount" },
  ],
  rows: [],
};

Available types:

  • integer
  • float
  • boolean
  • string
  • datetime
  • date

Customizable Settings

Option Description Type Default
dateFormat Date Format string "DD/MM/YYYY"
dateTimeFormat DateTime Format string "DD/MM/YYYY HH:mm"
integerFormat Integer Format string "0,0"
floatFormat Float Format string "0,0.00"
booleanValues Boolean names Array [string, string] (correspond to false and true values) ["false", "true"]
tableCellMaxJSONSize Max json size that will be parsed and rendered in a Table Cell integer 50000
allowCustomJSVisualization Whether to allow the Custom chart type boolean false
hidePlotlyModeBar Whether to hide the Plotly Mode Bar on charts boolean false
choroplethAvailableMaps Configure the JSONs used for Choropleth maps (Note: Choropleth won't work without this setting) Object (see example below) {}
HelpTriggerComponent Component used to render helper links on the Editor React component with title and href props Renders a tooltip with a link

Example:

jsx
import React from "react";
import { Renderer, Editor, updateVisualizationsSettings } from "@redash/viz";

import countriesDataUrl from "@redash/viz/lib/visualizations/choropleth/maps/countries.geo.json";
import subdivJapanDataUrl from "@redash/viz/lib/visualizations/choropleth/maps/japan.prefectures.geo.json";

function wrapComponentWithSettings(WrappedComponent) {
  return function VisualizationComponent(props) {
    updateVisualizationsSettings({
      choroplethAvailableMaps: {
        countries: {
          name: "Countries",
          url: countriesDataUrl,
        },
        subdiv_japan: {
          name: "Japan/Prefectures",
          url: subdivJapanDataUrl,
        },
      },
      dateFormat: "YYYY/MM/DD",
      booleanValues: ["False", "True"],
      hidePlotlyModeBar: true,
    });

    return <WrappedComponent {...props} />;
  };
}

export const ConfiguredRenderer = wrapComponentWithSettings(Renderer);
export const ConfiguredEditor = wrapComponentWithSettings(Editor);

Specific File Imports

There is a transpiled only build aimed for specific file imports.

Note: Currently requires Less.

Usage:

jsx
import React from "react";
import JsonViewInteractive from "@redash/viz/lib/components/json-view-interactive/JsonViewInteractive";

const example = { list: ["value1", "value2", "value3"], obj: { prop: "value" } };

export default function App() {
  return <JsonViewInteractive value={example} />;
}

License

BSD-2-Clause.

2. Official Technical Reference & Guides (getredash/website)

Redash Website and Knowledge Base

We use Gatsby as our static site generator. The website is built and hosted with
Netlify.

Updating contributors data file

text
yarn fetch-contributors > website/_data/contributors.json

Website development

Gatsby Installed Locally

To start Gatsby in development mode and serve the the website on
http://localhost:8000 use:

text
yarn run develop

If you prefer Gatsby listen on an interface or IP address other than localhost,
use:

text
yarn run develop -H ip_address

For example:

text
yarn run develop -H 10.11.12.13

Using a DNS name in place of an IP address will also work, assuming the DNS
entry resolves to an IP address on the local machine. This can be achieved
through editing your /etc/hosts.

Docker Setup

First install dependencies:

text
docker-compose run --rm gatsby install

On first run, it will build the Docker image we're using. Once the Node modules
were installed, you can run the following to start the dev server:

text
docker-compose up -d

This will run gatsby develop in the Docker container in the background,
listening on http://localhost:8000. The first time
you run this command it might take a few moments for Gatsby to compile the
website. You can check progress by tailing the logs:

text
docker-compose logs -f

You can edit the project locally and the changes will be reflected inside the
Docker container.