Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
84ee6d5084 | ||
|
|
5d4d7febb9 | ||
|
|
cbedb8b814 | ||
|
|
3fac9367fb | ||
|
|
63cbcb80c3 | ||
|
|
36956a5d24 | ||
|
|
1c76d583b3 | ||
|
|
ee77f11b27 | ||
|
|
3b40e90b40 | ||
|
|
6cd83c3025 | ||
|
|
af941736a4 | ||
|
|
e502c22c70 | ||
|
|
46411bc4ad | ||
|
|
32e06616d9 | ||
|
|
b3bc1429ac | ||
|
|
9b3eef893a | ||
|
|
151657ba3e | ||
|
|
23cc83f300 | ||
|
|
6e820b8355 | ||
|
|
8db14c47e7 | ||
|
|
58ff72776d | ||
|
|
b72bf98f68 | ||
|
|
32b466184e | ||
|
|
bfdfd66160 | ||
|
|
a4c1d6d5c0 |
40
.codeclimate.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
engines:
|
||||
csslint:
|
||||
enabled: false
|
||||
duplication:
|
||||
enabled: false
|
||||
eslint:
|
||||
enabled: true
|
||||
checks:
|
||||
import/extensions:
|
||||
enabled: false
|
||||
import/no-extraneous-dependencies:
|
||||
enabled: false
|
||||
config:
|
||||
config: superset/assets/.eslintrc
|
||||
pep8:
|
||||
enabled: true
|
||||
fixme:
|
||||
enabled: false
|
||||
radon:
|
||||
enabled: true
|
||||
checks:
|
||||
Complexity:
|
||||
enabled: false
|
||||
ratings:
|
||||
paths:
|
||||
- "**.py"
|
||||
- "superset/assets/**.js"
|
||||
- "superset/assets/**.jsx"
|
||||
exclude_paths:
|
||||
- ".*"
|
||||
- "**.pyc"
|
||||
- "**.gz"
|
||||
- "env/"
|
||||
- "tests/"
|
||||
- "superset/assets/images/"
|
||||
- "superset/assets/vendor/"
|
||||
- "superset/assets/node_modules/"
|
||||
- "superset/assets/javascripts/dist/"
|
||||
- "superset/migrations"
|
||||
- "docs/"
|
||||
1
.coveralls.yml
Normal file
@@ -0,0 +1 @@
|
||||
repo_token: 4P9MpvLrZfJKzHdGZsdV3MzO43OZJgYFn
|
||||
8
.gitignore
vendored
@@ -11,7 +11,6 @@ _images
|
||||
_modules
|
||||
superset/bin/supersetc
|
||||
env_py3
|
||||
envpy3
|
||||
.eggs
|
||||
build
|
||||
*.db
|
||||
@@ -27,17 +26,14 @@ app.db
|
||||
*.sqllite
|
||||
.vscode
|
||||
.python-version
|
||||
.tox
|
||||
dump.rdb
|
||||
|
||||
# Node.js, webpack artifacts
|
||||
*.entry.js
|
||||
*.js.map
|
||||
node_modules
|
||||
npm-debug.log*
|
||||
npm-debug.log
|
||||
yarn.lock
|
||||
superset/assets/version_info.json
|
||||
|
||||
# IntelliJ
|
||||
*.iml
|
||||
venv
|
||||
@eaDir/
|
||||
|
||||
22
.landscape.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
doc-warnings: yes
|
||||
test-warnings: no
|
||||
strictness: medium
|
||||
max-line-length: 90
|
||||
uses:
|
||||
- flask
|
||||
autodetect: yes
|
||||
pylint:
|
||||
disable:
|
||||
- cyclic-import
|
||||
- invalid-name
|
||||
- logging-format-interpolation
|
||||
options:
|
||||
docstring-min-length: 10
|
||||
pep8:
|
||||
full: true
|
||||
ignore-paths:
|
||||
- docs
|
||||
- superset/migrations/env.py
|
||||
ignore-patterns:
|
||||
- ^example/doc_.*\.py$
|
||||
- (^|/)docs(/|$)
|
||||
@@ -65,7 +65,7 @@ confidence=
|
||||
# --enable=similarities". If you want to run only the classes checker, but have
|
||||
# no Warning level messages displayed, use"--disable=all --enable=classes
|
||||
# --disable=W"
|
||||
disable=standarderror-builtin,long-builtin,dict-view-method,intern-builtin,suppressed-message,no-absolute-import,unpacking-in-except,apply-builtin,delslice-method,indexing-exception,old-raise-syntax,print-statement,cmp-builtin,reduce-builtin,useless-suppression,coerce-method,input-builtin,cmp-method,raw_input-builtin,nonzero-method,backtick,basestring-builtin,setslice-method,reload-builtin,oct-method,map-builtin-not-iterating,execfile-builtin,old-octal-literal,zip-builtin-not-iterating,buffer-builtin,getslice-method,metaclass-assignment,xrange-builtin,long-suffix,round-builtin,range-builtin-not-iterating,next-method-called,dict-iter-method,parameter-unpacking,unicode-builtin,unichr-builtin,import-star-module-level,raising-string,filter-builtin-not-iterating,old-ne-operator,using-cmp-argument,coerce-builtin,file-builtin,old-division,hex-method,invalid-unary-operand-type,missing-docstring,too-many-lines,duplicate-code
|
||||
disable=standarderror-builtin,long-builtin,dict-view-method,intern-builtin,suppressed-message,no-absolute-import,unpacking-in-except,apply-builtin,delslice-method,indexing-exception,old-raise-syntax,print-statement,cmp-builtin,reduce-builtin,useless-suppression,coerce-method,input-builtin,cmp-method,raw_input-builtin,nonzero-method,backtick,basestring-builtin,setslice-method,reload-builtin,oct-method,map-builtin-not-iterating,execfile-builtin,old-octal-literal,zip-builtin-not-iterating,buffer-builtin,getslice-method,metaclass-assignment,xrange-builtin,long-suffix,round-builtin,range-builtin-not-iterating,next-method-called,dict-iter-method,parameter-unpacking,unicode-builtin,unichr-builtin,import-star-module-level,raising-string,filter-builtin-not-iterating,old-ne-operator,using-cmp-argument,coerce-builtin,file-builtin,old-division,hex-method,invalid-unary-operand-type
|
||||
|
||||
|
||||
[REPORTS]
|
||||
@@ -282,7 +282,7 @@ ignored-modules=numpy,pandas,alembic.op,sqlalchemy,alembic.context,flask_appbuil
|
||||
# List of class names for which member attributes should not be checked (useful
|
||||
# for classes with dynamically set attributes). This supports the use of
|
||||
# qualified names.
|
||||
ignored-classes=optparse.Values,thread._local,_thread._local,sqlalchemy.orm.scoping.scoped_session
|
||||
ignored-classes=optparse.Values,thread._local,_thread._local
|
||||
|
||||
# List of members which are set dynamically and missed by pylint inference
|
||||
# system, and so shouldn't trigger E1101 when accessed. Python regular
|
||||
@@ -292,7 +292,7 @@ generated-members=
|
||||
# List of decorators that produce context managers, such as
|
||||
# contextlib.contextmanager. Add to this list to register other decorators that
|
||||
# produce valid context managers.
|
||||
contextmanager-decorators=contextlib.contextmanager,contextlib2.contextmanager
|
||||
contextmanager-decorators=contextlib.contextmanager
|
||||
|
||||
|
||||
[VARIABLES]
|
||||
|
||||
55
.travis.yml
@@ -1,46 +1,31 @@
|
||||
language: python
|
||||
python:
|
||||
- 2.7
|
||||
- 3.6
|
||||
services:
|
||||
- mysql
|
||||
- postgres
|
||||
- redis-server
|
||||
- redis-server
|
||||
addons:
|
||||
code_climate:
|
||||
repo_token: 5f3a06c425eef7be4b43627d7d07a3e46c45bdc07155217825ff7c49cb6a470c
|
||||
cache:
|
||||
- pip
|
||||
matrix:
|
||||
include:
|
||||
- python: 2.7
|
||||
env: TOXENV=flake8
|
||||
- python: 2.7
|
||||
env: TOXENV=py27-mysql
|
||||
- python: 2.7
|
||||
env: TOXENV=py27-sqlite
|
||||
- python: 2.7
|
||||
env: TOXENV=pylint
|
||||
- python: 3.6
|
||||
env: TOXENV=flake8
|
||||
- python: 3.6
|
||||
env: TOXENV=javascript
|
||||
- python: 3.6
|
||||
env: TOXENV=py36-postgres
|
||||
- python: 3.6
|
||||
env: TOXENV=py36-sqlite
|
||||
- python: 3.6
|
||||
env: TOXENV=pylint
|
||||
exclude:
|
||||
- python: 2.7
|
||||
- python: 3.6
|
||||
directories:
|
||||
- $HOME/.wheelhouse/
|
||||
env:
|
||||
global:
|
||||
- TRAVIS_CACHE=$HOME/.travis_cache/
|
||||
matrix:
|
||||
- TOX_ENV=flake8
|
||||
- TOX_ENV=javascript
|
||||
- TOX_ENV=pylint
|
||||
- TOX_ENV=py34-postgres
|
||||
- TOX_ENV=py34-sqlite
|
||||
- TOX_ENV=py27-mysql
|
||||
- TOX_ENV=py27-sqlite
|
||||
before_script:
|
||||
- mysql -u root -e "DROP DATABASE IF EXISTS superset; CREATE DATABASE superset DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci"
|
||||
- mysql -u root -e "CREATE USER 'mysqluser'@'localhost' IDENTIFIED BY 'mysqluserpassword';"
|
||||
- mysql -u root -e "GRANT ALL ON superset.* TO 'mysqluser'@'localhost';"
|
||||
- psql -U postgres -c "CREATE DATABASE superset;"
|
||||
- psql -U postgres -c "CREATE USER postgresuser WITH PASSWORD 'pguserpassword';"
|
||||
- export PATH=${PATH}:/tmp/hive/bin
|
||||
install:
|
||||
- pip install --upgrade pip
|
||||
- pip install codecov tox
|
||||
script:
|
||||
- tox
|
||||
after_success:
|
||||
- codecov
|
||||
- pip install tox tox-travis
|
||||
script: tox -e $TOX_ENV
|
||||
|
||||
283
CHANGELOG.md
@@ -1,288 +1,5 @@
|
||||
## Change Log
|
||||
|
||||
### 0.24.0 (2018/03/27 06:50 +00:00)
|
||||
- [#4655](https://github.com/apache/incubator-superset/pull/4655) [druid] Updating refresh logic (#4655) (@john-bodley)
|
||||
- [#4683](https://github.com/apache/incubator-superset/pull/4683) Fix bug with sorting columns in group by using time shift (#4683) (@michellethomas)
|
||||
- [#4645](https://github.com/apache/incubator-superset/pull/4645) CRUD hints around SQL expressions (#4645) (@mistercrunch)
|
||||
- [#4686](https://github.com/apache/incubator-superset/pull/4686) Preprocess SQL Lab query prior to checking syntax (#4686) (@villebro)
|
||||
- [#4684](https://github.com/apache/incubator-superset/pull/4684) Fix up the Lyft color scheme (#4684) (@mistercrunch)
|
||||
- [#4682](https://github.com/apache/incubator-superset/pull/4682) Add lyftColor to the game 💯 (#4682) (@hughhhh)
|
||||
- [#4679](https://github.com/apache/incubator-superset/pull/4679) add yarn lock info to contributing.md (#4679) (@timifasubaa)
|
||||
- [#4639](https://github.com/apache/incubator-superset/pull/4639) forms: make csv import parse dates accepts a list of columns (#4639) (@xrmx)
|
||||
- [#4674](https://github.com/apache/incubator-superset/pull/4674) add yarn.lock (#4674) (@timifasubaa)
|
||||
- [#4676](https://github.com/apache/incubator-superset/pull/4676) Fix setup.py, comma makes download_url a tuple (#4676) (@mistercrunch)
|
||||
- [#4630](https://github.com/apache/incubator-superset/pull/4630) [Bug fix] Fixed/Refactored annotation layer code so that non-timeseries annotations are applied based on the updated chart object after adding all data (#4630) (@EvelynTurner)
|
||||
- [#4670](https://github.com/apache/incubator-superset/pull/4670) Update messages.po (#4670) (@aleksi75)
|
||||
- [#4664](https://github.com/apache/incubator-superset/pull/4664) fix: epoch_s and epoch_ms to date time (#4664) (@deatheyes)
|
||||
- [#4660](https://github.com/apache/incubator-superset/pull/4660) Better default for MAPBOX_API_KEY (#4660) (@betodealmeida)
|
||||
- [#4633](https://github.com/apache/incubator-superset/pull/4633) Cache the query string (#4633) (@jeffreythewang)
|
||||
- [#4628](https://github.com/apache/incubator-superset/pull/4628) [sql lab] search to use fist&last name instead of username (#4628) (@mistercrunch)
|
||||
- [#4608](https://github.com/apache/incubator-superset/pull/4608) Set filter_select_enabled default to True for Druid (#4608) (@mistercrunch)
|
||||
- [#4555](https://github.com/apache/incubator-superset/pull/4555) [examples] let's not use 'date' as a col name (#4555) (@mistercrunch)
|
||||
- [#4606](https://github.com/apache/incubator-superset/pull/4606) Use 'count' as the default metric when available (#4606) (@mistercrunch)
|
||||
- [#4629](https://github.com/apache/incubator-superset/pull/4629) Fix sqllab numpy array (#4629) (@michellethomas)
|
||||
- [#4601](https://github.com/apache/incubator-superset/pull/4601) Only show overlay if container is set (#4601) (@betodealmeida)
|
||||
- [#4638](https://github.com/apache/incubator-superset/pull/4638) [cosmetic] removing table border in ModelView list (#4638) (@mistercrunch)
|
||||
- [#4641](https://github.com/apache/incubator-superset/pull/4641) part1 (#4641) (@hughhhh)
|
||||
- [#4632](https://github.com/apache/incubator-superset/pull/4632) Adding to list of generated-members to fix pylint errors (#4632) (@michellethomas)
|
||||
- [#4566](https://github.com/apache/incubator-superset/pull/4566) Adding column type label to dropdowns (#4566) (@michellethomas)
|
||||
- [#4627](https://github.com/apache/incubator-superset/pull/4627) Merge pull request #4627 from mistercrunch/fix_run_extra (@mistercrunch)
|
||||
- [b906fec](https://github.com/apache/incubator-superset/commit/b906fece68bee8ccfba4d1f46da2221c37b5d0fa) Move run_extra_queries outsize of BaseViz init (@mistercrunch)
|
||||
- [#4593](https://github.com/apache/incubator-superset/pull/4593) [sql lab] reduce the number of metadata calls when loading a table (#4593) (@mistercrunch)
|
||||
- [#4620](https://github.com/apache/incubator-superset/pull/4620) Fix function name (#4620) (@betodealmeida)
|
||||
- [#4622](https://github.com/apache/incubator-superset/pull/4622) Remove group by from deck.gl viz (#4622) (@betodealmeida)
|
||||
- [#4617](https://github.com/apache/incubator-superset/pull/4617) Allowing config flag to turn off flask-compress (#4617) (@mistercrunch)
|
||||
- [#4194](https://github.com/apache/incubator-superset/pull/4194) [bug fixes] annotations x domains, zeros in text (#4194) (@williaster)
|
||||
- [#4621](https://github.com/apache/incubator-superset/pull/4621) fix mapbox viz (#4621) (@graceguo-supercat)
|
||||
- [#4616](https://github.com/apache/incubator-superset/pull/4616) [contributing] Removing obsolete code climate reference (#4616) (@john-bodley)
|
||||
- [#4572](https://github.com/apache/incubator-superset/pull/4572) Legend for deck.gl scatterplot (#4572) (@betodealmeida)
|
||||
- [#4604](https://github.com/apache/incubator-superset/pull/4604) Show "Range Filter" by default (#4604) (@betodealmeida)
|
||||
- [#4609](https://github.com/apache/incubator-superset/pull/4609) overriding annotation and layers control tab (#4609) (@GabeLoins)
|
||||
- [#4607](https://github.com/apache/incubator-superset/pull/4607) [slice_json] pass slice id to get_form_data() (#4607) (@williaster)
|
||||
- [#4590](https://github.com/apache/incubator-superset/pull/4590) Merge pull request #4590 from michellethomas/fixing_double_escape_presto (@michellethomas)
|
||||
- [#4579](https://github.com/apache/incubator-superset/pull/4579) Merge pull request #4579 from michellethomas/removing_title_label (@michellethomas)
|
||||
- [#4573](https://github.com/apache/incubator-superset/pull/4573) Merge pull request #4573 from john-bodley/john-bodley-cache-fix-datasource-uid (@john-bodley)
|
||||
- [#4602](https://github.com/apache/incubator-superset/pull/4602) Merge pull request #4602 from john-bodley/john-bodley-druid-sync-fix-filter (@john-bodley)
|
||||
|
||||
### 0.23.3 (2018/03/13 17:14 +00:00)
|
||||
- [#4581](https://github.com/apache/incubator-superset/pull/4581) timeseries_limit should not be required for phase 2 (#4581) (@michellethomas)
|
||||
- [8829218](https://github.com/apache/incubator-superset/commit/882921825ca6508b598dee52c9dea73e54982b1b) Changing the title for explore pages (@michellethomas)
|
||||
- [9604e1d](https://github.com/apache/incubator-superset/commit/9604e1dd1466521c0de4e81b53f2b1ae61b88942) [druid] Adding cluster filter for refresh
|
||||
- [#4597](https://github.com/apache/incubator-superset/pull/4597) [BugFix] Resizing widgets problem #4596 (#4597) (@oxydash)
|
||||
- [26257d9](https://github.com/apache/incubator-superset/commit/26257d94f5f43a5d3b745c1b08a29cc40980f211) [cache] Ensuring that the datasource UID is defined
|
||||
- [#4514](https://github.com/apache/incubator-superset/pull/4514) Added new exception class and start of better exception/error handling (#4514) (@hughhhh)
|
||||
- [#4599](https://github.com/apache/incubator-superset/pull/4599) Add ignore git @eaDir Synology directory (#4599) (@oxydash)
|
||||
- [#4591](https://github.com/apache/incubator-superset/pull/4591) Add Aktia Bank in organizations list who use Superset (#4591) (@villebro)
|
||||
- [#4594](https://github.com/apache/incubator-superset/pull/4594) docs: fixup code blocks rendering (#4594) (@xrmx)
|
||||
- [e1af421](https://github.com/apache/incubator-superset/commit/e1af421f0c7426391e7124d1bae5aae9f8a49792) Removing escape_sql so we dont double escape (@michellethomas)
|
||||
- [#4532](https://github.com/apache/incubator-superset/pull/4532) histograms: fixup left margin assigment (#4532) (@xrmx)
|
||||
- [#4504](https://github.com/apache/incubator-superset/pull/4504) Return time in Druid scan (#4504) (@betodealmeida)
|
||||
- [#4584](https://github.com/apache/incubator-superset/pull/4584) [sqllab] Added share button to bottom menu (#4584) (@hughhhh)
|
||||
- [#4551](https://github.com/apache/incubator-superset/pull/4551) [sql lab] option to disable cross schema search (#4551) (@mistercrunch)
|
||||
- [#4585](https://github.com/apache/incubator-superset/pull/4585) [sql lab] comment injection hook (#4585) (@mistercrunch)
|
||||
- [#4586](https://github.com/apache/incubator-superset/pull/4586) [Translate] Added Full Russian Translation (#4586) (@oxydash)
|
||||
- [#4582](https://github.com/apache/incubator-superset/pull/4582) Merge pull request #4582 from john-bodley/john-bodley-javascript-codecov (@john-bodley)
|
||||
- [3fbadd6](https://github.com/apache/incubator-superset/commit/3fbadd68a471e4dcbdc8f0d37352af9c556e4e94) [code-climate] Deprecating Code Climate from JavaScript tests
|
||||
- [#4570](https://github.com/apache/incubator-superset/pull/4570) Adding option to visualize negative values in Table view (#4570) (@tanvach)
|
||||
- [402c7dd](https://github.com/apache/incubator-superset/commit/402c7ddb26399d4ef984bcf786e2514eaeb7f355) Removing [dashboard] and [slice] titles to show name (@michellethomas)
|
||||
- [#4578](https://github.com/apache/incubator-superset/pull/4578) [Explore] Save custom url parameters when user save slices (#4578) (@graceguo-supercat)
|
||||
- [#4550](https://github.com/apache/incubator-superset/pull/4550) Evelynturner/annotation timezone fix2 (#4550) (@EvelynTurner)
|
||||
- [#4472](https://github.com/apache/incubator-superset/pull/4472) Basic Portuguese Brazilian Translation (#4472) (@AcNeidert)
|
||||
- [#4562](https://github.com/apache/incubator-superset/pull/4562) [bug] Fix CSV upload feature for DB with password (#4562) (@ktravis)
|
||||
- [#4563](https://github.com/apache/incubator-superset/pull/4563) [landscape.io] Deprecating .landscape.yml (#4563) (@john-bodley)
|
||||
- [#4564](https://github.com/apache/incubator-superset/pull/4564) [requires.io] Removing obsolete requires.io link (#4564) (@john-bodley)
|
||||
- [#4567](https://github.com/apache/incubator-superset/pull/4567) Merge pull request #4567 from john-bodley/john-bodley-payload-error-status-code (@john-bodley)
|
||||
- [1e8cd0e](https://github.com/apache/incubator-superset/commit/1e8cd0e61e7bb442af7eab9997da487a82c91673) [payload] Set status code on error rather than query status
|
||||
- [#4560](https://github.com/apache/incubator-superset/pull/4560) [bug] fix shortener url (#4560) (@graceguo-supercat)
|
||||
- [#4505](https://github.com/apache/incubator-superset/pull/4505) Expose hook to inject database connection logic on the fly (#4505) (@mistercrunch)
|
||||
- [#4543](https://github.com/apache/incubator-superset/pull/4543) Setting up compression using flask-compress (#4543) (@mistercrunch)
|
||||
- [#4549](https://github.com/apache/incubator-superset/pull/4549) [bugfix] Fixing regression from #4500 (#4549) (@john-bodley)
|
||||
- [#4553](https://github.com/apache/incubator-superset/pull/4553) [landing] Making Dashboards the first/default tab (#4553) (@john-bodley)
|
||||
- [#4542](https://github.com/apache/incubator-superset/pull/4542) Removing files from MANIFEST.in (#4542) (@mistercrunch)
|
||||
- [#4533](https://github.com/apache/incubator-superset/pull/4533) Merge pull request #4533 from john-bodley/john-bodley-replace-coveralls-with-codecov (@john-bodley)
|
||||
- [#4530](https://github.com/apache/incubator-superset/pull/4530) [presto] Removing patched presto (#4530) (@john-bodley)
|
||||
- [#4536](https://github.com/apache/incubator-superset/pull/4536) [dump.rdb] Removing rouge file (#4536) (@john-bodley)
|
||||
- [#4541](https://github.com/apache/incubator-superset/pull/4541) Add ScopeAI (#4541) (@lucianoiscool)
|
||||
|
||||
### 0.23.1 (2018/03/06 06:41 +00:00)
|
||||
- [#4534](https://github.com/apache/incubator-superset/pull/4534) Merge pull request #4534 from john-bodley/john-bodley-setup-url (@john-bodley)
|
||||
|
||||
### 0.23.0 (2018/03/06 00:59 +00:00)
|
||||
- [#4500](https://github.com/apache/incubator-superset/pull/4500) Merge pull request #4500 from john-bodley/john-bodley-fix-pr-4396 (@john-bodley)
|
||||
- [b01a9bb](https://github.com/apache/incubator-superset/commit/b01a9bba1f2043435e6fc1b189661e27b7dbbaea) [setup] Fixing URLs
|
||||
- [#4538](https://github.com/apache/incubator-superset/pull/4538) Pass datasource as form_data param (#4538) (@Pek1s)
|
||||
- [4f7258a](https://github.com/apache/incubator-superset/commit/4f7258aacaa5acf37c64769fa18da57f7dbd606e) [coverage] Replacing coveralls with codecov
|
||||
- [#4513](https://github.com/apache/incubator-superset/pull/4513) Superset issue #4512: fixing histogram (#4513) (@ArielStv)
|
||||
- [#4511](https://github.com/apache/incubator-superset/pull/4511) Fix how the annotation layer interpretes the timestamp string without timezone info; use it as UTC (#4511) (@EvelynTurner)
|
||||
- [#4515](https://github.com/apache/incubator-superset/pull/4515) [dashboard] (#4515) (@graceguo-supercat)
|
||||
- [#4482](https://github.com/apache/incubator-superset/pull/4482) chart style options get their own tab (#4482) (@GabeLoins)
|
||||
- [#4487](https://github.com/apache/incubator-superset/pull/4487) Make margin width based on container width instead of slice width (#4487) (@jeffreythewang)
|
||||
- [7440d34](https://github.com/apache/incubator-superset/commit/7440d34936784283f692a39402bcb11a9eeaa6a3) [payload] Fixing regression introducted in ##4396
|
||||
- [#4486](https://github.com/apache/incubator-superset/pull/4486) [Explore] applying refresh chart overlay when chart is stale (#4486) (@GabeLoins)
|
||||
- [#4480](https://github.com/apache/incubator-superset/pull/4480) Add https support for Druid (#4480) (@mistercrunch)
|
||||
- [#4491](https://github.com/apache/incubator-superset/pull/4491) Introduce an onInit method for when a new viz_type is selected (#4491) (@mistercrunch)
|
||||
- [#4488](https://github.com/apache/incubator-superset/pull/4488) fixes to csv - hive upload (#4488) (@timifasubaa)
|
||||
- [#4469](https://github.com/apache/incubator-superset/pull/4469) check for access before requesting access (#4469) (@timifasubaa)
|
||||
- [#4496](https://github.com/apache/incubator-superset/pull/4496) Change limit form 50k to 10k (#4496) (@mistercrunch)
|
||||
- [#4490](https://github.com/apache/incubator-superset/pull/4490) [WiP] Cleanup & fix URL scheme for the explore view (#4490) (@mistercrunch)
|
||||
- [#4485](https://github.com/apache/incubator-superset/pull/4485) [dashboard] Fix JS error when position_json data is empty (#4485) (@graceguo-supercat)
|
||||
- [#4463](https://github.com/apache/incubator-superset/pull/4463) New Landing Page v1.0 (#4463) (@hughhhh)
|
||||
- [#4459](https://github.com/apache/incubator-superset/pull/4459) [Explore] highlighting run query when chart is stale on explore view (#4459) (@GabeLoins)
|
||||
- [#4467](https://github.com/apache/incubator-superset/pull/4467) [geo] add controls for minRadiusPixels and maxRadiusPixels in deck_scatter (#4467) (@mistercrunch)
|
||||
- [#4477](https://github.com/apache/incubator-superset/pull/4477) [flake8] Adding flake8-coding (#4477) (@john-bodley)
|
||||
- [#4478](https://github.com/apache/incubator-superset/pull/4478) add organization (#4478) (@ailurus1991)
|
||||
- [#4466](https://github.com/apache/incubator-superset/pull/4466) [FilterBox] Make filterbox localizable (#4466) (@raffas)
|
||||
- [#4476](https://github.com/apache/incubator-superset/pull/4476) [flake8] Adding future-import check (#4476) (@john-bodley)
|
||||
- [#4474](https://github.com/apache/incubator-superset/pull/4474) [flake8] Fixing additional flake8 issue w/ the presence of ignore (#4474) (@john-bodley)
|
||||
- [#4475](https://github.com/apache/incubator-superset/pull/4475) Pass param of limit for recent activity (#4475) (@hughhhh)
|
||||
- [#4461](https://github.com/apache/incubator-superset/pull/4461) [hotfix] resolve utf-8 encoding issue in db migration (#4461) (@timifasubaa)
|
||||
- [#4457](https://github.com/apache/incubator-superset/pull/4457) [explore] allow URL shortner even if no slice exist (#4457) (@mistercrunch)
|
||||
- [#4400](https://github.com/apache/incubator-superset/pull/4400) Allowing config flag to turn off javascript controls (#4400) (@mistercrunch)
|
||||
- [#4449](https://github.com/apache/incubator-superset/pull/4449) Make instant controls store state in URL (#4449) (@betodealmeida)
|
||||
- [#4454](https://github.com/apache/incubator-superset/pull/4454) Make npm run dev-fast the default (#4454) (@mistercrunch)
|
||||
- [#4456](https://github.com/apache/incubator-superset/pull/4456) [gitignore] Adding venv to .gitignore (#4456) (@GabeLoins)
|
||||
- [#4444](https://github.com/apache/incubator-superset/pull/4444) A collection of bug fixes (#4444) (@mistercrunch)
|
||||
- [#4455](https://github.com/apache/incubator-superset/pull/4455) fixing spacing issue on internationalization dropdown (#4455) (@GabeLoins)
|
||||
- [#4452](https://github.com/apache/incubator-superset/pull/4452) [bugfix] address issue 4206 (#4452) (@mistercrunch)
|
||||
- [#4446](https://github.com/apache/incubator-superset/pull/4446) for 48 columns layout, adjust default size and layout for newly added slices (#4446) (@graceguo-supercat)
|
||||
- [#4413](https://github.com/apache/incubator-superset/pull/4413) Remove comments from queries in SQL Lab that break Explore view (#4413) (@villebro)
|
||||
- [#4450](https://github.com/apache/incubator-superset/pull/4450) fix typo. "グルプ分け可能" => "グループ分け可能" (#4450) (@m4neda)
|
||||
- [#4447](https://github.com/apache/incubator-superset/pull/4447) remove html tag in timeout error message (#4447) (@graceguo-supercat)
|
||||
- [#4442](https://github.com/apache/incubator-superset/pull/4442) Improve default placeholder text on SelectControl (#4442) (@mistercrunch)
|
||||
- [#4448](https://github.com/apache/incubator-superset/pull/4448) Removed double call to ConnectorRegistry.sources (#4448) (@villebro)
|
||||
- [#4408](https://github.com/apache/incubator-superset/pull/4408) Add link on how to get permission to permission error (#4408) (@timifasubaa)
|
||||
- [#4434](https://github.com/apache/incubator-superset/pull/4434) Added Example snippet for setting up Redis cache (#4434) (@hughhhh)
|
||||
- [#4336](https://github.com/apache/incubator-superset/pull/4336) Play scrubber (#4336) (@betodealmeida)
|
||||
- [#4430](https://github.com/apache/incubator-superset/pull/4430) Change current thumbnails to smaller ones. (#4430) (@mistercrunch)
|
||||
- [#4436](https://github.com/apache/incubator-superset/pull/4436) Pass in cache timeout for async queries (#4436) (@jeffreythewang)
|
||||
- [#4437](https://github.com/apache/incubator-superset/pull/4437) Fix separator visualization by propagating header height (#4437) (@jaylindquist)
|
||||
- [#4438](https://github.com/apache/incubator-superset/pull/4438) Make chart title backgrounds transparent to prevent buttonface color in IE (#4438) (@jaylindquist)
|
||||
- [#4416](https://github.com/apache/incubator-superset/pull/4416) [dashboard] more granular grid layout (#4416) (@mistercrunch)
|
||||
- [#4432](https://github.com/apache/incubator-superset/pull/4432) Added check cache key util (#4432) (@hughhhh)
|
||||
- [#4418](https://github.com/apache/incubator-superset/pull/4418) Updated Italian Translation (#4418) (@raffas)
|
||||
- [#4431](https://github.com/apache/incubator-superset/pull/4431) Add .1s option to D3 Format dropdown (#4431) (@raffas)
|
||||
- [#4405](https://github.com/apache/incubator-superset/pull/4405) Disable user access request (#4405) (@timifasubaa)
|
||||
- [#4427](https://github.com/apache/incubator-superset/pull/4427) Bump dependencies with security issues (#4427) (@xrmx)
|
||||
- [#3993](https://github.com/apache/incubator-superset/pull/3993) [Explore view] Use POST method for charting requests (#3993) (@graceguo-supercat)
|
||||
- [#4410](https://github.com/apache/incubator-superset/pull/4410) Unset 'series limit' default from 50 to null (#4410) (@mistercrunch)
|
||||
- [#4411](https://github.com/apache/incubator-superset/pull/4411) use full path in case of there are query params (#4411) (@Chun-LingChen)
|
||||
- [#4389](https://github.com/apache/incubator-superset/pull/4389) [geo] introduce "Auto Zoom" control (#4389) (@mistercrunch)
|
||||
- [#4401](https://github.com/apache/incubator-superset/pull/4401) [SqlLab] Fix a few UI issues (#4401) (@graceguo-supercat)
|
||||
- [#4404](https://github.com/apache/incubator-superset/pull/4404) Check class name string instead of checking the instance (#4404) (@mxmzdlv)
|
||||
- [#4380](https://github.com/apache/incubator-superset/pull/4380) [error handling] 'Time Comparison' query returns no data (#4380) (@mistercrunch)
|
||||
- [#4383](https://github.com/apache/incubator-superset/pull/4383) Typo fix: dashbaord -> dashboard. (#4383) (@xiaohanyu)
|
||||
- [#4396](https://github.com/apache/incubator-superset/pull/4396) Fix markup broken since cache related changes (#4396) (@mistercrunch)
|
||||
- [#4178](https://github.com/apache/incubator-superset/pull/4178) Add PeopleDoc in organizations list who use superset (#4178) (@rodo)
|
||||
- [#4390](https://github.com/apache/incubator-superset/pull/4390) Fix 4 security vulnerabilities (#4390) (@ddworken-sc)
|
||||
- [#4349](https://github.com/apache/incubator-superset/pull/4349) Minor fixes to sunburst (#4349) (@mistercrunch)
|
||||
- [#4346](https://github.com/apache/incubator-superset/pull/4346) Add permission checks to save_or_overwrite_slice (#4346) (@jaylindquist)
|
||||
- [#4388](https://github.com/apache/incubator-superset/pull/4388) Remove permission check for frontend logging API (#4388) (@graceguo-supercat)
|
||||
- [#4353](https://github.com/apache/incubator-superset/pull/4353) Superset issue #4323 (#4353) (@maver1ck)
|
||||
- [#4377](https://github.com/apache/incubator-superset/pull/4377) Bump pydruid to 0.4.1 (#4377) (@mistercrunch)
|
||||
- [#4359](https://github.com/apache/incubator-superset/pull/4359) [revert] Reverting PR #4062 (#4359) (@john-bodley)
|
||||
- [#4316](https://github.com/apache/incubator-superset/pull/4316) Fix caching issues (#4316) (@mistercrunch)
|
||||
- [#4372](https://github.com/apache/incubator-superset/pull/4372) Set default row_limit to 50k (#4372) (@mistercrunch)
|
||||
- [#4363](https://github.com/apache/incubator-superset/pull/4363) [line] improve feature (#4363) (@mistercrunch)
|
||||
- [#4373](https://github.com/apache/incubator-superset/pull/4373) Remove dangerouslySetInnerHTML in StackTraceMessage component (#4373) (@mistercrunch)
|
||||
- [#4341](https://github.com/apache/incubator-superset/pull/4341) Bump python dependencies (#4341) (@mistercrunch)
|
||||
- [#4333](https://github.com/apache/incubator-superset/pull/4333) Add hour grain to Sqlite (#4333) (@betodealmeida)
|
||||
- [#4358](https://github.com/apache/incubator-superset/pull/4358) [druid] fix bug around handling NULLs (#4358) (@mistercrunch)
|
||||
- [#4368](https://github.com/apache/incubator-superset/pull/4368) Add ipdb to dev dependencies. (#4368) (@xiaohanyu)
|
||||
- [#4319](https://github.com/apache/incubator-superset/pull/4319) convert postgresql date_trunc() to UTC to prevent pandas error (#4319) (@habalux)
|
||||
- [#4367](https://github.com/apache/incubator-superset/pull/4367) Remove useless empty npm-debug.log (#4367) (@xiaohanyu)
|
||||
- [#4364](https://github.com/apache/incubator-superset/pull/4364) New options for european time format in in D3_TIME_FORMAT_OPTIONS (#4364) (@raffas)
|
||||
- [#4344](https://github.com/apache/incubator-superset/pull/4344) Adding dashboard add view (#4344) (@michellethomas)
|
||||
- [#4345](https://github.com/apache/incubator-superset/pull/4345) fix uri form data' (#4345) (@timifasubaa)
|
||||
- [#4337](https://github.com/apache/incubator-superset/pull/4337) read query params for json in dashboard endpoint (#4337) (@hughhhh)
|
||||
- [#4339](https://github.com/apache/incubator-superset/pull/4339) 1. fix check filters change logic (#4339) (@graceguo-supercat)
|
||||
- [#4338](https://github.com/apache/incubator-superset/pull/4338) Fix the bug of charts/slices cannot be filtered by datasource name. (#4338) (@liutgnu)
|
||||
- [#4298](https://github.com/apache/incubator-superset/pull/4298) Refactor import csv (#4298) (@timifasubaa)
|
||||
- [#3676](https://github.com/apache/incubator-superset/pull/3676) [New Viz] Nightingale Rose Chart (#3676) (@Mogball)
|
||||
- [#4241](https://github.com/apache/incubator-superset/pull/4241) [cli] permission cleanup on 'superset init' (#4241) (@mistercrunch)
|
||||
- [#4224](https://github.com/apache/incubator-superset/pull/4224) [BugFix]: Creating a PostgresBaseEngineSpec so changes to the Postgre… (#4224) (@fabianmenges)
|
||||
- [#4325](https://github.com/apache/incubator-superset/pull/4325) Bump pyrdruid to 0.4.0 (#4325) (@mistercrunch)
|
||||
- [#4326](https://github.com/apache/incubator-superset/pull/4326) [explore] fix missing CacheLabel (#4326) (@mistercrunch)
|
||||
- [#4321](https://github.com/apache/incubator-superset/pull/4321) Update installation.rst for Ubuntu 16.04 LTS (#4321) (@raffas)
|
||||
- [#4322](https://github.com/apache/incubator-superset/pull/4322) [Bug] Resize should trigger chart re-render (#4322) (@graceguo-supercat)
|
||||
- [#4301](https://github.com/apache/incubator-superset/pull/4301) [Explore] Fix Stop Query Button behavior (#4301) (@graceguo-supercat)
|
||||
- [#4293](https://github.com/apache/incubator-superset/pull/4293) Refactoring deckgl (#4293) (@betodealmeida)
|
||||
- [#4226](https://github.com/apache/incubator-superset/pull/4226) add frontend logging utility function (#4226) (@graceguo-supercat)
|
||||
- [#4242](https://github.com/apache/incubator-superset/pull/4242) Added Path, Polygon, and Arcs to deckGL example dashboard (#4242) (@hughhhh)
|
||||
- [#4260](https://github.com/apache/incubator-superset/pull/4260) Use the query_obj as the basis for the cache key (#4260) (@mistercrunch)
|
||||
- [#4299](https://github.com/apache/incubator-superset/pull/4299) Bump sqlalchemy to 1.2.2 (#4299) (@xrmx)
|
||||
- [#4303](https://github.com/apache/incubator-superset/pull/4303) Reverts apache/incubator-superset#4244 (#4303) (@mistercrunch)
|
||||
- [#4291](https://github.com/apache/incubator-superset/pull/4291) Fixing json decode error on druiddatasourcemodelview/api/read (#4291) (@michellethomas)
|
||||
- [#4272](https://github.com/apache/incubator-superset/pull/4272) [geo] Add JS controls to remaining layers (#4272) (@hughhhh)
|
||||
- [#4261](https://github.com/apache/incubator-superset/pull/4261) Set point size control's default for deck_scatter viz (#4261) (@mistercrunch)
|
||||
- [#4270](https://github.com/apache/incubator-superset/pull/4270) deck_multi to pass down filters to layers (#4270) (@mistercrunch)
|
||||
- [#4275](https://github.com/apache/incubator-superset/pull/4275) Handle 'pd.Timestamp' when jsonifying (#4275) (@mistercrunch)
|
||||
- [#4276](https://github.com/apache/incubator-superset/pull/4276) Prevent FilterBox extra query (#4276) (@mistercrunch)
|
||||
- [#4277](https://github.com/apache/incubator-superset/pull/4277) Fix SUPERSET_WEBSERVER_TIMEOUT in VisualizeModal (#4277) (@mistercrunch)
|
||||
- [#4262](https://github.com/apache/incubator-superset/pull/4262) [geo] JS function to receive the whole data array instead of individual object (#4262) (@mistercrunch)
|
||||
- [#4265](https://github.com/apache/incubator-superset/pull/4265) Fix click on now in DateFilterControl (#4265) (@mistercrunch)
|
||||
- [#4273](https://github.com/apache/incubator-superset/pull/4273) [explore] fix empty query message in 'View Query' (#4273) (@mistercrunch)
|
||||
- [#4279](https://github.com/apache/incubator-superset/pull/4279) Always use fluid container for navbar. (#4279) (@xiaohanyu)
|
||||
- [#4108](https://github.com/apache/incubator-superset/pull/4108) [BUGFIX]: Check datatype of results before converting to DataFrame (#4108) (@marcusianlevine)
|
||||
- [#4243](https://github.com/apache/incubator-superset/pull/4243) Use json for imports and exports, not pickle (#4243) (@timifasubaa)
|
||||
- [#4251](https://github.com/apache/incubator-superset/pull/4251) Using a NullPool for external connections by default (#4251) (@mistercrunch)
|
||||
- [#4264](https://github.com/apache/incubator-superset/pull/4264) Set 'Range Filter' default to false (#4264) (@mistercrunch)
|
||||
- [#4268](https://github.com/apache/incubator-superset/pull/4268) Fix heatmap tooltip disappears under the slice's header (#4268) (@abotero)
|
||||
- [#4263](https://github.com/apache/incubator-superset/pull/4263) Bump flower==0.9.2 (#4263) (@mistercrunch)
|
||||
- [#4240](https://github.com/apache/incubator-superset/pull/4240) [cache] Fixing json.dumps for timestamp (#4240) (@john-bodley)
|
||||
- [#4246](https://github.com/apache/incubator-superset/pull/4246) [Sql Lab] Fix query results display at the bottom of screen (#4246) (@graceguo-supercat)
|
||||
- [#4244](https://github.com/apache/incubator-superset/pull/4244) [Sql Lab] Fix Autorefresh component pulling not stopped. (#4244) (@graceguo-supercat)
|
||||
- [#4237](https://github.com/apache/incubator-superset/pull/4237) Fix 'argument to reversed() must be a sequence' (#4237) (@mistercrunch)
|
||||
- [#4227](https://github.com/apache/incubator-superset/pull/4227) Added DeckGL.Polygon Layer w/ JS controls (#4227) (@hughhhh)
|
||||
- [#4235](https://github.com/apache/incubator-superset/pull/4235) remove setting spatial in DeckPathViz class (#4235) (@hughhhh)
|
||||
- [#4229](https://github.com/apache/incubator-superset/pull/4229) Don't cache if there's no cache key (#4229) (@michellethomas)
|
||||
- [#4234](https://github.com/apache/incubator-superset/pull/4234) add Ona as a user (#4234) (@pld)
|
||||
- [#4220](https://github.com/apache/incubator-superset/pull/4220) Improve deck.gl GeoJSON visualization (#4220) (@mistercrunch)
|
||||
- [#4221](https://github.com/apache/incubator-superset/pull/4221) [bugfix] time_pivot entry got missing in merge conflict (#4221) (@mistercrunch)
|
||||
- [#4225](https://github.com/apache/incubator-superset/pull/4225) [bugfix] markup and iframe viz raise 'Empty query' (#4225) (@mistercrunch)
|
||||
- [#4215](https://github.com/apache/incubator-superset/pull/4215) Fix tutorial doesn't match the current interface #4138 (#4215) (@zhaoyongjie)
|
||||
- [#4217](https://github.com/apache/incubator-superset/pull/4217) templates: open code and documentation on a new tab (#4217) (@xrmx)
|
||||
- [#4207](https://github.com/apache/incubator-superset/pull/4207) Adding limit to time_table viz to get druid query to work (#4207) (@michellethomas)
|
||||
- [#4202](https://github.com/apache/incubator-superset/pull/4202) [line chart] fix time shift color (#4202) (@mistercrunch)
|
||||
- [#4016](https://github.com/apache/incubator-superset/pull/4016) [cache] Using the query as the basis of the cache key (#4016) (@john-bodley)
|
||||
- [#4203](https://github.com/apache/incubator-superset/pull/4203) [druid] fix 2 phases queries that specify 'Sort By' on 'Series limit' (#4203) (@mistercrunch)
|
||||
- [#4200](https://github.com/apache/incubator-superset/pull/4200) [bugfix] dealing with DBAPIs that return unserilizable types (#4200) (@mistercrunch)
|
||||
- [#4134](https://github.com/apache/incubator-superset/pull/4134) [Geo] Added DeckGL Arc Layer and Refactor on BaseDeckGL class (#4134) (@hughhhh)
|
||||
- [#4126](https://github.com/apache/incubator-superset/pull/4126) Hanization (#4126) (@asdf2014)
|
||||
- [#4114](https://github.com/apache/incubator-superset/pull/4114) Superset was using undefined metrics for specifying limits (#4114) (@bolkedebruin)
|
||||
- [#4173](https://github.com/apache/incubator-superset/pull/4173) Using user-defined Javascript to customize geospatial visualization (#4173) (@mistercrunch)
|
||||
- [#4183](https://github.com/apache/incubator-superset/pull/4183) [datasource editor] click checkbox creates metrics instantly (#4183) (@mistercrunch)
|
||||
- [#4201](https://github.com/apache/incubator-superset/pull/4201) [explore] fix json highlighting for Druid queries (#4201) (@mistercrunch)
|
||||
- [#4186](https://github.com/apache/incubator-superset/pull/4186) Sort out dependencies in travis/tox (#4186) (@mistercrunch)
|
||||
- [#4184](https://github.com/apache/incubator-superset/pull/4184) Enable SQL syntax highlighting in View Query (#4184) (@betodealmeida)
|
||||
- [#4187](https://github.com/apache/incubator-superset/pull/4187) [annotations] Fixing migration for annotation layers (#4187) (@john-bodley)
|
||||
- [#4176](https://github.com/apache/incubator-superset/pull/4176) fix since or until is empty value #4170 (#4176) (@zhaoyongjie)
|
||||
- [#4182](https://github.com/apache/incubator-superset/pull/4182) Moving the custom_password_store out of Database class (#4182) (@fabianmenges)
|
||||
- [#4180](https://github.com/apache/incubator-superset/pull/4180) [security] Adding all derived FAB UserModelView views to admin only (#4180) (@john-bodley)
|
||||
- [#4101](https://github.com/apache/incubator-superset/pull/4101) Don't use fully qualified column names in metric definitions (#4101) (@mistercrunch)
|
||||
- [#4172](https://github.com/apache/incubator-superset/pull/4172) [FAB] configuring updating of permissions (#4172) (@john-bodley)
|
||||
- [#4164](https://github.com/apache/incubator-superset/pull/4164) Allow alpha role import csv (#4164) (@timifasubaa)
|
||||
- [#4147](https://github.com/apache/incubator-superset/pull/4147) Make Welcome page into a simple React app (#4147) (@mistercrunch)
|
||||
- [#4156](https://github.com/apache/incubator-superset/pull/4156) Fix chart rendering error in time series table (#4156) (@graceguo-supercat)
|
||||
- [#4157](https://github.com/apache/incubator-superset/pull/4157) [Bug] Closing change datasource modal throws JS error (#4157) (@graceguo-supercat)
|
||||
- [#4162](https://github.com/apache/incubator-superset/pull/4162) Check for non-None database before using. (#4162) (@atronchi)
|
||||
- [#4163](https://github.com/apache/incubator-superset/pull/4163) Druid support via SQLAlchemy (#4163) (@betodealmeida)
|
||||
- [#4125](https://github.com/apache/incubator-superset/pull/4125) Fix invaild gitter url (#4125) (@asdf2014)
|
||||
- [#4148](https://github.com/apache/incubator-superset/pull/4148) Adding Apache Kylin datasource for documentation (#4148) (@zhaoyongjie)
|
||||
- [#4143](https://github.com/apache/incubator-superset/pull/4143) Create DATA_DIR after importing config (#4143) (@leorochael)
|
||||
- [#4121](https://github.com/apache/incubator-superset/pull/4121) Fix USA's state geojson for 'Country Map' visualization (#4121) (@mistercrunch)
|
||||
- [#4139](https://github.com/apache/incubator-superset/pull/4139) fix variable name (#4139) (@timifasubaa)
|
||||
- [#4130](https://github.com/apache/incubator-superset/pull/4130) Remedy for dual axis annotation (#4130) (@Mogball)
|
||||
- [#4104](https://github.com/apache/incubator-superset/pull/4104) [explore] add datasource metadata (#4104) (@mistercrunch)
|
||||
- [#4135](https://github.com/apache/incubator-superset/pull/4135) better thumbnail for deck_geojson (#4135) (@hughhhh)
|
||||
- [#4124](https://github.com/apache/incubator-superset/pull/4124) Added guard statement for spatial controls (#4124) (@hughhhh)
|
||||
- [#4096](https://github.com/apache/incubator-superset/pull/4096) Multi layers DECK.GL visualization (#4096) (@mistercrunch)
|
||||
- [#4116](https://github.com/apache/incubator-superset/pull/4116) Fix rst grammar problems (#4116) (@asdf2014)
|
||||
- [#4118](https://github.com/apache/incubator-superset/pull/4118) Update UserInfo.jsx and set additional properties for react-gravatar (#4118) (@jpesculis)
|
||||
- [#4097](https://github.com/apache/incubator-superset/pull/4097) [geo] Added DeckGL GeoJson layer (#4097) (@hughhhh)
|
||||
- [#4076](https://github.com/apache/incubator-superset/pull/4076) Introduce Javascript controls (#4076) (@mistercrunch)
|
||||
- [#4042](https://github.com/apache/incubator-superset/pull/4042) [Bugfix] Issues with merge_extra_filters (#4042) (#4091) (@nbonnotte)
|
||||
- [#3996](https://github.com/apache/incubator-superset/pull/3996) [sql lab] deeper support for templating (#3996) (@mistercrunch)
|
||||
- [#4067](https://github.com/apache/incubator-superset/pull/4067) [geo] add support for deck.gl's path layer (#4067) (@mistercrunch)
|
||||
- [#4090](https://github.com/apache/incubator-superset/pull/4090) Using TextAreaControl for WHERE and HAVING clause section (#4090) (@mistercrunch)
|
||||
- [#4071](https://github.com/apache/incubator-superset/pull/4071) Fix for SQL editor throwing can't deserialize google.cloud.bigquery._helpers.Row with BigQuery (#4071) (@kuriancheeramelil)
|
||||
- [#4089](https://github.com/apache/incubator-superset/pull/4089) Bugfix: Druid having filters are broken (#4089) (@fabianmenges)
|
||||
- [#4083](https://github.com/apache/incubator-superset/pull/4083) Event annotation should have min width (#4083) (@fabianmenges)
|
||||
- [#4082](https://github.com/apache/incubator-superset/pull/4082) [bugfix] iframe and markup are broken (#4082) (@mistercrunch)
|
||||
- [#4072](https://github.com/apache/incubator-superset/pull/4072) DB migration of annotation_layers on slice objects and slimming down annotation object. (#4072) (@fabianmenges)
|
||||
- [#4073](https://github.com/apache/incubator-superset/pull/4073) [Bugfix] Issues with table filtering (#4073) (@Mogball)
|
||||
- [#3530](https://github.com/apache/incubator-superset/pull/3530) [Feature] enhanced memoized on get_sqla_engine and other functions (#3530) (@Mogball)
|
||||
- [#3518](https://github.com/apache/incubator-superset/pull/3518) Full Annotation Framework (#3518) (@fabianmenges)
|
||||
- [#4065](https://github.com/apache/incubator-superset/pull/4065) #4058 Fix Oracle timestamps (Oracle "ORA-00907: missing right parenthesis" error) (#4065) (@nichobbs)
|
||||
- [#4066](https://github.com/apache/incubator-superset/pull/4066) [geo] turn off renderTrigger on viewport control (#4066) (@mistercrunch)
|
||||
- [#4062](https://github.com/apache/incubator-superset/pull/4062) [health] Adding DB check to /health (#4062) (@john-bodley)
|
||||
- [#4059](https://github.com/apache/incubator-superset/pull/4059) Adding rowcount label to explore view header (#4059) (@mistercrunch)
|
||||
- [#4032](https://github.com/apache/incubator-superset/pull/4032) [geo] provide more flexible Spatial controls (#4032) (@mistercrunch)
|
||||
- [#4063](https://github.com/apache/incubator-superset/pull/4063) Add db_engine_spec for Druid (#4063) (@mistercrunch)
|
||||
- [#4048](https://github.com/apache/incubator-superset/pull/4048) Bump dev version on trunk (#4048) (@mistercrunch)
|
||||
- [#4045](https://github.com/apache/incubator-superset/pull/4045) Changelog for 0.21.0 (#4045) (@mistercrunch)
|
||||
- [#4047](https://github.com/apache/incubator-superset/pull/4047) Fix the pypi build (#4047) (@mistercrunch)
|
||||
- [#4049](https://github.com/apache/incubator-superset/pull/4049) Change reference for slices to chart (#4049) (@hughhhh)
|
||||
|
||||
### 0.22.1
|
||||
Fixes 0.22.0
|
||||
|
||||
|
||||
172
CONTRIBUTING.md
@@ -49,7 +49,7 @@ If you are proposing a feature:
|
||||
implement.
|
||||
- Remember that this is a volunteer-driven project, and that
|
||||
contributions are welcome :)
|
||||
|
||||
|
||||
### Questions
|
||||
|
||||
There is a dedicated [tag](https://stackoverflow.com/questions/tagged/apache-superset) on [stackoverflow](https://stackoverflow.com/). Please use it when asking questions.
|
||||
@@ -61,19 +61,15 @@ meets these guidelines:
|
||||
|
||||
1. The pull request should include tests, either as doctests,
|
||||
unit tests, or both.
|
||||
2. Run `tox` and resolve all errors and test failures.
|
||||
3. If the pull request adds functionality, the docs should be updated
|
||||
2. If the pull request adds functionality, the docs should be updated
|
||||
as part of the same PR. Doc string are often sufficient, make
|
||||
sure to follow the sphinx compatible standards.
|
||||
4. The pull request should work for Python 2.7, and ideally Python 3.4+.
|
||||
3. The pull request should work for Python 2.7, and ideally python 3.4+.
|
||||
``from __future__ import`` will be required in every `.py` file soon.
|
||||
5. If the pull request adds a Python dependency include it in `setup.py`
|
||||
denoting any specific restrictions and in `requirements.txt` pinned to a
|
||||
specific version which ensures that the application build is deterministic.
|
||||
6. Please rebase and resolve all conflicts before submitting.
|
||||
7. Please ensure the necessary checks pass and that code coverage does not
|
||||
decrease.
|
||||
8. If you are asked to update your pull request with some changes there's
|
||||
4. Code will be reviewed by re running the unittests, flake8 and syntax
|
||||
should be as rigorous as the core Python project.
|
||||
5. Please rebase and resolve all conflicts before submitting.
|
||||
6. If you are asked to update your pull request with some changes there's
|
||||
no need to create a new one. Push your changes to the same branch.
|
||||
|
||||
## Documentation
|
||||
@@ -102,11 +98,11 @@ to manage the Python packages you're about to install:
|
||||
virtualenv superset-dev
|
||||
source superset-dev/bin/activate
|
||||
|
||||
Finally, to make changes to the rst files and build the docs using Sphinx,
|
||||
Finally, to make changes to the rst files and build the docs using Sphinx,
|
||||
you'll need to install a handful of dependencies from the repo you cloned:
|
||||
|
||||
cd incubator-superset
|
||||
pip install -r docs/requirements.txt
|
||||
pip install -r dev-reqs-for-docs.txt
|
||||
|
||||
To get the feel for how to edit and build the docs, let's edit a file, build
|
||||
the docs and see our changes in action. First, you'll want to
|
||||
@@ -181,7 +177,6 @@ Check the [OS dependencies](https://superset.incubator.apache.org/installation.h
|
||||
source env/bin/activate
|
||||
|
||||
# install for development
|
||||
pip install -r requirements.txt
|
||||
pip install -e .
|
||||
|
||||
# Create an admin user
|
||||
@@ -200,19 +195,6 @@ Check the [OS dependencies](https://superset.incubator.apache.org/installation.h
|
||||
superset runserver -d
|
||||
|
||||
|
||||
### Logging to the browser console
|
||||
|
||||
When debugging your application, you can have the server logs sent directly to the browser console:
|
||||
|
||||
superset runserver -d --console-log
|
||||
|
||||
You can log anything to the browser console, including objects:
|
||||
|
||||
from superset import app
|
||||
app.logger.error('An exception occurred!')
|
||||
app.logger.info(form_data)
|
||||
|
||||
|
||||
## Setting up the node / npm javascript environment
|
||||
|
||||
`superset/assets` contains all npm-managed, front end assets.
|
||||
@@ -277,33 +259,22 @@ superset runserver -d -p 8081
|
||||
npm run dev
|
||||
```
|
||||
|
||||
#### Upgrading npm packages
|
||||
|
||||
Should you add or upgrade a npm package, which involves changing `package.json`, you'll need to re-run `yarn install` and push the newly generated `yarn.lock` file so we get the reproducible build. More information at (https://yarnpkg.com/blog/2016/11/24/lockfiles-for-all/)
|
||||
|
||||
## Testing
|
||||
All tests are carried out in [tox](http://tox.readthedocs.io/en/latest/index.html)
|
||||
a standardized testing framework mostly for Python (though we also used it for Javascript).
|
||||
All python tests can be run with any of the tox [environments](http://tox.readthedocs.io/en/latest/example/basic.html#a-simple-tox-ini-default-environments), via,
|
||||
|
||||
tox -e <environment>
|
||||
Before running python unit tests, please setup local testing environment:
|
||||
```
|
||||
pip install -r dev-reqs.txt
|
||||
```
|
||||
|
||||
i.e.,
|
||||
All python tests can be run with:
|
||||
|
||||
tox -e py27
|
||||
tox -e py34
|
||||
./run_tests.sh
|
||||
|
||||
Alternatively, you can run a specific test with:
|
||||
|
||||
Alternatively, you can run all tests in a single file via,
|
||||
|
||||
tox -e <environment> -- tests/test_file.py
|
||||
|
||||
or for a specific test via,
|
||||
|
||||
tox -e <environment> -- tests/test_file.py:TestClassName.test_method_name
|
||||
|
||||
Note that the test environment uses a temporary directory for defining the
|
||||
SQLite databases which will be cleared each time before the group of test
|
||||
commands are invoked.
|
||||
./run_specific_test.sh tests.core_tests:CoreTests.test_function_name
|
||||
|
||||
Note that before running specific tests, you have to both setup the local testing environment and run all tests.
|
||||
|
||||
We use [Mocha](https://mochajs.org/), [Chai](http://chaijs.com/) and [Enzyme](http://airbnb.io/enzyme/) to test Javascript. Tests can be run with:
|
||||
|
||||
@@ -316,17 +287,40 @@ We use [Mocha](https://mochajs.org/), [Chai](http://chaijs.com/) and [Enzyme](ht
|
||||
Lint the project with:
|
||||
|
||||
# for python
|
||||
tox -e flake8
|
||||
flake8
|
||||
|
||||
# for javascript
|
||||
tox -e eslint
|
||||
npm run lint
|
||||
|
||||
## Linting with codeclimate
|
||||
Codeclimate is a service we use to measure code quality and test coverage. To get codeclimate's report on your branch, ideally before sending your PR, you can setup codeclimate against your Superset fork. After you push to your fork, you should be able to get the report at http://codeclimate.com . Alternatively, if you prefer to work locally, you can install the codeclimate cli tool.
|
||||
|
||||
*Install the codeclimate cli tool*
|
||||
```
|
||||
curl -L https://github.com/docker/machine/releases/download/v0.7.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine
|
||||
brew install docker
|
||||
docker-machine create --driver virtual box default
|
||||
docker-machine env default
|
||||
eval "$(docker-machine env default)"
|
||||
docker pull codeclimate/codeclimate
|
||||
brew tap codeclimate/formulae
|
||||
brew install codeclimate
|
||||
```
|
||||
|
||||
*Run the lint command:*
|
||||
```
|
||||
docker-machine start
|
||||
eval "$(docker-machine env default)”
|
||||
codeclimate analyze
|
||||
```
|
||||
More info can be found here: https://docs.codeclimate.com/docs/open-source-free
|
||||
|
||||
|
||||
## API documentation
|
||||
|
||||
Generate the documentation with:
|
||||
|
||||
pip install -r docs/requirements.txt
|
||||
python setup.py build_sphinx
|
||||
cd docs && ./build.sh
|
||||
|
||||
## CSS Themes
|
||||
As part of the npm build process, CSS for Superset is compiled from `Less`, a dynamic stylesheet language.
|
||||
@@ -417,9 +411,10 @@ https://github.com/apache/incubator-superset/pull/3013
|
||||
Every once in a while we want to compile the documentation and publish it.
|
||||
Here's how to do it.
|
||||
|
||||
```
|
||||
.. code::
|
||||
|
||||
# install doc dependencies
|
||||
pip install -r docs/requirements.txt
|
||||
pip install -r dev-reqs-for-docs.txt
|
||||
|
||||
# build the docs
|
||||
python setup.py build_sphinx
|
||||
@@ -433,75 +428,10 @@ https://github.com/apache/incubator-superset/pull/3013
|
||||
|
||||
# copy
|
||||
cp -r /tmp/tmp_superset_docs/ ~/incubator-superset-site.git/
|
||||
|
||||
|
||||
# commit and push to `asf-site` branch
|
||||
cd ~/incubator-superset-site.git/
|
||||
git checkout asf-site
|
||||
git add .
|
||||
git commit -a -m "New doc version"
|
||||
git push origin master
|
||||
```
|
||||
|
||||
## Publishing a Pypi release
|
||||
|
||||
We create a branch that goes along each minor release `0.24`
|
||||
and micro releases get corresponding tags as in `0.24.0`. Git history should
|
||||
never be altered in release branches.
|
||||
Bug fixes and security-related patches get cherry-picked
|
||||
(usually from master) as in `git cherry-pick -x {SHA}`.
|
||||
|
||||
Following a set of cherries being picked, a release can be pushed to
|
||||
Pypi as follows:
|
||||
|
||||
```
|
||||
# branching off of master
|
||||
git checkout -b 0.25
|
||||
|
||||
# cherry-picking a SHA
|
||||
git cherry-pick -x f9d85bd2e1fd9bc233d19c76bed09467522b968a
|
||||
# repeat with other SHAs, don't forget the -x
|
||||
|
||||
# source of thruth for release numbers live in package.json
|
||||
vi superset/assets/package.json
|
||||
# hard code release in file, commit to the release branch
|
||||
git commit -a -m "0.25.0"
|
||||
|
||||
# create the release tag in the release branch
|
||||
git tag 0.25.0
|
||||
git push apache 0.25 --tags
|
||||
|
||||
# check travis to confirm the build succeeded as
|
||||
# you shouldn't assume that a clean cherry will be clean
|
||||
# when landing on a new sundae
|
||||
|
||||
# compile the JS, and push to pypi
|
||||
# to run this part you'll need a pypi account and rights on the
|
||||
# superset package. Committers that want to ship releases
|
||||
# should have this access.
|
||||
# You'll also need a `.pypirc` as specified here:
|
||||
# http://peterdowns.com/posts/first-time-with-pypi.html
|
||||
./pypi_push.sh
|
||||
|
||||
# publish an update to the CHANGELOG.md for the right version range
|
||||
# looking the latest CHANGELOG entry for the second argument
|
||||
./gen_changelog.sh 0.22.1 0.25.0
|
||||
# this will overwrite the CHANGELOG.md with only the version range
|
||||
# so you'll want to copy paste that on top of the previous CHANGELOG.md
|
||||
# open a PR against `master`
|
||||
```
|
||||
|
||||
In the future we'll start publishing release candidates for minor releases
|
||||
only, but typically not for micro release.
|
||||
The process will be similar to the process described above, expect the
|
||||
tags will be formated `0.25.0rc1`, `0.25.0rc2`, ..., until consensus
|
||||
is reached.
|
||||
|
||||
We should also have a Github PR label process to target the proper
|
||||
release, and tooling helping keeping track of all the cherries and
|
||||
target versions.
|
||||
|
||||
For Apache releases, the process will be a bit heavier and should get
|
||||
documented here. There will be extra steps for signing the binaries,
|
||||
with a PGP key and providing MD5, Apache voting, as well as
|
||||
publishing to Apache's SVN repository. View the ASF docs for more
|
||||
information.
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
recursive-include superset/data *
|
||||
recursive-include superset/migrations *
|
||||
recursive-include superset/static *
|
||||
recursive-exclude superset/static/assets/docs *
|
||||
recursive-exclude superset/static/assets/images/viz_thumbnails_large *
|
||||
recursive-exclude superset/static/docs *
|
||||
recursive-exclude superset/static/spec *
|
||||
recursive-exclude superset/static/images/viz_thumbnails_large *
|
||||
recursive-exclude superset/static/assets/node_modules *
|
||||
recursive-include superset/templates *
|
||||
recursive-include superset/translations *
|
||||
|
||||
57
README.md
@@ -3,8 +3,9 @@ Superset
|
||||
|
||||
[](https://travis-ci.org/apache/incubator-superset)
|
||||
[](https://badge.fury.io/py/superset)
|
||||
[](https://codecov.io/github/apache/incubator-superset)
|
||||
[](https://coveralls.io/github/apache/incubator-superset?branch=master)
|
||||
[](https://pypi.python.org/pypi/superset)
|
||||
[](https://requires.io/github/apache/incubator-superset/requirements/?branch=master)
|
||||
[](https://gitter.im/airbnb/superset?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://superset.incubator.apache.org)
|
||||
[](https://david-dm.org/apache/incubator-superset?path=superset/assets)
|
||||
@@ -26,23 +27,27 @@ Screenshots & Gifs
|
||||
|
||||
**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/>
|
||||

|
||||
|
||||
**Slice & dice your data**
|
||||
<br/>
|
||||
|
||||
<kbd><img title="Slice & dice your data" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset/assets/images/screenshots/explore.png"></kbd><br/>
|
||||
**View/Edit a Slice**
|
||||
|
||||
**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/>
|
||||
<br/>
|
||||
|
||||
**Visualize geospatial data with deck.gl**
|
||||
**Query and Visualize with SQL Lab**
|
||||
|
||||
<kbd><img title="Geospatial" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset/assets/images/screenshots/deckgl_dash.png"></kbd><br/>
|
||||

|
||||
|
||||
**Choose from a wide array of visualizations**
|
||||
<br/>
|
||||
|
||||
<kbd><img title="Visualizations" src="https://raw.githubusercontent.com/apache/incubator-superset/master/superset/assets/images/screenshots/visualizations.png"></kbd><br/>
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
Apache Superset
|
||||
---------------
|
||||
@@ -100,7 +105,7 @@ Druid!
|
||||
------
|
||||
|
||||
On top of having the ability to query your relational databases,
|
||||
Superset ships with deep integration with Druid (a real time distributed
|
||||
Superset has ships with deep integration with Druid (a real time distributed
|
||||
column-store). When querying Druid,
|
||||
Superset can query humongous amounts of data on top of real time dataset.
|
||||
Note that Superset does not require Druid in any way to function, it's simply
|
||||
@@ -124,7 +129,7 @@ Installation & Configuration
|
||||
|
||||
Resources
|
||||
-------------
|
||||
* [Mailing list](https://lists.apache.org/list.html?dev@superset.apache.org)
|
||||
* [Mailing list](https://lists.apache.org/list.html?dev@superset.apache.org/)
|
||||
* [Gitter (live chat) Channel](https://gitter.im/airbnb/superset)
|
||||
* [Docker image](https://hub.docker.com/r/amancevice/superset/) (community contributed)
|
||||
* [Slides from Strata (March 2016)](https://drive.google.com/open?id=0B5PVE0gzO81oOVJkdF9aNkJMSmM)
|
||||
@@ -147,11 +152,7 @@ the world know they are using Superset. Join our growing community!
|
||||
|
||||
- [AiHello](https://www.aihello.com)
|
||||
- [Airbnb](https://github.com/airbnb)
|
||||
- [Airboxlab](https://foobot.io)
|
||||
- [Aktia Bank plc](https://www.aktia.com)
|
||||
- [Amino](https://amino.com)
|
||||
- [Ascendica Development](http://ascendicadevelopment.com)
|
||||
- [Astronomer](https://www.astronomer.io)
|
||||
- [Brilliant.org](https://brilliant.org/)
|
||||
- [Capital Service S.A.](http://capitalservice.pl)
|
||||
- [Clark.de](http://clark.de/)
|
||||
@@ -164,11 +165,9 @@ the world know they are using Superset. Join our growing community!
|
||||
- [Konfío](http://konfio.mx)
|
||||
- [Lyft](https://www.lyft.com/)
|
||||
- [Maieutical Labs](https://cloudschooling.it)
|
||||
- [PeopleDoc](https://www.people-doc.com)
|
||||
- [Ona](https://ona.io)
|
||||
- [Pronto Tools](http://www.prontotools.io)
|
||||
- [Qunar](https://www.qunar.com/)
|
||||
- [ScopeAI](https://www.getscopeai.com)
|
||||
- [Shopee](https://shopee.sg)
|
||||
- [Shopkick](https://www.shopkick.com)
|
||||
- [Tails.com](https://tails.com)
|
||||
@@ -177,7 +176,25 @@ the world know they are using Superset. Join our growing community!
|
||||
- [Twitter](https://twitter.com/)
|
||||
- [Udemy](https://www.udemy.com/)
|
||||
- [VIPKID](https://www.vipkid.com.cn/)
|
||||
- [Windsor.ai](https://www.windsor.ai/)
|
||||
- [Yahoo!](https://yahoo.com/)
|
||||
- [Zaihang](http://www.zaih.com/)
|
||||
- [Zalando](https://www.zalando.com)
|
||||
|
||||
|
||||
More screenshots
|
||||
----------------
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
48
TODO.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# TODO
|
||||
List of TODO items for Superset
|
||||
|
||||
## Important
|
||||
* **Getting proper JS testing:** unit tests on the Python side are pretty
|
||||
solid, but now we need a test suite for the JS part of the site,
|
||||
testing all the ajax-type calls
|
||||
* **Viz Plugins:** Allow people to define and share visualization plugins.
|
||||
ideally one would only need to drop in a set of files in a folder and
|
||||
Superset would discover and expose the plugins
|
||||
|
||||
## Features
|
||||
* **Dashboard URL filters:** `{dash_url}#fltin__fieldname__value1,value2`
|
||||
* **Default slice:** choose a default slice for the dataset instead of
|
||||
default endpoint
|
||||
* **Widget sets / chart grids:** a way to have all charts support making
|
||||
a series of charts and putting them in a grid. The same way that you
|
||||
can groupby for series, you could chart by. The form field set would be
|
||||
common and use a single field to "grid by", a limit number of chart as
|
||||
an N * N grid size.
|
||||
* **Advanced dashboard configuration:** currently you can define which
|
||||
slices in a dashboard are immune to filtering.
|
||||
* **Annotations layers:** allow for people to maintain data annotations,
|
||||
attached to a layer and time range. These layers can be added on top of
|
||||
some visualizations as annotations. An example of a layer might be
|
||||
"holidays" or "site outages", ...
|
||||
* **Slack integration** - TBD
|
||||
* **Comments:** allow for people to comment on slices and dashes
|
||||
|
||||
|
||||
## Easy-ish fix
|
||||
* Build matrix to include mysql using tox
|
||||
* CREATE VIEW button from SQL editor
|
||||
* Test button for when editing SQL expression
|
||||
* Slider form element
|
||||
* [druid] Allow for post aggregations (ratios!)
|
||||
* in/notin filters autocomplete (druid)
|
||||
|
||||
## New viz
|
||||
* Maps that use geocodes
|
||||
* Time animated scatter plots
|
||||
* Horizon charts
|
||||
* Calendar heatmap
|
||||
* Chord diagram
|
||||
* ...
|
||||
|
||||
## Community
|
||||
* Turorial vids
|
||||
15
UPDATING.md
@@ -1,15 +0,0 @@
|
||||
# Updating Superset
|
||||
|
||||
This file documents any backwards-incompatible changes in Superset and
|
||||
assists people when migrating to a new version.
|
||||
|
||||
## Superset 0.25.0
|
||||
Superset 0.25.0 contains a backwards incompatible database migration script.
|
||||
If you run a production system you should schedule downtime for this
|
||||
upgrade.
|
||||
* [4587](https://github.com/apache/incubator-superset/pull/4587)
|
||||
|
||||
## Superset 0.23.0
|
||||
|
||||
* [4565](https://github.com/apache/incubator-superset/pull/4565)
|
||||
* [4835](https://github.com/apache/incubator-superset/pull/4835)
|
||||
3
dev-reqs-for-docs.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
sphinx
|
||||
sphinx-rtd-theme
|
||||
sphinxcontrib.youtube
|
||||
14
dev-reqs.txt
Normal file
@@ -0,0 +1,14 @@
|
||||
codeclimate-test-reporter
|
||||
coveralls
|
||||
flake8
|
||||
flask_cors
|
||||
mock
|
||||
mysqlclient
|
||||
nose
|
||||
psycopg2
|
||||
pylint
|
||||
pyyaml
|
||||
redis
|
||||
statsd
|
||||
# Also install everything we need to build Sphinx docs
|
||||
-r dev-reqs-for-docs.txt
|
||||
1
docs/_build/html/README.md
vendored
Normal file
@@ -0,0 +1 @@
|
||||
Folder containing the sphinx-generated documentation
|
||||
@@ -52,7 +52,7 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = "Apache Superset"
|
||||
copyright = 'Apache Software Foundation'
|
||||
copyright = None
|
||||
author = u'Maxime Beauchemin'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
Druid
|
||||
=====
|
||||
|
||||
Superset has a native connector to Druid, and a majority of Druid's
|
||||
features are accessible through Superset.
|
||||
Superset works well with Druid, though currently not all
|
||||
advanced features out of Druid are covered. This page clarifies what is
|
||||
covered and what isn't and explains how to use some of the features.
|
||||
|
||||
.. note ::
|
||||
Druid now supports SQL and can be accessed through Superset's
|
||||
SQLAlchemy connector. The long term vision is to deprecate
|
||||
the Druid native REST connector and query Druid exclusively through
|
||||
the SQL interface.
|
||||
Currently Airbnb runs against Druid ``0.8.x`` and previous /
|
||||
following versions are not tested against.
|
||||
|
||||
Supported
|
||||
'''''''''
|
||||
|
||||
Aggregations
|
||||
------------
|
||||
@@ -26,7 +28,7 @@ element correspond to Druid aggregation definition. You can create your own
|
||||
aggregations manually from the ``List Druid Metric`` tab following Druid
|
||||
documentation.
|
||||
|
||||
.. image:: images/druid_agg.png
|
||||
.. image:: _static/img/druid_agg.png
|
||||
:scale: 50 %
|
||||
|
||||
Post-Aggregations
|
||||
@@ -39,9 +41,8 @@ json post-aggregation definition (as specified in the Druid docs) in the
|
||||
Json field.
|
||||
|
||||
|
||||
Unsupported Features
|
||||
--------------------
|
||||
Not yet supported
|
||||
'''''''''''''''''
|
||||
|
||||
.. note ::
|
||||
Unclear at this point, this section of the documentation could use
|
||||
some input.
|
||||
- Regex filters
|
||||
- Lookups / joins
|
||||
|
||||
16
docs/faq.rst
@@ -48,10 +48,8 @@ https://github.com/airbnb/superset/issues?q=label%3Aexample+is%3Aclosed
|
||||
Can I upload and visualize csv data?
|
||||
------------------------------------
|
||||
|
||||
Yes, using the ``Upload a CSV`` button under the ``Sources`` menu item.
|
||||
This brings up a form that allows you specify required information.
|
||||
After creating the table from CSV, it can then be loaded like any
|
||||
other on the ``Sources -> Tables`` page.
|
||||
Yes, using the ``Upload a CSV`` button under the ``Sources``
|
||||
menu item. This brings up a form that allows you specify required information. After creating the table from CSV, it can then be loaded like any other on the ``Sources -> Tables``page.
|
||||
|
||||
|
||||
Why are my queries timing out?
|
||||
@@ -108,7 +106,7 @@ edit the ``JSON Metadata`` field, more specifically the
|
||||
never be affected by any dashboard level filtering.
|
||||
|
||||
|
||||
.. code-block:: json
|
||||
..code:: json
|
||||
|
||||
{
|
||||
"filter_immune_slices": [324, 65, 92],
|
||||
@@ -143,7 +141,7 @@ to be refreshed - especially if some data is slow moving, or run heavy queries.
|
||||
slices from the timed refresh process, add the ``timed_refresh_immune_slices`` key to the dashboard
|
||||
``JSON Metadata`` field:
|
||||
|
||||
.. code-block:: json
|
||||
..code:: json
|
||||
|
||||
{
|
||||
"filter_immune_slices": [],
|
||||
@@ -159,7 +157,7 @@ Slice refresh will also be staggered over the specified period. You can turn off
|
||||
by setting the ``stagger_refresh`` to ``false`` and modify the stagger period by setting
|
||||
``stagger_time`` to a value in milliseconds in the ``JSON Metadata`` field:
|
||||
|
||||
.. code-block:: json
|
||||
..code:: json
|
||||
|
||||
{
|
||||
"stagger_refresh": false,
|
||||
@@ -170,7 +168,7 @@ Here, the entire dashboard will refresh at once if periodic refresh is on. The s
|
||||
2.5 seconds is ignored.
|
||||
|
||||
Why does fabmanager or superset freezed/hung/not responding when started (my home directory is NFS mounted)?
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
-----------------------------------------------------------------------------------------
|
||||
By default, superset creates and uses an sqlite database at ``~/.superset/superset.db``. Sqlite is known to `don't work well if used on NFS`__ due to broken file locking implementation on NFS.
|
||||
|
||||
__ https://www.sqlite.org/lockingv3.html
|
||||
@@ -238,7 +236,7 @@ It is possible on a per-dashboard basis by providing a mapping of
|
||||
labels to colors in the ``JSON Metadata`` attribute using the
|
||||
``label_colors`` key.
|
||||
|
||||
.. code-block:: json
|
||||
..code:: json
|
||||
|
||||
{
|
||||
"label_colors": {
|
||||
|
||||
163
docs/gallery.rst
@@ -1,190 +1,89 @@
|
||||
Visualizations Gallery
|
||||
======================
|
||||
Gallery
|
||||
=======
|
||||
|
||||
.. image:: images/viz_thumbnails/area.png
|
||||
.. image:: _static/img/viz_thumbnails/line.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/bar.png
|
||||
.. image:: _static/img/viz_thumbnails/bubble.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/big_number.png
|
||||
.. image:: _static/img/viz_thumbnails/table.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/big_number_total.png
|
||||
.. image:: _static/img/viz_thumbnails/pie.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/box_plot.png
|
||||
.. image:: _static/img/viz_thumbnails/bar.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/bubble.png
|
||||
.. image:: _static/img/viz_thumbnails/world_map.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/bullet.png
|
||||
.. image:: _static/img/viz_thumbnails/sankey.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/cal_heatmap.png
|
||||
.. image:: _static/img/viz_thumbnails/word_cloud.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/chord.png
|
||||
.. image:: _static/img/viz_thumbnails/filter_box.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/compare.png
|
||||
.. image:: _static/img/viz_thumbnails/pivot_table.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/country_map.png
|
||||
.. image:: _static/img/viz_thumbnails/directed_force.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/deck_arc.png
|
||||
.. image:: _static/img/viz_thumbnails/compare.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/deck_geojson.png
|
||||
.. image:: _static/img/viz_thumbnails/sunburst.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/deck_grid.png
|
||||
.. image:: _static/img/viz_thumbnails/area.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/deck_hex.png
|
||||
.. image:: _static/img/viz_thumbnails/big_number.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/deck_multi.png
|
||||
.. image:: _static/img/viz_thumbnails/big_number_total.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/deck_path.png
|
||||
.. image:: _static/img/viz_thumbnails/bullet.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/deck_polygon.png
|
||||
.. image:: _static/img/viz_thumbnails/dist_bar.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/deck_scatter.png
|
||||
.. image:: _static/img/viz_thumbnails/heatmap.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/deck_screengrid.png
|
||||
.. image:: _static/img/viz_thumbnails/markup.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/directed_force.png
|
||||
.. image:: _static/img/viz_thumbnails/para.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/dist_bar.png
|
||||
.. image:: _static/img/viz_thumbnails/iframe.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/dual_line.png
|
||||
.. image:: _static/img/viz_thumbnails/box_plot.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/event_flow.png
|
||||
.. image:: _static/img/viz_thumbnails/treemap.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/filter_box.png
|
||||
.. image:: _static/img/viz_thumbnails/cal_heatmap.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/heatmap.png
|
||||
.. image:: _static/img/viz_thumbnails/horizon.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/histogram.png
|
||||
.. image:: _static/img/viz_thumbnails/mapbox.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/horizon.png
|
||||
.. image:: _static/img/viz_thumbnails/separator.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/iframe.png
|
||||
.. image:: _static/img/viz_thumbnails/histogram.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/line.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/mapbox.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/markup.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/paired_ttest.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/para.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/partition.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/pie.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/pivot_table.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/rose.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/sankey.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/separator.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/sunburst.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/table.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/time_pivot.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/time_table.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/treemap.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/word_cloud.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
.. image:: images/viz_thumbnails/world_map.png
|
||||
:scale: 25 %
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../superset/assets/images/
|
||||
@@ -49,17 +49,12 @@ By default, default (null) values will be omitted. Use the ``-d`` flag to includ
|
||||
If you want back references to be included (e.g. a column to include the table id
|
||||
it belongs to) use the ``-b`` flag.
|
||||
|
||||
Alternatively you can export datasources using the UI:
|
||||
Alternatively you can export datasources using the UI: ::
|
||||
|
||||
1. Open **Sources** -> **Databases** to export all tables associated to a
|
||||
single or multiple databases. (**Tables** for one or more tables,
|
||||
**Druid Clusters** for clusters, **Druid Datasources** for datasources)
|
||||
#. Select the items you would like to export
|
||||
#. Click **Actions** -> **Export to YAML**
|
||||
#. If you want to import an item that you exported through the UI, you
|
||||
will need to nest it inside its parent element, e.g. a `database`
|
||||
needs to be nested under `databases` a `table` needs to be
|
||||
nested inside a `database` element.
|
||||
1. Open **Sources** -> **Databases** to export all tables associated to a single or multiple databases. (**Tables** for one or more tables, **Druid Clusters** for clusters, **Druid Datasources** for datasources)
|
||||
2. Select the items you would like to export
|
||||
3. Click **Actions** -> **Export to YAML**
|
||||
4. If you want to import an item that you exported through the UI, you will need to nest it inside its parent element, e.g. a `database` needs to be nested under `databases` a `table` needs to be nested inside a `database` element.
|
||||
|
||||
Exporting the complete supported YAML schema
|
||||
--------------------------------------------
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.. image:: images/s.png
|
||||
.. image:: _static/img/s.png
|
||||
|
||||
Apache Superset (incubating)
|
||||
''''''''''''''''''''''''''''
|
||||
@@ -45,22 +45,17 @@ Features
|
||||
- Integration with most SQL-speaking RDBMS through SQLAlchemy
|
||||
- Deep integration with Druid.io
|
||||
|
||||
Screenshots
|
||||
-----------
|
||||
------
|
||||
|
||||
.. image:: images/screenshots/bank_dash.png
|
||||
.. image:: https://camo.githubusercontent.com/82e264ef777ba06e1858766fe3b8817ee108eb7e/687474703a2f2f672e7265636f726469742e636f2f784658537661475574732e676966
|
||||
|
||||
------
|
||||
|
||||
.. image:: images/screenshots/explore.png
|
||||
.. image:: https://camo.githubusercontent.com/4991ff37a0005ea4e4267919a52786fda82d2d21/687474703a2f2f672e7265636f726469742e636f2f755a6767594f645235672e676966
|
||||
|
||||
------
|
||||
|
||||
.. image:: images/screenshots/sqllab.png
|
||||
|
||||
------
|
||||
|
||||
.. image:: images/screenshots/deckgl_dash.png
|
||||
.. image:: https://camo.githubusercontent.com/a389af15ac1e32a3d0fee941b4c62c850b1d583b/687474703a2f2f672e7265636f726469742e636f2f55373046574c704c76682e676966
|
||||
|
||||
------
|
||||
|
||||
@@ -75,9 +70,10 @@ Contents
|
||||
tutorial
|
||||
security
|
||||
sqllab
|
||||
visualization
|
||||
videos
|
||||
gallery
|
||||
druid
|
||||
misc
|
||||
faq
|
||||
|
||||
|
||||
|
||||
@@ -53,12 +53,6 @@ the required dependencies are installed: ::
|
||||
|
||||
sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev
|
||||
|
||||
**Ubuntu 16.04** If you have python3.5 installed alongside with python2.7, as is default on **Ubuntu 16.04 LTS**, run this command also
|
||||
|
||||
sudo apt-get install build-essential libssl-dev libffi-dev python3.5-dev python-pip libsasl2-dev libldap2-dev
|
||||
|
||||
otherwhise build for ``cryptography`` fails.
|
||||
|
||||
For **Fedora** and **RHEL-derivatives**, the following command will ensure
|
||||
that the required dependencies are installed: ::
|
||||
|
||||
@@ -125,8 +119,11 @@ Follow these few simple steps to install Superset.::
|
||||
# Create default roles and permissions
|
||||
superset init
|
||||
|
||||
# To start a development web server on port 8088, use -p to bind to another port
|
||||
superset runserver -d
|
||||
# Start the web server on port 8088, use -p to bind to another port
|
||||
superset runserver
|
||||
|
||||
# To start a development web server, use the -d switch
|
||||
# superset runserver -d
|
||||
|
||||
|
||||
After installation, you should be able to point your browser to the right
|
||||
@@ -144,8 +141,12 @@ Gunicorn, preferably in **async mode**, which allows for impressive
|
||||
concurrency even and is fairly easy to install and configure. Please
|
||||
refer to the
|
||||
documentation of your preferred technology to set up this Flask WSGI
|
||||
application in a way that works well in your environment. Here's an **async**
|
||||
setup known to work well in production: ::
|
||||
application in a way that works well in your environment.
|
||||
|
||||
While the `superset runserver` command act as an quick wrapper
|
||||
around `gunicorn`, it doesn't expose all the options you may need,
|
||||
so you'll want to craft your own `gunicorn` command in your production
|
||||
environment. Here's an **async** setup known to work well: ::
|
||||
|
||||
gunicorn \
|
||||
-w 10 \
|
||||
@@ -158,7 +159,7 @@ setup known to work well in production: ::
|
||||
superset:app
|
||||
|
||||
Refer to the
|
||||
`Gunicorn documentation <http://docs.gunicorn.org/en/stable/design.html>`_
|
||||
[Gunicorn documentation](http://docs.gunicorn.org/en/stable/design.html)
|
||||
for more information.
|
||||
|
||||
Note that *gunicorn* does not
|
||||
@@ -166,9 +167,6 @@ work on Windows so the `superset runserver` command is not expected to work
|
||||
in that context. Also note that the development web
|
||||
server (`superset runserver -d`) is not intended for production use.
|
||||
|
||||
If not using gunicorn, you may want to disable the use of flask-compress
|
||||
by setting `ENABLE_FLASK_COMPRESS = False` in your `superset_config.py`
|
||||
|
||||
Flask-AppBuilder Permissions
|
||||
----------------------------
|
||||
|
||||
@@ -208,7 +206,7 @@ In case that the reverse proxy is used for providing ssl encryption,
|
||||
an explicit definition of the `X-Forwarded-Proto` may be required.
|
||||
For the Apache webserver this can be set as follows: ::
|
||||
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
RequestHeader set X-Forwarded-Proto "https"
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
@@ -221,6 +219,7 @@ of the parameters you can copy / paste in that configuration module: ::
|
||||
# Superset specific config
|
||||
#---------------------------------------------------------
|
||||
ROW_LIMIT = 5000
|
||||
SUPERSET_WORKERS = 4
|
||||
|
||||
SUPERSET_WEBSERVER_PORT = 8088
|
||||
#---------------------------------------------------------
|
||||
@@ -242,29 +241,17 @@ of the parameters you can copy / paste in that configuration module: ::
|
||||
WTF_CSRF_ENABLED = True
|
||||
# Add endpoints that need to be exempt from CSRF protection
|
||||
WTF_CSRF_EXEMPT_LIST = []
|
||||
# A CSRF token that expires in 1 year
|
||||
WTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365
|
||||
|
||||
# Set this API key to enable Mapbox visualizations
|
||||
MAPBOX_API_KEY = ''
|
||||
|
||||
All the parameters and default values defined in
|
||||
https://github.com/apache/incubator-superset/blob/master/superset/config.py
|
||||
can be altered in your local ``superset_config.py`` .
|
||||
Administrators will want to
|
||||
read through the file to understand what can be configured locally
|
||||
as well as the default values in place.
|
||||
|
||||
Since ``superset_config.py`` acts as a Flask configuration module, it
|
||||
can be used to alter the settings Flask itself,
|
||||
as well as Flask extensions like ``flask-wtf``, ``flask-cache``,
|
||||
``flask-migrate``, and ``flask-appbuilder``. Flask App Builder, the web
|
||||
framework used by Superset offers many configuration settings. Please consult
|
||||
This file also allows you to define configuration parameters used by
|
||||
Flask App Builder, the web framework used by Superset. Please consult
|
||||
the `Flask App Builder Documentation
|
||||
<http://flask-appbuilder.readthedocs.org/en/latest/config.html>`_
|
||||
for more information on how to configure it.
|
||||
for more information on how to configure Superset.
|
||||
|
||||
Make sure to change:
|
||||
Please make sure to change:
|
||||
|
||||
* *SQLALCHEMY_DATABASE_URI*, by default it is stored at *~/.superset/superset.db*
|
||||
* *SECRET_KEY*, to a long random string
|
||||
@@ -294,15 +281,11 @@ Here's a list of some of the recommended packages.
|
||||
+---------------+-------------------------------------+-------------------------------------------------+
|
||||
| Presto | ``pip install pyhive`` | ``presto://`` |
|
||||
+---------------+-------------------------------------+-------------------------------------------------+
|
||||
| Hive | ``pip install pyhive`` | ``hive://`` |
|
||||
+---------------+-------------------------------------+-------------------------------------------------+
|
||||
| Oracle | ``pip install cx_Oracle`` | ``oracle://`` |
|
||||
+---------------+-------------------------------------+-------------------------------------------------+
|
||||
| sqlite | | ``sqlite://`` |
|
||||
+---------------+-------------------------------------+-------------------------------------------------+
|
||||
| Snowflake | ``pip install snowflake-sqlalchemy``| ``snowflake://`` |
|
||||
+---------------+-------------------------------------+-------------------------------------------------+
|
||||
| Redshift | ``pip install sqlalchemy-redshift`` | ``redshift+psycopg2://`` |
|
||||
| Redshift | ``pip install sqlalchemy-redshift`` | ``postgresql+psycopg2://`` |
|
||||
+---------------+-------------------------------------+-------------------------------------------------+
|
||||
| MSSQL | ``pip install pymssql`` | ``mssql://`` |
|
||||
+---------------+-------------------------------------+-------------------------------------------------+
|
||||
@@ -322,8 +305,6 @@ Here's a list of some of the recommended packages.
|
||||
+---------------+-------------------------------------+-------------------------------------------------+
|
||||
| Kylin | ``pip install kylinpy`` | ``kylin://`` |
|
||||
+---------------+-------------------------------------+-------------------------------------------------+
|
||||
| BigQuery | ``pip install pybigquery`` | ``bigquery://`` |
|
||||
+---------------+-------------------------------------+-------------------------------------------------+
|
||||
|
||||
Note that many other database are supported, the main criteria being the
|
||||
existence of a functional SqlAlchemy dialect and Python driver. Googling
|
||||
@@ -362,16 +343,6 @@ For setting your timeouts, this is done in the Superset metadata and goes
|
||||
up the "timeout searchpath", from your slice configuration, to your
|
||||
data source's configuration, to your database's and ultimately falls back
|
||||
into your global default defined in ``CACHE_CONFIG``.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
CACHE_CONFIG = {
|
||||
'CACHE_TYPE': 'redis',
|
||||
'CACHE_DEFAULT_TIMEOUT': 60 * 60 * 24, # 1 day default (in secs)
|
||||
'CACHE_KEY_PREFIX': 'superset_results',
|
||||
'CACHE_REDIS_URL': 'redis://localhost:6379/0',
|
||||
}
|
||||
|
||||
|
||||
|
||||
Deeper SQLAlchemy integration
|
||||
@@ -381,7 +352,7 @@ It is possible to tweak the database connection information using the
|
||||
parameters exposed by SQLAlchemy. In the ``Database`` edit view, you will
|
||||
find an ``extra`` field as a ``JSON`` blob.
|
||||
|
||||
.. image:: images/tutorial/add_db.png
|
||||
.. image:: _static/img/tutorial/add_db.png
|
||||
:scale: 30 %
|
||||
|
||||
This JSON string contains extra configuration elements. The ``engine_params``
|
||||
@@ -417,16 +388,6 @@ in your config file to point to that function. ::
|
||||
|
||||
SQLALCHEMY_CUSTOM_PASSWORD_STORE = example_lookup_password
|
||||
|
||||
A common pattern is to use environment variables to make secrets available.
|
||||
``SQLALCHEMY_CUSTOM_PASSWORD_STORE`` can also be used for that purpose. ::
|
||||
|
||||
def example_password_as_env_var(url):
|
||||
# assuming the uri looks like
|
||||
# mysql://localhost?superset_user:{SUPERSET_PASSWORD}
|
||||
return url.password.format(os.environ)
|
||||
|
||||
SQLALCHEMY_CUSTOM_PASSWORD_STORE = example_password_as_env_var
|
||||
|
||||
|
||||
SSL Access to databases
|
||||
-----------------------
|
||||
@@ -523,8 +484,8 @@ execute beyond the typical web request's timeout (30-60 seconds), it is
|
||||
necessary to configure an asynchronous backend for Superset which consist of:
|
||||
|
||||
* one or many Superset worker (which is implemented as a Celery worker), and
|
||||
can be started with the ``celery worker`` command, run
|
||||
``celery worker --help`` to view the related options.
|
||||
can be started with the ``superset worker`` command, run
|
||||
``superset worker --help`` to view the related options
|
||||
* a celery broker (message queue) for which we recommend using Redis
|
||||
or RabbitMQ
|
||||
* a results backend that defines where the worker will persist the query
|
||||
@@ -544,10 +505,6 @@ have the same configuration.
|
||||
|
||||
CELERY_CONFIG = CeleryConfig
|
||||
|
||||
To start a Celery worker to leverage the configuration run: ::
|
||||
|
||||
celery worker --app=superset.sql_lab:celery_app --pool=gevent -Ofair
|
||||
|
||||
To setup a result backend, you need to pass an instance of a derivative
|
||||
of ``werkzeug.contrib.cache.BaseCache`` to the ``RESULTS_BACKEND``
|
||||
configuration key in your ``superset_config.py``. It's possible to use
|
||||
@@ -588,15 +545,6 @@ in this dictionary are made available for users to use in their SQL.
|
||||
}
|
||||
|
||||
|
||||
Flower is a web based tool for monitoring the Celery cluster which you can
|
||||
install from pip: ::
|
||||
|
||||
pip install flower
|
||||
|
||||
and run via: ::
|
||||
|
||||
celery flower --app=superset.sql_lab:celery_app
|
||||
|
||||
Making your own build
|
||||
---------------------
|
||||
|
||||
@@ -624,7 +572,7 @@ at the ``/simple_page`` url. This can allow you to run other things such
|
||||
as custom data visualization applications alongside Superset, on the
|
||||
same server.
|
||||
|
||||
.. code-block:: python
|
||||
..code ::
|
||||
|
||||
from flask import Blueprint
|
||||
simple_page = Blueprint('simple_page', __name__,
|
||||
@@ -645,25 +593,10 @@ are logged as well as key events like query start and end in SQL Lab.
|
||||
To setup StatsD logging, it's a matter of configuring the logger in your
|
||||
``superset_config.py``.
|
||||
|
||||
.. code-block:: python
|
||||
..code ::
|
||||
|
||||
from superset.stats_logger import StatsdStatsLogger
|
||||
STATS_LOGGER = StatsdStatsLogger(host='localhost', port=8125, prefix='superset')
|
||||
|
||||
Note that it's also possible to implement you own logger by deriving
|
||||
``superset.stats_logger.BaseStatsLogger``.
|
||||
|
||||
|
||||
Install Superset with helm in Kubernetes
|
||||
--------------
|
||||
|
||||
You can install Superset into Kubernetes with Helm <https://helm.sh/>. The chart is
|
||||
located in ``install/helm``.
|
||||
|
||||
To install Superset into your Kubernetes:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
helm upgrade --install superset ./install/helm/superset
|
||||
|
||||
Note that the above command will install Superset into ``default`` namespace of your Kubernetes cluster.
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
|
||||
Misc
|
||||
----
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
visualization
|
||||
videos
|
||||
import_export_datasources
|
||||
@@ -1,3 +0,0 @@
|
||||
sphinx==1.7.1
|
||||
sphinx-rtd-theme==0.2.4
|
||||
sphinxcontrib.youtube==0.1.2
|
||||
@@ -70,7 +70,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
|
||||
click the ``+`` sign.
|
||||
|
||||
.. image:: images/create_role.png
|
||||
.. image:: _static/img/create_role.png
|
||||
:scale: 50 %
|
||||
|
||||
This new window allows you to give this new role a name, attribute it to users
|
||||
|
||||
@@ -4,11 +4,6 @@ SQL Lab
|
||||
SQL Lab is a modern, feature-rich SQL IDE written in
|
||||
`React <https://facebook.github.io/react/>`_.
|
||||
|
||||
------
|
||||
|
||||
.. image:: images/screenshots/sqllab.png
|
||||
|
||||
------
|
||||
|
||||
Feature Overview
|
||||
----------------
|
||||
|
||||
@@ -1,31 +1,31 @@
|
||||
Tutorial - Creating your first dashboard
|
||||
========================================
|
||||
Tutorial for Superset Administrators
|
||||
====================================
|
||||
|
||||
This tutorial targets someone who wants to create charts and dashboards
|
||||
in Superset. We'll show you how to connect Superset
|
||||
to a new database and configure a table in that database for analysis. You'll
|
||||
also explore the data you've exposed and add a visualization to a dashboard
|
||||
This tutorial targets a Superset administrator: someone configuring Superset
|
||||
for an organization on behalf of users. We'll show you how to connect Superset
|
||||
to a new database and configure a table in that database for analysis. You'll
|
||||
also explore the data you've exposed and add a visualization to a dashboard
|
||||
so that you get a feel for the end-to-end user experience.
|
||||
|
||||
Connecting to a new database
|
||||
----------------------------
|
||||
|
||||
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
|
||||
want to explore sample data, you can load some
|
||||
instance on which you’re running Superset. If you’re just testing Superset and
|
||||
want to explore sample data, you can load some
|
||||
`sample PostgreSQL datasets <https://wiki.postgresql.org/wiki/Sample_Databases>`_
|
||||
into a fresh DB, or configure the
|
||||
into a fresh DB, or configure the
|
||||
`example weather data <https://github.com/dylburger/noaa-ghcn-weather-data>`_
|
||||
we use here.
|
||||
|
||||
Under the **Sources** menu, select the *Databases* option:
|
||||
|
||||
.. image:: images/tutorial/tutorial_01_sources_database.png
|
||||
.. image:: _static/img/tutorial/tutorial_01_sources_database.png
|
||||
:scale: 70%
|
||||
|
||||
On the resulting page, click on the green plus sign, near the top right:
|
||||
|
||||
.. image:: images/tutorial/tutorial_02_add_database.png
|
||||
.. image:: _static/img/tutorial/tutorial_02_add_database.png
|
||||
:scale: 70%
|
||||
|
||||
You can configure a number of advanced options on this page, but for
|
||||
@@ -33,12 +33,12 @@ this walkthrough, you’ll only need to do **two things**:
|
||||
|
||||
1. Name your database connection:
|
||||
|
||||
.. image:: images/tutorial/tutorial_03_database_name.png
|
||||
.. image:: _static/img/tutorial/tutorial_03_database_name.png
|
||||
:scale: 70%
|
||||
|
||||
2. Provide the SQLAlchemy Connection URI and test the connection:
|
||||
|
||||
.. image:: images/tutorial/tutorial_04_sqlalchemy_connection_string.png
|
||||
.. image:: _static/img/tutorial/tutorial_04_sqlalchemy_connection_string.png
|
||||
:scale: 70%
|
||||
|
||||
This example shows the connection string for our test weather database.
|
||||
@@ -51,19 +51,19 @@ Click the **Test Connection** button to confirm things work end to end.
|
||||
Once Superset can successfully connect and authenticate, you should see
|
||||
a popup like this:
|
||||
|
||||
.. image:: images/tutorial/tutorial_05_connection_popup.png
|
||||
.. image:: _static/img/tutorial/tutorial_05_connection_popup.png
|
||||
:scale: 50%
|
||||
|
||||
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:
|
||||
|
||||
.. image:: images/tutorial/tutorial_06_list_of_tables.png
|
||||
.. image:: _static/img/tutorial/tutorial_06_list_of_tables.png
|
||||
:scale: 70%
|
||||
|
||||
If the connection looks good, save the configuration by clicking the **Save**
|
||||
button at the bottom of the page:
|
||||
|
||||
.. image:: images/tutorial/tutorial_07_save_button.png
|
||||
.. image:: _static/img/tutorial/tutorial_07_save_button.png
|
||||
:scale: 70%
|
||||
|
||||
Adding a new table
|
||||
@@ -74,25 +74,25 @@ to Superset that you’d like to query.
|
||||
|
||||
Under the **Sources** menu, select the *Tables* option:
|
||||
|
||||
.. image:: images/tutorial/tutorial_08_sources_tables.png
|
||||
.. image:: _static/img/tutorial/tutorial_08_sources_tables.png
|
||||
:scale: 70%
|
||||
|
||||
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/img/tutorial/tutorial_09_add_new_table.png
|
||||
:scale: 70%
|
||||
|
||||
You only need a few pieces of information to add a new table to Superset:
|
||||
|
||||
* The name of the table
|
||||
|
||||
.. image:: images/tutorial/tutorial_10_table_name.png
|
||||
.. image:: _static/img/tutorial/tutorial_10_table_name.png
|
||||
:scale: 70%
|
||||
|
||||
* The target database from the **Database** drop-down menu (i.e. the one
|
||||
you just added above)
|
||||
|
||||
.. image:: images/tutorial/tutorial_11_choose_db.png
|
||||
.. image:: _static/img/tutorial/tutorial_11_choose_db.png
|
||||
:scale: 70%
|
||||
|
||||
* Optionally, the database schema. If the table exists in the “default” schema
|
||||
@@ -101,13 +101,13 @@ You only need a few pieces of information to add a new table to Superset:
|
||||
|
||||
Click on the **Save** button to save the configuration:
|
||||
|
||||
.. image:: images/tutorial/tutorial_07_save_button.png
|
||||
.. image:: _static/img/tutorial/tutorial_07_save_button.png
|
||||
:scale: 70%
|
||||
|
||||
When redirected back to the list of tables, you should see a message indicating
|
||||
that your table was created:
|
||||
|
||||
.. image:: images/tutorial/tutorial_12_table_creation_success_msg.png
|
||||
.. image:: _static/img/tutorial/tutorial_12_table_creation_success_msg.png
|
||||
:scale: 70%
|
||||
|
||||
This message also directs you to edit the table configuration. We’ll edit a limited
|
||||
@@ -116,7 +116,7 @@ a more advanced tutorial.
|
||||
|
||||
Click on the edit button next to the table you’ve created:
|
||||
|
||||
.. image:: images/tutorial/tutorial_13_edit_table_config.png
|
||||
.. image:: _static/img/tutorial/tutorial_13_edit_table_config.png
|
||||
:scale: 70%
|
||||
|
||||
On the resulting page, click on the **List Table Column** tab. Here, you’ll define the
|
||||
@@ -136,7 +136,7 @@ Here’s how we’ve configured fields for the weather data. Even for measures l
|
||||
weather measurements (precipitation, snowfall, etc.), it’s ideal to group and filter
|
||||
by these values:
|
||||
|
||||
.. image:: images/tutorial/tutorial_14_field_config.png
|
||||
.. image:: _static/img/tutorial/tutorial_14_field_config.png
|
||||
|
||||
As with the configurations above, click the **Save** button to save these settings.
|
||||
|
||||
@@ -146,17 +146,17 @@ Exploring your data
|
||||
To start exploring your data, simply click on the table name you just created in
|
||||
the list of available tables:
|
||||
|
||||
.. image:: images/tutorial/tutorial_15_click_table_name.png
|
||||
.. image:: _static/img/tutorial/tutorial_15_click_table_name.png
|
||||
|
||||
By default, you’ll be presented with a Table View:
|
||||
|
||||
.. image:: images/tutorial/tutorial_16_datasource_chart_type.png
|
||||
.. image:: _static/img/tutorial/tutorial_16_datasource_chart_type.png
|
||||
|
||||
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.
|
||||
You can use simple phrases to apply these filters, like "3 years ago":
|
||||
|
||||
.. image:: images/tutorial/tutorial_17_choose_time_range.png
|
||||
.. image:: _static/img/tutorial/tutorial_17_choose_time_range.png
|
||||
|
||||
The upper limit for time, the **Until** filter, defaults to "now", which may or may
|
||||
not be what you want.
|
||||
@@ -164,25 +164,25 @@ not be what you want.
|
||||
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:
|
||||
|
||||
.. image:: images/tutorial/tutorial_18_choose_metric.png
|
||||
.. image:: _static/img/tutorial/tutorial_18_choose_metric.png
|
||||
|
||||
Select the *COUNT(\*)* metric, then click the green **Query** button near the top
|
||||
of the explore:
|
||||
|
||||
.. image:: images/tutorial/tutorial_19_click_query.png
|
||||
.. image:: _static/img/tutorial/tutorial_19_click_query.png
|
||||
|
||||
You’ll see your results in the table:
|
||||
|
||||
.. image:: images/tutorial/tutorial_20_count_star_result.png
|
||||
.. image:: _static/img/tutorial/tutorial_20_count_star_result.png
|
||||
|
||||
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:
|
||||
|
||||
.. image:: images/tutorial/tutorial_21_group_by.png
|
||||
.. image:: _static/img/tutorial/tutorial_21_group_by.png
|
||||
|
||||
and run the query:
|
||||
|
||||
.. image:: images/tutorial/tutorial_22_group_by_result.png
|
||||
.. image:: _static/img/tutorial/tutorial_22_group_by_result.png
|
||||
|
||||
Let’s find a more useful data point: the top 10 times and places that recorded the
|
||||
highest temperature in 2015.
|
||||
@@ -190,11 +190,11 @@ highest temperature in 2015.
|
||||
We replace *weather_description* with *latitude*, *longitude* and *measurement_date* in the
|
||||
*Group by* section:
|
||||
|
||||
.. image:: images/tutorial/tutorial_23_group_by_more_dimensions.png
|
||||
.. image:: _static/img/tutorial/tutorial_23_group_by_more_dimensions.png
|
||||
|
||||
And replace *COUNT(\*)* with *max__measurement_flag*:
|
||||
|
||||
.. image:: images/tutorial/tutorial_24_max_metric.png
|
||||
.. image:: _static/img/tutorial/tutorial_24_max_metric.png
|
||||
|
||||
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
|
||||
@@ -206,16 +206,16 @@ precipitation and temperature). Therefore, we must filter our query only on reco
|
||||
where the *weather_description* is equal to "Maximum temperature", which we do in
|
||||
the **Filters** section at the bottom of the explore:
|
||||
|
||||
.. image:: images/tutorial/tutorial_25_max_temp_filter.png
|
||||
.. image:: _static/img/tutorial/tutorial_25_max_temp_filter.png
|
||||
|
||||
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:
|
||||
|
||||
.. image:: images/tutorial/tutorial_26_row_limit.png
|
||||
.. image:: _static/img/tutorial/tutorial_26_row_limit.png
|
||||
|
||||
We click **Query** and get the following results:
|
||||
|
||||
.. image:: images/tutorial/tutorial_27_top_10_max_temps.png
|
||||
.. image:: _static/img/tutorial/tutorial_27_top_10_max_temps.png
|
||||
|
||||
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
|
||||
@@ -240,20 +240,20 @@ a dashboard.
|
||||
|
||||
We change the Chart Type to "Distribution - Bar Chart":
|
||||
|
||||
.. image:: images/tutorial/tutorial_28_bar_chart.png
|
||||
.. image:: _static/img/tutorial/tutorial_28_bar_chart.png
|
||||
|
||||
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
|
||||
values again:
|
||||
|
||||
.. image:: images/tutorial/tutorial_29_bar_chart_series_metrics.png
|
||||
.. image:: _static/img/tutorial/tutorial_29_bar_chart_series_metrics.png
|
||||
|
||||
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
|
||||
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:
|
||||
|
||||
.. image:: images/tutorial/tutorial_30_bar_chart_results.png
|
||||
.. image:: _static/img/tutorial/tutorial_30_bar_chart_results.png
|
||||
:scale: 70%
|
||||
|
||||
Creating a slice and dashboard
|
||||
@@ -265,39 +265,39 @@ a saved query is called a **Slice**.
|
||||
To create a slice, click the **Save as** button near the top-left of the
|
||||
explore:
|
||||
|
||||
.. image:: images/tutorial/tutorial_19_click_query.png
|
||||
.. image:: _static/img/tutorial/tutorial_19_click_query.png
|
||||
|
||||
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
|
||||
immediately add our slice to it. Let’s do it:
|
||||
|
||||
.. image:: images/tutorial/tutorial_31_save_slice_to_dashboard.png
|
||||
.. image:: _static/img/tutorial/tutorial_31_save_slice_to_dashboard.png
|
||||
:scale: 70%
|
||||
|
||||
Click Save, which will direct you back to your original query. We see that
|
||||
our slice and dashboard were successfully created:
|
||||
|
||||
.. image:: images/tutorial/tutorial_32_save_slice_confirmation.png
|
||||
.. image:: _static/img/tutorial/tutorial_32_save_slice_confirmation.png
|
||||
:scale: 70%
|
||||
|
||||
Let’s check out our new dashboard. We click on the **Dashboards** menu:
|
||||
|
||||
.. image:: images/tutorial/tutorial_33_dashboard.png
|
||||
.. image:: _static/img/tutorial/tutorial_33_dashboard.png
|
||||
|
||||
and find the dashboard we just created:
|
||||
|
||||
.. image:: images/tutorial/tutorial_34_weather_dashboard.png
|
||||
.. image:: _static/img/tutorial/tutorial_34_weather_dashboard.png
|
||||
|
||||
Things seemed to have worked - our slice is here!
|
||||
|
||||
.. image:: images/tutorial/tutorial_35_slice_on_dashboard.png
|
||||
.. image:: _static/img/tutorial/tutorial_35_slice_on_dashboard.png
|
||||
:scale: 70%
|
||||
|
||||
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
|
||||
corner to your desired dimensions:
|
||||
|
||||
.. image:: images/tutorial/tutorial_36_adjust_dimensions.gif
|
||||
.. image:: _static/img/tutorial/tutorial_36_adjust_dimensions.gif
|
||||
:scale: 120%
|
||||
|
||||
After adjusting the size, you’ll be asked to click on the icon near the
|
||||
|
||||
@@ -1,5 +1,54 @@
|
||||
Videos
|
||||
======
|
||||
|
||||
.. note ::
|
||||
This section of the documentation has yet to be filled in.
|
||||
Here is a collection of short videos showing different aspect
|
||||
of Superset.
|
||||
|
||||
Quick Intro
|
||||
'''''''''''
|
||||
This video demonstrates how Superset works at a high level, it shows how
|
||||
to navigate through datasets and dashboards that are already available.
|
||||
|
||||
.. youtube:: https://www.youtube.com/watch?v=3Txm_nj_R7M
|
||||
|
||||
Dashboard Creation
|
||||
''''''''''''''''''
|
||||
This video walk you through the creation of a simple dashboard as a
|
||||
collection of data slices.
|
||||
|
||||
- Coming soon!
|
||||
|
||||
Dashboard Filtering
|
||||
'''''''''''''''''''
|
||||
This video shows how to create dynamic filters on dashboards, how to
|
||||
immunize certain widgets from being affected by filters.
|
||||
|
||||
- Coming soon!
|
||||
|
||||
Customize CSS and dashboard themes
|
||||
''''''''''''''''''''''''''''''''''
|
||||
A quick walkthrough on how to apply existing CSS templates, alter them and
|
||||
create new ones.
|
||||
|
||||
- Coming soon!
|
||||
|
||||
Slice Annotations
|
||||
'''''''''''''''''
|
||||
A short video on how to annotate your charts, the markdown language and
|
||||
to toggle them on dashboards.
|
||||
|
||||
- Coming soon!
|
||||
|
||||
Adding a Table
|
||||
''''''''''''''
|
||||
This videos shows you how to expose a new table in Superset, and how to
|
||||
define the semantics on how this can be accessed by others in the ``Explore``
|
||||
and ``Dashboard`` views.
|
||||
|
||||
- Coming soon!
|
||||
|
||||
Define SQL Expressions
|
||||
''''''''''''''''''''''
|
||||
A walkthrough on how to create your own derived dimensions and metrics.
|
||||
|
||||
- Coming soon!
|
||||
|
||||
@@ -1735,7 +1735,7 @@ To add a new country in country map tools, we need follow next steps :
|
||||
7. Add your country in component 'select_country'
|
||||
Example :
|
||||
|
||||
.. code-block:: javascript
|
||||
.. code:: python
|
||||
|
||||
select_country: {
|
||||
type: 'SelectControl',
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
@@ -1,9 +0,0 @@
|
||||
apiVersion: v1
|
||||
appVersion: "1.0"
|
||||
description: A Helm chart for Kubernetes
|
||||
name: superset
|
||||
maintainers:
|
||||
- name: Chuan-Yen Chiang
|
||||
email: cychiang0823@gmail.com
|
||||
url: https://github.com/cychiang
|
||||
version: 0.1.0
|
||||
@@ -1,19 +0,0 @@
|
||||
1. Get the application URL by running these commands:
|
||||
{{- if .Values.ingress.enabled }}
|
||||
{{- range .Values.ingress.hosts }}
|
||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }}
|
||||
{{- end }}
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "superset.fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
You can watch the status of by running 'kubectl get svc -w {{ template "superset.fullname" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "superset.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "superset.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl port-forward $POD_NAME 8080:80
|
||||
{{- end }}
|
||||
@@ -1,32 +0,0 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "superset.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "superset.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "superset.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
@@ -1,11 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: superset-configmap
|
||||
labels:
|
||||
app: {{ template "superset.name" . }}
|
||||
chart: {{ template "superset.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
data:
|
||||
{{ (.Files.Glob "config/*").AsConfig | indent 2 }}
|
||||
@@ -1,50 +0,0 @@
|
||||
apiVersion: apps/v1beta2
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ template "superset.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "superset.name" . }}
|
||||
chart: {{ template "superset.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "superset.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "superset.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
spec:
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
volumeMounts:
|
||||
- name: superset-config
|
||||
mountPath: /etc/superset/
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8088
|
||||
protocol: TCP
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 8 }}
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: "superset-config"
|
||||
configMap:
|
||||
name: superset-configmap
|
||||
@@ -1,38 +0,0 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $fullName := include "superset.fullname" . -}}
|
||||
{{- $ingressPath := .Values.ingress.path -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
labels:
|
||||
app: {{ template "superset.name" . }}
|
||||
chart: {{ template "superset.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ . }}
|
||||
http:
|
||||
paths:
|
||||
- path: {{ $ingressPath }}
|
||||
backend:
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: http
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,19 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "superset.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "superset.name" . }}
|
||||
chart: {{ template "superset.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
app: {{ template "superset.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
@@ -1,45 +0,0 @@
|
||||
# Default values for superset.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
image:
|
||||
repository: amancevice/superset
|
||||
tag: latest
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
service:
|
||||
type: NodePort
|
||||
port: 8088
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
path: /
|
||||
hosts:
|
||||
- chart-example.local
|
||||
tls: []
|
||||
# - secretName: chart-example-tls
|
||||
# hosts:
|
||||
# - chart-example.local
|
||||
|
||||
resources: {}
|
||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||
# choice for the user. This also increases chances charts run on environments with little
|
||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
2
pylint-errors.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/bash
|
||||
pylint superset --errors-only
|
||||
@@ -1,8 +0,0 @@
|
||||
flask-cors==3.0.3
|
||||
ipdb==0.11
|
||||
mysqlclient==1.3.12
|
||||
psycopg2==2.7.4
|
||||
redis==2.10.6
|
||||
statsd==3.2.2
|
||||
tox==2.9.1
|
||||
console_log==0.2.10
|
||||
@@ -1,41 +0,0 @@
|
||||
bleach==2.1.2
|
||||
boto3==1.4.7
|
||||
celery==4.1.0
|
||||
colorama==0.3.9
|
||||
cryptography==1.9
|
||||
flask==0.12.2
|
||||
flask-appbuilder==1.10.0
|
||||
flask-caching==1.4.0
|
||||
flask-compress==1.4.0
|
||||
flask-migrate==2.1.1
|
||||
flask-script==2.0.6
|
||||
flask-testing==0.7.1
|
||||
flask-wtf==0.14.2
|
||||
flower==0.9.2
|
||||
future==0.16.0
|
||||
geopy==1.11.0
|
||||
gunicorn==19.8.0
|
||||
humanize==0.5.1
|
||||
idna==2.6
|
||||
markdown==2.6.11
|
||||
pandas==0.22.0
|
||||
parsedatetime==2.0.0
|
||||
pathlib2==2.3.0
|
||||
polyline==1.3.2
|
||||
pydruid==0.4.2
|
||||
pyhive==0.5.1
|
||||
python-dateutil==2.6.1
|
||||
python-geohash==0.8.5
|
||||
pyyaml==3.12
|
||||
requests==2.18.4
|
||||
simplejson==3.13.2
|
||||
six==1.11.0
|
||||
sqlalchemy==1.2.2
|
||||
sqlalchemy-utils==0.32.21
|
||||
sqlparse==0.2.4
|
||||
thrift==0.11.0
|
||||
thrift-sasl==0.3.0
|
||||
unicodecsv==0.14.1
|
||||
unidecode==1.0.22
|
||||
contextlib2==0.5.5
|
||||
|
||||
9
run_specific_test.sh
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
echo $DB
|
||||
rm -f .coverage
|
||||
export SUPERSET_CONFIG=tests.superset_test_config
|
||||
set -e
|
||||
superset/bin/superset version -v
|
||||
export SOLO_TEST=1
|
||||
# e.g. tests.core_tests:CoreTests.test_templated_sql_json
|
||||
nosetests $1
|
||||
14
run_tests.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
echo $DB
|
||||
rm ~/.superset/unittests.db
|
||||
rm ~/.superset/celerydb.sqlite
|
||||
rm ~/.superset/celery_results.sqlite
|
||||
rm -f .coverage
|
||||
export SUPERSET_CONFIG=tests.superset_test_config
|
||||
set -e
|
||||
superset/bin/superset db upgrade
|
||||
superset/bin/superset version -v
|
||||
python setup.py nosetests
|
||||
if [ "$CI" = "true" ] ; then
|
||||
coveralls
|
||||
fi
|
||||
@@ -1,9 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
from __future__ import print_function
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from collections import defaultdict
|
||||
|
||||
from superset import sm
|
||||
|
||||
16
setup.cfg
@@ -10,16 +10,16 @@ license = Apache License, Version 2.0
|
||||
packages = superset
|
||||
|
||||
[build_sphinx]
|
||||
source-dir = docs
|
||||
build-dir = docs/_build
|
||||
all_files = 1
|
||||
source-dir = docs/
|
||||
build-dir = docs/_build
|
||||
all_files = 1
|
||||
|
||||
[upload_sphinx]
|
||||
upload-dir = docs/_build/html
|
||||
|
||||
[nosetests]
|
||||
verbosity = 3
|
||||
detailed-errors = 1
|
||||
with-coverage = 1
|
||||
nocapture = 1
|
||||
cover-package = superset
|
||||
verbosity=3
|
||||
detailed-errors=1
|
||||
with-coverage=1
|
||||
nocapture=1
|
||||
cover-package=superset
|
||||
|
||||
87
setup.py
@@ -1,9 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
from __future__ import print_function
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
@@ -50,60 +44,61 @@ setup(
|
||||
zip_safe=False,
|
||||
scripts=['superset/bin/superset'],
|
||||
install_requires=[
|
||||
'bleach',
|
||||
'boto3>=1.4.6',
|
||||
'celery',
|
||||
'colorama',
|
||||
'cryptography',
|
||||
'flask<=1.0.0',
|
||||
'flask-appbuilder',
|
||||
'flask-caching',
|
||||
'flask-compress',
|
||||
'flask-migrate',
|
||||
'flask-script',
|
||||
'flask-testing',
|
||||
'flask-wtf',
|
||||
'flower', # deprecated
|
||||
'celery==4.1.0',
|
||||
'colorama==0.3.9',
|
||||
'cryptography==1.9',
|
||||
'flask==0.12.2',
|
||||
'flask-appbuilder==1.9.5',
|
||||
'flask-cache==0.13.1',
|
||||
'flask-migrate==2.0.3',
|
||||
'flask-script==2.0.5',
|
||||
'flask-sqlalchemy==2.1',
|
||||
'flask-testing==0.6.2',
|
||||
'flask-wtf==0.14.2',
|
||||
'flower==0.9.2',
|
||||
'future>=0.16.0, <0.17',
|
||||
'geopy',
|
||||
'gunicorn', # deprecated
|
||||
'humanize',
|
||||
'idna',
|
||||
'markdown',
|
||||
'pandas',
|
||||
'parsedatetime',
|
||||
'pathlib2',
|
||||
'polyline',
|
||||
'pydruid',
|
||||
'pyhive>=0.4.0',
|
||||
'python-dateutil',
|
||||
'python-geohash',
|
||||
'python-geohash==0.8.5',
|
||||
'humanize==0.5.1',
|
||||
'gunicorn==19.7.1',
|
||||
'idna==2.5',
|
||||
'markdown==2.6.8',
|
||||
'pandas==0.20.3',
|
||||
'parsedatetime==2.0.0',
|
||||
'pathlib2==2.3.0',
|
||||
'polyline==1.3.2',
|
||||
'pydruid==0.3.1',
|
||||
'PyHive>=0.4.0',
|
||||
'python-dateutil==2.6.0',
|
||||
'pyyaml>=3.11',
|
||||
'requests',
|
||||
'simplejson',
|
||||
'six',
|
||||
'sqlalchemy',
|
||||
'sqlalchemy-utils',
|
||||
'sqlparse',
|
||||
'requests==2.17.3',
|
||||
'simplejson==3.10.0',
|
||||
'six==1.11.0',
|
||||
'sqlalchemy==1.2.2',
|
||||
'sqlalchemy-utils==0.32.21',
|
||||
'sqlparse==0.2.3',
|
||||
'thrift>=0.9.3',
|
||||
'thrift-sasl>=0.2.1',
|
||||
'unicodecsv',
|
||||
'unidecode>=0.04.21',
|
||||
],
|
||||
extras_require={
|
||||
'cors': ['flask-cors>=2.0.0'],
|
||||
'console_log': ['console_log==0.2.10'],
|
||||
'cors': ['Flask-Cors>=2.0.0'],
|
||||
},
|
||||
tests_require=[
|
||||
'codeclimate-test-reporter',
|
||||
'coverage',
|
||||
'mock',
|
||||
'nose',
|
||||
'redis',
|
||||
],
|
||||
author='Maxime Beauchemin',
|
||||
author_email='maximebeauchemin@gmail.com',
|
||||
url='https://github.com/apache/incubator-superset',
|
||||
url='https://github.com/airbnb/superset',
|
||||
download_url=(
|
||||
'https://github.com'
|
||||
'/apache/incubator-superset/tarball/' + version_string
|
||||
),
|
||||
'https://github.com/airbnb/superset/tarball/' + version_string),
|
||||
classifiers=[
|
||||
'Programming Language :: Python :: 2.7',
|
||||
'Programming Language :: Python :: 3.4',
|
||||
'Programming Language :: Python :: 3.5',
|
||||
'Programming Language :: Python :: 3.6',
|
||||
],
|
||||
)
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# pylint: disable=C,R,W
|
||||
"""Package's main module!"""
|
||||
from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
@@ -14,14 +12,12 @@ import os
|
||||
from flask import Flask, redirect
|
||||
from flask_appbuilder import AppBuilder, IndexView, SQLA
|
||||
from flask_appbuilder.baseviews import expose
|
||||
from flask_compress import Compress
|
||||
from flask_migrate import Migrate
|
||||
from flask_wtf.csrf import CSRFProtect
|
||||
from werkzeug.contrib.fixers import ProxyFix
|
||||
|
||||
from superset import config, utils
|
||||
from superset.connectors.connector_registry import ConnectorRegistry
|
||||
from superset.security import SupersetSecurityManager
|
||||
from superset import utils, config # noqa
|
||||
|
||||
APP_DIR = os.path.dirname(__file__)
|
||||
CONFIG_MODULE = os.environ.get('SUPERSET_CONFIG', 'superset.config')
|
||||
@@ -79,9 +75,7 @@ for bp in conf.get('BLUEPRINTS'):
|
||||
if conf.get('SILENCE_FAB'):
|
||||
logging.getLogger('flask_appbuilder').setLevel(logging.ERROR)
|
||||
|
||||
if app.debug:
|
||||
app.logger.setLevel(logging.DEBUG)
|
||||
else:
|
||||
if not app.debug:
|
||||
# In production mode, add log handler to sys.stderr.
|
||||
app.logger.addHandler(logging.StreamHandler())
|
||||
app.logger.setLevel(logging.INFO)
|
||||
@@ -153,23 +147,16 @@ class MyIndexView(IndexView):
|
||||
return redirect('/superset/welcome')
|
||||
|
||||
|
||||
custom_sm = app.config.get('CUSTOM_SECURITY_MANAGER') or SupersetSecurityManager
|
||||
if not issubclass(custom_sm, SupersetSecurityManager):
|
||||
raise Exception(
|
||||
"""Your CUSTOM_SECURITY_MANAGER must now extend SupersetSecurityManager,
|
||||
not FAB's security manager.
|
||||
See [4565] in UPDATING.md""")
|
||||
|
||||
appbuilder = AppBuilder(
|
||||
app,
|
||||
db.session,
|
||||
base_template='superset/base.html',
|
||||
indexview=MyIndexView,
|
||||
security_manager_class=custom_sm,
|
||||
security_manager_class=app.config.get('CUSTOM_SECURITY_MANAGER'),
|
||||
update_perms=utils.get_update_perms_flag(),
|
||||
)
|
||||
|
||||
security_manager = appbuilder.sm
|
||||
sm = appbuilder.sm
|
||||
|
||||
results_backend = app.config.get('RESULTS_BACKEND')
|
||||
|
||||
@@ -178,10 +165,6 @@ module_datasource_map = app.config.get('DEFAULT_MODULE_DS_MAP')
|
||||
module_datasource_map.update(app.config.get('ADDITIONAL_MODULE_DS_MAP'))
|
||||
ConnectorRegistry.register_sources(module_datasource_map)
|
||||
|
||||
# Flask-Compress
|
||||
if conf.get('ENABLE_FLASK_COMPRESS'):
|
||||
Compress(app)
|
||||
|
||||
# Hook that provides administrators a handle on the Flask APP
|
||||
# after initialization
|
||||
flask_app_mutator = app.config.get('FLASK_APP_MUTATOR')
|
||||
|
||||
@@ -38,8 +38,5 @@
|
||||
"react/no-unescaped-entities": 0,
|
||||
"react/no-unused-prop-types": 0,
|
||||
"react/no-string-refs": 0,
|
||||
"indent": 0,
|
||||
"no-multi-spaces": 0,
|
||||
"padded-blocks": 0,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2214,20 +2214,6 @@
|
||||
"default": false,
|
||||
"description": "Whether to apply filter when table cell is clicked"
|
||||
},
|
||||
"align_pn": {
|
||||
"type": "CheckboxControl",
|
||||
"label": "Align +/-",
|
||||
"renderTrigger": true,
|
||||
"default": false,
|
||||
"description": "Whether to align the background chart for +/- values"
|
||||
},
|
||||
"color_pn": {
|
||||
"type": "CheckboxControl",
|
||||
"label": "Color +/-",
|
||||
"renderTrigger": true,
|
||||
"default": true,
|
||||
"description": "Whether to color +/- values"
|
||||
},
|
||||
"show_bubbles": {
|
||||
"type": "CheckboxControl",
|
||||
"label": "Show Bubbles",
|
||||
@@ -2747,10 +2733,6 @@
|
||||
[
|
||||
"googleCategory20c",
|
||||
"googleCategory20c"
|
||||
],
|
||||
[
|
||||
"lyftColors",
|
||||
"lyftColors"
|
||||
]
|
||||
],
|
||||
"description": "The color scheme for rendering chart",
|
||||
@@ -2992,4 +2974,4 @@
|
||||
"description": "Partitions whose height to parent height proportions are below this value are pruned"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 6.5 MiB |
|
Before Width: | Height: | Size: 659 KiB |
|
Before Width: | Height: | Size: 503 KiB |
|
Before Width: | Height: | Size: 1.9 MiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 398 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 253 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 296 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 225 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 177 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 968 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 511 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 433 KiB |
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 777 KiB |
|
Before Width: | Height: | Size: 75 KiB After Width: | Height: | Size: 578 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 242 KiB |
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 8.3 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 425 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 161 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 738 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 314 KiB |
|
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 220 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 222 KiB |
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 743 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 230 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 460 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 270 KiB |
|
Before Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 200 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 82 KiB |