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:
- Browser-based: Everything in your browser, with a shareable URL.
- Ease-of-use: Become immediately productive with data without the need to master complex software.
- Query editor: Quickly compose SQL and NoSQL queries with a schema browser and auto-complete.
- Visualization and dashboards: Create beautiful visualizations with drag and drop, and combine them into a single dashboard.
- Sharing: Collaborate easily by sharing visualizations and their associated queries, enabling peer review of reports and queries.
- Schedule refreshes: Automatically update your charts and dashboards at regular intervals you define.
- Alerts: Define conditions and be alerted instantly when your data changes.
- REST API: Everything that can be done in the UI is also available through the REST API.
- Broad support for data sources: An extensible data source API with native support for a long list of common databases and platforms.
Getting Started
- Setting up a Redash instance (includes links to ready-made AWS/GCE images).
- Documentation.
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
- Issues: https://github.com/getredash/redash/issues
- Discussion Forum: https://github.com/getredash/redash/discussions/
- Development Discussion: https://discord.gg/tN5MdmfGBp
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`):
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.
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:
npm install @redash/vizUsing pnpm:
pnpm add @redash/vizUsage
Basic Usage
You can check our live example or follow the code below:
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:
const data = {
columns: [
{ type: "string", name: "Country" },
{ type: "float", name: "Amount" },
],
rows: [],
};Available types:
integerfloatbooleanstringdatetimedate
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:
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:
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
yarn fetch-contributors > website/_data/contributors.jsonWebsite development
Gatsby Installed Locally
To start Gatsby in development mode and serve the the website onhttp://localhost:8000 use:
yarn run developIf you prefer Gatsby listen on an interface or IP address other than localhost,
use:
yarn run develop -H ip_addressFor example:
yarn run develop -H 10.11.12.13Using 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:
docker-compose run --rm gatsby installOn 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:
docker-compose up -dThis 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:
docker-compose logs -fYou can edit the project locally and the changes will be reflected inside the
Docker container.