SIP-32: Moving frontend code to the base of the repo (#9098)
* move assets out, get webpack dev working * update docs to reference superset-frontend * draw the rest of the owl * fix docs * fix webpack script * rats * correct docs * fix tox dox
@@ -34,7 +34,7 @@
|
|||||||
tests/
|
tests/
|
||||||
docs/
|
docs/
|
||||||
install/
|
install/
|
||||||
superset/assets/node_modules/
|
superset-frontend/node_modules/
|
||||||
superset/assets/cypress/
|
superset-frontend/cypress/
|
||||||
superset/assets/coverage/
|
superset-frontend/coverage/
|
||||||
venv
|
venv
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ analyze:
|
|||||||
modules:
|
modules:
|
||||||
- name: assets
|
- name: assets
|
||||||
type: npm
|
type: npm
|
||||||
target: superset/assets
|
target: superset-frontend
|
||||||
path: superset/assets
|
path: superset-frontend
|
||||||
- name: docs
|
- name: docs
|
||||||
type: pip
|
type: pip
|
||||||
target: docs
|
target: docs
|
||||||
|
|||||||
10
.gitignore
vendored
@@ -51,16 +51,18 @@ local_config.py
|
|||||||
superset.egg-info/
|
superset.egg-info/
|
||||||
superset/bin/supersetc
|
superset/bin/supersetc
|
||||||
tmp
|
tmp
|
||||||
|
rat-results.txt
|
||||||
|
|
||||||
# Node.js, webpack artifacts
|
# Node.js, webpack artifacts
|
||||||
*.entry.js
|
*.entry.js
|
||||||
*.js.map
|
*.js.map
|
||||||
node_modules
|
node_modules
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
superset/assets/coverage/*
|
superset-frontend/coverage/*
|
||||||
superset/assets/cypress/screenshots
|
superset-frontend/cypress/screenshots
|
||||||
superset/assets/cypress/videos
|
superset-frontend/cypress/videos
|
||||||
superset/assets/version_info.json
|
superset-frontend/version_info.json
|
||||||
|
superset/static
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
|
|
||||||
# IntelliJ
|
# IntelliJ
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ node_modules/*
|
|||||||
rat-results.txt
|
rat-results.txt
|
||||||
babel-node
|
babel-node
|
||||||
dist
|
dist
|
||||||
|
superset/static/*
|
||||||
build
|
build
|
||||||
superset.egg-info
|
superset.egg-info
|
||||||
apache_superset.egg-info
|
apache_superset.egg-info
|
||||||
@@ -32,6 +33,7 @@ apache_superset.egg-info
|
|||||||
env/*
|
env/*
|
||||||
docs/_build/*
|
docs/_build/*
|
||||||
docs/_modules/*
|
docs/_modules/*
|
||||||
|
docs/_static/*
|
||||||
_build/*
|
_build/*
|
||||||
_static/*
|
_static/*
|
||||||
.buildinfo
|
.buildinfo
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ cache:
|
|||||||
- ~/.npm
|
- ~/.npm
|
||||||
- ~/.cache
|
- ~/.cache
|
||||||
- ~/.travis_cache/
|
- ~/.travis_cache/
|
||||||
- superset/assets/.terser-plugin-cache/
|
- superset-frontend/.terser-plugin-cache/
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ Here's a list of repositories that contain Superset-related packages:
|
|||||||
distributed on
|
distributed on
|
||||||
[pypi](https://pypi.org/project/apache-superset/). This repository
|
[pypi](https://pypi.org/project/apache-superset/). This repository
|
||||||
also includes Superset's main Javascript bundles and react apps under
|
also includes Superset's main Javascript bundles and react apps under
|
||||||
the [superset/assets](https://github.com/apache/incubator-superset/tree/master/superset/assets)
|
the [superset-frontend](https://github.com/apache/incubator-superset/tree/master/superset-frontend)
|
||||||
folder.
|
folder.
|
||||||
- [apache-superset/superset-ui](https://github.com/apache-superset/superset-ui)
|
- [apache-superset/superset-ui](https://github.com/apache-superset/superset-ui)
|
||||||
contains core Superset's
|
contains core Superset's
|
||||||
@@ -322,15 +322,15 @@ Then, [open a pull request](https://help.github.com/articles/about-pull-requests
|
|||||||
If you're adding new images to the documentation, you'll notice that the images
|
If you're adding new images to the documentation, you'll notice that the images
|
||||||
referenced in the rst, e.g.
|
referenced in the rst, e.g.
|
||||||
|
|
||||||
.. image:: _static/img/tutorial/tutorial_01_sources_database.png
|
.. image:: _static/images/tutorial/tutorial_01_sources_database.png
|
||||||
|
|
||||||
aren't actually stored in that directory. Instead, you should add and commit
|
aren't actually stored in that directory. Instead, you should add and commit
|
||||||
images (and any other static assets) to the `superset/assets/images` directory.
|
images (and any other static assets) to the `superset-frontend/images` directory.
|
||||||
When the docs are deployed to https://superset.incubator.apache.org/, images
|
When the docs are deployed to https://superset.incubator.apache.org/, images
|
||||||
are copied from there to the `_static/img` directory, just like they're referenced
|
are copied from there to the `_static/images` directory, just like they're referenced
|
||||||
in the docs.
|
in the docs.
|
||||||
|
|
||||||
For example, the image referenced above actually lives in `superset/assets/images/tutorial`. Since the image is moved during the documentation build process, the docs reference the image in `_static/img/tutorial` instead.
|
For example, the image referenced above actually lives in `superset-frontend/images/tutorial`. Since the image is moved during the documentation build process, the docs reference the image in `_static/images/tutorial` instead.
|
||||||
|
|
||||||
#### API documentation
|
#### API documentation
|
||||||
|
|
||||||
@@ -418,7 +418,7 @@ app.logger.info(form_data)
|
|||||||
|
|
||||||
### Frontend Assets
|
### Frontend Assets
|
||||||
|
|
||||||
Frontend assets (JavaScript, CSS, and images) must be compiled in order to properly display the web UI. The `superset/assets` directory contains all NPM-managed front end assets. Note that there are additional frontend assets bundled with Flask-Appbuilder (e.g. jQuery and bootstrap); these are not managed by NPM, and may be phased out in the future.
|
Frontend assets (JavaScript, CSS, and images) must be compiled in order to properly display the web UI. The `superset-frontend` directory contains all NPM-managed front end assets. Note that there are additional frontend assets bundled with Flask-Appbuilder (e.g. jQuery and bootstrap); these are not managed by NPM, and may be phased out in the future.
|
||||||
|
|
||||||
#### nvm and node
|
#### nvm and node
|
||||||
|
|
||||||
@@ -437,7 +437,7 @@ Install third-party dependencies listed in `package.json`:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# From the root of the repository
|
# From the root of the repository
|
||||||
cd superset/assets
|
cd superset-frontend
|
||||||
|
|
||||||
# Install dependencies from `package-lock.json`
|
# Install dependencies from `package-lock.json`
|
||||||
npm ci
|
npm ci
|
||||||
@@ -481,7 +481,7 @@ See docs [here](docker/README.md)
|
|||||||
#### Updating NPM packages
|
#### Updating NPM packages
|
||||||
|
|
||||||
Use npm in the prescribed way, making sure that
|
Use npm in the prescribed way, making sure that
|
||||||
`superset/assets/package-lock.json` is updated according to `npm`-prescribed
|
`superset-frontend/package-lock.json` is updated according to `npm`-prescribed
|
||||||
best practices.
|
best practices.
|
||||||
|
|
||||||
#### Feature flags
|
#### Feature flags
|
||||||
@@ -494,7 +494,7 @@ FEATURE_FLAGS = {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
If you want to use the same flag in the client code, also add it to the FeatureFlag TypeScript enum in `superset/assets/src/featureFlags.ts`. For example,
|
If you want to use the same flag in the client code, also add it to the FeatureFlag TypeScript enum in `superset-frontend/src/featureFlags.ts`. For example,
|
||||||
|
|
||||||
```
|
```
|
||||||
export enum FeatureFlag {
|
export enum FeatureFlag {
|
||||||
@@ -524,7 +524,7 @@ Lint the project with:
|
|||||||
tox -e flake8
|
tox -e flake8
|
||||||
|
|
||||||
# for javascript
|
# for javascript
|
||||||
cd superset/assets
|
cd superset-frontend
|
||||||
npm ci
|
npm ci
|
||||||
npm run lint
|
npm run lint
|
||||||
```
|
```
|
||||||
@@ -616,7 +616,7 @@ def sqrt(x: Union[float, int]) -> Union[float, int]:
|
|||||||
We use [Jest](https://jestjs.io/) and [Enzyme](https://airbnb.io/enzyme/) to test Javascript. Tests can be run with:
|
We use [Jest](https://jestjs.io/) and [Enzyme](https://airbnb.io/enzyme/) to test Javascript. Tests can be run with:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd superset/assets
|
cd superset-frontend
|
||||||
npm run test
|
npm run test
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -636,7 +636,7 @@ superset run --port 8081
|
|||||||
Run Cypress tests:
|
Run Cypress tests:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd superset/assets
|
cd superset-frontend
|
||||||
npm run build
|
npm run build
|
||||||
|
|
||||||
cd cypress-base
|
cd cypress-base
|
||||||
@@ -653,7 +653,7 @@ npm run cypress run -- --spec cypress/integration/dashboard/index.test.js --conf
|
|||||||
npm run cypress open
|
npm run cypress open
|
||||||
```
|
```
|
||||||
|
|
||||||
See [`superset/assets/cypress_build.sh`](https://github.com/apache/incubator-superset/blob/master/superset/assets/cypress_build.sh).
|
See [`superset-frontend/cypress_build.sh`](https://github.com/apache/incubator-superset/blob/master/superset-frontend/cypress_build.sh).
|
||||||
|
|
||||||
## Translating
|
## Translating
|
||||||
|
|
||||||
|
|||||||
14
Dockerfile
@@ -42,15 +42,15 @@ RUN cd /app \
|
|||||||
FROM node:10-jessie AS superset-node
|
FROM node:10-jessie AS superset-node
|
||||||
|
|
||||||
# NPM ci first, as to NOT invalidate previous steps except for when package.json changes
|
# NPM ci first, as to NOT invalidate previous steps except for when package.json changes
|
||||||
RUN mkdir -p /app/superset/assets
|
RUN mkdir -p /app/superset-frontend
|
||||||
COPY ./superset/assets/package* /app/superset/assets/
|
COPY ./superset-frontend/package* /app/superset-frontend/
|
||||||
RUN cd /app/superset/assets \
|
RUN cd /app/superset-frontend \
|
||||||
&& npm ci
|
&& npm ci
|
||||||
|
|
||||||
# Next, copy in the rest and let webpack do its thing
|
# Next, copy in the rest and let webpack do its thing
|
||||||
COPY ./superset/assets /app/superset/assets
|
COPY ./superset-frontend /app/superset-frontend
|
||||||
# This is BY FAR the most expensive step (thanks Terser!)
|
# This is BY FAR the most expensive step (thanks Terser!)
|
||||||
RUN cd /app/superset/assets \
|
RUN cd /app/superset-frontend \
|
||||||
&& npm run build \
|
&& npm run build \
|
||||||
&& rm -rf node_modules
|
&& rm -rf node_modules
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ RUN useradd --user-group --no-create-home --no-log-init --shell /bin/bash supers
|
|||||||
COPY --from=superset-py /usr/local/lib/python3.6/site-packages/ /usr/local/lib/python3.6/site-packages/
|
COPY --from=superset-py /usr/local/lib/python3.6/site-packages/ /usr/local/lib/python3.6/site-packages/
|
||||||
# Copying site-packages doesn't move the CLIs, so let's copy them one by one
|
# Copying site-packages doesn't move the CLIs, so let's copy them one by one
|
||||||
COPY --from=superset-py /usr/local/bin/gunicorn /usr/local/bin/celery /usr/local/bin/flask /usr/bin/
|
COPY --from=superset-py /usr/local/bin/gunicorn /usr/local/bin/celery /usr/local/bin/flask /usr/bin/
|
||||||
COPY --from=superset-node /app/superset/assets /app/superset/assets
|
COPY --from=superset-node /app/superset-frontend /app/superset-frontend
|
||||||
|
|
||||||
## Lastly, let's install superset itself
|
## Lastly, let's install superset itself
|
||||||
COPY superset /app/superset
|
COPY superset /app/superset
|
||||||
@@ -112,4 +112,4 @@ COPY ./requirements-dev.txt ./docker/requirements-extra.txt /app/
|
|||||||
USER root
|
USER root
|
||||||
RUN cd /app \
|
RUN cd /app \
|
||||||
&& pip install --no-cache -r requirements-dev.txt -r requirements-extra.txt
|
&& pip install --no-cache -r requirements-dev.txt -r requirements-extra.txt
|
||||||
USER superset
|
USER superset
|
||||||
|
|||||||
13
MANIFEST.in
@@ -20,18 +20,7 @@ graft licenses/
|
|||||||
include README.md
|
include README.md
|
||||||
recursive-include superset/examples *
|
recursive-include superset/examples *
|
||||||
recursive-include superset/migrations *
|
recursive-include superset/migrations *
|
||||||
|
|
||||||
include superset/assets/package.json
|
|
||||||
|
|
||||||
# Whitelist anything that needs to be added to the static bundle
|
|
||||||
recursive-exclude superset/static *
|
|
||||||
recursive-include superset/static/assets/branding *
|
|
||||||
recursive-include superset/static/assets/dist *
|
|
||||||
recursive-include superset/static/assets/images *
|
|
||||||
recursive-exclude superset/static/images/viz_thumbnails_large *
|
|
||||||
recursive-include superset/static/assets/stylesheets *
|
|
||||||
include superset/static/assets/version_info.json
|
|
||||||
|
|
||||||
recursive-include superset/templates *
|
recursive-include superset/templates *
|
||||||
recursive-include superset/translations *
|
recursive-include superset/translations *
|
||||||
|
recursive-include superset/static *
|
||||||
recursive-exclude tests *
|
recursive-exclude tests *
|
||||||
|
|||||||
12
README.md
@@ -25,7 +25,7 @@ Superset
|
|||||||
[](https://pypi.python.org/pypi/apache-superset)
|
[](https://pypi.python.org/pypi/apache-superset)
|
||||||
[](https://join.slack.com/t/apache-superset/shared_invite/enQtNDMxMDY5NjM4MDU0LWJmOTcxYjlhZTRhYmEyYTMzOWYxOWEwMjcwZDZiNWRiNDY2NDUwNzcwMDFhNzE1ZmMxZTZlZWY0ZTQ2MzMyNTU)
|
[](https://join.slack.com/t/apache-superset/shared_invite/enQtNDMxMDY5NjM4MDU0LWJmOTcxYjlhZTRhYmEyYTMzOWYxOWEwMjcwZDZiNWRiNDY2NDUwNzcwMDFhNzE1ZmMxZTZlZWY0ZTQ2MzMyNTU)
|
||||||
[](https://superset.incubator.apache.org)
|
[](https://superset.incubator.apache.org)
|
||||||
[](https://david-dm.org/apache/incubator-superset?path=superset/assets)
|
[](https://david-dm.org/apache/incubator-superset?path=superset-frontend)
|
||||||
|
|
||||||
<img
|
<img
|
||||||
src="https://cloud.githubusercontent.com/assets/130878/20946612/49a8a25c-bbc0-11e6-8314-10bef902af51.png"
|
src="https://cloud.githubusercontent.com/assets/130878/20946612/49a8a25c-bbc0-11e6-8314-10bef902af51.png"
|
||||||
@@ -42,23 +42,23 @@ Screenshots & Gifs
|
|||||||
|
|
||||||
**View Dashboards**
|
**View Dashboards**
|
||||||
|
|
||||||
<kbd><img title="View Dashboards" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset/assets/images/screenshots/bank_dash.png"></kbd><br/>
|
<kbd><img title="View Dashboards" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset-frontend/images/screenshots/bank_dash.png"></kbd><br/>
|
||||||
|
|
||||||
**Slice & dice your data**
|
**Slice & dice your data**
|
||||||
|
|
||||||
<kbd><img title="Slice & dice your data" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset/assets/images/screenshots/explore.png"></kbd><br/>
|
<kbd><img title="Slice & dice your data" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset-frontend/images/screenshots/explore.png"></kbd><br/>
|
||||||
|
|
||||||
**Query and visualize your data with SQL Lab**
|
**Query and visualize your data with SQL Lab**
|
||||||
|
|
||||||
<kbd><img title="SQL Lab" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset/assets/images/screenshots/sqllab.png"></kbd><br/>
|
<kbd><img title="SQL Lab" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset-frontend/images/screenshots/sqllab.png"></kbd><br/>
|
||||||
|
|
||||||
**Visualize geospatial data with deck.gl**
|
**Visualize geospatial data with deck.gl**
|
||||||
|
|
||||||
<kbd><img title="Geospatial" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset/assets/images/screenshots/deckgl_dash.png"></kbd><br/>
|
<kbd><img title="Geospatial" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset-frontend/images/screenshots/deckgl_dash.png"></kbd><br/>
|
||||||
|
|
||||||
**Choose from a wide array of visualizations**
|
**Choose from a wide array of visualizations**
|
||||||
|
|
||||||
<kbd><img title="Visualizations" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset/assets/images/screenshots/visualizations.png"></kbd><br/>
|
<kbd><img title="Visualizations" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset-frontend/images/screenshots/visualizations.png"></kbd><br/>
|
||||||
|
|
||||||
Apache Superset
|
Apache Superset
|
||||||
---------------
|
---------------
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ ARG SUPERSET_RELEASE_RC_TARBALL
|
|||||||
# Can fetch source from svn or copy tarball from local mounted directory
|
# Can fetch source from svn or copy tarball from local mounted directory
|
||||||
COPY $SUPERSET_RELEASE_RC_TARBALL ./
|
COPY $SUPERSET_RELEASE_RC_TARBALL ./
|
||||||
RUN tar -xvf *.tar.gz
|
RUN tar -xvf *.tar.gz
|
||||||
WORKDIR /home/superset/apache-superset-incubating-$VERSION/superset/assets
|
WORKDIR /home/superset/apache-superset-incubating-$VERSION/superset-frontend
|
||||||
|
|
||||||
RUN npm ci \
|
RUN npm ci \
|
||||||
&& npm run build \
|
&& npm run build \
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ RUN svn co https://dist.apache.org/repos/dist/dev/incubator/superset/$VERSION ./
|
|||||||
RUN tar -xvf *.tar.gz
|
RUN tar -xvf *.tar.gz
|
||||||
WORKDIR apache-superset-incubating-$VERSION
|
WORKDIR apache-superset-incubating-$VERSION
|
||||||
|
|
||||||
RUN cd superset/assets \
|
RUN cd superset-frontend \
|
||||||
&& npm ci \
|
&& npm ci \
|
||||||
&& npm run build \
|
&& npm run build \
|
||||||
&& rm -rf node_modules
|
&& rm -rf node_modules
|
||||||
|
|||||||
@@ -56,9 +56,9 @@ need to be done at every release.
|
|||||||
|
|
||||||
## Crafting a source release
|
## Crafting a source release
|
||||||
|
|
||||||
When crafting a new minor or major release we create
|
When crafting a new minor or major release we create
|
||||||
a branch named with the release MAJOR.MINOR version (on this example 0.34).
|
a branch named with the release MAJOR.MINOR version (on this example 0.34).
|
||||||
This new branch will hold all PATCH and release candidates
|
This new branch will hold all PATCH and release candidates
|
||||||
that belong to the MAJOR.MINOR version.
|
that belong to the MAJOR.MINOR version.
|
||||||
|
|
||||||
The MAJOR.MINOR branch is normally a "cut" from a specific point in time from the master branch.
|
The MAJOR.MINOR branch is normally a "cut" from a specific point in time from the master branch.
|
||||||
@@ -77,7 +77,7 @@ deprecations and upgrading-related topics,
|
|||||||
make sure to move the content now under the `Next Version` section under a new
|
make sure to move the content now under the `Next Version` section under a new
|
||||||
section for the new release.
|
section for the new release.
|
||||||
|
|
||||||
Finally bump the version number on `superset/static/assets/package.json`:
|
Finally bump the version number on `superset-frontend/package.json`:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
"version": "0.34.1"
|
"version": "0.34.1"
|
||||||
@@ -120,7 +120,7 @@ The script will output the exported variables. Here's example for 0.34.1 RC1:
|
|||||||
|
|
||||||
The first step of preparing an Apache Release is packaging a release candidate
|
The first step of preparing an Apache Release is packaging a release candidate
|
||||||
to be voted on. Make sure you have correctly prepared and tagged the ready to ship
|
to be voted on. Make sure you have correctly prepared and tagged the ready to ship
|
||||||
release on Superset's repo (MAJOR.MINOR branch), the following script will clone
|
release on Superset's repo (MAJOR.MINOR branch), the following script will clone
|
||||||
the tag and create a signed source tarball from it:
|
the tag and create a signed source tarball from it:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -131,14 +131,14 @@ the tag and create a signed source tarball from it:
|
|||||||
|
|
||||||
Note that `make_tarball.sh`:
|
Note that `make_tarball.sh`:
|
||||||
|
|
||||||
- By default assumes you have already executed an SVN checkout to `$HOME/svn/superset_dev`.
|
- By default assumes you have already executed an SVN checkout to `$HOME/svn/superset_dev`.
|
||||||
This can be overriden by setting `SUPERSET_SVN_DEV_PATH` environment var to a different svn dev directory
|
This can be overriden by setting `SUPERSET_SVN_DEV_PATH` environment var to a different svn dev directory
|
||||||
- Will refuse to craft a new release candidate if a release already exists on your local svn dev directory
|
- Will refuse to craft a new release candidate if a release already exists on your local svn dev directory
|
||||||
- Will check `package.json` version number and fails if it's not correctly set
|
- Will check `package.json` version number and fails if it's not correctly set
|
||||||
|
|
||||||
### Build and test the created source tarball
|
### Build and test the created source tarball
|
||||||
|
|
||||||
To build and run the just created tarball
|
To build and run the just created tarball
|
||||||
```bash
|
```bash
|
||||||
# Build and run a release candidate tarball
|
# Build and run a release candidate tarball
|
||||||
./test_run_tarball.sh local
|
./test_run_tarball.sh local
|
||||||
@@ -174,12 +174,12 @@ https://lists.apache.org/thread.html/e60f080ebdda26896214f7d3d5be1ccadfab95d48fb
|
|||||||
To easily send a voting request to Superset community, still on the `superset/RELEASING` directory:
|
To easily send a voting request to Superset community, still on the `superset/RELEASING` directory:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Note: use Superset's virtualenv
|
# Note: use Superset's virtualenv
|
||||||
(venv)$ python send_email.py vote_pmc
|
(venv)$ python send_email.py vote_pmc
|
||||||
```
|
```
|
||||||
|
|
||||||
The script will interactively ask for extra information so it can authenticate on the Apache Email Relay.
|
The script will interactively ask for extra information so it can authenticate on the Apache Email Relay.
|
||||||
The release version and release candidate number are fetched from the previously set environment variables.
|
The release version and release candidate number are fetched from the previously set environment variables.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Sender email (ex: user@apache.org): your_apache_email@apache.org
|
Sender email (ex: user@apache.org): your_apache_email@apache.org
|
||||||
@@ -194,12 +194,12 @@ https://lists.apache.org/thread.html/50a6b134d66b86b237d5d7bc89df1b567246d125a71
|
|||||||
To easily send the result email, still on the `superset/RELEASING` directory:
|
To easily send the result email, still on the `superset/RELEASING` directory:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Note: use Superset's virtualenv
|
# Note: use Superset's virtualenv
|
||||||
(venv)$ python send_email.py result_pmc
|
(venv)$ python send_email.py result_pmc
|
||||||
```
|
```
|
||||||
|
|
||||||
The script will interactively ask for extra information needed to fill out the email template. Based on the
|
The script will interactively ask for extra information needed to fill out the email template. Based on the
|
||||||
voting description, it will generate a passing, non passing or non conclusive email.
|
voting description, it will generate a passing, non passing or non conclusive email.
|
||||||
here's an example:
|
here's an example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -217,7 +217,7 @@ started at general@incubator.apache.org.
|
|||||||
To easily send the voting request to Apache community, still on the `superset/RELEASING` directory:
|
To easily send the voting request to Apache community, still on the `superset/RELEASING` directory:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Note: use Superset's virtualenv
|
# Note: use Superset's virtualenv
|
||||||
(venv)$ python send_email.py vote_ipmc
|
(venv)$ python send_email.py vote_ipmc
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -227,12 +227,12 @@ least 72 hours have past, you can post a [RESULT] thread
|
|||||||
To easily send the result email, still on the `superset/RELEASING` directory:
|
To easily send the result email, still on the `superset/RELEASING` directory:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Note: use Superset's virtualenv
|
# Note: use Superset's virtualenv
|
||||||
(venv)$ python send_email.py result_ipmc
|
(venv)$ python send_email.py result_ipmc
|
||||||
```
|
```
|
||||||
|
|
||||||
Again, the script will interactively ask for extra information needed to fill out the email template. Based on the
|
Again, the script will interactively ask for extra information needed to fill out the email template. Based on the
|
||||||
voting description, it will generate a passing, non passing or non conclusive email.
|
voting description, it will generate a passing, non passing or non conclusive email.
|
||||||
here's an example:
|
here's an example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -291,7 +291,7 @@ while requesting access to push packages.
|
|||||||
Once it's all done, an [ANNOUNCE] thread announcing the release to the dev@ mailing list is the final step.
|
Once it's all done, an [ANNOUNCE] thread announcing the release to the dev@ mailing list is the final step.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Note use Superset's virtualenv
|
# Note use Superset's virtualenv
|
||||||
(venv)$ python send_email.py announce
|
(venv)$ python send_email.py announce
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -37,9 +37,9 @@ mkdir -p "${HOME}/${SUPERSET_VERSION_RC}"
|
|||||||
cd incubator-superset && \
|
cd incubator-superset && \
|
||||||
|
|
||||||
# Check RC version
|
# Check RC version
|
||||||
if ! jq -e --arg SUPERSET_VERSION $SUPERSET_VERSION '.version == $SUPERSET_VERSION' superset/assets/package.json
|
if ! jq -e --arg SUPERSET_VERSION $SUPERSET_VERSION '.version == $SUPERSET_VERSION' superset-frontend/package.json
|
||||||
then
|
then
|
||||||
SOURCE_VERSION=$(jq '.version' superset/assets/package.json)
|
SOURCE_VERSION=$(jq '.version' superset-frontend/package.json)
|
||||||
echo "Source package.json version is wrong, found: ${SOURCE_VERSION} should be: ${SUPERSET_VERSION}"
|
echo "Source package.json version is wrong, found: ${SOURCE_VERSION} should be: ${SUPERSET_VERSION}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ services:
|
|||||||
|
|
||||||
superset-node:
|
superset-node:
|
||||||
image: node:10-jessie
|
image: node:10-jessie
|
||||||
command: ["bash", "-c", "cd /app/superset/assets && npm install && npm run dev"]
|
command: ["bash", "-c", "cd /app/superset-frontend && npm install && npm run dev"]
|
||||||
env_file: docker/.env
|
env_file: docker/.env
|
||||||
depends_on: *superset-depends-on
|
depends_on: *superset-depends-on
|
||||||
volumes: *superset-volumes
|
volumes: *superset-volumes
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ so that you get a feel for the end-to-end user experience.
|
|||||||
Connecting to a new database
|
Connecting to a new database
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
We assume you already have a database configured and can connect to it from the
|
We assume you already have a database configured and can connect to it from the
|
||||||
instance on which you’re running Superset. If you’re just testing Superset and
|
instance on which you’re running Superset. If you’re just testing Superset and
|
||||||
want to explore sample data, you can load some
|
want to explore sample data, you can load some
|
||||||
`sample PostgreSQL datasets <https://wiki.postgresql.org/wiki/Sample_Databases>`_
|
`sample PostgreSQL datasets <https://wiki.postgresql.org/wiki/Sample_Databases>`_
|
||||||
@@ -37,289 +37,289 @@ we use here.
|
|||||||
|
|
||||||
Under the **Sources** menu, select the *Databases* option:
|
Under the **Sources** menu, select the *Databases* option:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_01_sources_database.png
|
.. image:: _static/images/tutorial/tutorial_01_sources_database.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
On the resulting page, click on the green plus sign, near the top right:
|
On the resulting page, click on the green plus sign, near the top right:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_02_add_database.png
|
.. image:: _static/images/tutorial/tutorial_02_add_database.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
You can configure a number of advanced options on this page, but for
|
You can configure a number of advanced options on this page, but for
|
||||||
this walkthrough, you’ll only need to do **two things**:
|
this walkthrough, you’ll only need to do **two things**:
|
||||||
|
|
||||||
1. Name your database connection:
|
1. Name your database connection:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_03_database_name.png
|
.. image:: _static/images/tutorial/tutorial_03_database_name.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
2. Provide the SQLAlchemy Connection URI and test the connection:
|
2. Provide the SQLAlchemy Connection URI and test the connection:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_04_sqlalchemy_connection_string.png
|
.. image:: _static/images/tutorial/tutorial_04_sqlalchemy_connection_string.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
This example shows the connection string for our test weather database.
|
This example shows the connection string for our test weather database.
|
||||||
As noted in the text below the URI, you should refer to the SQLAlchemy
|
As noted in the text below the URI, you should refer to the SQLAlchemy
|
||||||
documentation on
|
documentation on
|
||||||
`creating new connection URIs <https://docs.sqlalchemy.org/en/rel_1_2/core/engines.html#database-urls>`_
|
`creating new connection URIs <https://docs.sqlalchemy.org/en/rel_1_2/core/engines.html#database-urls>`_
|
||||||
for your target database.
|
for your target database.
|
||||||
|
|
||||||
Click the **Test Connection** button to confirm things work end to end.
|
Click the **Test Connection** button to confirm things work end to end.
|
||||||
Once Superset can successfully connect and authenticate, you should see
|
Once Superset can successfully connect and authenticate, you should see
|
||||||
a popup like this:
|
a popup like this:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_05_connection_popup.png
|
.. image:: _static/images/tutorial/tutorial_05_connection_popup.png
|
||||||
:scale: 50%
|
:scale: 50%
|
||||||
|
|
||||||
Moreover, you should also see the list of tables Superset can read from
|
Moreover, you should also see the list of tables Superset can read from
|
||||||
the schema you’re connected to, at the bottom of the page:
|
the schema you’re connected to, at the bottom of the page:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_06_list_of_tables.png
|
.. image:: _static/images/tutorial/tutorial_06_list_of_tables.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
If the connection looks good, save the configuration by clicking the **Save**
|
If the connection looks good, save the configuration by clicking the **Save**
|
||||||
button at the bottom of the page:
|
button at the bottom of the page:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_07_save_button.png
|
.. image:: _static/images/tutorial/tutorial_07_save_button.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
Adding a new table
|
Adding a new table
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
Now that you’ve configured a database, you’ll need to add specific tables
|
Now that you’ve configured a database, you’ll need to add specific tables
|
||||||
to Superset that you’d like to query.
|
to Superset that you’d like to query.
|
||||||
|
|
||||||
Under the **Sources** menu, select the *Tables* option:
|
Under the **Sources** menu, select the *Tables* option:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_08_sources_tables.png
|
.. image:: _static/images/tutorial/tutorial_08_sources_tables.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
On the resulting page, click on the green plus sign, near the top left:
|
On the resulting page, click on the green plus sign, near the top left:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_09_add_new_table.png
|
.. image:: _static/images/tutorial/tutorial_09_add_new_table.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
You only need a few pieces of information to add a new table to Superset:
|
You only need a few pieces of information to add a new table to Superset:
|
||||||
|
|
||||||
* The name of the table
|
* The name of the table
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_10_table_name.png
|
.. image:: _static/images/tutorial/tutorial_10_table_name.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
* The target database from the **Database** drop-down menu (i.e. the one
|
* The target database from the **Database** drop-down menu (i.e. the one
|
||||||
you just added above)
|
you just added above)
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_11_choose_db.png
|
.. image:: _static/images/tutorial/tutorial_11_choose_db.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
* Optionally, the database schema. If the table exists in the “default” schema
|
* Optionally, the database schema. If the table exists in the “default” schema
|
||||||
(e.g. the *public* schema in PostgreSQL or Redshift), you can leave the schema
|
(e.g. the *public* schema in PostgreSQL or Redshift), you can leave the schema
|
||||||
field blank.
|
field blank.
|
||||||
|
|
||||||
Click on the **Save** button to save the configuration:
|
Click on the **Save** button to save the configuration:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_07_save_button.png
|
.. image:: _static/images/tutorial/tutorial_07_save_button.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
When redirected back to the list of tables, you should see a message indicating
|
When redirected back to the list of tables, you should see a message indicating
|
||||||
that your table was created:
|
that your table was created:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_12_table_creation_success_msg.png
|
.. image:: _static/images/tutorial/tutorial_12_table_creation_success_msg.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
This message also directs you to edit the table configuration. We’ll edit a limited
|
This message also directs you to edit the table configuration. We’ll edit a limited
|
||||||
portion of the configuration now - just to get you started - and leave the rest for
|
portion of the configuration now - just to get you started - and leave the rest for
|
||||||
a more advanced tutorial.
|
a more advanced tutorial.
|
||||||
|
|
||||||
Click on the edit button next to the table you’ve created:
|
Click on the edit button next to the table you’ve created:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_13_edit_table_config.png
|
.. image:: _static/images/tutorial/tutorial_13_edit_table_config.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
On the resulting page, click on the **List Table Column** tab. Here, you’ll define the
|
On the resulting page, click on the **List Table Column** tab. Here, you’ll define the
|
||||||
way you can use specific columns of your table when exploring your data. We’ll run
|
way you can use specific columns of your table when exploring your data. We’ll run
|
||||||
through these options to describe their purpose:
|
through these options to describe their purpose:
|
||||||
|
|
||||||
* If you want users to group metrics by a specific field, mark it as **Groupable**.
|
* If you want users to group metrics by a specific field, mark it as **Groupable**.
|
||||||
* If you need to filter on a specific field, mark it as **Filterable**.
|
* If you need to filter on a specific field, mark it as **Filterable**.
|
||||||
* Is this field something you’d like to get the distinct count of? Check the **Count
|
* Is this field something you’d like to get the distinct count of? Check the **Count
|
||||||
Distinct** box.
|
Distinct** box.
|
||||||
* Is this a metric you want to sum, or get basic summary statistics for? The **Sum**,
|
* Is this a metric you want to sum, or get basic summary statistics for? The **Sum**,
|
||||||
**Min**, and **Max** columns will help.
|
**Min**, and **Max** columns will help.
|
||||||
* The **is temporal** field should be checked for any date or time fields. We’ll cover
|
* The **is temporal** field should be checked for any date or time fields. We’ll cover
|
||||||
how this manifests itself in analyses in a moment.
|
how this manifests itself in analyses in a moment.
|
||||||
|
|
||||||
Here’s how we’ve configured fields for the weather data. Even for measures like the
|
Here’s how we’ve configured fields for the weather data. Even for measures like the
|
||||||
weather measurements (precipitation, snowfall, etc.), it’s ideal to group and filter
|
weather measurements (precipitation, snowfall, etc.), it’s ideal to group and filter
|
||||||
by these values:
|
by these values:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_14_field_config.png
|
.. image:: _static/images/tutorial/tutorial_14_field_config.png
|
||||||
|
|
||||||
As with the configurations above, click the **Save** button to save these settings.
|
As with the configurations above, click the **Save** button to save these settings.
|
||||||
|
|
||||||
Exploring your data
|
Exploring your data
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
To start exploring your data, simply click on the table name you just created in
|
To start exploring your data, simply click on the table name you just created in
|
||||||
the list of available tables:
|
the list of available tables:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_15_click_table_name.png
|
.. image:: _static/images/tutorial/tutorial_15_click_table_name.png
|
||||||
|
|
||||||
By default, you’ll be presented with a Table View:
|
By default, you’ll be presented with a Table View:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_16_datasource_chart_type.png
|
.. image:: _static/images/tutorial/tutorial_16_datasource_chart_type.png
|
||||||
|
|
||||||
Let’s walk through a basic query to get the count of all records in our table.
|
Let’s walk through a basic query to get the count of all records in our table.
|
||||||
First, we’ll need to change the **Since** filter to capture the range of our data.
|
First, we’ll need to change the **Since** filter to capture the range of our data.
|
||||||
You can use simple phrases to apply these filters, like "3 years ago":
|
You can use simple phrases to apply these filters, like "3 years ago":
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_17_choose_time_range.png
|
.. image:: _static/images/tutorial/tutorial_17_choose_time_range.png
|
||||||
|
|
||||||
The upper limit for time, the **Until** filter, defaults to "now", which may or may
|
The upper limit for time, the **Until** filter, defaults to "now", which may or may
|
||||||
not be what you want.
|
not be what you want.
|
||||||
|
|
||||||
Look for the Metrics section under the **GROUP BY** header, and start typing "Count"
|
Look for the Metrics section under the **GROUP BY** header, and start typing "Count"
|
||||||
- you’ll see a list of metrics matching what you type:
|
- you’ll see a list of metrics matching what you type:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_18_choose_metric.png
|
.. image:: _static/images/tutorial/tutorial_18_choose_metric.png
|
||||||
|
|
||||||
Select the *COUNT(\*)* metric, then click the green **Query** button near the top
|
Select the *COUNT(\*)* metric, then click the green **Query** button near the top
|
||||||
of the explore:
|
of the explore:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_19_click_query.png
|
.. image:: _static/images/tutorial/tutorial_19_click_query.png
|
||||||
|
|
||||||
You’ll see your results in the table:
|
You’ll see your results in the table:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_20_count_star_result.png
|
.. image:: _static/images/tutorial/tutorial_20_count_star_result.png
|
||||||
|
|
||||||
Let’s group this by the *weather_description* field to get the count of records by
|
Let’s group this by the *weather_description* field to get the count of records by
|
||||||
the type of weather recorded by adding it to the *Group by* section:
|
the type of weather recorded by adding it to the *Group by* section:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_21_group_by.png
|
.. image:: _static/images/tutorial/tutorial_21_group_by.png
|
||||||
|
|
||||||
and run the query:
|
and run the query:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_22_group_by_result.png
|
.. image:: _static/images/tutorial/tutorial_22_group_by_result.png
|
||||||
|
|
||||||
Let’s find a more useful data point: the top 10 times and places that recorded the
|
Let’s find a more useful data point: the top 10 times and places that recorded the
|
||||||
highest temperature in 2015.
|
highest temperature in 2015.
|
||||||
|
|
||||||
We replace *weather_description* with *latitude*, *longitude* and *measurement_date* in the
|
We replace *weather_description* with *latitude*, *longitude* and *measurement_date* in the
|
||||||
*Group by* section:
|
*Group by* section:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_23_group_by_more_dimensions.png
|
.. image:: _static/images/tutorial/tutorial_23_group_by_more_dimensions.png
|
||||||
|
|
||||||
And replace *COUNT(\*)* with *max__measurement_flag*:
|
And replace *COUNT(\*)* with *max__measurement_flag*:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_24_max_metric.png
|
.. image:: _static/images/tutorial/tutorial_24_max_metric.png
|
||||||
|
|
||||||
The *max__measurement_flag* metric was created when we checked the box under **Max** and
|
The *max__measurement_flag* metric was created when we checked the box under **Max** and
|
||||||
next to the *measurement_flag* field, indicating that this field was numeric and that
|
next to the *measurement_flag* field, indicating that this field was numeric and that
|
||||||
we wanted to find its maximum value when grouped by specific fields.
|
we wanted to find its maximum value when grouped by specific fields.
|
||||||
|
|
||||||
In our case, *measurement_flag* is the value of the measurement taken, which clearly
|
In our case, *measurement_flag* is the value of the measurement taken, which clearly
|
||||||
depends on the type of measurement (the researchers recorded different values for
|
depends on the type of measurement (the researchers recorded different values for
|
||||||
precipitation and temperature). Therefore, we must filter our query only on records
|
precipitation and temperature). Therefore, we must filter our query only on records
|
||||||
where the *weather_description* is equal to "Maximum temperature", which we do in
|
where the *weather_description* is equal to "Maximum temperature", which we do in
|
||||||
the **Filters** section at the bottom of the explore:
|
the **Filters** section at the bottom of the explore:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_25_max_temp_filter.png
|
.. image:: _static/images/tutorial/tutorial_25_max_temp_filter.png
|
||||||
|
|
||||||
Finally, since we only care about the top 10 measurements, we limit our results to
|
Finally, since we only care about the top 10 measurements, we limit our results to
|
||||||
10 records using the *Row limit* option under the **Options** header:
|
10 records using the *Row limit* option under the **Options** header:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_26_row_limit.png
|
.. image:: _static/images/tutorial/tutorial_26_row_limit.png
|
||||||
|
|
||||||
We click **Query** and get the following results:
|
We click **Query** and get the following results:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_27_top_10_max_temps.png
|
.. image:: _static/images/tutorial/tutorial_27_top_10_max_temps.png
|
||||||
|
|
||||||
In this dataset, the maximum temperature is recorded in tenths of a degree Celsius.
|
In this dataset, the maximum temperature is recorded in tenths of a degree Celsius.
|
||||||
The top value of 1370, measured in the middle of Nevada, is equal to 137 C, or roughly
|
The top value of 1370, measured in the middle of Nevada, is equal to 137 C, or roughly
|
||||||
278 degrees F. It’s unlikely this value was correctly recorded. We’ve already been able
|
278 degrees F. It’s unlikely this value was correctly recorded. We’ve already been able
|
||||||
to investigate some outliers with Superset, but this just scratches the surface of what
|
to investigate some outliers with Superset, but this just scratches the surface of what
|
||||||
we can do.
|
we can do.
|
||||||
|
|
||||||
You may want to do a couple more things with this measure:
|
You may want to do a couple more things with this measure:
|
||||||
|
|
||||||
* The default formatting shows values like 1.37k, which may be difficult for some
|
* The default formatting shows values like 1.37k, which may be difficult for some
|
||||||
users to read. It’s likely you may want to see the full, comma-separated value.
|
users to read. It’s likely you may want to see the full, comma-separated value.
|
||||||
You can change the formatting of any measure by editing its config (*Edit Table
|
You can change the formatting of any measure by editing its config (*Edit Table
|
||||||
Config > List Sql Metric > Edit Metric > D3Format*)
|
Config > List Sql Metric > Edit Metric > D3Format*)
|
||||||
* Moreover, you may want to see the temperature measurements in plain degrees C,
|
* Moreover, you may want to see the temperature measurements in plain degrees C,
|
||||||
not tenths of a degree. Or you may want to convert the temperature to degrees
|
not tenths of a degree. Or you may want to convert the temperature to degrees
|
||||||
Fahrenheit. You can change the SQL that gets executed against the database, baking
|
Fahrenheit. You can change the SQL that gets executed against the database, baking
|
||||||
the logic into the measure itself (*Edit Table Config > List Sql Metric > Edit
|
the logic into the measure itself (*Edit Table Config > List Sql Metric > Edit
|
||||||
Metric > SQL Expression*)
|
Metric > SQL Expression*)
|
||||||
|
|
||||||
For now, though, let’s create a better visualization of these data and add it to
|
For now, though, let’s create a better visualization of these data and add it to
|
||||||
a dashboard.
|
a dashboard.
|
||||||
|
|
||||||
We change the Chart Type to "Distribution - Bar Chart":
|
We change the Chart Type to "Distribution - Bar Chart":
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_28_bar_chart.png
|
.. image:: _static/images/tutorial/tutorial_28_bar_chart.png
|
||||||
|
|
||||||
Our filter on Maximum temperature measurements was retained, but the query and
|
Our filter on Maximum temperature measurements was retained, but the query and
|
||||||
formatting options are dependent on the chart type, so you’ll have to set the
|
formatting options are dependent on the chart type, so you’ll have to set the
|
||||||
values again:
|
values again:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_29_bar_chart_series_metrics.png
|
.. image:: _static/images/tutorial/tutorial_29_bar_chart_series_metrics.png
|
||||||
|
|
||||||
You should note the extensive formatting options for this chart: the ability to
|
You should note the extensive formatting options for this chart: the ability to
|
||||||
set axis labels, margins, ticks, etc. To make the data presentable to a broad
|
set axis labels, margins, ticks, etc. To make the data presentable to a broad
|
||||||
audience, you’ll want to apply many of these to slices that end up in dashboards.
|
audience, you’ll want to apply many of these to slices that end up in dashboards.
|
||||||
For now, though, we run our query and get the following chart:
|
For now, though, we run our query and get the following chart:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_30_bar_chart_results.png
|
.. image:: _static/images/tutorial/tutorial_30_bar_chart_results.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
Creating a slice and dashboard
|
Creating a slice and dashboard
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
This view might be interesting to researchers, so let’s save it. In Superset,
|
This view might be interesting to researchers, so let’s save it. In Superset,
|
||||||
a saved query is called a **Slice**.
|
a saved query is called a **Slice**.
|
||||||
|
|
||||||
To create a slice, click the **Save as** button near the top-left of the
|
To create a slice, click the **Save as** button near the top-left of the
|
||||||
explore:
|
explore:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_19_click_query.png
|
.. image:: _static/images/tutorial/tutorial_19_click_query.png
|
||||||
|
|
||||||
A popup should appear, asking you to name the slice, and optionally add it to a
|
A popup should appear, asking you to name the slice, and optionally add it to a
|
||||||
dashboard. Since we haven’t yet created any dashboards, we can create one and
|
dashboard. Since we haven’t yet created any dashboards, we can create one and
|
||||||
immediately add our slice to it. Let’s do it:
|
immediately add our slice to it. Let’s do it:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_31_save_slice_to_dashboard.png
|
.. image:: _static/images/tutorial/tutorial_31_save_slice_to_dashboard.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
Click Save, which will direct you back to your original query. We see that
|
Click Save, which will direct you back to your original query. We see that
|
||||||
our slice and dashboard were successfully created:
|
our slice and dashboard were successfully created:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_32_save_slice_confirmation.png
|
.. image:: _static/images/tutorial/tutorial_32_save_slice_confirmation.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
Let’s check out our new dashboard. We click on the **Dashboards** menu:
|
Let’s check out our new dashboard. We click on the **Dashboards** menu:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_33_dashboard.png
|
.. image:: _static/images/tutorial/tutorial_33_dashboard.png
|
||||||
|
|
||||||
and find the dashboard we just created:
|
and find the dashboard we just created:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_34_weather_dashboard.png
|
.. image:: _static/images/tutorial/tutorial_34_weather_dashboard.png
|
||||||
|
|
||||||
Things seemed to have worked - our slice is here!
|
Things seemed to have worked - our slice is here!
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_35_slice_on_dashboard.png
|
.. image:: _static/images/tutorial/tutorial_35_slice_on_dashboard.png
|
||||||
:scale: 70%
|
:scale: 70%
|
||||||
|
|
||||||
But it’s a bit smaller than we might like. Luckily, you can adjust the size
|
But it’s a bit smaller than we might like. Luckily, you can adjust the size
|
||||||
of slices in a dashboard by clicking, holding and dragging the bottom-right
|
of slices in a dashboard by clicking, holding and dragging the bottom-right
|
||||||
corner to your desired dimensions:
|
corner to your desired dimensions:
|
||||||
|
|
||||||
.. image:: images/tutorial/tutorial_36_adjust_dimensions.gif
|
.. image:: _static/images/tutorial/tutorial_36_adjust_dimensions.gif
|
||||||
:scale: 120%
|
:scale: 120%
|
||||||
|
|
||||||
After adjusting the size, you’ll be asked to click on the icon near the
|
After adjusting the size, you’ll be asked to click on the icon near the
|
||||||
top-right of the dashboard to save the new configuration.
|
top-right of the dashboard to save the new configuration.
|
||||||
|
|
||||||
Congrats! You’ve successfully linked, analyzed, and visualized data in Superset.
|
Congrats! You’ve successfully linked, analyzed, and visualized data in Superset.
|
||||||
There are a wealth of other table configuration and visualization options, so
|
There are a wealth of other table configuration and visualization options, so
|
||||||
please start exploring and creating slices and dashboards of your own.
|
please start exploring and creating slices and dashboards of your own.
|
||||||
|
|||||||
@@ -16,8 +16,9 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
rm -rf _build
|
rm -rf _build
|
||||||
|
cp -r ../superset-frontend/images/ _static/images/
|
||||||
make html
|
make html
|
||||||
#cp -r ../superset/assets/images/ _build/html/_static/img/
|
#cp -r ../superset-frontend/images/ _build/html/_static/img/
|
||||||
cp -r ../superset/assets/images/ _static/img/
|
|
||||||
rm -rf /tmp/superset-docs
|
rm -rf /tmp/superset-docs
|
||||||
cp -r _build/html /tmp/superset-docs
|
cp -r _build/html /tmp/superset-docs
|
||||||
|
cp -r _build/html ../superset/static/assets/docs
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ element corresponds to Druid aggregation definition. You can create your own
|
|||||||
aggregations manually from the ``List Druid Metric`` tab following Druid
|
aggregations manually from the ``List Druid Metric`` tab following Druid
|
||||||
documentation.
|
documentation.
|
||||||
|
|
||||||
.. image:: images/druid_agg.png
|
.. image:: _static/images/druid_agg.png
|
||||||
:scale: 50 %
|
:scale: 50 %
|
||||||
|
|
||||||
Post-Aggregations
|
Post-Aggregations
|
||||||
|
|||||||
@@ -18,190 +18,189 @@
|
|||||||
Visualizations Gallery
|
Visualizations Gallery
|
||||||
======================
|
======================
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/area.png
|
.. image:: _static/images/viz_thumbnails/area.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/bar.png
|
.. image:: _static/images/viz_thumbnails/bar.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/big_number.png
|
.. image:: _static/images/viz_thumbnails/big_number.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/big_number_total.png
|
.. image:: _static/images/viz_thumbnails/big_number_total.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/box_plot.png
|
.. image:: _static/images/viz_thumbnails/box_plot.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/bubble.png
|
.. image:: _static/images/viz_thumbnails/bubble.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/bullet.png
|
.. image:: _static/images/viz_thumbnails/bullet.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/cal_heatmap.png
|
.. image:: _static/images/viz_thumbnails/cal_heatmap.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/chord.png
|
.. image:: _static/images/viz_thumbnails/chord.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/compare.png
|
.. image:: _static/images/viz_thumbnails/compare.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/country_map.png
|
.. image:: _static/images/viz_thumbnails/country_map.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/deck_arc.png
|
.. image:: _static/images/viz_thumbnails/deck_arc.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/deck_geojson.png
|
.. image:: _static/images/viz_thumbnails/deck_geojson.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/deck_grid.png
|
.. image:: _static/images/viz_thumbnails/deck_grid.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/deck_hex.png
|
.. image:: _static/images/viz_thumbnails/deck_hex.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/deck_multi.png
|
.. image:: _static/images/viz_thumbnails/deck_multi.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/deck_path.png
|
.. image:: _static/images/viz_thumbnails/deck_path.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/deck_polygon.png
|
.. image:: _static/images/viz_thumbnails/deck_polygon.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/deck_scatter.png
|
.. image:: _static/images/viz_thumbnails/deck_scatter.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/deck_screengrid.png
|
.. image:: _static/images/viz_thumbnails/deck_screengrid.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/directed_force.png
|
.. image:: _static/images/viz_thumbnails/directed_force.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/dist_bar.png
|
.. image:: _static/images/viz_thumbnails/dist_bar.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/dual_line.png
|
.. image:: _static/images/viz_thumbnails/dual_line.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/event_flow.png
|
.. image:: _static/images/viz_thumbnails/event_flow.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/filter_box.png
|
.. image:: _static/images/viz_thumbnails/filter_box.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/heatmap.png
|
.. image:: _static/images/viz_thumbnails/heatmap.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/histogram.png
|
.. image:: _static/images/viz_thumbnails/histogram.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/horizon.png
|
.. image:: _static/images/viz_thumbnails/horizon.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/iframe.png
|
.. image:: _static/images/viz_thumbnails/iframe.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/line.png
|
.. image:: _static/images/viz_thumbnails/line.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/mapbox.png
|
.. image:: _static/images/viz_thumbnails/mapbox.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/markup.png
|
.. image:: _static/images/viz_thumbnails/markup.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/paired_ttest.png
|
.. image:: _static/images/viz_thumbnails/paired_ttest.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/para.png
|
.. image:: _static/images/viz_thumbnails/para.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/partition.png
|
.. image:: _static/images/viz_thumbnails/partition.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/pie.png
|
.. image:: _static/images/viz_thumbnails/pie.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/pivot_table.png
|
.. image:: _static/images/viz_thumbnails/pivot_table.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/rose.png
|
.. image:: _static/images/viz_thumbnails/rose.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/sankey.png
|
.. image:: _static/images/viz_thumbnails/sankey.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/separator.png
|
.. image:: _static/images/viz_thumbnails/separator.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/sunburst.png
|
.. image:: _static/images/viz_thumbnails/sunburst.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/table.png
|
.. image:: _static/images/viz_thumbnails/table.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/time_pivot.png
|
.. image:: _static/images/viz_thumbnails/time_pivot.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/time_table.png
|
.. image:: _static/images/viz_thumbnails/time_table.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/treemap.png
|
.. image:: _static/images/viz_thumbnails/treemap.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/word_cloud.png
|
.. image:: _static/images/viz_thumbnails/word_cloud.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|
||||||
.. image:: images/viz_thumbnails/world_map.png
|
.. image:: _static/images/viz_thumbnails/world_map.png
|
||||||
:scale: 25 %
|
:scale: 25 %
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
../superset/assets/images/
|
../superset-frontend/images
|
||||||
@@ -17,12 +17,12 @@
|
|||||||
|
|
||||||
|apache_img| |superset_img|
|
|apache_img| |superset_img|
|
||||||
|
|
||||||
.. |apache_img| image:: images/apache_feather.png
|
.. |apache_img| image:: _static/images/apache_feather.png
|
||||||
:width: 7%
|
:width: 7%
|
||||||
:target: http://www.apache.org/
|
:target: http://www.apache.org/
|
||||||
:alt: The Apache Software Foundation
|
:alt: The Apache Software Foundation
|
||||||
|
|
||||||
.. |superset_img| image:: images/s.png
|
.. |superset_img| image:: _static/images/s.png
|
||||||
:width: 25%
|
:width: 25%
|
||||||
|
|
||||||
Apache Superset (incubating)
|
Apache Superset (incubating)
|
||||||
@@ -134,19 +134,19 @@ be supported as well.
|
|||||||
Screenshots
|
Screenshots
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
.. image:: images/screenshots/bank_dash.png
|
.. image:: _static/images/screenshots/bank_dash.png
|
||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
.. image:: images/screenshots/explore.png
|
.. image:: _static/images/screenshots/explore.png
|
||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
.. image:: images/screenshots/sqllab.png
|
.. image:: _static/images/screenshots/sqllab.png
|
||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
.. image:: images/screenshots/deckgl_dash.png
|
.. image:: _static/images/screenshots/deckgl_dash.png
|
||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
|
|||||||
@@ -648,7 +648,7 @@ It is possible to tweak the database connection information using the
|
|||||||
parameters exposed by SQLAlchemy. In the ``Database`` edit view, you will
|
parameters exposed by SQLAlchemy. In the ``Database`` edit view, you will
|
||||||
find an ``extra`` field as a ``JSON`` blob.
|
find an ``extra`` field as a ``JSON`` blob.
|
||||||
|
|
||||||
.. image:: images/tutorial/add_db.png
|
.. image:: _static/images/tutorial/add_db.png
|
||||||
:scale: 30 %
|
:scale: 30 %
|
||||||
|
|
||||||
This JSON string contains extra configuration elements. The ``engine_params``
|
This JSON string contains extra configuration elements. The ``engine_params``
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ sure the users with limited access have [only] the Gamma role assigned to
|
|||||||
them. Second, create a new role (``Menu -> Security -> List Roles``) and
|
them. Second, create a new role (``Menu -> Security -> List Roles``) and
|
||||||
click the ``+`` sign.
|
click the ``+`` sign.
|
||||||
|
|
||||||
.. image:: images/create_role.png
|
.. image:: _static/images/create_role.png
|
||||||
:scale: 50 %
|
:scale: 50 %
|
||||||
|
|
||||||
This new window allows you to give this new role a name, attribute it to users
|
This new window allows you to give this new role a name, attribute it to users
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ SQL Lab is a modern, feature-rich SQL IDE written in
|
|||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
.. image:: images/screenshots/sqllab.png
|
.. image:: _static/images/screenshots/sqllab.png
|
||||||
|
|
||||||
------
|
------
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ In the top menu, select :menuselection:`Sources --> Databases`. Find the
|
|||||||
:guilabel:`examples` database in the list and select the edit record
|
:guilabel:`examples` database in the list and select the edit record
|
||||||
button.
|
button.
|
||||||
|
|
||||||
.. image:: images/usertutorial/edit-record.png
|
.. image:: _static/images/usertutorial/edit-record.png
|
||||||
|
|
||||||
Within the :guilabel:`Edit Database` page, check the
|
Within the :guilabel:`Edit Database` page, check the
|
||||||
:guilabel:`Allow Csv Upload` checkbox.
|
:guilabel:`Allow Csv Upload` checkbox.
|
||||||
@@ -59,17 +59,17 @@ Download the data for this tutorial to your computer from
|
|||||||
|
|
||||||
In the top menu, select :menuselection:`Sources --> Upload a CSV`.
|
In the top menu, select :menuselection:`Sources --> Upload a CSV`.
|
||||||
|
|
||||||
.. image:: images/usertutorial/upload_a_csv.png
|
.. image:: _static/images/usertutorial/upload_a_csv.png
|
||||||
|
|
||||||
Then, enter the :guilabel:`Table name` as `tutorial_flights`
|
Then, enter the :guilabel:`Table name` as `tutorial_flights`
|
||||||
and select the :guilabel:`CSV file` from your computer.
|
and select the :guilabel:`CSV file` from your computer.
|
||||||
|
|
||||||
.. image:: images/usertutorial/csv_to_database_configuration.png
|
.. image:: _static/images/usertutorial/csv_to_database_configuration.png
|
||||||
|
|
||||||
Next enter the text `Travel Date` into the
|
Next enter the text `Travel Date` into the
|
||||||
:guilabel:`Parse Dates` field.
|
:guilabel:`Parse Dates` field.
|
||||||
|
|
||||||
.. image:: images/usertutorial/parse_dates_column.png
|
.. image:: _static/images/usertutorial/parse_dates_column.png
|
||||||
|
|
||||||
Leaving all the other options in their default settings, select
|
Leaving all the other options in their default settings, select
|
||||||
:guilabel:`Save` at the bottom of the page.
|
:guilabel:`Save` at the bottom of the page.
|
||||||
@@ -82,17 +82,17 @@ the number of flights and cost per travel class.
|
|||||||
|
|
||||||
To create a new chart, select the :menuselection:`New --> Chart`.
|
To create a new chart, select the :menuselection:`New --> Chart`.
|
||||||
|
|
||||||
.. image:: images/usertutorial/add_new_chart.png
|
.. image:: _static/images/usertutorial/add_new_chart.png
|
||||||
|
|
||||||
Once in the :guilabel:`Create a new chart` dialogue, select
|
Once in the :guilabel:`Create a new chart` dialogue, select
|
||||||
:guilabel:`tutorial_flights` from the :guilabel:`Chose a datasource`
|
:guilabel:`tutorial_flights` from the :guilabel:`Chose a datasource`
|
||||||
dropdown.
|
dropdown.
|
||||||
|
|
||||||
.. image:: images/usertutorial/chose_a_datasource.png
|
.. image:: _static/images/usertutorial/chose_a_datasource.png
|
||||||
|
|
||||||
Next, select the visualization type as :guilabel:`Table`.
|
Next, select the visualization type as :guilabel:`Table`.
|
||||||
|
|
||||||
.. image:: images/usertutorial/select_table_visualization_type.png
|
.. image:: _static/images/usertutorial/select_table_visualization_type.png
|
||||||
|
|
||||||
Then, select :guilabel:`Create new chart` to go into the chart view.
|
Then, select :guilabel:`Create new chart` to go into the chart view.
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ within the :guilabel:`Time` section, remove the filter on
|
|||||||
changing the selection to :guilabel:`No filter`, with a final
|
changing the selection to :guilabel:`No filter`, with a final
|
||||||
:guilabel:`OK` to confirm your selection.
|
:guilabel:`OK` to confirm your selection.
|
||||||
|
|
||||||
.. image:: images/usertutorial/no_filter_on_time_filter.png
|
.. image:: _static/images/usertutorial/no_filter_on_time_filter.png
|
||||||
|
|
||||||
Now, we want to specify the rows in our table by using the
|
Now, we want to specify the rows in our table by using the
|
||||||
:guilabel:`Group by` option. Since in this example, we want to
|
:guilabel:`Group by` option. Since in this example, we want to
|
||||||
@@ -117,11 +117,11 @@ since we have a row per flight), is already there. To add cost, within
|
|||||||
:guilabel:`Metrics`, select :guilabel:`Cost`. :guilabel:`Save` the
|
:guilabel:`Metrics`, select :guilabel:`Cost`. :guilabel:`Save` the
|
||||||
default aggregation option, which is to sum the column.
|
default aggregation option, which is to sum the column.
|
||||||
|
|
||||||
.. image:: images/usertutorial/sum_cost_column.png
|
.. image:: _static/images/usertutorial/sum_cost_column.png
|
||||||
|
|
||||||
Finally, select :guilabel:`Run Query` to see the results of the table.
|
Finally, select :guilabel:`Run Query` to see the results of the table.
|
||||||
|
|
||||||
.. image:: images/usertutorial/tutorial_table.png
|
.. image:: _static/images/usertutorial/tutorial_table.png
|
||||||
|
|
||||||
Congratulations, you have created your first visualization in Apache
|
Congratulations, you have created your first visualization in Apache
|
||||||
Superset!
|
Superset!
|
||||||
@@ -133,7 +133,7 @@ name as Tutorial Table (you will be able to find it again through the
|
|||||||
select :guilabel:`Add to new dashboard` and enter `Tutorial Dashboard`.
|
select :guilabel:`Add to new dashboard` and enter `Tutorial Dashboard`.
|
||||||
Finally, select :guilabel:`Save & go to dashboard`.
|
Finally, select :guilabel:`Save & go to dashboard`.
|
||||||
|
|
||||||
.. image:: images/usertutorial/save_tutorial_table.png
|
.. image:: _static/images/usertutorial/save_tutorial_table.png
|
||||||
|
|
||||||
Dashboard basics
|
Dashboard basics
|
||||||
----------------
|
----------------
|
||||||
@@ -149,7 +149,7 @@ section. Select :guilabel:`Edit dashboard` and then hover over the
|
|||||||
table. By selecting the bottom right hand corner of the table (the
|
table. By selecting the bottom right hand corner of the table (the
|
||||||
cursor will change too), you can resize it by dragging and dropping.
|
cursor will change too), you can resize it by dragging and dropping.
|
||||||
|
|
||||||
.. image:: images/usertutorial/resize_tutorial_table_on_dashboard.png
|
.. image:: _static/images/usertutorial/resize_tutorial_table_on_dashboard.png
|
||||||
|
|
||||||
Finally, save your changes by selecting :guilabel:`Save changes` in the
|
Finally, save your changes by selecting :guilabel:`Save changes` in the
|
||||||
top right.
|
top right.
|
||||||
@@ -180,7 +180,7 @@ June 2011 respectively by either entering directly the dates or using
|
|||||||
the calendar widget (by selecting the month name and then the year, you
|
the calendar widget (by selecting the month name and then the year, you
|
||||||
can move more quickly to far away dates).
|
can move more quickly to far away dates).
|
||||||
|
|
||||||
.. image:: images/usertutorial/select_dates_pivot_table.png
|
.. image:: _static/images/usertutorial/select_dates_pivot_table.png
|
||||||
|
|
||||||
Next, within the :guilabel:`Query` section, remove the default COUNT(*)
|
Next, within the :guilabel:`Query` section, remove the default COUNT(*)
|
||||||
and add Cost, keeping the default SUM aggregate. Note that Apache
|
and add Cost, keeping the default SUM aggregate. Note that Apache
|
||||||
@@ -196,12 +196,12 @@ Within :guilabel:`Columns`, select first :guilabel:`Department` and then
|
|||||||
:guilabel:`Travel Class`. All set – let’s :guilabel:`Run Query` to see
|
:guilabel:`Travel Class`. All set – let’s :guilabel:`Run Query` to see
|
||||||
some data!
|
some data!
|
||||||
|
|
||||||
.. image:: images/usertutorial/tutorial_pivot_table.png
|
.. image:: _static/images/usertutorial/tutorial_pivot_table.png
|
||||||
|
|
||||||
You should see months in the rows and Department and Travel Class in the
|
You should see months in the rows and Department and Travel Class in the
|
||||||
columns. To get this in our dashboard, select :guilabel:`Save`, name the
|
columns. To get this in our dashboard, select :guilabel:`Save`, name the
|
||||||
chart Tutorial Pivot and using
|
chart Tutorial Pivot and using
|
||||||
:guilabel:`Add chart to existing dashboard` select
|
:guilabel:`Add chart to existing dashboard` select
|
||||||
:guilabel:`Tutorial Dashboard`, and then finally
|
:guilabel:`Tutorial Dashboard`, and then finally
|
||||||
:guilabel:`Save & go to dashboard`.
|
:guilabel:`Save & go to dashboard`.
|
||||||
|
|
||||||
@@ -224,7 +224,7 @@ add :guilabel:`Cost`. This time, we want to change how this column is
|
|||||||
aggregated to show the mean value: we can do this by selecting
|
aggregated to show the mean value: we can do this by selecting
|
||||||
:guilabel:`AVG` in the :guilabel:`aggregate` dropdown.
|
:guilabel:`AVG` in the :guilabel:`aggregate` dropdown.
|
||||||
|
|
||||||
.. image:: images/usertutorial/average_aggregate_for_cost.png
|
.. image:: _static/images/usertutorial/average_aggregate_for_cost.png
|
||||||
|
|
||||||
Next, select :guilabel:`Run Query` to show the data on the chart.
|
Next, select :guilabel:`Run Query` to show the data on the chart.
|
||||||
|
|
||||||
@@ -245,7 +245,7 @@ filter by selecting No in the :guilabel:`Show Range Filter` drop down
|
|||||||
and adding some labels using :guilabel:`X Axis Label` and
|
and adding some labels using :guilabel:`X Axis Label` and
|
||||||
:guilabel:`Y Axis Label`.
|
:guilabel:`Y Axis Label`.
|
||||||
|
|
||||||
.. image:: images/usertutorial/tutorial_line_chart.png
|
.. image:: _static/images/usertutorial/tutorial_line_chart.png
|
||||||
|
|
||||||
Once you’re done, :guilabel:`Save` as Tutorial Line Chart, use
|
Once you’re done, :guilabel:`Save` as Tutorial Line Chart, use
|
||||||
:guilabel:`Add chart to
|
:guilabel:`Add chart to
|
||||||
@@ -265,7 +265,7 @@ Within the Insert components pane, drag and drop a :guilabel:`Markdown`
|
|||||||
box on the dashboard. Look for the blue lines which indicate the anchor
|
box on the dashboard. Look for the blue lines which indicate the anchor
|
||||||
where the box will go.
|
where the box will go.
|
||||||
|
|
||||||
.. image:: images/usertutorial/blue_bar_insert_component.png
|
.. image:: _static/images/usertutorial/blue_bar_insert_component.png
|
||||||
|
|
||||||
Now, to edit the text, select the box. You can enter text, in markdown
|
Now, to edit the text, select the box. You can enter text, in markdown
|
||||||
format (see `this Markdown
|
format (see `this Markdown
|
||||||
@@ -274,7 +274,7 @@ for more information about this format). You can toggle between
|
|||||||
:guilabel:`Edit` and :guilabel:`Preview` using the menu on the top of
|
:guilabel:`Edit` and :guilabel:`Preview` using the menu on the top of
|
||||||
the box.
|
the box.
|
||||||
|
|
||||||
.. image:: images/usertutorial/markdown.png
|
.. image:: _static/images/usertutorial/markdown.png
|
||||||
|
|
||||||
To exit, select any other part of the dashboard. Finally, don’t forget
|
To exit, select any other part of the dashboard. Finally, don’t forget
|
||||||
to keep your changes using :guilabel:`Save changes`.
|
to keep your changes using :guilabel:`Save changes`.
|
||||||
@@ -307,7 +307,7 @@ select :guilabel:`Run Query`. This gives us a preview of our filter.
|
|||||||
Next, remove the date filter by unchecking the :guilabel:`Date Filter`
|
Next, remove the date filter by unchecking the :guilabel:`Date Filter`
|
||||||
checkbox.
|
checkbox.
|
||||||
|
|
||||||
.. image:: images/usertutorial/filter_on_origin_country.png
|
.. image:: _static/images/usertutorial/filter_on_origin_country.png
|
||||||
|
|
||||||
Finally, select :guilabel:`Save`, name the chart as Tutorial Filter, add
|
Finally, select :guilabel:`Save`, name the chart as Tutorial Filter, add
|
||||||
the chart to our existing Tutorial Dashboard and then
|
the chart to our existing Tutorial Dashboard and then
|
||||||
@@ -329,7 +329,7 @@ simply select :guilabel:`Draft` next to the title of your dashboard on
|
|||||||
the top left to change your dashboard to be in :guilabel:`Published`
|
the top left to change your dashboard to be in :guilabel:`Published`
|
||||||
state. You can also favorite this dashboard by selecting the star.
|
state. You can also favorite this dashboard by selecting the star.
|
||||||
|
|
||||||
.. image:: images/usertutorial/publish_dashboard.png
|
.. image:: _static/images/usertutorial/publish_dashboard.png
|
||||||
|
|
||||||
Taking your dashboard further
|
Taking your dashboard further
|
||||||
-----------------------------
|
-----------------------------
|
||||||
@@ -358,7 +358,7 @@ by selecting the green plus sign. Then, select the
|
|||||||
:guilabel:`Volcanic Eruptions` layer, add a short description Grímsvötn
|
:guilabel:`Volcanic Eruptions` layer, add a short description Grímsvötn
|
||||||
and the eruption dates (23-25 May 2011) before finally saving.
|
and the eruption dates (23-25 May 2011) before finally saving.
|
||||||
|
|
||||||
.. image:: images/usertutorial/edit_annotation.png
|
.. image:: _static/images/usertutorial/edit_annotation.png
|
||||||
|
|
||||||
Then, navigate to the line chart by going to :guilabel:`Charts` then
|
Then, navigate to the line chart by going to :guilabel:`Charts` then
|
||||||
selecting :guilabel:`Tutorial
|
selecting :guilabel:`Tutorial
|
||||||
@@ -368,14 +368,14 @@ Line Chart` from the list. Next, go to the
|
|||||||
|
|
||||||
- name the layer as `Volcanic Eruptions`
|
- name the layer as `Volcanic Eruptions`
|
||||||
- change the :guilabel:`Annotation Layer Type` to :guilabel:`Event`
|
- change the :guilabel:`Annotation Layer Type` to :guilabel:`Event`
|
||||||
- set the :guilabel:`Annotation Source` as :guilabel:`Superset annotation`
|
- set the :guilabel:`Annotation Source` as :guilabel:`Superset annotation`
|
||||||
- specify the :guilabel:`Annotation Layer` as :guilabel:`Volcanic Eruptions`
|
- specify the :guilabel:`Annotation Layer` as :guilabel:`Volcanic Eruptions`
|
||||||
|
|
||||||
.. image:: images/usertutorial/annotation_settings.png
|
.. image:: _static/images/usertutorial/annotation_settings.png
|
||||||
|
|
||||||
Select :guilabel:`Apply` to see your annotation shown on the chart.
|
Select :guilabel:`Apply` to see your annotation shown on the chart.
|
||||||
|
|
||||||
.. image:: images/usertutorial/annotation.png
|
.. image:: _static/images/usertutorial/annotation.png
|
||||||
|
|
||||||
If you wish, you can change how your annotation looks by changing the
|
If you wish, you can change how your annotation looks by changing the
|
||||||
settings in the :guilabel:`Display configuration` section. Otherwise,
|
settings in the :guilabel:`Display configuration` section. Otherwise,
|
||||||
@@ -418,7 +418,7 @@ Next, in the query section, change the :guilabel:`Metrics` to the sum of
|
|||||||
:guilabel:`Cost`. Select :guilabel:`Run Query` to show the chart. You
|
:guilabel:`Cost`. Select :guilabel:`Run Query` to show the chart. You
|
||||||
should see the total cost per day for each month in October 2011.
|
should see the total cost per day for each month in October 2011.
|
||||||
|
|
||||||
.. image:: images/usertutorial/advanced_analytics_base.png
|
.. image:: _static/images/usertutorial/advanced_analytics_base.png
|
||||||
|
|
||||||
Finally, save the visualization as Tutorial Advanced Analytics Base,
|
Finally, save the visualization as Tutorial Advanced Analytics Base,
|
||||||
adding it to the Tutorial Dashboard.
|
adding it to the Tutorial Dashboard.
|
||||||
@@ -443,7 +443,7 @@ After displaying the chart by selecting :guilabel:`Run Query` you will
|
|||||||
see that the data is less variable and that the series starts later as
|
see that the data is less variable and that the series starts later as
|
||||||
the ramp up period is excluded.
|
the ramp up period is excluded.
|
||||||
|
|
||||||
.. image:: images/usertutorial/rolling_mean.png
|
.. image:: _static/images/usertutorial/rolling_mean.png
|
||||||
|
|
||||||
Save the chart as Tutorial Rolling Mean and add it to the Tutorial
|
Save the chart as Tutorial Rolling Mean and add it to the Tutorial
|
||||||
Dashboard.
|
Dashboard.
|
||||||
@@ -464,14 +464,14 @@ typing in "minus 1 week" (note this box accepts input in natural
|
|||||||
language). :guilabel:`Run Query` to see the new chart, which has an
|
language). :guilabel:`Run Query` to see the new chart, which has an
|
||||||
additional series with the same values, shifted a week back in time.
|
additional series with the same values, shifted a week back in time.
|
||||||
|
|
||||||
.. image:: images/usertutorial/time_comparison_two_series.png
|
.. image:: _static/images/usertutorial/time_comparison_two_series.png
|
||||||
|
|
||||||
Then, change the :guilabel:`Calculation type` to
|
Then, change the :guilabel:`Calculation type` to
|
||||||
:guilabel:`Absolute difference` and select :guilabel:`Run
|
:guilabel:`Absolute difference` and select :guilabel:`Run
|
||||||
Query`. We can now see only one series again, this time showing the
|
Query`. We can now see only one series again, this time showing the
|
||||||
difference between the two series we saw previously.
|
difference between the two series we saw previously.
|
||||||
|
|
||||||
.. image:: images/usertutorial/time_comparison_absolute_difference.png
|
.. image:: _static/images/usertutorial/time_comparison_absolute_difference.png
|
||||||
|
|
||||||
Save the chart as Tutorial Time Comparison and add it to the Tutorial
|
Save the chart as Tutorial Time Comparison and add it to the Tutorial
|
||||||
Dashboard.
|
Dashboard.
|
||||||
@@ -488,7 +488,7 @@ Next, in the :guilabel:`Python Functions` subsection of
|
|||||||
in the :guilabel:`Rule` and median as the :guilabel:`Method` and show
|
in the :guilabel:`Rule` and median as the :guilabel:`Method` and show
|
||||||
the chart by selecting :guilabel:`Run Query`.
|
the chart by selecting :guilabel:`Run Query`.
|
||||||
|
|
||||||
.. image:: images/usertutorial/resample.png
|
.. image:: _static/images/usertutorial/resample.png
|
||||||
|
|
||||||
Note that now we have a single data point every 7 days. In our case, the
|
Note that now we have a single data point every 7 days. In our case, the
|
||||||
value showed corresponds to the median value within the seven daily data
|
value showed corresponds to the median value within the seven daily data
|
||||||
@@ -505,4 +505,3 @@ side and compare the different outputs.
|
|||||||
.. [#f1] See the Pandas `rolling method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html>`_ for more information.
|
.. [#f1] See the Pandas `rolling method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.rolling.html>`_ for more information.
|
||||||
.. [#f2] See the Pandas `cumsum method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.cumsum.html>`_ for more information.
|
.. [#f2] See the Pandas `cumsum method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.cumsum.html>`_ for more information.
|
||||||
.. [#f3] See the Pandas `resample method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html>`_ for more information.
|
.. [#f3] See the Pandas `resample method documentation <https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html>`_ for more information.
|
||||||
|
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ List of Countries
|
|||||||
+----------+-----------------------+
|
+----------+-----------------------+
|
||||||
| BR-MS | Mato Grosso do Sul |
|
| BR-MS | Mato Grosso do Sul |
|
||||||
+----------+-----------------------+
|
+----------+-----------------------+
|
||||||
| BR-MT | Mato Grosso |
|
| BR-MT | Mato Grosso |
|
||||||
+----------+-----------------------+
|
+----------+-----------------------+
|
||||||
| BR-MG | Minas Gerais |
|
| BR-MG | Minas Gerais |
|
||||||
+----------+-----------------------+
|
+----------+-----------------------+
|
||||||
@@ -105,11 +105,11 @@ List of Countries
|
|||||||
+----------+-----------------------+
|
+----------+-----------------------+
|
||||||
| BR-PR | Paraná |
|
| BR-PR | Paraná |
|
||||||
+----------+-----------------------+
|
+----------+-----------------------+
|
||||||
| BR-PE | Pernambuco |
|
| BR-PE | Pernambuco |
|
||||||
+----------+-----------------------+
|
+----------+-----------------------+
|
||||||
| BR-PI | Piauí |
|
| BR-PI | Piauí |
|
||||||
+----------+-----------------------+
|
+----------+-----------------------+
|
||||||
| BR-RJ | Rio de Janeiro |
|
| BR-RJ | Rio de Janeiro |
|
||||||
+----------+-----------------------+
|
+----------+-----------------------+
|
||||||
| BR-RN | Rio Grande do Norte |
|
| BR-RN | Rio Grande do Norte |
|
||||||
+----------+-----------------------+
|
+----------+-----------------------+
|
||||||
@@ -1789,7 +1789,7 @@ List of Countries
|
|||||||
+------+------------------------------+
|
+------+------------------------------+
|
||||||
|ISO | Name of region |
|
|ISO | Name of region |
|
||||||
+======+==============================+
|
+======+==============================+
|
||||||
|UA-71 | Cherkasy |
|
|UA-71 | Cherkasy |
|
||||||
+------+------------------------------+
|
+------+------------------------------+
|
||||||
|UA-74 | Chernihiv |
|
|UA-74 | Chernihiv |
|
||||||
+------+------------------------------+
|
+------+------------------------------+
|
||||||
@@ -1815,7 +1815,7 @@ List of Countries
|
|||||||
+------+------------------------------+
|
+------+------------------------------+
|
||||||
|UA-35 | Kirovohrad |
|
|UA-35 | Kirovohrad |
|
||||||
+------+------------------------------+
|
+------+------------------------------+
|
||||||
|UA-46 | L'viv |
|
|UA-46 | L'viv |
|
||||||
+------+------------------------------+
|
+------+------------------------------+
|
||||||
|UA-09 | Luhans'k |
|
|UA-09 | Luhans'k |
|
||||||
+------+------------------------------+
|
+------+------------------------------+
|
||||||
@@ -1823,7 +1823,7 @@ List of Countries
|
|||||||
+------+------------------------------+
|
+------+------------------------------+
|
||||||
|UA-51 | Odessa |
|
|UA-51 | Odessa |
|
||||||
+------+------------------------------+
|
+------+------------------------------+
|
||||||
|UA-53 | Poltava |
|
|UA-53 | Poltava |
|
||||||
+------+------------------------------+
|
+------+------------------------------+
|
||||||
|UA-56 | Rivne |
|
|UA-56 | Rivne |
|
||||||
+------+------------------------------+
|
+------+------------------------------+
|
||||||
@@ -1964,17 +1964,17 @@ To add a new country in country map tools, we need to follow the following steps
|
|||||||
1. You need shapefiles which contain data of your map.
|
1. You need shapefiles which contain data of your map.
|
||||||
You can get this file on this site: https://www.diva-gis.org/gdata
|
You can get this file on this site: https://www.diva-gis.org/gdata
|
||||||
|
|
||||||
2. You need to add ISO 3166-2 with column name ISO for all record in your file.
|
2. You need to add ISO 3166-2 with column name ISO for all record in your file.
|
||||||
It's important because it's a norm for mapping your data with geojson file
|
It's important because it's a norm for mapping your data with geojson file
|
||||||
|
|
||||||
3. You need to convert shapefile to geojson file.
|
3. You need to convert shapefile to geojson file.
|
||||||
This action can make with ogr2ogr tools: https://www.gdal.org/ogr2ogr.html
|
This action can make with ogr2ogr tools: https://www.gdal.org/ogr2ogr.html
|
||||||
|
|
||||||
4. Put your geojson file in next folder : superset/assets/src/visualizations/CountryMap/countries with the next name : nameofyourcountries.geojson
|
4. Put your geojson file in next folder : superset-frontend/src/visualizations/CountryMap/countries with the next name : nameofyourcountries.geojson
|
||||||
|
|
||||||
5. You can to reduce size of geojson file on this site: https://mapshaper.org/
|
5. You can to reduce size of geojson file on this site: https://mapshaper.org/
|
||||||
|
|
||||||
6. Go in file superset/assets/src/explore/controls.jsx
|
6. Go in file superset-frontend/src/explore/controls.jsx
|
||||||
|
|
||||||
7. Add your country in component 'select_country'
|
7. Add your country in component 'select_country'
|
||||||
Example :
|
Example :
|
||||||
@@ -2005,7 +2005,3 @@ To add a new country in country map tools, we need to follow the following steps
|
|||||||
].map(s => [s, s]),
|
].map(s => [s, s]),
|
||||||
description: 'The name of country that Superset should display',
|
description: 'The name of country that Superset should display',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
# and are on the correct branch
|
# and are on the correct branch
|
||||||
cd ${SUPERSET_REPO_DIR}
|
cd ${SUPERSET_REPO_DIR}
|
||||||
git branch
|
git branch
|
||||||
rm superset/assets/dist/*
|
rm superset/static/assets/*
|
||||||
cd superset/assets/
|
cd superset-frontend/
|
||||||
npm ci && npm run build
|
npm ci && npm run build
|
||||||
cd ../..
|
cd ../..
|
||||||
python setup.py sdist
|
python setup.py sdist
|
||||||
|
|||||||
@@ -71,9 +71,6 @@ mkdir -p ${TMP_DIR}/lib
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# This is the target of a symlink in superset/assets/docs - and rat exclude doesn't cope with the symlink target doesn't exist
|
|
||||||
mkdir -p docs/_build/html/
|
|
||||||
|
|
||||||
echo "Running license checks. This can take a while."
|
echo "Running license checks. This can take a while."
|
||||||
echo "$FWDIR"/.rat-excludes
|
echo "$FWDIR"/.rat-excludes
|
||||||
$java_cmd -jar "$rat_jar" -E "$FWDIR"/.rat-excludes -d "$FWDIR" > rat-results.txt
|
$java_cmd -jar "$rat_jar" -E "$FWDIR"/.rat-excludes -d "$FWDIR" > rat-results.txt
|
||||||
|
|||||||
6
setup.py
@@ -27,7 +27,7 @@ if sys.version_info < (3, 6):
|
|||||||
|
|
||||||
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
|
||||||
PACKAGE_JSON = os.path.join(BASE_DIR, "superset", "assets", "package.json")
|
PACKAGE_JSON = os.path.join(BASE_DIR, "superset-frontend", "package.json")
|
||||||
with open(PACKAGE_JSON, "r") as package_file:
|
with open(PACKAGE_JSON, "r") as package_file:
|
||||||
version_string = json.load(package_file)["version"]
|
version_string = json.load(package_file)["version"]
|
||||||
|
|
||||||
@@ -50,9 +50,7 @@ print("VERSION: " + version_string)
|
|||||||
print("GIT SHA: " + GIT_SHA)
|
print("GIT SHA: " + GIT_SHA)
|
||||||
print("-==-" * 15)
|
print("-==-" * 15)
|
||||||
|
|
||||||
VERSION_INFO_FILE = os.path.join(
|
VERSION_INFO_FILE = os.path.join(BASE_DIR, "superset-frontend", "version_info.json")
|
||||||
BASE_DIR, "superset", "static", "assets", "version_info.json"
|
|
||||||
)
|
|
||||||
|
|
||||||
with open(VERSION_INFO_FILE, "w") as version_file:
|
with open(VERSION_INFO_FILE, "w") as version_file:
|
||||||
json.dump(version_info, version_file)
|
json.dump(version_info, version_file)
|
||||||
|
|||||||
@@ -25,4 +25,4 @@ stylesheets/*
|
|||||||
vendor/*
|
vendor/*
|
||||||
docs/*
|
docs/*
|
||||||
src/dashboard/deprecated/*
|
src/dashboard/deprecated/*
|
||||||
**/node_modules
|
**/node_modules
|
||||||
|
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 152 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 141 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
@@ -32,7 +32,7 @@ time npm ci
|
|||||||
time npm run build
|
time npm run build
|
||||||
echo "[completed js build steps]"
|
echo "[completed js build steps]"
|
||||||
|
|
||||||
#setup cypress
|
#setup cypress
|
||||||
cd cypress-base
|
cd cypress-base
|
||||||
time npm ci
|
time npm ci
|
||||||
CYPRESS_PATH='cypress/integration/'${1}'/*'
|
CYPRESS_PATH='cypress/integration/'${1}'/*'
|
||||||
|
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 135 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 459 KiB After Width: | Height: | Size: 459 KiB |
|
Before Width: | Height: | Size: 702 KiB After Width: | Height: | Size: 702 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 328 KiB After Width: | Height: | Size: 328 KiB |
|
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |