Compare commits

..

25 Commits

Author SHA1 Message Date
Hugh Miles
84ee6d5084 Lyft additional endpoints 2018-02-07 12:32:10 -08:00
Maxime Beauchemin
5d4d7febb9 Reverts apache/incubator-superset#4244 (#4303)
(cherry picked from commit f8dcbf70c5)
2018-01-31 08:17:49 -08:00
Hugh Miles
cbedb8b814 fixed conflicts 2018-01-29 14:50:55 -08:00
Hugh A. Miles II
3fac9367fb Added remaining JS controls to DeckGL layers 2018-01-24 17:13:08 -08:00
Hugh Miles
63cbcb80c3 fastforward to apache/master 2018-01-24 17:05:57 -08:00
Maxime Beauchemin
36956a5d24 Using a NullPool for external connections by default
Currently, even though `get_sqla_engine` calls get memoized, engines are
still short lived since they are attached to an models.Database ORM
object. All engines created through this method have the scope of a web
request.

Knowing that the SQLAlchemy objects are short lived means that
a related connection pool would also be short lived and mostly useless.
I think it's pretty rare that connections get reused within the context
of a view or Celery worker task.

We've noticed on Redshift that Superset was leaving many connections
opened (hundreds). This is probably due to a combination of the current
process not garbage collecting connections properly, and perhaps the
absence of connection timeout on the redshift side of things. This
could also be related to the fact that we experience web requests timeouts
(enforced by gunicorn) and that process-killing may not allow SQLAlchemy
to clean up connections as they occur (which this PR may not help
fixing...)

For all these reasons, it seems like the right thing to do to use
NullPool for external connection (but not for our connection to the metadata
db!).

Opening the PR for conversation. Putting this query into our staging
today to run some tests.
2018-01-22 16:59:18 -08:00
Hugh A. Miles II
1c76d583b3 Added DeckGL.Polygon Layer w/ JS controls (#4227)
* Working polygon layer for deckGL

* add js controls

* add thumbnail

* better description

* refactor to leverage line_column controls

* templates: open code and documentation on a new tab (#4217)

As they are external resources.

* Fix tutorial doesn't match the current interface #4138 (#4215)

* [bugfix] markup and iframe viz raise 'Empty query' (#4225)

closes https://github.com/apache/incubator-superset/issues/4222

Related to: https://github.com/apache/incubator-superset/pull/4016

* [bugfix] time_pivot entry got missing in merge conflict (#4221)

PR here https://github.com/apache/incubator-superset/pull/3518 missed a
line of code while merging conflicts with time_pivot viz

* Improve deck.gl GeoJSON visualization (#4220)

* Improve geoJSON

* Addressing comments

* lint

* refactor to leverage line_column controls

* refactor to use DeckPathViz

* oops
2018-01-18 13:47:04 -08:00
Hugh A. Miles II
ee77f11b27 remove setting spatial in DeckPathViz class (#4235) 2018-01-18 13:47:04 -08:00
michellethomas
3b40e90b40 Don't cache if there's no cache key (#4229) 2018-01-18 13:47:04 -08:00
Peter Lubell-Doughtie
6cd83c3025 add Ona as a user (#4234) 2018-01-18 13:47:03 -08:00
Maxime Beauchemin
af941736a4 Improve deck.gl GeoJSON visualization (#4220)
* Improve geoJSON

* Addressing comments

* lint
2018-01-18 13:47:03 -08:00
Maxime Beauchemin
e502c22c70 [bugfix] time_pivot entry got missing in merge conflict (#4221)
PR here https://github.com/apache/incubator-superset/pull/3518 missed a
line of code while merging conflicts with time_pivot viz
2018-01-18 13:47:03 -08:00
Maxime Beauchemin
46411bc4ad [bugfix] markup and iframe viz raise 'Empty query' (#4225)
closes https://github.com/apache/incubator-superset/issues/4222

Related to: https://github.com/apache/incubator-superset/pull/4016
2018-01-18 13:47:03 -08:00
Yongjie Zhao
32e06616d9 Fix tutorial doesn't match the current interface #4138 (#4215) 2018-01-18 13:47:03 -08:00
Riccardo Magliocchetti
b3bc1429ac templates: open code and documentation on a new tab (#4217)
As they are external resources.
2018-01-18 13:47:03 -08:00
michellethomas
9b3eef893a Adding limit to time_table viz to get druid query to work (#4207) 2018-01-18 13:47:03 -08:00
Maxime Beauchemin
151657ba3e [line chart] fix time shift color (#4202) 2018-01-18 13:47:03 -08:00
Hugh Miles
23cc83f300 fix mergeconflicts 2018-01-12 13:45:17 -08:00
Hugh Miles
6e820b8355 rm merge arrows 2018-01-09 16:04:24 -08:00
Hugh Miles
8db14c47e7 fixed permissions 2018-01-09 15:44:00 -08:00
Hugh Miles
58ff72776d updated cherry-pick for lyft-endpoints 2018-01-09 14:12:22 -08:00
Maxime Beauchemin
b72bf98f68 Using JS to customize spatial viz and tooltips
(cherry picked from commit df22f29aa49f8e5991e19430aeed816ab08d2dd3)
2018-01-09 09:01:59 -08:00
Hugh Miles
32b466184e Moved lyft specific endpoints into its own file
(cherry picked from commit a2630b41c8d7da859a39fe5f9f5e51e66e9e97b9)
2018-01-09 08:57:21 -08:00
Maxime Beauchemin
bfdfd66160 Simplify login form for oauth
(cherry picked from commit 89ba06d9a6)
2018-01-09 08:57:10 -08:00
Maxime Beauchemin
a4c1d6d5c0 0.23.0rc1 2018-01-09 08:51:11 -08:00
697 changed files with 8446 additions and 38756 deletions

40
.codeclimate.yml Normal file
View 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
View File

@@ -0,0 +1 @@
repo_token: 4P9MpvLrZfJKzHdGZsdV3MzO43OZJgYFn

8
.gitignore vendored
View File

@@ -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
View 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(/|$)

View File

@@ -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]

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -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 *

View File

@@ -3,8 +3,9 @@ Superset
[![Build Status](https://travis-ci.org/apache/incubator-superset.svg?branch=master)](https://travis-ci.org/apache/incubator-superset)
[![PyPI version](https://badge.fury.io/py/superset.svg)](https://badge.fury.io/py/superset)
[![Coverage Status](https://codecov.io/github/apache/incubator-superset/coverage.svg?branch=master)](https://codecov.io/github/apache/incubator-superset)
[![Coverage Status](https://coveralls.io/repos/apache/incubator-superset/badge.svg?branch=master&service=github)](https://coveralls.io/github/apache/incubator-superset?branch=master)
[![PyPI](https://img.shields.io/pypi/pyversions/superset.svg?maxAge=2592000)](https://pypi.python.org/pypi/superset)
[![Requirements Status](https://requires.io/github/apache/incubator-superset/requirements.svg?branch=master)](https://requires.io/github/apache/incubator-superset/requirements/?branch=master)
[![Join the chat at https://gitter.im/airbnb/superset](https://badges.gitter.im/apache/incubator-superset.svg)](https://gitter.im/airbnb/superset?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Documentation](https://img.shields.io/badge/docs-apache.org-blue.svg)](https://superset.incubator.apache.org)
[![dependencies Status](https://david-dm.org/apache/incubator-superset/status.svg?path=superset/assets)](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/>
![superset-dashboard](https://cloud.githubusercontent.com/assets/130878/20371438/a703a2a0-ac19-11e6-80c4-00a47c2eb644.gif)
**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**
![superset-explore-slice](https://cloud.githubusercontent.com/assets/130878/20372732/410392f4-ac22-11e6-9c6d-3ef512e81212.gif)
<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/>
![superset-sql-lab-visualization](https://cloud.githubusercontent.com/assets/130878/20372911/7c3b3358-ac23-11e6-8f24-923ef1b35715.gif)
**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/>
![superset-dashboard-misc](https://cloud.githubusercontent.com/assets/130878/20234704/0f40778c-a835-11e6-9556-983a62ea061b.png)
![superset-edit-table](https://cloud.githubusercontent.com/assets/130878/20234705/0f415c88-a835-11e6-8b03-f7c35d56dd7d.png)
![superset-query-search](https://cloud.githubusercontent.com/assets/130878/20234706/0f430a10-a835-11e6-8a0d-8b26cc2e6bbd.png)
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
----------------
![superset-security-menu](https://cloud.githubusercontent.com/assets/130878/20234707/0f565886-a835-11e6-9277-b4f5f4aa2fcc.png)
![superset-slice-bubble](https://cloud.githubusercontent.com/assets/130878/20234708/0f57f3d0-a835-11e6-8268-fcefe8f868c8.png)
![superset-slice-map](https://cloud.githubusercontent.com/assets/130878/20234709/0f5a5a44-a835-11e6-987a-1b6f8ac9922b.png)
![superset-slice-multiline](https://cloud.githubusercontent.com/assets/130878/20234710/0f632d68-a835-11e6-98d1-542dcb618193.png)
![superset-slice-sankey](https://cloud.githubusercontent.com/assets/130878/20234711/0f639136-a835-11e6-8721-fe5e48dab8e7.png)
![superset-slice-view](https://cloud.githubusercontent.com/assets/130878/20234712/0f63c4c6-a835-11e6-8595-6091a6428fa9.png)
![superset-sql-lab-2](https://cloud.githubusercontent.com/assets/130878/20234713/0f67b856-a835-11e6-9d50-7a52168f66fd.png)
![superset-sql-lab](https://cloud.githubusercontent.com/assets/130878/20234714/0f68f45a-a835-11e6-9467-f47ad0af7e79.png)

48
TODO.md Normal file
View 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

View File

@@ -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
View File

@@ -0,0 +1,3 @@
sphinx
sphinx-rtd-theme
sphinxcontrib.youtube

14
dev-reqs.txt Normal file
View 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
View File

@@ -0,0 +1 @@
Folder containing the sphinx-generated documentation

View File

@@ -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

View File

@@ -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

View File

@@ -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": {

View File

@@ -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 %

View File

@@ -1 +0,0 @@
../superset/assets/images/

View File

@@ -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
--------------------------------------------

View File

@@ -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

View File

@@ -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.

View File

@@ -1,10 +0,0 @@
Misc
----
.. toctree::
:maxdepth: 2
visualization
videos
import_export_datasources

View File

@@ -1,3 +0,0 @@
sphinx==1.7.1
sphinx-rtd-theme==0.2.4
sphinxcontrib.youtube==0.1.2

View File

@@ -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

View File

@@ -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
----------------

View File

@@ -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 youre running Superset. If youre just testing Superset and
want to explore sample data, you can load some
instance on which youre running Superset. If youre 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, youll 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 youre 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 youd 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. Well edit a limited
@@ -116,7 +116,7 @@ a more advanced tutorial.
Click on the edit button next to the table youve 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, youll define the
@@ -136,7 +136,7 @@ Heres how weve configured fields for the weather data. Even for measures l
weather measurements (precipitation, snowfall, etc.), its 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, youll 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
Lets walk through a basic query to get the count of all records in our table.
First, well 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"
- youll 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
Youll 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
Lets 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
Lets 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 youll 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, youll 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 havent yet created any dashboards, we can create one and
immediately add our slice to it. Lets 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%
Lets 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 its 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, youll be asked to click on the icon near the

View File

@@ -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!

View File

@@ -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',

BIN
dump.rdb Normal file

Binary file not shown.

View File

@@ -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

View File

@@ -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

View File

@@ -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 }}

View File

@@ -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 -}}

View File

@@ -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 }}

View File

@@ -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

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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
View File

@@ -0,0 +1,2 @@
#!/bin/bash
pylint superset --errors-only

View File

@@ -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

View File

@@ -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
View 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
View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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',
],
)

View File

@@ -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')

View File

@@ -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,
}
}

View File

@@ -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"
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 503 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 398 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 968 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 511 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 433 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 777 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 578 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 425 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 738 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 314 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 743 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 460 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Some files were not shown because too many files have changed in this diff Show More