* fix: don't show filter popover on explore view load
There's this confusing "feature" that I thought was a bug that shows the
metric popover opened when entering the explore view when the filter
comes from an active dashboard filter, based on the "fromFormData"
attribute of the filter.
The popover is confusing and often shows as misaligned with the actual
element it's supposed to float over when overflowing.
* warn
* fix cypress
* also shut off metrics
* [fix] csv upload when table metadata present
* Remove table from hive spec
* Move upload before table metadata creation
* Refine upload logic, dd unit tests and fix translations
* Use ALLOWED_EXTENSIONS from config
* Address review comments
* Fix error message grammar
* Add return type to hive csv upload and replace first with one_or_none
* Add support for Exasol
* add time grain functions for Exasol
* remove duplicate of
* override ExasolEngineSpec's fetch_data method
* remove duplicate https
* simplify super call
* Enable lint checking for files in db_engine_spec that have few to no
lint issues
* Enable lint and fix issue in db_engine_spec/mysql.py
* Enable pylint and fix lint for db_engine_spec/pinot.py
* Enable lint and fix issues for db_engine_specs/hive.py
* Enable lint and fix for db_engine_spec/presto.py
* Re-enable lint on base.py, fix/disable specific failures, including one
bad method signature
* Make flake8 happy after a number of pylint fixes
* Update db_engine_spec_test test cases related to Presto to support
different method naming
* automated reformatting
* One more pylint disable for druid.py
* Find the magic invocation that makes all the lint tools happy
* Add Fanatics to companies that use Superset
We at Fanatics use Apache Superset to visualize data stored in Apache Druid. I wanted to add my firm's name to this list since we are very happy with the performance and visualization features provided by Apache Superset.
* Update README.md
* #8294: Set moment library language during app setup
* #8294: Added 'local-storage' to superset/assets/package.json
* #8294: change 'locale' in localStorage when language is set
* #8294: Fixed eslint issues
* #8294: Removed localStorage usage
Tried 2-3 difference approaches to fix the flaky SQL Lab test that has
been biting us for a while. My guess is that the flakiness comes from
brace (the editor). Hoping a future release of brace and/or cypress
may help with this.
But for now, no test is better than a flaky one.
* WIP - Add easily interpretable negative timedelta formatting
* Add unit tests for utils.core.timedelta_f
* Reformat tests.utils_tests.test_timedelta_f test code. Fixes#8274.
* Add type annotations to utils.core.timedelta_f (#8274)
* Replace recursion with absolute value in utils.core.timedelta_f (#8274)
* Rename utils.core.timedelta_f to format_timedelta (#8274)
* Fix small typo (#8274)
* Handle int64 columns with missing data in SQL Lab
* Fix docstring
* Add unit test
* Small fix
* Small fixes
* Fix cursor description update
* Better fix
* Fix unit test, black
* Fix nan comparison in unit test
* feat: read control panel configs from registry
* fix: order imports
* fix: remove index.js and get items on-the-fly, remove extraOverrides
* fix: lint
* fix: unit tests
* fix: unit tests
* fix: lint
* fix: unit tests
* Fix version info
Ran into Cypress issues while getting too ambitious in #8157
this is a simplified more targeted version of it
* include package.json (but not under static/)
* use package.json as single source of truth for version info
* typo
* show ellipsis for long filter name in tooltip
* show filter indicator color bar when filter is applied
* show/hide filter indicator when filter is showing/hiding options
* use component local state to hide/show chart outline
* fix review comments + unit tests
* chore: deprecate restricted metrics
An early community contribution added the concept of restricted metrics.
The idea was to allow for some metrics to be restricted, and if a metric
was tagged as such, a user would need to be given access to that metric
more explicitely, through a special perm we would maintain for that
metric.
Now since the new concept of "Adhoc Metrics", the popover that lets a
user pick a column and an aggregate function or to write their own SQL
expression inline, this restriction is completely bypassed. Adhoc
metrics was developed without the restricted metrics in mind.
Anyhow, in the near future, we'll be rethinking the ideas behind
data-access permissions, and things like column-level or row-level
security will be redesigned from scratch.
By deprecating this feature, we're removing a confusing and mostly broken
feature, and making it easy to move forward
* Use context manager to drop columns
* disable jest's maxWorkers
* Fix regression in time grain addons
* Revert privatization of time_grain_functions
* Fix test
* Rename variable
* Fix test
* Fix typing error
* Refactor and add tests
* Add TODO
* Fix to werkzeug proxy; expose additional configuration items
* Forced to all x-forwarded configurations ON; black done
* added comments related to x_port after testing
* Updated UPDATING.md
* Removed accidental notebook; added *.ipynb to gitignore
* Delete Untitled-checkpoint.ipynb
Currently docker entrypoint is a bash script.
`docker stop` command (or restart in kubernetes) sends SIGTERM to the
container but it isn't catched by gunicorn.
So gunicorn can't start graceful shutdown which may lead to killing
user's connection and also adds 10s (default value) delay for stopping
until docker sends SIGKILL.
Using `exec` replaces the shell with the process being opened and
signals are propagated correctly.
Ref: https://docs.docker.com/engine/reference/commandline/stop/
Ref: https://unix.stackexchange.com/questions/146756/forward-sigterm-to-child-in-bash
* Moving towards a whitelist approach for MANIFEST.in when it comes to static resources
* Tuning static exclude
* Fix for fetching version string from package.json, which no longer exists
* Adding package.json fallback for unit tests
* Add support for msgpack results_backend serialization
* Serialize DataFrame with PyArrow rather than JSON
* Adjust dependencies, de-lint
* Add tests for (de)serialization methods
* Add MessagePack config info to Installation docs
* Enable msgpack/arrow serialization by default
* [Fix] Prevent msgpack serialization on synchronous queries
* Add type annotations
* Add check for calls to cache_key_wrapper to avoid unavoidable compilation of query
* Add fetch_values_predicate to check
* Only check relevant attributes
* Address nit
* Separate vis-specific controls from centralized controls
* Remove comment
* Update state's vizType when switching to a new visualization. This fixes the renderTrigger bug.
* Rename functions for better readability
* Fix lint issues
* Fix nits
* Fix vscode rename mistake
* Add typing to db_engine_specs
* Add more type annotations and docstrings
* Add docstrings and typing to sql_parse and db_engine_specs
* Refine select_star
* Fix execute and add more docstrings
* Revert kwargs change from execute
* Remove redundant or
* Align view and table getter schema types
* Fix return type of latest_partition
* Remove some typing from presto
* Improve docstring for __extract_from_token
* bump a set of test-related JS libs
Mostly upgrading jest as I was trying to tackle issues related to
wrong source-maps reporting in jest. This addresses it
* Bumping more things
* lint
* using core-js/stable
* pointing to the right place
* Fix: Chain var declaration and webpack invocation
* enh: Add cross-env to make package.json work cross-platform
* Fix: Update lock-file for new package cross-env
* Chores: Update lock-file for new package cross-env
Issue: When Superset is running behind a reverse proxy and the dashboard page is requested with HTTPS protocol, the frontend can't retrieve the favorite status of the dashboard and, instead, displays the following toast message: 'There was an issue fetching the favorite status of this dashboard.'
Cause: While the API exposes the /favestar/Dashboard/{id}/count/ endpoint, the frontend executes an API call to /favestar/Dashboard/{id}/count, which leads to a redirect to an endpoint with HTTP protocol
Fix: Call the correct endpoint
This bug was introduced by #7102
Using `position:absolute` on body gives `document.documentElement` a height of 0 which propagates to `clientHeight` on Firefox. This leads to a wrong calculation of the tooltip position in NVD3.
The solution proposed here is to use `min-height: 100vh` instead of the current technique for stretching the body element to the full window height, thus keeping body and html together.
* Added better display of NULL values in FilterableTable (Reults table as in SQL Lab results) and changed sorting order so that NULL values always come last
* fixed syntax according to elint recommendations
* changed code style and logic in getContentCell according to @etr2460 code review
* remvoved 'null-cell' class and replaced it with 'text-muted' as per @mistercrunch review
* [database] Fix, Removes the limit for the page size, Bump FAB to 2.1.8
Old FAB API had no limits by default, this will keep this behaviour
but only for this endpoint
* [sqllab] Add test for database API
* [sqllab] Add test for database API
* [sqllab] Include page zero on request
* [sqllab] Fix, Black and requirements
* [sqllab] Make database API return unlimited results
* [sqllab] just a test
* [sqllab] Bump FAB to 2.1.9
* [sqllab] Remove unused import
* 7620: Start removing dependencies on requests
* Patch urllib.request.urlopen instead of requests.get
* Try to fix flake8
* More work on flake8 import errors
* First attempt at using urllib with cookies
* Fix pylint/flake8
* Fix test_deliver_slice_csv_attachment
* Fix test_deliver_slice_csv_inline
* Import requests and pydruid conditionally, remove dependency on prison
* Fix flake errors
* Fix load_examples
* Please flake
* Skip tests depending on optional deps
* Try to please flake
* Address review comments
* Remove Druid-related UI
* Revert "Remove Druid-related UI"
This reverts commit d7e0f166cc3f3dd2496b4a666e177f0c191aeb0f.
* Skip a few tests more
* Put imports in right order
* Apply black patch
* Please flake
* Please black, silence flake
* Use flake8 silencing the right way
* Add deps for CI
* Bump requirements.txt
* Cap gunicorn to <19.9.0 due to X-Forwarded-Proto regression
* Remove python-dotenv from requirements-dev.txt
* Cap sqlparse due to regression in 0.3.0
* [WIP] bug fix for FixedOrMetricControl not rendering
* Updated value preview and type selection
* fix metric control not on setting polygon elevation data
* Updated layout of FoM comp
* linting fixes
* linting fix pt. 2
* linting fix pt. 3
* fix scatter tooltip to work with metric control
* Fixed tests
* [cli] New, command line option to create or set a db URI
* [tests] New, get or create db on utils
* [tests] flake8 and black
* [tests] Fix, remove dummy comments
* [cli] dummy commit to re-trigger build
* [cli] dummy commit to re-trigger build
* [log] Disable Log view when FAB security views are disabled
* [tests] New, config flag SUPERSET_LOG_VIEW to have more control
* [tests] Fix, flake8
* [log] Fix, pylint
* [log] Fix, pylint at log module
* [log] Fix, pylint at log module
* [log] Fix, black
* Fixing the build after travis upgraded Ubuntu
It seems Travis has been updated/ing its build environment to Ubuntu
16.04 from Ubuntu 14 in the past few days. This broke a bunch of things
on our side.
* postgres -> postgresql
* Fix java
* Try openjdk8
* Fix, license check oracle and python
* Fix, license check oracle and python v2
* Fix, license check oracle and python v3
* Fix, license check oracle and python v4
* dummy commit, just to trigger the build
* Create query_obj for every filter
* Deprecate is_prequery and prequeries from query_obj
* Fix tests
* Fix typos and remove redundant ; from sql
* Add typing to namedtuples and move all query str logic to one place
* Fix unit test
* Allow to pass user for dashboard import cli
Dashboard import assign current user from flask context during import.
But in case of cli import there is no flask user and imported charts
don't have an owner which prevents ability to edit them.
* Reset ownership on dashboard import
For overriding existing charts it requires `owners` property to be set.
* Add tests for reset ownership
* Use ORM to decode dashboards json
Creating instances using ORM allows to normally work with relations
* Fix test_import_dashboard_1_slice test
Previously tests used side-effect of slices import which kept id from
json on insert into db.
* [api] [database] New, migrate to new FAB API side by side
* [database] view and api module reorganization
* [style] Fix, flake8
* [test] [database] Fix, tests for new database view structure
* [style] [database] black
* [database] Fix, missing apache license
* Migrate databaasync api to the new api
* flake8
* More efficient api call
* Revert querySearch to old API, test
* dummy commit
* revert config.py commit
* Remove unused import
* Remove old API view
* Remove new API view
* Add database filter
* Add database filter
* Add database filter
* Remove comments on js
* Fix JS test
* Fix pylint
* QuerySearch new databaseasync API endpoint
* Fix, query search new api endpoint
* Reintroduce old API for smooth side by side migration
* Better naming and use common hooks for view and API
* black it
* Fix, database mixin must come first
* Fix, lint
1. remove duplicated entries in many-to-many relation tbl dashboard_slices
2. add unique constraint on tbl
3. update the model to include the uniqueness constraint
* fix(sql-lab explore): fixed response data and header type to be aligned
* fix(sql-lab explore): fixed test error caused by incorrect test at master
* fix(sql-lab explore): reformatted
* fix(sql-lab explore): removed unused import
* Remove unnecessary fields from dashboard exported json
This commit makes export respect export_fields and doesn't export
unnecessary relations (like users with passwords hashes) which are
ignored during the import.
* Allow to import dashboard without position_json
In case charts were added from chart-edit page and wasn't re-ordered on
the dashboard position_json field is empty and import was failing with
error.
* Update export/import tests
* [sql lab] improve TableElement controls
Making TableElement (table metadata shown in left panel in SQL Lab) show
controls only on hover, and use caret to expand/collapse
* Lint
* [WiP] improve load_examples
related to #7472, longer term we will generate the examples by exporting
them into tarball as in #7472. In the meantime, we need this subset of
the features:
* allowing specifying an alternate database connection for examples
* allowing a --only-metadata flag to `load_examples` to load only
dashboard and chart definitions, no actual data is loaded
* Improve logging
* Rename data->examples
* Load only if not exist
* By default do not load, add a force flag
* fix build
* set published to true
* Add Auto option to point radius to make it work as expected since the example using this didn't work because of this (and also as the tooltip says the auto option should be available)
* Remove trailing space
* Fix docker configurations and docker installation guide.
- Fix installation guide regarding passing enviromental variable to docker-compose.
- Add gevent installation command in Dockerfile. (Didn't add it in requirements because it's not really a requirement for the whole project)
- Add user: root:root to allow superset service to work in development mode. Since access to binded superset directory to local requires root user.
- Also add localhost to postgres and redis services to reduce unintended security risk.
* Fix docker configurations and docker installation guide.
- Fix installation guide regarding passing enviromental variable to docker-compose.
- Add gevent installation command in Dockerfile. (Didn't add it in requirements because it's not really a requirement for the whole project)
- Add user: root:root to allow superset service to work in development mode. Since access to binded superset directory to local requires root user.
- Also add localhost to postgres and redis services to reduce unintended security risk.
* fix: update polygon example data to work with multi deck.gl
- both "point_radius_fixed" and "multiplier" attributes were not set during load_examples so these charts were failing when viewing as a multi deck.gl chart
* fix: unify deck.gl getLayers api to fix multi deck.gl tooltips
- various deck.gl layers implemented getLayers slightly differently which caused issues with generating default tooltips when the layers are viewed in a multi deck.gl chart
* fix: cleanup formData variable in scatter chart for consistency
* linting fix + polygon regression fix
* additional linting fixes
* fix: multi deck.gl viewport frozen
add onViewportChange method to handle changes to the viewport
* fix: add max_radius to deck.gl scatter example
- causes multi deck.gl to fail to render scatter without max_radius attribute
* Allow users to publish dashboards
* Rework publish dashboards feature
- The eye next to the title has been replaced with a [draft] badge
- Published status is now toggled in the Header Action Dropdown
- CRUD list shows published status
* Fix linter errors
* Update javascript tests
* Add tests and change DashboardFilter
Add some tests to make sure the published status is rendered and
Make it so that users cannot see dashboards that are published
if they don't have access to any of the slices within
* Fix some linter errors
* Remove commas from core.py
* Fix some failing tests
* More linter errors I introduced
* Fix more linter errors I introduced
* update alembic migration
* Update design of publish dash feature
* Upgrade migration version
* Secure publish endpoint
* Remove bad quotes
* Give publish span its own style
* fix publish rendering
* Add new test for publish feature
* Update migration
* update slug in test
* Update migration
* Address reviwer comments
* Fix linter errors
* Add licenses
* Remove fetchPublished(), use bootstrap data
* Update migration
* Update croniter to existing version
* Fix linter errors
* Upgrade DB Revisions
* Fix flake8 linter error
* Set all dashboards to published on migration
* Migration proper line spacing
* Fix migration to work with postgres
* UPDATE statement works with postgresql and sqlite hopefully
* Update wording to kick off travis
Creating the database connection will actually go through the get_sqla_engine path so that's what should be used to test the connection. This was triggered by realizing that testconn was not using the DB_CONNECTION_MUTATOR hook.
See #7668
* [log] New, make action log configurable and generic
* [log] Fix, missing apache license
* [log] Fix, user_id is a required parameter on event logs
* [log] Fix, Rename Action to Event
* [log] Fix, flake8
* [logger] Change all log_this decorators to new abstract one
* [logger] [docs] Simple docs to show how to override the event log
* [style] Fix, single quote to double quote
* [style] Fix, single quote to double quote
Fixing a few failing examples, examples were referencing metrics that
were getting auto-generated in the past (like `sum__num`),
that we now prevent from getting created.
* [WiP] Improvements related to ASF release process
* Removing translation binaries (.mo)
* Working on 2 docker files to help package and validate releases
* Dockerfile.from_tarball: takes a VERSION as input, downloads
official source release fro svn and bakes it into a functional
docker image that can be validated
* Dockerfile.make_tarball: helps a maintainer to package and sign a
release candidate or release
* Address COPYRIGHT + LICENSE issues
(cherry picked from commit 5ae2836b25)
* Add Roboto font to LICENSE, remove glyphicons files
(cherry picked from commit 9615f39f7a556afe217b4e3288c9116f8ffaab91)
* remove unused LICENSE entries
* Change babytux to open image in birth dashboard
(cherry picked from commit 2776d11893596a029b8af37b96fd6ce1a9f12059)
* Improve instructions
* Docker tweaks
(cherry picked from commit df6e6462458ea8cff1482c142921b20f5607ad8e)
* Include image
Common mistake is trying to import dashboard without creating
datasources first. Currently it causes error 500 with a message
> sqlalchemy.orm.exc.NoResultFound: No row was found for one()
which is difficult to understand.
This commit catches NoResultFound error and returns human readable error
using flash('danger').
Ref: #2992
* Improve documentation and add type annotations for jinja context
* Fix linting errors
* Move requirements to correct place and remove redundant line change
* Make example query more ANSI SQL
* fix: table autocomplete and update unit tests
* fix: linting issues
* fix: disable tests properly
* empty commit
* fix: align structure across fe and be
* Add extra_require for bigquery to setup.py
* Refactor df_to_db and add df upload capability for BigQuery
* Fix unit tests and clarify kwarg logic
* Fix flake8 errors
* Add minimum versions for bigquery dependencies
* wrap to_gbq in try-catch block and raise error if pandas-gbq is missing
* Fix linting error and make error more generic
* Use grid for wide tables
* WIP
* Fix CSS issues
* Add unit test
* Add constant
* Improve ref
* Remove wrong refs; no longer need extra height
* Revert number of columns
* Add new escape characters to OnPasteSelect
* Add Unit Tests to onPasteSelect_spec
* Update new line to tab escape character
* Fix indentation in 2 cases
* fix: SqlaColumn.type overflow on mysql
Hitting a new error when loading examples around a datatype that exceeds
the 32 chars limit on SqlaColumn.type
Type includes the 'COLLATE utf8mb4_general_ci' suffix which is too
verbose and not needed in that context.
* fix tests
* [FAB] set AppBuilder to update_perms=False
Upon start, by default, FAB tries to go and update the permission list
in the database based on the list of views, models and menu items that
exist in the code.
Really this should happen once per deployment/upgrade and
not in module scope, so we have `superset init` for this.
The intent was always to set to False by default, but I think we forgot
to add this flag back in
https://github.com/apache/incubator-superset/pull/7323
* Add superset init to tox
* [SQL Lab] Adds autocomplete on table names and auto-add to schema browser
Closes#7059
* Wrapping up #7130
For more details see #7130, this PR addresses the merge conflicts.
* feat: rough check in for Presto rows and arrays
* fix: presto arrays
* fix: return selected and expanded columns
* fix: add helper methods and unit tests
* fix: only allow exploration of selected columns
* fix: address Beto's comments and add more unit tests
* Add Auto option to point radius to make it work as expected since the example using this didn't work because of this (and also as the tooltip says the auto option should be available)
* Remove trailing space
* Move schema name handling in table names from frontend to backend
* Rename all_schema_names to get_all_schema_names
* Fix js errors
* Fix additional js linting errors
* Refactor datasource getters and fix linting errors
* Update js unit tests
* Add python unit test for get_table_names method
* Add python unit test for get_table_names method
* Fix js linting error
* Creating withVerification HOC
* Updating to use componentDidMount and componentDidUpdate and adding propTypes
* Adding tests to withVerification
* Adding documentation to withVerification
* resolved conflict
* Docs updated re: Anaconda/certifi issue re #7373
* Removed --console-log "not working" note
* A note about Anaconda virtualenvs
* Make anaconda comment fit on page
* Added README to docker directory
* Added install doc reference to master copy of contrib/docker/README.md
* merged master, removed mysqlclient
* Removed mysql dependency, Anaconda and --console-log references
* Add cypress install command to cypress test instructions
* Fixed cypress instructions re: port 8081
* Removed anaconda reference, runserver references
* Remove anaconda reference
* Added back a self-contained version of mysqlclient to dev requirements
* Added ASF license to docker README.md
flask-talisman was enabled recently and while it may be virtuous in some
cases, it seems to break things out of the box.
Locally and in dev mode, upon my first redirect it sends to HTTPS and
things it crashes.
I think it should be opt-in, maybe we can recommend turning this on in
production in the docs?
* [WIP] Live query validation, where supported
This builds on #7422 to build check-as-you-type sql
query validation in Sql Lab. This closes#6707 too.
It adds a (debounced) call to the validate_sql_json
API endpoint with the querytext, and on Lyft infra is
able to return feedback to the user (end to end) in
$TBD seconds.
At present feedback is provided only through the
"annotations" mechanism build in to ACE, although
I'd be open to adding full text elsewhere on the
page if there's interest.
* fix: Unbreak lints and tests
* Flatten MapChartPreset, HierarchyChartPreset, and CommonChartPreset charts into LegacyChartPreset class
* Rename LegacyChartPreset class to MainPreset to reflect new chart preset hierarchy
After the following PyDruid change (contained in version 0.5.2)
the Superset Histogram charts rendered with Druid data are
broken:
druid-io/pydruid@0a59a70
Bump the pydruid requirements accordingly in setup.py
Issue: apache#7368
* Bugfix to SQL Lab to support tables and schemas with characters that require quoting
* Remove debugging prints
* Add uri encoding to secondary tables call
* Quote schema names for presto
* Quote selected_schema on Snowflake, MySQL and Hive
* Remove redundant parens
* Add python unit tests
* Add js unit test
* Fix flake8 linting error
* Merge lastest from master into lyft-release-sp8 (#7405)
* filter out all nan series (#7313)
* improve not rich tooltip (#7345)
* Create issue_label_bot.yaml (#7341)
* fix: do not save colors without a color scheme (#7347)
* [wtforms] Strip leading/trailing whitespace (#7084)
* [schema] Updating the datasources schema (#5451)
* limit tables/views returned if schema is not provided (#7358)
* limit tables/views returned if schema is not provided
* fix typo
* improve code performance
* handle the case when table name or view name does not present a schema
* Add type anno (#7342)
* Updated local dev instructions to include missing step
* First pass at type annotations
* [schema] Updating the base column schema (#5452)
* Update 937d04c16b64_update_datasources.py (#7361)
* Feature flag for client cache (#7348)
* Feature flag for client cache
* Fix integration test
* Revert "Fix integration test"
This reverts commit 58434ab98a.
* Feature flag for client cache
* Fix integration tests
* Add feature flag to config.py
* Add another feature check
* Fix more integration tests
* Fix raw HTML in SliceAdder (#7338)
* remove backendSync.json (#7331)
* [bubbles] issue when using duplicated metrics (#7087)
* SUPERSET-7: Docker compose config version breaks on Ubuntu 16.04 (#7359)
* SUPERSET-8: Update text in docs copyright footer (#7360)
* SUPERSET-7: Docker compose config version breaks on Ubuntu 16.04
* SUPERSET-8: Extra text in docs copyright footer
* [schema] Adding commits and removing unnecessary foreign-key definitions (#7371)
* Store last selected dashboard in sessionStorage (#7181)
* Store last selected dashboard in sessionStorage
* Fix tests
* [schema] Updating the base metric schema (#5453)
* Fix NoneType bug & fill the test recipients with original recipients if empty (#7365)
* feat: see Presto row and array data types (#7391)
* feat: see Presto row and array data types
* fix: address PR comments
* fix: lint and build issues
* fix: add types
* Incorporate feedback from initial PR (prematurely merged to lyft-release-sp8) (#7415)
* add stronger type hints where possible
* fix: lint issues and add select_star func in Hive
* add missing pkg init
* fix: build issues
* fix: pylint issues
* fix: use logging instead of print
* feat: view presto row objects in data grid
* fix: address feedback
* fix: spacing
* Workaround for no results returned (#7442)
* feat: view presto row objects in data grid (#7436)
* feat: view presto row objects in data grid
* fix: address feedback
* fix: spacing
* feat: Scheduling queries from SQL Lab (#7416)
* Lightweight pipelines POC
* Add docs
* Minor fixes
* Remove Lyft URL
* Use enum
* Minor fix
* Fix unit tests
* Mark props as required
* Merge lastest from master into lyft-release-sp8 (#7405)
* filter out all nan series (#7313)
* improve not rich tooltip (#7345)
* Create issue_label_bot.yaml (#7341)
* fix: do not save colors without a color scheme (#7347)
* [wtforms] Strip leading/trailing whitespace (#7084)
* [schema] Updating the datasources schema (#5451)
* limit tables/views returned if schema is not provided (#7358)
* limit tables/views returned if schema is not provided
* fix typo
* improve code performance
* handle the case when table name or view name does not present a schema
* Add type anno (#7342)
* Updated local dev instructions to include missing step
* First pass at type annotations
* [schema] Updating the base column schema (#5452)
* Update 937d04c16b64_update_datasources.py (#7361)
* Feature flag for client cache (#7348)
* Feature flag for client cache
* Fix integration test
* Revert "Fix integration test"
This reverts commit 58434ab98a.
* Feature flag for client cache
* Fix integration tests
* Add feature flag to config.py
* Add another feature check
* Fix more integration tests
* Fix raw HTML in SliceAdder (#7338)
* remove backendSync.json (#7331)
* [bubbles] issue when using duplicated metrics (#7087)
* SUPERSET-7: Docker compose config version breaks on Ubuntu 16.04 (#7359)
* SUPERSET-8: Update text in docs copyright footer (#7360)
* SUPERSET-7: Docker compose config version breaks on Ubuntu 16.04
* SUPERSET-8: Extra text in docs copyright footer
* [schema] Adding commits and removing unnecessary foreign-key definitions (#7371)
* Store last selected dashboard in sessionStorage (#7181)
* Store last selected dashboard in sessionStorage
* Fix tests
* [schema] Updating the base metric schema (#5453)
* Fix NoneType bug & fill the test recipients with original recipients if empty (#7365)
* feat: see Presto row and array data types (#7391)
* feat: see Presto row and array data types
* fix: address PR comments
* fix: lint and build issues
* fix: add types
* Incorporate feedback from initial PR (prematurely merged to lyft-release-sp8) (#7415)
* add stronger type hints where possible
* fix: lint issues and add select_star func in Hive
* add missing pkg init
* fix: build issues
* fix: pylint issues
* fix: use logging instead of print
* feat: view presto row objects in data grid
* fix: address feedback
* fix: spacing
* Merge lastest from master into lyft-release-sp8 (#7405)
* filter out all nan series (#7313)
* improve not rich tooltip (#7345)
* Create issue_label_bot.yaml (#7341)
* fix: do not save colors without a color scheme (#7347)
* [wtforms] Strip leading/trailing whitespace (#7084)
* [schema] Updating the datasources schema (#5451)
* limit tables/views returned if schema is not provided (#7358)
* limit tables/views returned if schema is not provided
* fix typo
* improve code performance
* handle the case when table name or view name does not present a schema
* Add type anno (#7342)
* Updated local dev instructions to include missing step
* First pass at type annotations
* [schema] Updating the base column schema (#5452)
* Update 937d04c16b64_update_datasources.py (#7361)
* Feature flag for client cache (#7348)
* Feature flag for client cache
* Fix integration test
* Revert "Fix integration test"
This reverts commit 58434ab98a.
* Feature flag for client cache
* Fix integration tests
* Add feature flag to config.py
* Add another feature check
* Fix more integration tests
* Fix raw HTML in SliceAdder (#7338)
* remove backendSync.json (#7331)
* [bubbles] issue when using duplicated metrics (#7087)
* SUPERSET-7: Docker compose config version breaks on Ubuntu 16.04 (#7359)
* SUPERSET-8: Update text in docs copyright footer (#7360)
* SUPERSET-7: Docker compose config version breaks on Ubuntu 16.04
* SUPERSET-8: Extra text in docs copyright footer
* [schema] Adding commits and removing unnecessary foreign-key definitions (#7371)
* Store last selected dashboard in sessionStorage (#7181)
* Store last selected dashboard in sessionStorage
* Fix tests
* [schema] Updating the base metric schema (#5453)
* Fix NoneType bug & fill the test recipients with original recipients if empty (#7365)
* feat: see Presto row and array data types (#7391)
* feat: see Presto row and array data types
* fix: address PR comments
* fix: lint and build issues
* fix: add types
* add stronger type hints where possible
* fix: lint issues and add select_star func in Hive
* add missing pkg init
* fix: build issues
* fix: pylint issues
* fix: use logging instead of print
* Bump FAB to 2.0.0
* [tests] whitelist SecurityApi login and refresh endpoints
* [style] Fix, C812 missing trailing commas
* [security] Remove SUPERSET_UPDATE_PERMS flag
Registering sources needs to be performed after the views are
initialized on UPDATE_PERMS=False configuration
* [docs] New, FAB_UPDATE_PERMS and flask fab cli
* [docs] Fix, db upgrade needs to come first, create-admin needs a db
* [cli] New, superset init bootstraps all permissions for FAB and Superset
* [style] Fix, flakes
* Added living goods as among the users of Superset
Living Goods is a non profit organisation with operation in africa and the middle east. We work in community health use data heavily on day to day. Superset is our platform of choice for dashboards.
* Update README.md
* Feature flag for client cache
* Fix integration test
* Revert "Fix integration test"
This reverts commit 58434ab98a.
* Feature flag for client cache
* Fix integration tests
* Add feature flag to config.py
* Add another feature check
* Fix more integration tests
* limit tables/views returned if schema is not provided
* fix typo
* improve code performance
* handle the case when table name or view name does not present a schema
Fixes a series of unexpected things around control validation.
* when a chart opens in a state where a control is invalid, it still
runs the query, and sometimes gets stuck in what appears to be a 'running'
state. After this change, no query is run, and a warning is displayed
in the chart panel body, just like any other error would
* validation used to be done in the <Control> component and alter the
redux store as it went. Clearly this is not the right approach, now
validation occurs on loading the initial redux state, as well as in
the reducer when controls are changed
* currently, when going from a invalid control state to a valid one
(user addresses what is needed), it auto-triggers a query which can be
unexpected. After this change, the error message disappears, and the
"Run Query" overlay gets displayed
* when changing viz type, it's common to get new validation
errors, and currently when that occurs it will still go ahead and run
a query with invalid inputs, which often results in errors
that are not well handled, since much of the logic
assumes control-validated input.
* prettier control validation messages
(cherry picked from commit a3212eba5df95bca834d8d6d98c11d522d9172f3)
* Adding permission for can_only_access_owned_queries
* Fixing lint adding typing to variable
* Adding test for queryview and enabling /queryview/api/read
* Fixing issues with python typing
* feat: bump superset-ui versions to 0.11
* fix: update version number again
* fix: package-lock.json
* test: disable large number test
* fix: revert cors
* [load_examples] download data at runtime
When running `superset load_examples` to load example data sets,
Superset used to load from the local package. This created a few issues
notably around licensing (what are these datasets licensed as?) and
around package size.
For now, I moved the data sets here:
https://github.com/apache-superset/examples-data
Altered the logic to download the data from where it is stored.
* flakes
* fix: time series table
* fix: add default value for label
* fix: use prop values if defined
* fix: revert CollectionControl changes
(cherry picked from commit 5dab983fd8)
* [SQL Lab] fix table metadata loading spinner
The loading spinner used to be close to the new table name that was just
added, and recently flickers and disappears early.
This puts the spinner where it's expected to be.
* Use class
* Addressing comments
* adapt CSS
* add missing license
* Fix logo / branding files
SVG was busted in the branding folder. Files were partly corrupt.
This takes back the original logo, and offers a with-Apache and
without-Apache option. SVG renders nicely. The pngs are also bigger.
* add ASF license
in some cases, people want a time filter only on filter box, without
specifying dimensions (filters), this allows that
(cherry picked from commit e39b169949)
* Sparkline dates aren't formatting in Time Series Table (#6976)
* Exclude venv for python linter to ignore
* Fix NaN error
* Fix the white background shown in SQL editor on drag (#7021)
This PR sets the background-color css property on `.ace_scroller` instead of `.ace_content` to prevent the white background shown during resizing of the SQL editor before drag ends.
* Show tooltip with time frame (#6979)
* Fix time filter control (#6978)
* Enhancement of query context and object. (#6962)
* added more functionalities for query context and object.
* fixed cache logic
* added default value for groupby
* updated comments and removed print
(cherry picked from commit d5b9795f87)
* [fix] /superset/slice/id url is too long (#6989)
(cherry picked from commit 6a4d507ab6)
* [WIP] fix user specified JSON metadata not updating dashboard on refresh (#7027)
(cherry picked from commit cc58f0e661)
* feat: add ability to change font size in big number (#7003)
* Add ability to change font sizes in Big Number
* rename big number to header
* Add comment to clarify font size values
* Allow LIMIT to be specified in parameters (#7052)
* [fix] Cursor jumping when editing chart and dashboard titles (#7038)
(cherry picked from commit fc1770f7b7)
* Changing time table viz to pass formatTime a date (#7020)
(cherry picked from commit 7f3c145b1f)
* [db-engine-spec] Aligning Hive/Presto partition logic (#7007)
(cherry picked from commit 05be866117)
* [fix] explore chart from dashboard missed slice title (#7046)
(cherry picked from commit a6d48d4052)
* fix inaccurate data calculation with adata rolling and contribution (#7035)
(cherry picked from commit 0782e831cd)
* Adding warning message for sqllab save query (#7028)
(cherry picked from commit ead3d48133)
* [datasource] Ensuring consistent behavior of datasource editing/saving. (#7037)
* Update datasource.py
* Update datasource.py
(cherry picked from commit c771625f10)
* [csv-upload] Fixing message encoding (#6971)
(cherry picked from commit 48431ab5b9)
* [sql-parse] Fixing LIMIT exceptions (#6963)
(cherry picked from commit 3e076cb60b)
* Adding custom control overrides (#6956)
* Adding extraOverrides to line chart
* Updating extraOverrides to fit with more cases
* Moving extraOverrides to index.js
* Removing webpack-merge in package.json
* Fixing metrics control clearing metric
(cherry picked from commit e6194051f4)
* [sqlparse] Fixing table name extraction for ill-defined query (#7029)
(cherry picked from commit 07c340cf82)
* [missing values] Removing replacing missing values (#4905)
(cherry picked from commit 61add606ca)
* [SQL Lab] Improved query and results tabs rendering reliability (#7082)
closes#7080
(cherry picked from commit 9b58e9f492)
* Fix filter_box migration PR #6523 (#7066)
* Fix filter_box migration PR #6523
* Fix druid-related bug
(cherry picked from commit b210742ad2)
* SQL editor layout makeover (#7102)
This PR includes the following layout and css tweaks:
- Using flex to layout the north and south sub panes of query pane so resizing works properly in both Chrome and Firefox
- Removal of necessary wrapper divs and tweaking of css in sql lab so we can scroll to the bottom of both the table list and the results pane
- Make sql lab's content not overflow vertically and layout the query result area to eliminate double scroll bars
- css tweaks on the basic.html page so the loading animation appears in the center of the page across the board
(cherry picked from commit 71f1bbd2ec)
* [forms] Fix handling of NULLs
(cherry picked from commit e83a07d3df)
* handle null column_name in sqla and druid models
(cherry picked from commit 2ff721ae07)
* Use metric name instead of metric in filter box (#7106)
(cherry picked from commit 003364e74e)
* Bump python lib croniter to an existing version (#7132)
Package maintainers should really never delete packages, but it appears
this happened with croniter and resulted in breaking our builds.
This PR bumps to a more recent existing version of the library
(cherry picked from commit 215ed392a1)
* Revert PR #6933 (#7162)
* Celery worker for warming up cache
* Remove testing changes
* Add documentation
* Fix lint
* WIP dashboard filters
* Use new cache so it works with dashboards
* Add more unit tests, fix old ones
* Fix flake8 and docs
* Sparkline dates aren't formatting in Time Series Table (#6976)
* Exclude venv for python linter to ignore
* Fix NaN error
* Changing time table viz to pass formatTime a date (#7020)
(cherry picked from commit 7f3c145b1f)
* SQL editor layout makeover (#7102)
This PR includes the following layout and css tweaks:
- Using flex to layout the north and south sub panes of query pane so resizing works properly in both Chrome and Firefox
- Removal of necessary wrapper divs and tweaking of css in sql lab so we can scroll to the bottom of both the table list and the results pane
- Make sql lab's content not overflow vertically and layout the query result area to eliminate double scroll bars
- css tweaks on the basic.html page so the loading animation appears in the center of the page across the board
(cherry picked from commit 71f1bbd2ec)
* Celery worker for warming up cache
* Remove testing changes
* Add documentation
* Fix lint
* WIP dashboard filters
* Use new cache so it works with dashboards
* Add more unit tests, fix old ones
* Fix flake8 and docs
* Fix bad merge and pylint
* Add tooltips to deck.gl viz types
* Handle text overflow
* Use .css file instead of .less
* fix: add tooltip component
* Add tooltips to deck.gl viz types
* Handle text overflow
* Use .css file instead of .less
* fix: add tooltip component
* fix: casing, types, and keys
* Sparkline dates aren't formatting in Time Series Table (#6976)
* Exclude venv for python linter to ignore
* Fix NaN error
* Fix the white background shown in SQL editor on drag (#7021)
This PR sets the background-color css property on `.ace_scroller` instead of `.ace_content` to prevent the white background shown during resizing of the SQL editor before drag ends.
* Show tooltip with time frame (#6979)
* Fix time filter control (#6978)
* Enhancement of query context and object. (#6962)
* added more functionalities for query context and object.
* fixed cache logic
* added default value for groupby
* updated comments and removed print
(cherry picked from commit d5b9795f87)
* [fix] /superset/slice/id url is too long (#6989)
(cherry picked from commit 6a4d507ab6)
* [WIP] fix user specified JSON metadata not updating dashboard on refresh (#7027)
(cherry picked from commit cc58f0e661)
* feat: add ability to change font size in big number (#7003)
* Add ability to change font sizes in Big Number
* rename big number to header
* Add comment to clarify font size values
* Allow LIMIT to be specified in parameters (#7052)
* [fix] Cursor jumping when editing chart and dashboard titles (#7038)
(cherry picked from commit fc1770f7b7)
* Changing time table viz to pass formatTime a date (#7020)
(cherry picked from commit 7f3c145b1f)
* [db-engine-spec] Aligning Hive/Presto partition logic (#7007)
(cherry picked from commit 05be866117)
* [fix] explore chart from dashboard missed slice title (#7046)
(cherry picked from commit a6d48d4052)
* fix inaccurate data calculation with adata rolling and contribution (#7035)
(cherry picked from commit 0782e831cd)
* Adding warning message for sqllab save query (#7028)
(cherry picked from commit ead3d48133)
* [datasource] Ensuring consistent behavior of datasource editing/saving. (#7037)
* Update datasource.py
* Update datasource.py
(cherry picked from commit c771625f10)
* [csv-upload] Fixing message encoding (#6971)
(cherry picked from commit 48431ab5b9)
* [sql-parse] Fixing LIMIT exceptions (#6963)
(cherry picked from commit 3e076cb60b)
* Adding custom control overrides (#6956)
* Adding extraOverrides to line chart
* Updating extraOverrides to fit with more cases
* Moving extraOverrides to index.js
* Removing webpack-merge in package.json
* Fixing metrics control clearing metric
(cherry picked from commit e6194051f4)
* [sqlparse] Fixing table name extraction for ill-defined query (#7029)
(cherry picked from commit 07c340cf82)
* [missing values] Removing replacing missing values (#4905)
(cherry picked from commit 61add606ca)
* [SQL Lab] Improved query and results tabs rendering reliability (#7082)
closes#7080
(cherry picked from commit 9b58e9f492)
* Fix filter_box migration PR #6523 (#7066)
* Fix filter_box migration PR #6523
* Fix druid-related bug
(cherry picked from commit b210742ad2)
* SQL editor layout makeover (#7102)
This PR includes the following layout and css tweaks:
- Using flex to layout the north and south sub panes of query pane so resizing works properly in both Chrome and Firefox
- Removal of necessary wrapper divs and tweaking of css in sql lab so we can scroll to the bottom of both the table list and the results pane
- Make sql lab's content not overflow vertically and layout the query result area to eliminate double scroll bars
- css tweaks on the basic.html page so the loading animation appears in the center of the page across the board
(cherry picked from commit 71f1bbd2ec)
* [forms] Fix handling of NULLs
(cherry picked from commit e83a07d3df)
* handle null column_name in sqla and druid models
(cherry picked from commit 2ff721ae07)
* Use metric name instead of metric in filter box (#7106)
(cherry picked from commit 003364e74e)
* Bump python lib croniter to an existing version (#7132)
Package maintainers should really never delete packages, but it appears
this happened with croniter and resulted in breaking our builds.
This PR bumps to a more recent existing version of the library
(cherry picked from commit 215ed392a1)
* Revert PR #6933 (#7162)
* Add decorator for etag cache
* Fetch charts with GET
* Small fixes
* Fix typo
* Compute correct cache key; fix logging
* Check perms on cached response
* Revert change
* If perms fail, return naked response
* Fix lint
* Compute cache key from all form data
* Pass extra_filters in GET request
* Fix pylint
* Fix flake8
* Use ETags even if no cache is set
* Handle adhoc filters
* Raise in debug mode
* Rename actions
* Fix integration tests
* Do POST request on new charts
* Set extra/adhoc filters only in GET requests
* Raise if check_perms fails
* Refactor auth
* Fix flake8
* Fix js unit tests
* Fix js unit tests that fail in lyftga
* Fix js
* Sparkline dates aren't formatting in Time Series Table (#6976)
* Exclude venv for python linter to ignore
* Fix NaN error
* Changing time table viz to pass formatTime a date (#7020)
(cherry picked from commit 7f3c145b1f)
* SQL editor layout makeover (#7102)
This PR includes the following layout and css tweaks:
- Using flex to layout the north and south sub panes of query pane so resizing works properly in both Chrome and Firefox
- Removal of necessary wrapper divs and tweaking of css in sql lab so we can scroll to the bottom of both the table list and the results pane
- Make sql lab's content not overflow vertically and layout the query result area to eliminate double scroll bars
- css tweaks on the basic.html page so the loading animation appears in the center of the page across the board
(cherry picked from commit 71f1bbd2ec)
* Add decorator for etag cache
* Fetch charts with GET
* Small fixes
* Fix typo
* Compute correct cache key; fix logging
* Check perms on cached response
* Revert change
* If perms fail, return naked response
* Fix lint
* Compute cache key from all form data
* Pass extra_filters in GET request
* Fix pylint
* Fix flake8
* Use ETags even if no cache is set
* Handle adhoc filters
* Raise in debug mode
* Rename actions
* Fix integration tests
* Do POST request on new charts
* Set extra/adhoc filters only in GET requests
* Raise if check_perms fails
* Refactor auth
* Fix flake8
* Fix js unit tests
* Fix js unit tests that fail in lyftga
* Fix js
* Fix bad merge
* Use far future when max_age=0
* revert: bignumber patch to prevent rendering regression in charts
* Revert "Fix rendering regression from the introduction of bignumber (#6937)"
* fix: consume the bignumber.js reversion -- apply the bignumber conversion in `actions/sqlLab.js` where it is needed (aka opt into bignumber.js).
* Revert "Fix deck.gl form data (#6953)" b/c formData now returns snake_cased properties for deck vizzes.
* Sparkline dates aren't formatting in Time Series Table (#6976)
* Exclude venv for python linter to ignore
* Fix NaN error
* Fix the white background shown in SQL editor on drag (#7021)
This PR sets the background-color css property on `.ace_scroller` instead of `.ace_content` to prevent the white background shown during resizing of the SQL editor before drag ends.
* Show tooltip with time frame (#6979)
* Fix time filter control (#6978)
* Enhancement of query context and object. (#6962)
* added more functionalities for query context and object.
* fixed cache logic
* added default value for groupby
* updated comments and removed print
(cherry picked from commit d5b9795f87)
* [fix] /superset/slice/id url is too long (#6989)
(cherry picked from commit 6a4d507ab6)
* [WIP] fix user specified JSON metadata not updating dashboard on refresh (#7027)
(cherry picked from commit cc58f0e661)
* feat: add ability to change font size in big number (#7003)
* Add ability to change font sizes in Big Number
* rename big number to header
* Add comment to clarify font size values
* Allow LIMIT to be specified in parameters (#7052)
* [fix] Cursor jumping when editing chart and dashboard titles (#7038)
(cherry picked from commit fc1770f7b7)
* Changing time table viz to pass formatTime a date (#7020)
(cherry picked from commit 7f3c145b1f)
* [db-engine-spec] Aligning Hive/Presto partition logic (#7007)
(cherry picked from commit 05be866117)
* [fix] explore chart from dashboard missed slice title (#7046)
(cherry picked from commit a6d48d4052)
* fix inaccurate data calculation with adata rolling and contribution (#7035)
(cherry picked from commit 0782e831cd)
* Adding warning message for sqllab save query (#7028)
(cherry picked from commit ead3d48133)
* [datasource] Ensuring consistent behavior of datasource editing/saving. (#7037)
* Update datasource.py
* Update datasource.py
(cherry picked from commit c771625f10)
* [csv-upload] Fixing message encoding (#6971)
(cherry picked from commit 48431ab5b9)
* [sql-parse] Fixing LIMIT exceptions (#6963)
(cherry picked from commit 3e076cb60b)
* Adding custom control overrides (#6956)
* Adding extraOverrides to line chart
* Updating extraOverrides to fit with more cases
* Moving extraOverrides to index.js
* Removing webpack-merge in package.json
* Fixing metrics control clearing metric
(cherry picked from commit e6194051f4)
* [sqlparse] Fixing table name extraction for ill-defined query (#7029)
(cherry picked from commit 07c340cf82)
* [missing values] Removing replacing missing values (#4905)
(cherry picked from commit 61add606ca)
* [SQL Lab] Improved query and results tabs rendering reliability (#7082)
closes#7080
(cherry picked from commit 9b58e9f492)
* Fix filter_box migration PR #6523 (#7066)
* Fix filter_box migration PR #6523
* Fix druid-related bug
(cherry picked from commit b210742ad2)
* SQL editor layout makeover (#7102)
This PR includes the following layout and css tweaks:
- Using flex to layout the north and south sub panes of query pane so resizing works properly in both Chrome and Firefox
- Removal of necessary wrapper divs and tweaking of css in sql lab so we can scroll to the bottom of both the table list and the results pane
- Make sql lab's content not overflow vertically and layout the query result area to eliminate double scroll bars
- css tweaks on the basic.html page so the loading animation appears in the center of the page across the board
(cherry picked from commit 71f1bbd2ec)
* [forms] Fix handling of NULLs
(cherry picked from commit e83a07d3df)
* handle null column_name in sqla and druid models
(cherry picked from commit 2ff721ae07)
* Use metric name instead of metric in filter box (#7106)
(cherry picked from commit 003364e74e)
* Bump python lib croniter to an existing version (#7132)
Package maintainers should really never delete packages, but it appears
this happened with croniter and resulted in breaking our builds.
This PR bumps to a more recent existing version of the library
(cherry picked from commit 215ed392a1)
* Revert PR #6933 (#7162)
* [bugfix] SQL Lab 'Filter Results' doesn't stick (#7104)
When using a "Search Results" criteria, the subset of rows that match
the criteria get displayed. While this the filter is applied, if another
query is run, the filter is still active, but not displayed in the input
text box. After this change, the state of the input box sticks after
subsequent queries.
(cherry picked from commit d5e8d663dc)
* Injectable statsd client (#7138)
* Add ability to inject statsd client; some py test/reqs updates
- Updated the metrics logger to allow construction with an existing
statsd client, so that it can be configured by external systems or libs.
- added requirements to requirements-dev.txt which are needed to run
tests-eg coverage, nose
- removed dependency on mock lib, it is in python stdlib now
- updated tox.ini to remove the now-superfluous deps
* add license to test file, and remove blank line at EOF
(cherry picked from commit ba19a62412)
* [Lyft-GA] Enable color consistency in a dashboard (#7135)
* Enable color consistency in a dashboard
Moved actions, minor UI, allowed dashboard copy
Fix linting errors
Undo unintentional change
Updated and added unit tests
Fail quietly if package has not been updated
Fail quietly on dashboard copy if package is old
* Update packages
* Remove unnecessary code
* Addressed Grace's comments
* Small fix for item key
* Reset chart's color during exploration
* Do not reset chart form data when exploring chart
* Fix double scroll bars when content of sql result table overflows horizontally (#7168)
The PR substracts the scrollbar height from the height of the container of the react virtualized table so we don't see double scrollbars.
(cherry picked from commit 7ffcabd5c0)
* Change number format default
* Use smart formatter instead
* fix merge issues
* Use SMART_NUMBER
* Enable color consistency in a dashboard
Moved actions, minor UI, allowed dashboard copy
Fix linting errors
Undo unintentional change
Updated and added unit tests
Fail quietly if package has not been updated
Fail quietly on dashboard copy if package is old
* Update packages
* Remove unnecessary code
* Addressed Grace's comments
* Small fix for item key
* Reset chart's color during exploration
* Do not reset chart form data when exploring chart
* [security] make it easier to redefine Alpha/Gamma
While talking about some security aspect and as to how you'd alter Alpha
or Gamma role in a specific environment, I realized that these
module-scoped constants would be much more useful as class attributes.
This way, someone can override these sets in their security manager
to alter base roles.
* fix
* flake8
* fix: make vis type control handle unregistered type
* fix: hide when not needed
* fix: do not try to read controlpanelconfig for invalid type
* feat: add t
* [migration] Fixing issue with fb13d49b72f9 downgrade
This PR fixes an issue with the downgrade step of migration fb13d49b72f9 which wrongfully labeled the field `metrics` rather than `metric`.
to: @graceguo-supercat @michellethomas @mistercrunch
* Update fb13d49b72f9_better_filters.py
When using a "Search Results" criteria, the subset of rows that match
the criteria get displayed. While this the filter is applied, if another
query is run, the filter is still active, but not displayed in the input
text box. After this change, the state of the input box sticks after
subsequent queries.
* Add ability to inject statsd client; some py test/reqs updates
- Updated the metrics logger to allow construction with an existing
statsd client, so that it can be configured by external systems or libs.
- added requirements to requirements-dev.txt which are needed to run
tests-eg coverage, nose
- removed dependency on mock lib, it is in python stdlib now
- updated tox.ini to remove the now-superfluous deps
* add license to test file, and remove blank line at EOF
Package maintainers should really never delete packages, but it appears
this happened with croniter and resulted in breaking our builds.
This PR bumps to a more recent existing version of the library
* Add HTTP Basic Auth for Druid (Issue #4776)
This should resolve [Issue #4776](https://github.com/apache/incubator-superset/issues/4776)
Add HTTP Basic Auth to the Druid Broker.
Signed-off-by: Don Bowman <don@agilicus.com>
* Encrypt broker password in database
Signed-off-by: Don Bowman <don@agilicus.com>
* Merge from master, new migration needed
Signed-off-by: Don Bowman <don@agilicus.com>
* Do not expose hashed druid basic auth password
* docs: add description_columns for druid basic auth
This PR includes the following layout and css tweaks:
- Using flex to layout the north and south sub panes of query pane so resizing works properly in both Chrome and Firefox
- Removal of necessary wrapper divs and tweaking of css in sql lab so we can scroll to the bottom of both the table list and the results pane
- Make sql lab's content not overflow vertically and layout the query result area to eliminate double scroll bars
- css tweaks on the basic.html page so the loading animation appears in the center of the page across the board
* Bump sqla to >=1.3.1
* Refine mssql column types to only use N-prefixing when necessary
* make join explicit
* replace set with list
* Add additional test case for N-prefix
* Replace engine with dialect and fix linting error
* Remove unneeded import
* Bump FAB to 1.12.5
* [requirements] New dependency pyJWT added on FAB 1.12.4 for OAuth redirect
* [requirements] Fix, pip-tools bump to 3.5.0 related to #714
This PR removes the iteration over charts, dashboards and saved queries to create tags in the original migration, leaving only the logic to create the tags and the tagged objects tables.
Tested locally by running `superset db downgrade` to revert to the previous migration and then running `superset db upgrade` to the current version.
* Adding extraOverrides to line chart
* Updating extraOverrides to fit with more cases
* Moving extraOverrides to index.js
* Removing webpack-merge in package.json
* Fixing metrics control clearing metric
* initial commit for VIZ-58
* address @kristw's comments
* per @mistercrunch's comment to use a static list for now
* fix javascript test errors
* fix lint errors
* per @betodealmeida's comments
* remove unnecessary loop
* Allow for dynamic feature flags
Giving more control over feature flags, allowing administrator to define
custom logic around whether features are enabled for particular users /
roles.
The exposed function can be used for things like:
* progressive rollout of features (1%, 5%, 50%, 100%)
* experimentation
* role-based feature affectation (only admins see a particular feature)
* fix build
* Addressing comments
* Addressing @hughhh's comments
* Remove Cypress from package.json
I'm building some Docker images these days and realizing just how big
the Cypress package is. Looks like its ~500mb or so.
I prefer adding it as needed only as opposed to having to play tricks as
in `npm ci && rm node_modules/cypress`
* Pin cypress version
* Add script entry install-cypress
* bump cypress and fix ts-jest warning
In superset-ui 0.8.0, we used bignumber.js to transform numbers in chartProps' payload from plain 64-bit floats to BigNumber instances. This causes a number of charts to render incorrectly when comparison functions in the rendering algorithms operate on BigNumber objects instead of floats. This PR uses the preTransformProps step in SuperChart to transform BigNumber instances back to floats so charts can render properly.
This problem especially happens with pinot when you select two metrics
with different aliases but same function. For example, effectively the
sql like 'select type, count(*) as one, count(*) as two from bar group
by type'. In such a case, pinot will return two columns, both named
count_star.
So when we try to do a df['count_star'], the result is a Dataframe and
not a Series. This causes a KeyError in the get_df method.
So we push the DB specific label mutation inside get_df before we do any
other mutation.
* Force quotes on non-expression time grains on postgres
* Change to or semantics
* Return lower case column name as unmutated
* Add testcases for postgres time grains
* Make expression MixedCase
* Merge dataframe and column name mutation logic, add flag for disabling column aliases and add column name length checking
* Remove custome mutate_label from oracle spec
* Move hashing from mutate_label() to make_label_compatible()
* Remove empty line
* Make label mutating and truncating more robust
* Rename variables and make proposed changes from review
* Always execute labels_expected codepath
* Fix linting error
* Add comments and fix subquery errors
* Refine column compatibility
* Simplify label assignment
* Add unit tests for BQ and Oracle
* Linting
* Adding dropdown to DatasourceControl and ability to change datasource
* Style fixes
* Adding unit tests for datasource/get endpoint
* Fixing issue with dropdown overflow and style changes
* Fixing issues rebasing metadata button and fixing sort for datasource with no name
* Add show metadata button back to the explore view
- Add the show metadta button, accidentally removed from PR #6046, back to the explore view
- Remove dead code that is no longer reachable from DataSourceModal.jsx.
* Adding additional code back to make the button function and remove more dead code.
The problem with the previous solution was that the `npm ci` command
nuke the `node_modules` folder, including the `.cache` that was used by
default. By moving the cache out of `node_modules` we get to both run
`npm ci` and accelerate `TerserPlugin`
* Relayout SQL Editor
- Refactor SQL editor to remove usage of bootstrap col, row and collapse to simplify the layout
- Replace the react-split-pane libraray with react-split to allow custom styling of the gutter area without sacrifice correctness of the ace editor height calculation
- Rewrite the left pane animation via plain css transition and animate it to slide in and out
- General code and css clean up
* Smooth out the visual transition during dragging
(cherry picked from commit 19f82b729c7a939f12b1c5da6022c0fd76fa3ec9)
* Adjust how the height of the south pane is computed, fixing cypress tests
* Update webpack config to facilitate debugging charts via symlink and update babel plugin version
* update @superset-ui-legacy version
* update packages
* Speed up CI by caching TersetPlugin cache
This should accelerate the `npm run build` part of the build by ~5
minutes or so I believe.
* targeting terser-webpack-plugin/
* Make the target path of the superset logo configuable
There is a need to have the target path of the logo go to different places in different installations of superset. The PR makes the target path (after `/superset`) configurable via the LOGO_TARGET_PATH configuration key and sets the default to the existing `/profile/{{ current_user.username }}/`
* addressing pr comments
This PR introduces the backend changes for a tagging system for Superset, allowing dashboards, charts and queries to be tagged. It also allows searching for a given tag, and will be the basis for a new landing page (see #5327).
# Implicit tags
Dashboard, chart and (saved) queries have implicit tags related to their owners, types and favorites. For example, all objects owned by the admin have the tag `owner:1`. All charts have the tag `type:chart`. Objects favorited by the admin have the tag `favorited_by:1`.
These tags are automatically added by a migration script, and kept in sync through SQLAlchemy event listeners. They are currently not surfaced to the user, but can be searched for. For example, it's possible to search for `owner:1` in the welcome page to see all objects owned by the admin, or even search for `owner:{{ current_user_id() }}`.
Summary: Added limited support for visualizations with Pinot via
Sqlalchemy.
Pinot QL (PQL) is a bit weird and limited, and this patch hacks superset to
deal with that weirdness:
1. Pinot's grouping by time is best done as a long epoch. Grouping by a
time string is really slow and times out.
2. Pinot's response does not respect column aliases. So columns are not
named what they are expected to. So we remember the given column aliases
and then stamp them back onto the dataframe
3. Pinot's Json rest call does not return the output types. Instead
everything is cast to string. So when grouping by time, the group key
is integral and has to be treated specially when casting back to the
dataframe __timestamp column.
4. Finally, pinot does support grouping by on expressions. But those
expressions cannot then appear on the select clause. They are returned
regardless in the response. ie, 'select foo, count(*) from bar group by
foo' is okay, but 'select expr(foo), count(*) from bar group by
expr(foo)' ain't. One must use 'select count(*) from bar group by
expr(foo)'.
I also fixed a couple of things that looked like bugs to me: for
example, the row-ordering-limit should come at the end always.
Test Plan: Tested with the modified pinotdb sqlalchemy driver and an
internal pinot cluster. The pinotdb driver changes are in
https://github.com/agrawaldevesh/pinot-dbapi.
Pinot does not support orderby-limit for aggregated queries. To annotate
a query as an aggregate query, this patch adds a hint to the prepared
select statement that the pinotdb sqlalchemy driver then heeds.
Summary: We want to allow grouping by on expressions, including the
ability to select expressions (without group-by). The UI ain't good yet
.. it is not at the feature parity of say adhoc filters/metrics that
come with a nice text-box to edit the SQL. But
this suffices for my usecase for now.
(The UI would have to be redone ... but that would require some refactoring
to merge the AdhocFilter/Metric/Popover stuff such that it can be used
for this use case too.)
Also fixed a bug in the SelectControl freeForm selection.
Allow selecting all columns easily: Added a new Select-All special item
that users can select to make all the options in the selectable show
up.
The ability to group by arbitrary expressions is useful because now two
users don't need to create custom computed-fields for this.
Introduce a config DEFAULT_RELATIVE_END_TIME which is used when
computing the "Last X days". The default behavior (as currently) is to
let that be 'today', which actually means the 0th second of today. We
can also let it be 'now' which means the data as of now (ie at query
time).
Secondly, also introduce another config IS_EPOCH_S_TRULY_UTC, which
means that the logged time in epoch_s format is actually in UTC.
Currently (as the default) is that it it is in the local (superset
webserver) timezone.
** There is no backward incompatibility with thes config features since
the default behavior hasn't changed. **
Currently, we attempt to hide the nvd3 tooltips (if any were on screen) before we draw a new viz after rerunning a query. The hiding is done by selecting the first nvtooltip element and setting the opacity to 0.
This somtimes leave behind a trail of old tooltips if a tooltip is left behind by this nvd3 bug https://github.com/novus/nvd3/issues/1262. This PR modifies the behavior of how we clean up tooltips between rerun of queries by selecting all nvd3 tooltips and removing them all from the DOM before redrawing nvd3 vizzes.
* Revert "creating new circular-json safe stringify and replacing one call (#6772)"
This reverts commit 11a7ad00b7.
* Revert "Improve Unicode support for MSSQL (#6690)"
This reverts commit c44ae612df.
* Revert "Fix uniqueness constraints on tables table (#6718)"
This reverts commit c4fb7a0a87.
- Rename the default feature flags key in `config.py` to DEFAULT_FEATURE_FLAGS
- Merge default feature flags with user defined ones allowing the latter to overwrite the former
- Expose feature_flags for both server and client to use
- Add a utility method for checking whether a feature flag is on on server side
Summary: Superset code enforces (in Table crud view pre_add) that the
table is unique within <database, schema, table_name). Indeed in commit
15b67b2c6c (in 2016), the model was
updated to reflect that. However, it was never ported over to a
migration.
I am fixing that in this diff. I am choosing to make this be a new
migration instead of fixing an existing one since I want to fix existing
installations also cleanly.
I also considered removing the uniqueness constraint, but that won't
work: First because anyway there are other places where the <database,
schema, table> uniqueness is enforced in code. But also, the .sql field
isn't a first citizen yet: The schema of the table is picked up from the
table-name and the sql part is only used when creating the explore
query. So indeed we want this uniqueness constraint. (Also it breaks the
unit tests in dict_import_export_tests.py)
[Perhaps it can be removed when we have true .sql support, but for now
the user would have to create a database view and he can use that as the
'table name'. That way he gets schema inference also]
Also added INFO logging to the alembic migration.
* Add licenses
* More licenses
* Ignore messages.json as they are generated
* More licenses
* Also typescript
* Fix alignment
* Add to svg
* Many more licenses
* more licenses
* Better excludes
* Add licenses to docs and md files
* Pre-finalize licenses
* Fix newlines
* Finalize all sourde licenses
* Fix lint
* Making thrift, pyhive and tableschema as extra_requires
Looking at the dependency tree for license related questions, I noticed
that tableschema had a huge tree, and only people running Hive really
need it. Making this as well as pyhive and thrift optional.
Also bumping some python dependencies
* Run pip-compile
* Removing refs to past.builtins (from future lib)
* Add thrift
* update contributing based on SIP-13
* update link
* add labels instruction
* minor edit
* minor edit
* update table of content
* Add ASF header and update insructions
* update table
* update text
* Conditionally mutate and quote sqla labels decouple sqla logic from viz.py
* Prefix hashed label with underscore if bigquery label exceeds 128 chars
* Add comments for label cache
* Rename to mutated_labels and simply
* Rename mutated_label to get_label and simplify make_label_compatible in db_engine_specs
* Add note about deterministic and unique mutated labels
* add hash to label that has been prefixed with underscore
* Fix PEP8 escape warning
* Fix DeckPathViz get_metric_label call
* [cosmetic] remove margin-bottom on dropdowns
react-select components have been added 15px bottom-margin without a
good reason. Other controls like text or checkboxes don't have that,
making Selects look non-standard, add making the control list too
sparse.
My perspective is that all controls should have the same
padding/margins.
* Adding a few licenses
* [cosmetic] CRUD's list from 'Add Filter' to 'Filter Results'
* Add global new button
* A better viz type selector
* lint
* Move view to new module, add unit test
* 'Filter Results' -> 'Filter'
* db merge
* Filter -> 'Filter List'
* [WiP] deprecate auto-generated metrics & fix examples
Picking up some leftover pieces not needed anymore since the
MetricsControl
* db merge
* db merge
* fix migration
* Creating metrics required for tests
User @ravi on Slack reported issues trying to use url_param jinja macro.
explore_json would raise a "KeyError: 'url_params'".
The feature works when a parameter is passed, but fails hard when none
are passed.
I improved the docstring on the macro as well.
The "altered" tag in the explore view shows up more often than it
should. By treating null, [] {}, undefined as identical will help reporting
only the differences that matter.
- Clean up css and html of the sql editor button area (removing unused styles)
- Restyle the button area and the resizer to be more like the one proposed in issue 6565
* resolved merge conflicts with upstream
* changed the key in a spot I missed
* linting
* refactored my code out into a function
* update util
* simplified the code logic
* cleaned up code
Refactored deprecated functionalities:
- Used 'celery worker' command instead of 'superset worker' which is
deprecated since 0.26.0
- Used 'gunicorn' command instead of 'superset runserver'
Changed margin for the slices description in dashboard view, previously the margin was 5px for all the sides but for improve the view just apply margin for top and bottom.
* Fix: updated required cryptography version to 2.4.2 to resolve#6509
* Fix: updated cryptography version to 2.4.2 to resolve#6509
* Fix: updated cryptography version to 2.4.2 to resolve#6509
* Revert "Fix: updated required cryptography version to 2.4.2 to resolve#6509"
This reverts commit b57b08c8e5.
* Fix: updated cryptography version to 2.4.2
* [SIP-14] remove dependency on yarn in favor of npm
Find more details here
https://github.com/apache/incubator-superset/issues/6217
* Add core-js to dev deps
* lint
* fix cypress
* break down cypress_build.sh
* fix cypress
* Use 'npm ci' in place of 'npm install'
* Bump npm req to >=6.5.0
* Enforcing npm@'>=6.5.0'
* Using latest lts of nvm
* Make cache settings global
* remove uneeded 'npm run test' as 'npm run cover' takes care of that
* Prefix with 'time'
* Trying to upgrade babel-eslint instead of downgrading
* upgrading babel-polyfill to '@babel/polyfill'
* Moving to babel 7
* remove unused packages
When a URL gets too long (usually happens with controls that allow
free form text), it creates an array of bugs.
* bug when creating a short URL, because the POST request's referrer
field is too long
* a bug when saving a chart (when the modal shows up) also because of
the referrer being too long
Some work has been done in the past to mitigate this, and I'm unclear if
it's some sort of regression because of the Flask upgrade or some
browser change, or whether these bugs have always been around.
This is a request for comment on an approach that works. Let me know if
you can think of better ideas as to how to manage this.
My current solution looks for 8000+ characters URLs and shrinks them to
only `/superset/explore/?URL_IS_TOO_LONG_TO_SHARE&form_data=...` and we
only keep the formData keys for `datasource` and `viz_type`. Not super
elegant but does the trick.
* [scheduled reports] Add support for scheduled reports
* Scheduled email reports for slice and dashboard visualization
(attachment or inline)
* Scheduled email reports for slice data (CSV attachment on inline table)
* Each schedule has a list of recipients (all of them can receive a single mail,
or separate mails)
* All outgoing mails can have a mandatory bcc - for audit purposes.
* Each dashboard/slice can have multiple schedules.
In addition, this PR also makes a few minor improvements to the celery
infrastructure.
* Create a common celery app
* Added more celery annotations for the tasks
* Introduced celery beat
* Update docs about concurrency / pools
* [scheduled reports] - Debug mode for scheduled emails
* [scheduled reports] - Ability to send test mails
* [scheduled reports] - Test email functionality - minor improvements
* [scheduled reports] - Rebase with master. Minor fixes
* [scheduled reports] - Add warning messages
* [scheduled reports] - flake8
* [scheduled reports] - fix rebase
* [scheduled reports] - fix rebase
* [scheduled reports] - fix flake8
* [scheduled reports] Rebase in prep for merge
* Fixed alembic tree after rebase
* Updated requirements to latest version of packages (and tested)
* Removed py2 stuff
* [scheduled reports] - fix flake8
* [scheduled reports] - address review comments
* [scheduled reports] - rebase with master
* Use py3's f-strings instead of s.format(**locals())
In light of the bug reported here
https://github.com/apache/incubator-superset/issues/6347, which seems
like an odd `.format()` issue in py3, I greped and replaced all
instances of `.format(**locals())` using py3's f-strings
* lint
* fix tests
* [SIP-5] Build metrics in query_object in the client
- Unify the metric interface (absorb the current plain string metric for built-in metric keys into the format used by adhoc metric)
- Port the logic in adhocMetric on the client and process_metrics in the backend to the new typed Metrics class
- Omit hasCustomLabel and formFromData properties from the new metric interface as their value can be inferred from label and optionName
- Expose from the Metrics class both metrics and their labels as public methods to match the all_metrics and metric_labels fields in the backend code
- Provide defaut values for filters, metrics and groupby in the backend
* addressing PR comments
* Adding a comment for metrictype values
* Revise LoadableRenderer (+3 squashed commits)
Squashed commits:
[f1614c7c] extract createLoadableRenderer into a separate function
[8689bc94] extend LoadableRenderer
[3d04ff2b] remove skipRendering
* add number of times function was called to the test
- Unify the metric interface (absorb the current plain string metric for built-in metric keys into the format used by adhoc metric)
- Port the logic in adhocMetric on the client and process_metrics in the backend to the new typed Metrics class
- Omit hasCustomLabel and formFromData properties from the new metric interface as their value can be inferred from label and optionName
- Expose from the Metrics class both metrics and their labels as public methods to match the all_metrics and metric_labels fields in the backend code
- Provide defaut values for filters, metrics and groupby in the backend
* Deprecate database attribute allow_run_sync
There's really 2 modes of operations in SQL Lab, sync or async
though currently there are 2 boolean flags: allow_run_sync and
allow_run_async, leading to 4 potential combinations, only 2 of which
actually makes sense.
The original vision is that we'd expose the choice to users and they
would decide which `Run` or `Run Async` button to hit.
Later on we decided to have a
single button and for each database to be either sync or async.
This PR cleans up allow_run_sync by removing references to it.
* Fix build
* Add db migration
* using batch_op
- Improve Docker image
- smaller
- faster to build
- deterministict dependencies (see #5958)
- Rework process to simplify setting things up
- updated documentation
- less commands to type
- no files to move and modify
- optional loading of samples
- Still working in standalone mode (without volumes for superset)
* [bugfix] deckgl legend is not interactive
Somehow when clicking categories in the legend, nothing happened. The
problem seemed to be around the `getDerivedStateFromProps` override
which gets triggered after each render and would alter the state and
reset the categories state to their origin.
Changed the method name to not be an override and just be called once
in the constructor
https://reactjs.org/docs/react-component.html#static-getderivedstatefromprops
* lint
* Minor improvements to Histogram viz
* prevent legend overflow (spill) by simply hiding it
* legend title only includes metric name when necessary
* control validator asking forcing at least one numeric column to be
selected
* Removing print()
* Adding cypress tests for showing erros, time range filter, and verbose name
* Adding tests for time range without ago
* Adding test to verify error message showing
* [bugfix] deck.gl grid&hex don't respond to zoom&drag
Following recent changes, Hex & Grid component wouldn't respond to
viewport interactions. This fixes the issue.
This PR also greatly improve rendering performance by only recomputing
the deck.gl layers when needed, as opposed to every time the viewport
changes, which is very inneficient.
Note that most other deck.gl layers seem to be systematically
recomputing layers, we'll have to fix this in another PR.
* Addressing comments
* [SIP-5] QueryBuilder in the client for groupby field
- Lay the structure of the QueryContext builder in the client
- QueryContext builder composes different portions of the queryContext object (to be sent to server from the client) from the datasourceBuilder and the queryObjectBuilder.
- The datasourceBuilder builds the datasource id and type by parsing them from the datasource field in formdata
- The queryObjectBuilder currently only builds the groupby field. It will further compose the queryObject from sub query builders in future PRs.
- Create a buildQuery method for WordCloud and override the groupby value with the value of series from formdata.
* Addressing PR comments
- Rename query builder files and their default exports
- Move tests into spec/javascripts/superset-ui for easy mass migration to superset-uiin the future
- Define viz specific formData and export formData for each viz type as intersection type of the generic formData and the viz specific one
- Specify the type signature for sqla and druid based data sources
* Addressing additional PR comments.
- Introduce a Datasource class and leverage Typescript's declaration merging of the interface
by the same name.
- Let Typescript infer the return type of various builders instead of specifying them explicitly
* Further tweaking the generic buildQueryContext method and viz speicific buildQuery methodes per PR comments.
* git mv a renamed file.
* addressing additional pr comments
* Update the description based on Ubuntu 16.04 with 18.04,
since Python version bundled with the former is 3.5,
which is not already supported
* Remove obsolete descriptions based on Python <= 3.5
Since https://github.com/apache/incubator-superset/pull/6287 and
effectively moving to a new version of d3, d3-format and d3-time-format
raises when receiving invalid input strings.
This code wraps the potential issues inside `try` blocks that will
effectively return an `ERROR` string as output to the formatting
function.
When hitting the Query button in the explore view, the previous chart
gets shown (flaskhed quickly) between the moment where the loading
spinner goes away and the new chart show up. This fix seems to prevent
this.
* Fix EventFlow transform is not a function
transformProps was being passed into EventFlowChartPlugin as object (module) as opposed to function. This commit changes the implementation to be consistent with the other ChartPlugins and fixes the typeError that causes EventFlow Chart to not display.
* Revert to lazy-loading transformProps
- Revert to lazy-loading transformProps
- Fix in Superchart will default to transformProps.default if available to allow for the lazy-loading
* Fix for lazy-loaded imports in ChartPlugins
* Fix lint error
* Add d3 micro packages
* Replace d3 imports with specific modules import
* Define d3 colors
* import specific d3 submodules instead of entire d3
* update function name
* move function location and fix small bug
* Move primary color to control
* remove colorscalefactory usage
* remove unused d3
* fix unit test
* fix color picker
* use @superset-ui/color
* update package version
* remove files that are extracted
* replace all references
* fix two files
* Revert some changes to split to another PR
* remove adaptor
* Address Christine's comment
* remove d3 v3 from calendar
* remove d3.scale.threshold
* Get rid of colorScalerFactory and revise hexToRGB
* fix color cleaning
* fix lint
- Datasource ids are being serialized into strings on the client side and python's default json.load doesn't deserialize strings representing integers as integers. Adding an integer parsing step when initializing QueryContext.
* Wrap <LoadableRenderer /> with <ErrorBoundary />
It appears that since the introduction of <SuperChart />, errors in the
visualization javascript (which are somewhat common and expected,
especially as we'll support plugins) were not handled and the whole
page would throw and go missing.
Here I'm introducing a new <ErrorBoundary /> component that elegantly
wraps other
components and handles errors. It's inspired by:
https://reactjs.org/docs/error-boundaries.html
The default behavior of the component is to simply surface the error
as an <Alert bsStyle="danger" /> and exposes the React stacktrace
when clicking on the error.
It's also possible to use component and pass an onError handler and not
show the default message.
This also fixes some minor bugs in TimeTable.
* Addressing comments
* Getting more stack traces
* Adressing comments
If you follow the documentation, the current docker instructions return an error when trying to connect via localhost. This seems to be due to the fact that it's running on port 8080, but forwarding port 8088. I suppose the cleaner solution is to do this, as opposed to changing both the compose file and the instructions... Hope this helps!!
* [SIP-5] Open a new /api/v1/query endpoint that takes query_obj
- Introduce a new handle_superset_exception decorator to avoid repeating the logic for catching SupersetExceptions
- Create a query_obj_backfill method that takes form_data and constructs a query_obj that will be constructed in the client in the future. Use the backfill in explore_json.
- Create a new /api/v1/query endpoint that takes query_obj only and returns the payload data. Note the query_obj is constructed in the client. The endpoint currently only handles query_obj for table view viz (we'll be adding support to new viz types as we go).
- Unit test to verify the new endpoint for table view
* fix tests and lint errors
* - Move the new query endpoint into its own api.py view.
- Create QueryObject and QueryContext class to encapsulate query_object to be built from the client and additional info (e.g. datasource) needed to get the data payload for a given query
- Remove the query_obj_backfill as we'll start building the first query_object on the client so it no longer makes sense to have a short-lived backfill for the matter of days.
* Fixing lint and test errors
* Fixing additional lint error from the previous rebase.
* fixing additional lint error
* addressing additional pr comments
* Make /query accept a list of queries in the query_context object.
* fixing a lint error
* - Move time_shift based calculation and since, until check into util
- Add typing info for get_since_until
- Add new unit tests to verify time_shift calculation and the since until check
* Wrap <LoadableRenderer /> with <ErrorBoundary />
It appears that since the introduction of <SuperChart />, errors in the
visualization javascript (which are somewhat common and expected,
especially as we'll support plugins) were not handled and the whole
page would throw and go missing.
Here I'm introducing a new <ErrorBoundary /> component that elegantly
wraps other
components and handles errors. It's inspired by:
https://reactjs.org/docs/error-boundaries.html
The default behavior of the component is to simply surface the error
as an <Alert bsStyle="danger" /> and exposes the React stacktrace
when clicking on the error.
It's also possible to use component and pass an onError handler and not
show the default message.
This also fixes some minor bugs in TimeTable.
* Addressing comments
* Add separate limit setting for SqlLab
Use separate param for wrap sql
Get query limit from config
unit tests for limit control rendering in sql editor
py unit test
pg tests
Add max rows limit
Remove concept of infinity, always require defined limits
consistency
Assert on validation errors instead of tooltip
fix unit tests
attempt persist state
pr comments and linting
* load configs in via common param
* default to 1k
* change because error: E: The method driver /usr/lib/apt/methods/https could not be found.
要提交的变更:
修改: contrib/docker/Dockerfile
* 修改: contrib/docker/Dockerfile
* [build] fix pip install issues on OSX High Sierra
I think requirements.txt was out-of-sync as well.
Also had to:
export
LDFLAGS="-L/usr/local/opt/openssl/lib"
export
CPPFLAGS="-I/usr/local/opt/openssl/include"
export
PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"
* Fix click
* setup plugin and add SuperChart
* Integrate SuperChart into Chart.jsx
* Add vizType as class name
* Remove .slice_container
* add snakeCase to sanitize class name
* Remove old code to load charts
* Fix supportedAnnotationTypes
* Update AnnotationTypes, remove unnecessary imports and dependency from VIZ_TYPES
* remove index.js and update unit test
* resolve tree map issue
* fix issue with annotation types
* fix proptypes
* add )
* address a few comments
* create bound functions
* bound more functions
* add reselect
* use reselect for chartprops
* improve performance with reselect
* remove unused props
* Remove getFilters() and update table test
* Remove unused code
* Delete adaptors
* switch to react-loadable
* Rewrite with reloadable
* Add timeout back
* remove loading
* update table unit test
* remove pastDelay
* WIP
* WIP
* WIP
* WIP
* Fix color bucketing
* Fixed colors
* Fix no num categories selected
* Colors working
* Fix no metric selected
* Visual cues for selection
* Add unit tests
* Remove jest from deps
* Rename category to bucket
* Small fixes
* Fix lint
* Fix unit tests
* Remove duplicate hexToRGB
* Fix import
* Change order of arguments in getBuckets
* Refactor function signature
* [Dashboard] disable force refresh when chart is still loading
- disable force refresh for chart, when chart is still loading
- disable force refresh for dashboard, when any one of chart is loading
* remove css change (introduced by mistake)
* add integration tests for disable/enable force refresh
* [SIP-9] Introduce TypeScript
- Introduce TypeScript and co to both source and tests
- Define alias for src directory in both webpack config and jest config so we can avoid using long relative paths like ../../src in both source and tests
- Type check feature flags system to prevent typos of flag names
- Change the feature flags system and the flags on window instead of populating them through the state tree. When introducing the first SCOPED_FILTER feature flag, it became too difficult to pipe the flags through the state initializers and layers of components and containers (the resulting code is hard to read and has a handful of methods taking an additional feature flag map parameter). Given that feature flags don't change throughout the life time of the app, it is better to leave them on window for easy access than piping them through the global state tree, which is meant to store the state of the app which changes frequently.
- Add a barebone filter panel that only shows when the SCOPED_FILTER feature flag is on
* Remove unnecessary dev-dependency on gl
* - Adding linting for TypeScript files via tslint.
- Fixing linting for Javascript files importing Typscript files
- Also fix linting for Javascript files that now leverage the webpack alias for the src directory
- up Typescript and type def versions
* Rename src directory's webpack alias from @ to src to be more explicit.
* refactor color scheme
* Update data structure
* Update color scheme files
* wip
* convert all sequential schemes
* Update how color schemes are managed. Extend it for sequential schemes
* extract color setup into separate file
* Update imports
* update imports
* Add new functions to Registry
* Update ColorSchemeManager to extends Registry and update unit tests
* Add test for Registry
* Rename ColorSchemeManager to ColorSchemeRegistry
* Fix unit tests
* Update API
* Fix imports
* Add label field
* Fix reference to colors
* update SequentialScheme contructor
* Fix controls
* rename manager to registry
* Split sequential schemes into multiple files
* update sequential color labels
* add values and valuesAsPromise()
* use .values()
* rename basicChartInput to chartProps
* replace BasicChartInput with ChartProps class
* Add transformProps to deck.gl plugins
* Add space
* delete BasicChartInput
* add width and height as part of ChartProps and update transformProps
* remove width and height
* remove adaptors from deck.gl components
* remove deck.gl creataAdaptor
* use parent size to compute width
* simplify this.width() and this.height()
* remove unnecessary jquery
* fix indent and import
* adjust headerheight from 100 to 80
* fix test
* [utils] gathering/refactoring into a "utils/" folder
Moving current utils.py into utils/core.py and moving other *util*
modules under this new "utils/" as well.
Following steps include eroding at "utils/core.py" and breaking it down
into smaller modules.
* Improve tests
* Make loading examples in scope for tests
* Remove test class attrs examples_loaded and requires_examples
* [refactor] Migrate from Mocha+Chai to Jest
This change migrates all the existing unit tests
- to Jest's global expect and matchers from chai's imported expect, asserts and matchers.
- to Jest's describe/test from mocha's describe/it
The majority of the mechanical changes to tests are achieved through running jest-codemods. The only two note-worthy manual tweaks:
1. Setting a testURL of http://localhost in jest config and adjusting a few tests to leverage this value instead of relying on about:blank.
2. Re-enabling ExploreChartPanel_spec which was previously commented out as we cannot have empty tests with nothing in it with Jest. :)
This change also removes dependencies to Mocha and Chai.
* Remove the test:one command as it now does the same thing as test.
* Fixing lint errors. The diff looks large but is large done through `yarn run lint --fix`
The only noteworthy change is the one in eslintrc for tests. The env has been updated from mocha to jest.
* Adding eslint-plugin-jest and further modify tests.
- One small fix in sqllab's Timer Spec for a test that is not using the spy it created for testing.
- Deletion of a duplicated test caught by eslint-plugin-jest.
* - Make istanbul coverage work with Jest.
- Remove dependency on stand-alone istanbul and babel-istanbul as they're built-into jest. Yes!
* Attempt to fix dynamic imports in tests.
* run sequentially and log heap usage
* - tweaking maxworkers for travis and specifying coverageDirectory for codecov
- remove dynamic import in shim.js now that it is set in babelrc for tests only.
* add credit field
* change image size limit for url-loader
* create chord ChartPlugin
* Update config to include original file name in the output
* add calendar
* add country map
* add eventflow
* add thumbnails
* add eventflow, filterbox, force-directed and heatmap
* Add histogram, horizon, mapbox, paired t-test, parallel coordinates
* Create plugins for the rest one-off charts
* ignore chartplugin files from istanbul
* feat: import/export dashboards via cli
* style: fixed lint error
* test: added test for import and export util
* test: removing import test as it is causing integrity issues
Import is a wrapper around exist functionality so we can go ahead without a test or mock the actual db operation using https://docs.python.org/3/library/unittest.mock.html
And validate the wrapper operations only.
* test: remove test data file
* test: removed usage of reserved keyword id
* Fix: remove test that is causing unintended impact
* add unit tests
* add test structure
* add unit tests for Registry
* add LoaderRegistry unit test
* add unit test for makeSingleton
* add type check
* add plugin data structures
* simplify API
* add preset tests
* update test message
* fix lint
* update makeSingleton
* update Plugin, Preset and unit test
* revise Registry code
* update unit test, add remove function
* update test
* update unit test
* update plugin unit test
* add .keys(), .entries() and .entriesAsPromise()
* update test description
* Allow user to force refresh metadata
* fix javascript test error
* nit
* fix styling
* allow custom cache timeout configuration on any database
* minor improvement
* nit
* fix test
* nit
* preserve the old endpoint
* Deprecate support for Python < 3.6
This is a first step, beyond this we can:
* remove all from future imports
* remove 'six' lib as a dependency
* start using f-strings
* enjoy ourselves
* fix tox
* Rebasing
* fix
* Add integration test for world map
* add pie chart
* add area
* use should for assertion
* update area test
* update it message
* remove null params
* add pivot tests
* remove urlparams
* add dual_line
* add sunburst test
* add big number
* add sankey
* add bubble
* add box plot
* add treemap tests
* combine all vis under single test
* feat: import/export dashboards via cli
* style: fixed lint error
* test: added test for import and export util
* test: removing import test as it is causing integrity issues
Import is a wrapper around exist functionality so we can go ahead without a test or mock the actual db operation using https://docs.python.org/3/library/unittest.mock.html
And validate the wrapper operations only.
* test: remove test data file
* test: removed usage of reserved keyword id
* [feat] Feature flag system via config
Adding a feature flag system that is driven by superset_config.py. This change includes:
- Server side changes to specify a dedicated FEATURE_FLAG dictionary for listing feature flags. E.g.
```
FEATURE_FLAGS = { 'SCOPED_FILTER': true }
```
- Pass the new feature flags to client via bootstrap-data
- Client side changes to inject feature flags into the redux state tree for dashboard, explore view and SqlLab
- Client side refactor/clean up so the feature flags can be properly tested. Also avoid modifying incoming bootstrap data when creating initial state for the redux state tree
- Re-enable tests that were previously disabled for ExploreViewContainer
* Fix lint errors.
* Remove the partial attempt to get reference to src working in tests (so we don't have to write ../../../src and such in tests). This will in a separate PR.
* add configuration for optimizing webpack
* resolve webpack cli issue
* Update outdated packages
* extract brace as its own chunk
* update comments
* add list of libs to skip parsing
* remove some libs from list
* remove noParse
* remove lodash.throttle from dependency
* add babel-plugin-lodash'
* use lodash instead of underscore for isFunction
* switch underscore to lodash
* switch from underscore to lodash flatten
* Remove slugify and use kebabCase from lodash instead
* [explore] add "View samples" modal to action buttons
Also broke down the `View query` and `View results` as different
request so that viewing the query does not require fetching the results
anymore
* fix js tests
* lint
* [docs] iterating to get to ASF compliance on project site
https://whimsy.apache.org/pods/project/superset is a place to check on
whether we match the ASF's requirements
* Minor adjustments
* Add schema level access control on csv upload
* add db migrate merge point
* fix flake 8
* fix test
* remove unnecessary db migration
* fix flake
* nit
* fix test for test_schemas_access_for_csv_upload_endpoint
* fix test_csv_import test
* use security_manager to check whether schema is allowed to be accessed
* bring security manager to the party
* flake8 & repush to retrigger test
* address comments
* remove trailing comma
- Reorganize sections for better navigability
- Add table of contents
- Rework frontend assets section for clarity and DRY
- Rework translating section for clarity, add "Add Translations" contribution type
- Move release docs only useful for maintainers to RELEASING.md
- Other miscellaneous improvements
* reactify world map
* add createAdaptor
* fix typo
* add schema
* move directory
* remove unnecessary lines
* make setRef a function
* convert keys to camelcase
* add unit test
* update formatting
* add check for displayName
* pass width and height as separate inputs
Ignoring history.pushState handling errors as they are impredictable and
crash the application hard.
I'm thinking this may be because the payload object is too big and the
browser is unhappy about it. I'm not sure if the payload/state is ever
used (when hitting back?). The error seem to stop when replacing payload
by an empty object.
* [refactor] Remove dependency to personal fork of supercluster from mapbox visualizations
- Update dependency to reference the vanilla supercluster
- Clean up backend api call for mapbox vizzes to ensure a boolean is sent to indicate whether the viz includes custom metric for clustering
- Refactor of mapbox and its cluster overlay components to use vanilla supercluster and its recommeded way for handling clustering based on custom aggregations.
- Allow reclustering within the initial bounds on render in mapbox visualizations (stay true to old behaviors).
- Remove the median aggregation from available cluster label aggregators as there is no memory efficient way to implement this and it is unknown how often this feature is used
- Updating doc to mention the backward incompatible change re median
* Perform the check for has_custom_metric through `not None` to produce a boolean and rename the field reflect it is a boolean.
* Adds new macro to get filter values from "filters" and "extra_filters"
Adds test for filter_values macro
Adds doco for filter_values
Changes filter_values return type to be a list rather than string
* Makes return value type consistent
- filter_values always return a list
* move into folder and scaffold adaptor
* extract width and height
* remove jquery
* extract showBrush
* extract lineInterpolation
* extract xAxisFormat and yAxisFormat
* extract annotationData
* extract xTicksLayout and colorScheme
* extract showXXX
* extract x and y axis labels
* extract showminmax
* extract pie chart props
* extract area chart props
* extract logscale and yAxisBounds
* extract margin
* extract bubble props x,y,size
* extract contribution, comparisonType and color_picker
* remove the last fd.xxx
* remove unnecessary variables
* remove slice.container
* fix unit test reference
* Rewrite logic to compute max label lengths to use only d3, not jquery.
* extract annotationLayers and no more slice.xxx in nvd3vis
* rename x, y, size to xField, yField, sizeField
* use arrow function
* move tooltip function
* extract helper functions into utils
* remove unused argument
* fix height calculation and show bar labels
* rename function
* update unit test
* organize tooltip generator
* update line_multi
* Add proptypes for data
* list proptypes for data
* extract tooltip function for bubble chart
* rename variables
* remove console.log
* enumerate vizTypes and pieLabelType
* parse maxBubble
* use new color scale
* fix import"
* remove line
Somehow checking the type of a JSX-defined React component is not
straightforward and changes through versions of React.
Using the `name` attr addresses the issue for now.
* Break TimeTable into smaller pieces
* extract function to compute color
* Handle height and scrollbar
* sort out isGroupBy
* Set default values
* Specify proptypes for data
* rename fields and update proptypes
* Add default props
* remove commented line
* swap import
* Enable Teradata
New DB engine spec for Teradata:
- LimitMethod should be WRAP_SQL since Teradata does not supporting "LIMIT" clause (TOP)
- Timegrains for Teradata is added
* Update formatting to pass flake8 tests
Since the recent PRs around webpack 4 and reloading, FAB pages have been
flickering on load, where a themeless Superset is shown for a fraction
of a second until the bootstrap theme gets loaded up.
This addresses it by moving the theme JS to the head section of the html
page.
* Create new classes for handling categorical colors
* verify to pass existing unit tests
* separate logic for forcing color and getting color
* replace getColorFromScheme with CategoricalColorManager
* organize static functions
* migrate to new function
* Remove ALL_COLOR_SCHEMES
* move sequential colors to another file
* extract categorical colors to separate file
* move airbnb and lyft colors to separate files
* fix missing toFunction()
* Rewrite to support local and global force items, plus namespacing.
* fix references
* revert nvd3
* update namespace api
* Update the visualizations
* update usage with static functions
* update unit test
* add unit test
* rename default namespace
* add unit test for color namespace
* add unit test for namespace
* start unit test for colorschememanager
* add unit tests for color scheme manager
* check returns for chaining
* complete unit test for the new classes
* fix color tests
* update unit tests
* update unit tests
* move color scheme registration to common
* update unit test
* rename sharedForcedColors to parentForcedColors
* remove import
* Pan mapbox map on query
- Modify the backend to send back the bounds of the points to cluster
- Clean up of mapbox component to derive lat, lon and zoom from the mercator that fitsbounds based on the bounds passed from the backend. This and the computation of clusters are now only done on initial load b/c we are not making queries to the backend on pan/zoom
- A minor clean up of unused props and also making the visual properties panel open by default
* Remove default latitude, longitude and zoom props which are unnecessary for computing the viewport now that it is driven by the bounds from the backend.
* a few small tweaks (rename vars to be sneak case and avoid two extra hash lookups)
* Bumping react==16.4.1 & enzyme==3.3.0
The upgrade was pretty smooth except for a cryptic message coming
out of react-select around running multiple copies of React. It turns
out the `common` bundle had React and was conflicting with explore and
dashboard apps, only in 16.x. This somehow wasn't a problem in 15.x
outside of the wasted resources.
Running 16.4 should bring in all sorts of perf improvements and features
we've all been waiting for.
https://reactjs.org/blog/2017/09/26/react-v16.0.html
TODO: react-bootstrap-datetimepicker isn't compatible with React 16
* Trying to deprecate react-bootstrap-datetime
* Moving forward
* Reintroducing tests
* [sql_json] allow not specifying client_id
We're opening the sql_json endpoint at Lyft to other apps leveraging
Superset as a data-access layer that enforces authentication and our data
access policy.
Currently sql_json requires the client to pass a `client_id` parameter
that uniquely identifies the query, that can then be used for polling
when in async mode. This PR makes it such that you don't have to define
a client_id anymore. It just gets generated when not passed.
* adressing comments
* Break MapBox into smaller pieces
* Replace React.createElement with regular jsx
* detach setControlValue
* enable render trigger
* Pass explicit props rather than pass all that exists in payload.data. Also use formData when possible.
* Rename sliceWidth, sliceHeight to width, height. Use deconstructor. Extract function.
* use arrow function
* fix linting and remove css
* Extract slice and formData
* indent
* update data proptype
* enable theme
* remove legacy code
* rename file
* Add legend
* Implement WithLegend
* align legend items to the right for bottom position
* add line at end of file
* fix linting issues
* bug: don't show query overlay when panning mapbox maps
Since we don't want to prompt user to rerun query every time they pan a map, prevent the query overlay from showing by setting dontRefreshOnChange for viewport_latitude and viewport_longitude controls.
* Prevent query overlay on viewport zoom also.
* setup devserver with correct proxy
* dev server wroking with written manifest
* add comments
* Change webpack to default port 9000 and minor js formatting
* Use hash in development.
* write to disk = true
* Take ports as argument for dev-server
* update instructions
* update instructions
* add devtools
* use mode instead of NODE_ENV
* use minicssextract for prod (like before)
* remove empty line
* Replace dataframe label override logic with table column override
* Add mutation to any_date_col
* Linting
* Add mutation to oracle and redshift
* Fine tune how and which labels are mutated
* Implement alias quoting logic for oracle-like databases
* Fix and align column and metric sqla_col methods
* Clean up typos and redundant logic
* Move new attribute to old location
* Linting
* Replace old sqla_col property references with function calls
* Remove redundant calls to mutate_column_label
* Move duplicated logic to common function
* Add db_engine_specs to all sqla_col calls
* Add missing mydb
* Add note about snowflake-sqlalchemy regression
* Make db_engine_spec mandatory in sqla_col
* Small refactoring and cleanup
* Remove db_engine_spec from get_from_clause call
* Make db_engine_spec mandatory in adhoc_metric_to_sa
* Remove redundant mutate_expression_label call
* Add missing db_engine_specs to adhoc_metric_to_sa
* Rename arg label_name to label in get_column_label()
* Rename label function and add docstring
* Remove redundant db_engine_spec args
* Rename col_label to label
* Remove get_column_name wrapper and make direct calls to db_engine_spec
* Remove unneeded db_engine_specs
* Rename sa_ vars to sqla_
* update indent
* extract formData and data.
* take filter
* remove dependencies
* remove removeFilter
* add comment
* remove columnFormats and verboseMap from props. clarify a few more props
* fix linting issue
* minor syntax
* syntax fix
* Move check to adaptor
* update unit test
* remove code related to .widget
* rename variables for clarity
* move Option fix to browser.js
* add column to annotation model
* update migration file
* change to Text
* remove old migration file
* add migration file
* remove JSON
* add new column to view
* add comma back
* linting
* lint some more
* missing comma
* rename columns
* add degrade and new migration file
* update version
* fixe changed name
* remove json from list columns
* Bug: fixing async syntax for python 3.7
Rename async to async_ so superset installs for python 3.7.
* Addressing PR comments. Use kwargs instead of explicitly specifying async_ so downstream engines (e.g. PyHive) that supports async can choose to use the async_ in pythonwq3.7 and async in <=python3.6
* addressing additional pr comments
* allow user to choose color
* add color control
* remove rgbToHex reference
* change to color picker control
* add d3-color
* remove module
* use d3-colors
* add semicolon
* [bugfix] geohash lat/long is reversed
This allows support for reversing geohashes. Note that the default option
was the wrong way.
* addressing comments
* make reverse_geohash_decode a staticmethod
* Field names in big query can contain only alphanumeric and underscore
* bad quote
* better place for mutating labels
* lint
* bug fix thanks to mistercrunch
* lint
* lint again
I noticed that `secondary_metric` was required in the chart that users
it, namely sunburst, parallel coordinates, and world_map.
I set the control as allowing null, and found related bugs in the
process:
* parallel coordinates did not have support for the new MetricControl
* added color scheme support for parallel coordinates
* added option to set row_limit on these viz types
* sunburst to support numeric columns (number would show as blank)
* Remove "for"
* add space
* Separate control to select table from database and schema.
* Adjust schema displays
* Fix caret and arrow position in Select and Tab
* Reduce space after caret in tab header
* Use translator
* Align icons in the pop-up menu in Sql Lab
* Add new table in front of the list (so it will appear on top)
* shorten message
* reduce line
Somehow we have a "IN" filter where the filter is a string, not an
array. While this may need to get fixed upstream as well, this prevents
the explore view from completely crashing.
Side note: this function looked somewhat brittle, I'm assuming it's used to keep
the free form SQL tab in sync and not used to generate the actual SQL
being executed.
* Fixing issue with extra params in formData
* Pass in param use_slice_data to decide whether to use slice data
* Fixing core_tests to not use explore_json overrides
I think that the only place where we want db connection pooling would be
to talk to the metadata database. SQL Lab should close its connections
and never pool them.
Given that each Gunicorn worker will create its own pool that can lead
to way too many connections opened.
closes https://github.com/apache/incubator-superset/issues/4666
* got skeleton started
* added d3-scale-chromatic to package.json
* got hex values instead of calling from a function
* got rid of d3-scale-chromatic - no longer needed
* added schemas to controls
* damn editor broken some line spacing
* commit
* fix style issues
* whyyyyy won't this build
* whyyyyy won't this build
* damn typo
* hahaha got editor to deal with style configs
* no i guess i didn't
* gotta get them all
* again
* trying to get docker build ot work
* updated installation docs with some osx instructions
* restoring yarn.lock not sure why it changed
* trying to fix indent
* trying again
* CODE STYLE CHANGES WORK
* removing some colors that are too close to white
* human readable labels for names
* human readable labels for names
* Allow min/max value for the sparkline in time series table
* show bound lines
* User can choose to show y-axis bounds
* show label for the bounds
* compute necessary padding for the bound label
* extract sparkline code to another component
* can show y-axis in sparkline without setting bounds
* reorder option rows
* Template dashboard
* Fix MySQL test
* Model for user attributes
* Redirect to welcome dash
* Fix lint
* Add missing file
* Add migration script
* Fix lint
* Fix more lint
* update python version for testing to 3.6
* CONTRIBUTING.md states pull requests should work on py27, py36+
* CONTRIBUTING.md states pull requests should work on py27 and py36
* Improve URLs for Chart and Dashboard ModelViews
Prior to this, the ModelView for Chart and Dashboard would be
at `/slicemodelview/list/` and `/dashboardmodelview/list/`.
Now we have cleaner URLs at `/chart/list/` and `/dashboard/list/`
* Fix unrelated js lint
* addressing comments
* Add function to fix dataframe column case
* Fix broken handle_nulls method
* Add case sensitivity option to dedup
* Refactor function definition and call location
* Remove added blank line
* Move df column rename logit to db_engine_spec
* Remove redundant variable
* Update comments in db_engine_specs
* Tie df adjustment to db_engine_spec class attribute
* Fix dedup error
* Linting
* Check for db_engine_spec attribute prior to adjustment
* Rename case sensitivity flag
* Linting
* Remove function that was moved to db_engine_specs
* Get metrics names from utils
* Remove double import and rename dedup variable
* Re-add dashboard short links
* Make the short link available to all users
* Include filters in the short link for dashboards
* Remove duplicate key causing linter error
* Change URL Short link button into a menu item with Modal
* Split out tests, bind URL short link in constructor
* [sql lab] simplify the visualize flow
The "visualize flow" linking SQL Lab to the "explore view" has never
worked so great for people, here's a list of issues:
* it's not really clear to users that their query is wrapped as a
subquery, and the explore view runs queries on top of it
* lint + fix tests
* Addressing comments
support toggling trend line
experiment using svg to measure size instead of canvas
refactor BigNumber with chart sticked to the bottom
made header line stick to bottom and css adjustment
remove commented code
fix svg text size estimation
remove unused code and round dimensions
handle missing getbbox
remove vx/text from dependency
ensure svg deletion after measurement
add comment to css file.
Add `positive` and `negative` class based on diff.
Add default props.
rename variable
accept container as argument and remove redundant font family
refactor visutils for consistent api
update xy-chart
update xy-chart to alpha1.0
fix pointseries
remove points
update yarn.lock
[4c9c01d7] update xy-chart version
remove unused import
* Add interim grains
* Refactor and add blacklist
* Change PT30M to PT0.5H
* Linting
* Linting
* Add time grain addons to config.py and refactor engine spec logic
* Remove redundant import and clean up config.py
* Fix bad rebase
* Implement changes proposed by @betodealmeida
* Revert removal of name from Grain
* Linting
* [sql lab] extract Hive error messages
So pyhive returns an exception object with a stringified thrift error
object. This PR uses a regex to extract the errorMessage portion of that
string.
* Unit test
* Visualization Unicode bug fix
* Fix the build (#5403)
The travis build has been failing for 2 reasons recently
* pylint takes > 10 minutes without outputing
* bad merge confict auto resolve in controls.jsx
* Visualization Unicode bug fix
* Move flake8-related packages deps to reqs-dev.txt
My VIM which is integrated with flake8 wouldn't match the output from
travis and would often miss things related to the flake8 plugins
installed using Tox.
By moving this to requirements-dev.txt, we can expect developers would
have the proper configuration locally and get matching results with
Travis when running flake8 or in their IDEs if its integrated with
flake8..
* merging migratinos
* sorting packages
* Specify folder for flake8 processing
* pin pycodestyle==2.3.1
* merge db migrations
Somehow it's not possible to set the row_limit for a line chart,
resulting to a 10k cap in our environment. In some cases the user may
want more than that.
The flow to import a table definition in Superset is confusing, user may
think they are creating a table or what not. This makes the flow a bit
more clear.
* Migrate flask_script to the Flask built-in click.
Flask 0.11 is the built-in integration of the click command line interface.
Flask-Migrate support for the new Flask CLI based on Click after Release 2.0.0.
* Resolved merge conflicts.
* Fixed issue introduced from bad merge.
* Fixed flake8 errors, added build to excluded flake8 stuff.
* * Moved the FlaskGroup declaration to the driver script.
* Moved shell context definition to cli.py
* Switched shell context definition to use decorator.
* Moved create_app definition to cli.py
* Fixed InvocationError with a wrapped function
* Added extra newlines between functions
* Removed flask-script dependency.
The dashboard page bootstrap data currently attempts to generate the
`SELECT` statement with column name details for each table represented
in the dash. This means it calls the database(s) and waits for column
details prior to returning any HTML.
This makes the default select_star property generate a simple
`SELECT *` with no column details instead, which doesn't require
interogating the DBs.
* [perf] add webpack 4 + SplitChunks + lazy load visualizations (#5240)
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* [webpack 4][istanbul] ignore visualizations/index.js
* [webpack 4] fix rebase bug, update dashboard/deprecated/chart/Chart.jsx to use vis promises.
* [webpack 4] lint and test
* [webpack 4] yarn.lock
* WIP
* Working version
* Clean code
* Fix lint
* Fix unit test; show only for sqla
* Working on UX
* Dropdown working 66%
* Working but needs CSS
* Fixed table
* Fix lint
* Fix unit test
* Fix languages path
* Fixes
* Fix Javascript lint
Moving to using Twine to upload to pypi and fixing up the markdown
support so that the page on Pypi looks like the README on Github.
This has been tested on the 0.26 branch starting 0.26.3
* Fix display limit in sql lab
* Add redundant variable from config.py
* Fix test config
* Change to SQL_MAX_ROW
* Remove last remaining occurence of DISPLAY_SQL_MAX_ROW
The travis build has been failing for 2 reasons recently
* pylint takes > 10 minutes without outputing
* bad merge confict auto resolve in controls.jsx
* [toasts] get rid of notify globals, refactor messageToasts for use by entire app
* [remove notify] use arrow func in ajax call
* fix lint + tests
* actually fix tests from messageToast refactor
* add 'test:one' npm script
* debugger
* [toasts] convert bootstrap flash messages to toasts in explore + sqllab
* [toasts][tests] import from right file
Pie chart was using `limit` instead of `row_limit` which didn't work.
Also set a lower default limit to 25 to prevent the chart from getting
super crowded.
Unrelated drive-by fix of setting "percentage metric" to default to `[]`
* Fix how the annotation layer interpretes the timestamp string without timezone info; use it as UTC
* [Bug fix] Fixed/Refactored annotation layer code so that non-timeseries annotations are applied based on the updated chart object after adding all data
* [Bug fix] Fixed/Refactored annotation layer code so that non-timeseries annotations are applied based on the updated chart object after adding all data
* Fixed indentation
* Fix the key string value in case series.key is a string
* Fix the key string value in case series.key is a string
* [Bug fix] Divide by 1000.000 in epoch_ms_to_dttm() to not lose precision in Presto
* [Bug fix] Divide by 1000.000 in epoch_ms_to_dttm() to not lose precision in Presto
* Improve database type inference
Python's DBAPI isn't super clear and homogeneous on the
cursor.description specification, and this PR attempts to improve
inferring the datatypes returned in the cursor.
This work started around Presto's TIMESTAMP type being mishandled as
string as the database driver (pyhive) returns it as a string. The work
here fixes this bug and does a better job at inferring MySQL and Presto types.
It also creates a new method in db_engine_specs allowing for other
databases engines to implement and become more precise on type-inference
as needed.
* Fixing tests
* Adressing comments
* Using infer_objects
* Removing faulty line
* Addressing PrestoSpec redundant method comment
* Fix rebase issue
* Fix tests
When receiving a VARBINARY field out of Presto, it shows up as type
`bytes` out of the pyhive driver. Then the pre 3.15 version of
simplejson attempts to convert it to utf8 by default and it craps out.
I bumped to simplejson>=3.25.0 and set `encoding=None` as documented
here
https://simplejson.readthedocs.io/en/latest/#basic-usage so that we can
handle bytes on our own.
As Superset extends flask SecurityManager with its own implementation, it's not obvious how to connect Superset with OAuth2 authorization servers that are not covered under flask.
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* [webpack 4][istanbul] ignore visualizations/index.js
* [explore] fix autocomplete on verbose names
Currently when searching for metrics or groupbys, the autocomplete
search functionality only matches based on the metric_name, though in
some cases the verbose_name is displayed and disregarded for search
purposes.
Also another issue is that not all pre-defined metrics show up in the
drop down which is confusing. Users may have simple metrics for which
they setup a nice verbose name and/or description and expect to see
those in the dropdown.
This PR addresses it for metric and column-related dropdowns.
* Add unit test
* [webpack] setup lazy loading for all visualizations
* [lazy-load] push renderVis function to <Chart /> state
* no mapbox token
* [lazy loading] use native webpack import func to fix chunk names, add babel-plugin-syntax-dynamic-import, fix rebase bug.
* fix geojson import, undefined t, and fix async css bug
* [lazy load] actually add babel-plugin-syntax-dynamic-import
* [webpack] working dev version of webpack v4
* [webpack 4] fix url issues, use mini-css-extract-plugin and webpack-assets-manifest plugins
* [webpack 4] use splitchunks for all files, update templates to multi-file entrypoints
* [webpack 4] multiple theme entry files for markup vis css, don't uglify mapbox
* [webpack 4] lint python manifest changes, update yarn lock.
* [webpack 4] fix tests with babel-plugin-dynamic-import-node
* [webpack 4] only use 'dynamic-import-node' plugin in tests, update <Chart /> vis promise when vis type changes
* [webpack 4] clean up package.json and yarn.lock after rebase
* [webpack 4] lint?
* [webpack 4] lint for real
* fetch datasources from broker endpoint when refresh new datasources
* remove get_base_coordinator_url as out of use
* add broker_endpoint in get_test_cluster_obj
This commit will try to dockerize superset in local development
environment.
The basic design is:
- Enable superset, redis and postgres service instead of using sqlite,
just want to simulate production environment settings
- Use environment variables to config various app settings. It's easy to
run and config superset to any environment if we use environment than
traditional config files
- For local development environment, we just expose postgres and redis
to local host machine thus you can connect local port via `psql` or
`redis-cli`
- Wrap start up command in a standard `docker-entrypoint.sh`, and use
`tail -f /dev/null` combined with manually `superset runserver -d` to
make sure that code error didn't cause the container to fail.
- Use volumes to share code between host and container, thus you can use
your favourite tools to modify code and your code will run in
containerized environment
- Use volumes to persistent postgres and redis data, and also
`node_modules` data.
- If we don't cache `node_modules` in docker volume, then every time
run docker build, the `node_modules` directory, will is about 500 MB
large, will be sent to docker daemon, and make the build quite slow.
- Wrap initialization commands to a single script `docker-init.sh`
After this dockerize setup, any developers who want to contribute to
superset, just follow three easy steps:
```
git clone https://github.com/apache/incubator-superset/
cd incubator-superset
cp contrib/docker/{docker-build.sh,docker-compose.yml,docker-entrypoint.sh,docker-init.sh,Dockerfile} .
cp contrib/docker/superset_config.py superset/
bash -x docker-build.sh
docker-compose up -d
docker-compose exec superset bash
bash docker-init.sh
```
* Improve time shift color and pattern
* Revert change
* Fix js unit test
* Move code to better place, add unit test
* Move classed code to backend
* Remove console.log
* Remove 1 hour time compare
* Remove unused import
By stop polling when presto query already finished.
When user make queries to Presto via SQL Lab, presto will run the query
and then it can return all data back to superset in one shot.
However, the default implementation of superset has enabled a default
polling for presto to:
- Get the fancy progress bar
- Get the data back when the query finished.
However, the polling implementation of superset is not right.
I've done a profiling with a table of 1 billion rows, here're some data:
- Total number of rows: 1.02 Billion
- SQL Lab query limit: 1 million
- Output Data: 1.5 GB
- Superset memory consumed: about 10-20 GB
- Time: 7 minutes to finish in Presto, takes additional 15 minutes for
superset to get and store data.
The problems with default issue is, even if presto has finished the
query (7 minutes with above profiling), superset still do lots of wasted
polling, in above profiling, superset sent about 540 polling in total,
and at half of the polling is not necessary.
Part of the simplied polling response:
```
{
"infoUri": "http://10.65.204.39:8000/query.html?20180525_042715_03742_nza9u",
"id": "20180525_042715_03742_nza9u",
"nextUri": "http://10.65.204.39:8000/v1/statement/20180525_042715_03742_nza9u/11",
"stats": {
"state": "FINISHED",
"queuedSplits": 21701,
"progressPercentage": 35.98264191882267,
"elapsedTimeMillis": 1029,
"nodes": 116,
"completedSplits": 15257,
"scheduled": true,
"wallTimeMillis": 2571904,
"peakMemoryBytes": 0,
"processedBytes": 40825519532,
"processedRows": 47734066,
"queuedTimeMillis": 0,
"queued": false,
"cpuTimeMillis": 849228,
"rootStage": {
"state": "FINISHED",
"queuedSplits": 0,
"nodes": 1,
"totalSplits": 17,
"processedBytes": 16829644,
"processedRows": 11495,
"completedSplits": 17,
"stageId": "0",
"done": true,
"cpuTimeMillis": 69,
"subStages": [
{
"state": "CANCELED",
"queuedSplits": 21701,
"nodes": 116,
"totalSplits": 42384,
"processedBytes": 40825519532,
"processedRows": 47734066,
"completedSplits": 15240,
"stageId": "1",
"done": true,
"cpuTimeMillis": 849159,
"subStages": [],
"wallTimeMillis": 2570374,
"userTimeMillis": 730020,
"runningSplits": 5443
}
],
"wallTimeMillis": 1530,
"userTimeMillis": 50,
"runningSplits": 0
},
"totalSplits": 42401,
"userTimeMillis": 730070,
"runningSplits": 5443
}
}
}
```
Superset will terminate the polling when it finds that `nextUri`
becomes none, but actually, when `["stats"]["state"] == "FINISHED"`,
it means that presto has already finished the query and superset can stop
polling and get the data back.
After this simple optimization, we get a 2-5x performance boost for
Presto SQL Lab queries.
* Bump celery to 4.1.1
Docs reference `celery worker --app=superset.sql_lab:celery_app
--pool=gevent -Ofair` command which seems only to work with Celery 4.1.1
* Add UPDATING.md message
* Added support for URLShortLinkButton to work for the dashboard case
* Fix lint errors and test
* Change references to 'slice' to 'chart'.
* Add unit tests to improve coverage
* Fixing lint errors
* Refactor to make URLShortLink more generic. Remove history modification code, redirect should be handling this.
* Remove history modification code, redirect should be handling this
* Generate a shorter link without the directory, and delegate default linked to the contents of window.location
* Fix lint errors
* Fix test_shortner test to check for new pattern
* Remove usage of addHistory to manipulate explore shortlink redirection
* Address build failure and using better practices for shortlink defaults
* Fixing alphabetical order
* More syntax mistakes
* Revert explore view history changes
* Fix use of component props, & rebase
Currently we assign release version number in release branches and
master was still pointing to some old version number from when the
process was different. We need a dummy version number that both setuptools
and npm are ok with.
* Initial test
* Save
* Working version
* Use since/until from payload
* Option to prefix metric name
* Rename LineMultiLayer to MultiLineViz
* Add more styles
* Explicit nulls
* Add more x controls
* Refactor to reuse nvd3_vis
* Fix x ticks
* Fix spacing
* Fix for druid datasource
* Rename file
* Small fixes and cleanup
* Fix margins
* Add proper thumbnails
* Align yaxis1 and yaxis2 ticks
* Improve code
* Trigger tests
* Move file
* Small fixes plus example
* Fix unit test
* Remove SQL and Filter sections
* Fix percent_metrics ZeroDivisionError and can not get metrics with label issue
* convert iterator to list
* get percentage metrics with get_metric_label method
* Adding tests case for expression type metrics
* Simplify expression
* Make port number optional in superset for druid
It appears that urllib throws error with ssl if port number is provided
```
url = "https://example.com:443/druid/v2"
req = urllib.request.Request(url, druid_query_str, headers)
res = urllib.request.urlopen(req)
```
The above call fails with the following error:
```
urllib2.HTTPError: HTTP Error 404: Not Found
```
If url is set to https://example.com/druid/v2 it works, this change
makes the port number optional.
* Rewrite if/else in concisely python way
* [WiP] make MetricsControl the standard across visualizations
This spreads MetricsControl across visualizations.
* Addressing comments
* Fix deepcopy issue using shallow copy
* Fix tests
* [sql lab] a better approach at limiting queries
Currently there are two mechanisms that we use to enforce the row
limiting constraints, depending on the database engine:
1. use dbapi's `cursor.fetchmany()`
2. wrap the SQL into a limiting subquery
Method 1 isn't great as it can result in the database server storing
larger than required result sets in memory expecting another fetch
command while we know we don't need that.
Method 2 has a positive side of working with all database engines,
whether they use LIMIT, ROWNUM, TOP or whatever else since sqlalchemy
does the work as specified for the dialect. On the downside though
the query optimizer might not be able to optimize this as much as an
approach that doesn't use a subquery.
Since most modern DBs use the LIMIT syntax, this adds a regex approach
to modify the query and force a LIMIT clause without using a subquery
for the database that support this syntax and uses method 2 for all
others.
* Fixing build
* Fix lint
* Added more tests
* Fix tests
* Force lowercase column names for Snowflake and Oracle
* Force lowercase column names for Snowflake and Oracle
* Remove lowercasing of DB2 columns
* Remove DB2 lowercasing
* Fix test cases
* use session context manager
* contextlib2 added to requirements.txt
* Fixing error: Import statements are in the wrong order. from contextlib2 import contextmanager should be before import sqlalchemy
* Fixing return inside generator
* fixed C812 missing trailing comma
* E501 line too long
* fixed E127 continuation line over-indented for visual indent
* E722 do not use bare except
* reorganized imports
* added context manager contextlib2.contextmanager
* fixed import ordering
* Changes "Import the dashboards." to "Import dashboards"
* Cleans up the HTML to add quotes, self close tags, etc.
* Adds a class to the `<submit>` button to utilize bootstrap style
* Remove the `<title>` tag in body as it's not vaild HTML and redundant with `{% block %}`
* add extraction fn support for Druid queries
* bump pydruid version to get extraction fn commits
* update and add tests for druid for filters with extraction fns
* conform to flake8 rules
* fix flake8 issues
* bump pyruid version for extraction function features
It appears the officially maintained fork of flask-cache is
flask-caching https://github.com/sh4nks/flask-caching . It is fully
compatible with flask-cache.
fixes https://github.com/apache/incubator-superset/issues/4926
In rare cases where the query is stopped before it is started, SQL Lab
returns an unexpected string payload instead of a normal dictionary.
This aligns the process to handle the error in a homogeneous fashion.
* Add helm chart to install superset in kubernetes
* set resources into unlimited
* Add descriptions to Chart.yaml
* add an entry in docs/installation.rst
if a filter is created on a chart, and the column is removed from the
dataset, you get a "'NoneType' object has no attribute
'is_num'" or something to that
effect. This fix disregards the filter.
Also error messages were HTML escaped which React does already anyways
so that's not necessary [anymore] here.
* [bugfix] temporal columns with expression fail
error msg: "local variable 'literal' referenced before assignment"
Error occurs [only] when using temporal column defined as a SQL
expression.
Also noticed that examples were using `granularity` instead of using
`granularity_sqla` as they should. Fixed that here.
* Add tests
* Fix 'pip install .'
Fix error :
> flask-appbuilder 1.10.0 has requirement Flask-SQLAlchemy==2.1,
> but you'll have flask-sqlalchemy 2.3.2 which is incompatible.
> botocore 1.10.5 has requirement python-dateutil<2.7.0,>=2.1, but you'll
> have python-dateutil 2.7.2 which is incompatible.
* remove flask-sqlalchemy==2.1 from reqs.txt
* [formats] add better defaults for time + number formatting
* [formatDate] add tests for concise formatDate
* [nvd3] use verbose time format in tooltips
* [number format] improve number format description
* [formats] revert to .3s defaults, tweak number format preview
* [formats] default number vis to .3s
* [WiP] [explore] proper filtering of NULLs and ''
TODO: handling of Druid equivalents
* Unit tests
* Some refactoring
* [druid] fix 'Unorderable types' when col has nuls
Error "unorderable types: str() < int()" occurs when grouping by a
numerical Druid colummn that contains null values.
* druid/pydruid returns strings in the datafram with NAs for nulls
* Superset has custom logic around get_fillna_for_col that fills in the
NULLs based on declared column type (FLOAT here), so now we have a mixed
bag of type in the series
* pandas chokes on pivot_table or groupby operations as it cannot sorts
mixed types
The approach here is to stringify and fillna('<NULL>') to get a
consistent series.
* typo
* Fix druid_func tests
* Addressing more comments
* last touches
* fixed RSTs so images will show up on github
* fresh screenshots on main page
* removing irrelevant portions
* moved a set of sections under 'Misc'
* rebuilt the Gallery with all screenshots
* Filtering out SQLLab views out of table list view by default
This adds a `is_sqllab_view` flag in the "tables" table, and makes the
filters those out in the Tables list view.
The filter showing on top may be a bit confusing, but certainly less
than seeing lots of user generated views.
* flake
* Addressing comments
The default setting which would look for either `count` first and then
any metric stopped working when we landed MetricsControl. This mimics
the previous behavior
* Fix how the annotation layer interpretes the timestamp string without timezone info; use it as UTC
* [Bug fix] Fixed/Refactored annotation layer code so that non-timeseries annotations are applied based on the updated chart object after adding all data
* [Bug fix] Fixed/Refactored annotation layer code so that non-timeseries annotations are applied based on the updated chart object after adding all data
* Fixed indentation
* Fix the key string value in case series.key is a string
* Fix the key string value in case series.key is a string
* Add ISO duration to time grains
* Use ISO duration
* Remove debugging code
* Add module to yarn.lock
* Remove autolint
* Druid granularity as ISO
* Remove dangling comma
* [sql lab] preserve schema through visualize flow
https://github.com/apache/incubator-superset/pull/4696 got tangled
into refactoring views out of views/core.py and onto views/sql_lab.py
This is the same PR without the refactoring.
* Fix lint
* Disabled run query button if sql query editor is empty
* Removing unnecessary white space
* Fix failing test for sql props
* Adding sql variable into propTypes and defaultProps
* [bugfix] convert metrics to numeric in dataframe
It appears sometimes the dbapi driver and pandas's read_sql fail at
returning the proper numeric types for metrics and they show up as
`object` in the dataframe. This results in "No numeric types to
aggregate" errors when trying to perform aggregations or pivoting in
pandas.
This PR looks for metrics in dataframes that are typed as "object"
and uses pandas' to_numeric to convert.
* Fix tests
* Remove all iteritems
superset appends DRUID_TZ info to intervals but not to granularity which causes one day's data return as 2 days. This fix is also pass DRUID_TZ to granularity.
* Allowing limit ordering by post-aggregation metrics
* don't overwrite og dictionaries
* update tests
* python3 compat
* code review comments, add tests, implement it in groupby as well
* python 3 compat for unittest
* more self
* Throw exception when get aggregations is called with postaggs
* Treat adhoc metrics as another aggregation
* Fix deepequality logic
Zeroed-in on this while a Deck Scatter Plot chart was prompting for
refresh on-load.
I'm pretty sure using JSON.stringify as a proxy for deep equality is
wrong.
Not sure how to handle yarn.lock changes here. The changes on yarn.lock
are the result of "only" running `yarn add deep-equal`
* Adressing comments
* [sqllab] fix data grid's instant search function
It looks like any non-string type would break the search feature.
of `FilterableTable`
* Addressing comments
Turns out the SQL would only be committed to the redux store `onBlur`
event to avoid the laggy typing. The delay come from the localStorage
binding that add enough millisecs of delay to feel odd while typing.
I now store the most recent SQL in the local and use that instead.
* move access permissions methods to security manager
* consolidate all security methods into SupersetSecurityManager
* update security method calls
* update calls from tests
* move get_or_create_main_db to utils
* raise if supersetsecuritymanager is not extended
* rename sm to security_manager
* Fix how the annotation layer interpretes the timestamp string without timezone info; use it as UTC
* [Bug fix] Fixed/Refactored annotation layer code so that non-timeseries annotations are applied based on the updated chart object after adding all data
* [Bug fix] Fixed/Refactored annotation layer code so that non-timeseries annotations are applied based on the updated chart object after adding all data
* Fixed indentation
* Use 'count' as the default metric when available
Count is a much better default than the current behavior which is to use
whatever the first metric in the list happens to be.
* Addressing nits
* Adding column type label to dropdowns
* Changing the style of column type label
* Adding tests for ColumnTypeLabel
* Adding tests for time and fixing if statement order
* Changing location of ColumnTypeLabel tests
* Updating ColumnTypeLabel structure
* [bugs] account for annotations in nvd3 x scale domain, fix dynamic width explore charts, allow 0 in text control
* tweak TextControl casting
* [annotations] filter separately from finding data extent
* Initial work
* Working version
* Specify legend position
* Max height with scroll
* Fix lint
* Better compatibility with nvd3
* Fix object.keys polyfill version
* Fix lint
* [sql lab] disable cross schema search
This is killing our metastore as people type it emits large
all-table-dump as they hit the keystroke. It never returns as it times
out and hammers the poor metastore.
Also some improvements around the disabling the table select on the left
panel and having the table name not be sticky.
* typo
* Adding option to visualize negative values in Table view
* Adding option for highlighting and right aligning
* Fixed typo
* Fixed case and condition
* Formatting
* Aligning left and default changes
* Changing default
* [Explore] Save url parameters when user save slices
* remove print
(cherry picked from commit bd9ecbe)
* add unit test
(cherry picked from commit 0f350ad)
* wrapping all request params into url_params
(cherry picked from commit 17197c1)
* Fix how the annotation layer interpretes the timestamp string without timezone info; use it as UTC
* Fix how the Interval annotation layer interpretes the timestamp string without timezone info; use it as UTC
* Expose hook to inject database connection logic on the fly
This environment configuration setting hook allows administrators to
alter the database connection parameters on the fly based on user
information. This can be use for a variety of purposes:
* rewire a subset of users to use different database user accounts
* pass user related information to the database for logging or QoS
purposes
* ...
* Fixes
* adding refresh chart overlay when chart is out of sync with control panel
* fading the visualization when stale
* addressing comments from team on layout of UI
* Introduce an onInit method for when a new viz_type is selected
This allows for clearing certain controls where/when needed. For
instance here, when loading deck_scatter, even if there was a time
granularity picked for the previous viz_type, we want to unselect it.
* making it functional
* Make filterbox i18n
* Change double-quote to single-quote in localization function t() to pass
lint test
* Updated .po file with italian translation. New strings generated and translated via babel-extract
* Add to history on instant control change
* Update latestQueryFormData on render triggered
* Add new message type
* Update latestQueryFormData in UPDATE_QUERY_FORM_DATA
* Remove comments from queries in SQL Lab that break Explore view
This fixes an issue where comments on the last line of the source query comment out the closing parenthesis of the subquery.
* Add test case for SqlaTable with query with comment
This test ensures that comments in the query are removed when calling SqlaTable.get_from_clause().
* Add missing blank line class definition (PEP8)
* Initial working prototype
* Small fixes
* Refactoring dekgl
* Show all data when no time grain is selected
* Refactor layers
* Standardize function name
* Fix exports
* Fix require
* Initial working prototype
* Small fixes
* Show all data when no time grain is selected
* Moving play bar to correct location
* Split component
* Working on CSS
* Remove control
* Positioning the play slider
* Fix refresh of slider state
* Fix lint
* Small fixes
* Smoother animation for scans
* Fix versions
* Play/pause with spacebar.
* Small fixes
* Clean stuff that went to other PRs
* Address issues
* Refactor scatter animation
Moving to a grid that is 4 times more granular. 48 columns.
Shipping a db migration script which will upgrade the position metadata
to reflect this change.
Also adapting the examples to the new grid parameters.
* [Explore view] Use POST method for charting requests
* fix per code review comments
* more code review fixes
* code review fix: remove duplicated calls for getting values from request
* [Explore view] Use POST method for charting requests
* fix per code review comments
* more code review fixes
* code review fix: remove duplicated calls for getting values from request
* [geo] introduce "Auto Zoom" control
On geospatial visualization, checking the "Auto Zoom" control makes it
such that the viewport is fitted to the data upon rendering the chart.
For dashboards with region filters, the map should jump to the right
position.
Eventually we should enhance this to fly and ease to the position in an
animated way.
* Added TODO notes
This fixes an issue with the newer Google's DBAPI library, which moved Row from google.cloud.bigquery._helper.Row to google.cloud.bigquery.Row, causing ImportError
* Switched yaml.load to yaml.safe_load to prevent code execution via crafted yaml files
Python's yaml.laod can lead to code execution via crafted yaml files such as:
```
code_exec: !!python/object/apply:subprocess.check_output ['ls']
```
* Fixed XSS via bleach
It was possible to get an XSS via the markdown library via simply setting a description containing arbitary HTML tags.
It was also possible to create links that went to the `javascript:` link handler (eg `[example](javascript:alert(0)`)
Using bleach to sanitize it solves both of these.
* Added XFO header by default to prevent clickjacking attacks
Note that with this application clickjacking can be relatively severe via the SQLLab functionality
which allows executing arbitary SQL.
* Added justification for dangerouslySetInnerHTML
* Fixed linting errors
* Fixed linting errors
* Add permissions checks for save_or_overwrite_slice
* Change is_owner to check_ownership
* Add translation to chart and dashboard error messages
* Appease the python linter by using single quotes
Druid sometimes returns error message that are contained in "<>", as in
`<urlopen error [Errno 61] Connection refused>`. Since Superset's
approach is often to bubble up messages coming from external library,
it's impossible to predict whether it will contain special characters.
There are some cases where our error handling does return some html
(presto?),
but we should manage that upstream. Plus the current setup has security concerns,
so let's move away from that.
fillna would miss out on identifying STRING columns for Druid and
replace None in string columns with a numeric `0`. This
mixed type column would confuse
pandas down the line on some operations like `df.pivot_table`.
Though flask has a builtin web debugger, ipdb some times still work
better. So I think add ipdb to dev dependencies is a good option for
people who prefer CLI debugging.
* cast postgresql date_trunc() to timestamp without time zone to prevent pandas error
* fix formatting for flake8
* change cast to timezone conversion instead
* Update installation.rst for Ubuntu 16.04 LTS
Ubuntu 16.04 by default install python2.7 alongside with python 3.5 and set python2.7 as default. If you have created a virtualenv with python3.5 compilation fails due to wrong python-dev library installed.
If you install ``python3.5-dev`` the build for the wheel package of ``cryptography`` run fine.
* Add options in D3_TIME_FORMAT_OPTIONS for non-english Time Format.
Added '%d/%m/%Y' and '%d/%m/%Y %H:%M:%S' as valid drop-down option for Axis Format
* [cli] permission cleanup on 'superset init'
FAB sometimes creates NULL/None permissions in the database,
presumably a race condition when multiple gunicorn workers start at the
same time, and those create issues raising "AttributeError: 'NoneType'
object has no attribute 'name'"
* Linting
Ubuntu 16.04 by default install python2.7 alongside with python 3.5 and set python2.7 as default. If you have created a virtualenv with python3.5 compilation fails due to wrong python-dev library installed.
If you install ``python3.5-dev`` the build for the wheel package of ``cryptography`` run fine.
* Use the query_obj as the basis for the cache key
When we recently moved from hashing form_data to define the cache_key
towards using the rendered query instead,
it made is such that non deterministic form
control values like relative times specified in "from" and "until" time
bound resulted in making those miss cache 100% of the time.
Here we move away from using the rendered query and using the query_obj
instead.
* Deprecating using form_data in templates
Filters applied to deck_multi will be passed down to layers as.
If the column isn't set as "filterable", the filter is ignored.
Also note that Dashboard configuration in regards to
"filter_immune_slices" and such will be disregarded in this context as
it isn't the dashboard controller passing down the filter and that
context is not easily accessible here.
Moving from having the user define an interceptor function that operates
on one object at a time.
By passing the entire array, it's possible to do multiple pass where
needed. A common pattern might be to figure out the max value in order
to define a scaler function. That's only possible if dealing with the
whole array.
* conditional check on datatype of results before converting to df
fix type checking
fix conditional checks
remove trailing whitespace and fix df_data fallback def
actually remove trailing whitespace
generalized type check to check all columns for dict
refactor dict col check
* move df conversion to helper and add unit test
add missing newlines
another missing newline
fix quotes
more quote fixes
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.
* 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
Funky datatypes in some databases like BLOBs will have the DBAPI return
python types that can't be serialized to JSON out of the box.
Currently, when this happens SQL Lab fails in a bad way with a gigantic
HTML error message.
This allows specifying a pessimistic JSON serializer handler that will
simply show "Unserializable [type]"
* Using JS to customize spatial viz and tooltips
* Add missing deck_multi.png
* Improve GeoJSON layer with JS support and extra controls
* Addressing comments
When generating an auto SUM() metric on a column, Superset currently
will go `SUM(table_name.column_name)`. This is an issue when moving to
point to another table. It's common to work on some temporary table or
work table and eventually need to point Superset to an alternate table.
* Make Welcome page into a simple React app
This removes a dependency on datatables, we should be able to get rid
of it as we re-write the Table and PivotTable viz
* tests/lint
* Bump node version to latest
Some valid sqlalchemy uri's return a URL object with database=None, which causes the following error:
```
2018-01-05 17:59:47,560:ERROR:root:argument of type 'NoneType' is not iterable
Traceback (most recent call last):
File "/opt/incubator-superset/superset/sql_lab.py", line 186, in execute_sql
user_name=user_name,
File "/opt/incubator-superset/superset/utils.py", line 124, in __call__
return self.func(*args, **kwargs)
File "/opt/incubator-superset/superset/models/core.py", line 644, in get_sqla_engine
url = self.db_engine_spec.adjust_database_uri(url, schema)
File "/opt/incubator-superset/superset/db_engine_specs.py", line 505, in adjust_database_uri
if '/' in database:
TypeError: argument of type 'NoneType' is not iterable
```
This patch corrects that problem.
Delay creating DATA_DIR until config is fully imported.
This allows superset_config.py to override DATA_DIR before superset
attempts to create it in a potentially unwriteable location.
* Fix USA's state geojson for 'Country Map' visualization
Turns out the ISO codes were missing from the geojson file, this adds it
and uses human-readable indents.
* using proper ISO codes
* Linting
New linting rules started applying, I'm guessing a new version of
pylint?
* added deckgl geojson layer
* linting
* fixed comments
* addressed comments
* added override with controls.color_picker > 0
* set var properly
* set colors if property doesnt exist at all
* refacator on property mapping
* Introduce Javascript controls
This allows power-users to perform intricate transformations on data and
objects using javascript code.
The operations allowed are "sanboxed" or limited using node's vm
`runInNewContext`
https://nodejs.org/api/vm.html#vm_vm_runinnewcontext_code_sandbox_options
For now I'm only enabling in the line chart visualization, but the plan
would be to go towards offering more power to people who can write some
JS moving forward.
* Not applied
* Adding full Annotation Framework
* Viz types
* Re organizing native annotations
* liniting
* Bug fix
* Handle no data
* Cleanup
* Refactor slice form_data to data
For context, the viewport gets updated dynamically from the user
actions on the map. This is done on a timer every second or so to keep
the form data updated with the viewport settings.
With renderTrigger=true on that control that generates re-renders which
introduces glitches while zooming/panning. So turning it off as we don't
really expect users to input viewport info directly in the control
anyways.
Before this PR the only way to query lat/long is in the shape of 2
columns that contains lat and long.
Now we're adding 2 more options:
* a single column that has lat and long with a delimiter in between
* support for geohashes - geohashes are cool
* change reference for slices to chart
* change profile page reference
* change reference for Associated Slices
* change back to single quotes
* fix other single quotes
* linting
* last one
* fix test
The nvd3 docs say that it if the fastdom library is present it makes use
of it.
"Including Fastdom in your project can greatly increase the performance
of the line chart (particularly in Firefox and Internet Explorer) by
batching DOM read and write operations to avoid layout thrashing. NVD3
will take advantage of Fastdom if present."
* [sql lab] fix position of 'save query' Popover
The "Save Query" popover renders on the upper left corner as opposed to
where it should (relative to the Save Query button). After a bit of
research, it seems like Popover won't render in the right place when
parents are absolute.
I'm guessing this stopped working properly when I added the resizable
panes.
Anyhow, the solution here is to use a modal instead.
* Fixing tests
* fix 'superset db history'
Related Error msg when running `superset db history`:
"NameError: Can't invoke function 'get_bind', as the proxy object has not
yet been established for the Alembic 'Operations' class. Try placing
this code inside a callable."
* Lint
A bug in to_dict(orient="records") in pandas/core/frame.py prevents
datetimes with time zones to be worked with. This works around the
issue in superset by re-implementing the logic of pandas in the
correct way. Until pandas fixes the issue this code should stay.
https://github.com/pandas-dev/pandas/issues/18372
This closes#1929
Users can define `label_colors` in a dashboard's JSON metadata that
enforces a label to color mapping.
This also makes the function that maps labels to colors case insensitive.
* DECKGL integration
Adding a new set of geospatial visualizations building on top of the
awesome deck.gl library. https://github.com/uber/deck.gl
While the end goal it to expose all types of layers and let users bind
their data to control most props exposed by the deck.gl API, this
PR focusses on a first set of visualizations and props:
* ScatterLayer
* HexagonLayer
* GridLayer
* ScreenGridLayer
* Addressing comments
* lint
* Linting
* Addressing chri's comments
I was wondering what was left to do in order to remove Dashboard.jsx
and superset.js, and it looks like they can just be pulled out.
I am so happy to get rid of what used to be the messiest JS files in the
whole repo.
Thanks @graceguo!
* README: add the mailing list
And mark the google group as deprecated
* README: move the screenshots at the end
So hopefully it'll be easier to find the resources
I was getting some "Could not connect to server" when there was
a proper json payload with an `error` key, the change here makes sure to
prioritize those messages over the generic one.
Making it clear that master has a `dev`-suffixed version. Proper release
number will be created in release branches.
There are constraints as to what npm and setuptools will accept as a
proper version number and N.N.Ndev seems to work so I'm rolling with it
Open to suggestion as to how to tag `master`
I was having issues getting an RPM to build. My error was
Processing files: superset-0.20.1-1.noarch
error: File must begin with "/": Lockup
error: File must begin with "/": With
error: File must begin with "/": Text.svg
error: File must begin with "/": Lockup
error: File must begin with "/": With
error: File must begin with "/": Text@2x.png
error: File must begin with "/": Lockup
error: File must begin with "/": Without
error: File must begin with "/": Text@1x.svg
error: File must begin with "/": Lockup
error: File must begin with "/": Without
error: File must begin with "/": Text@2x.png
error: File must begin with "/": Mark.png
error: File must begin with "/": Mark@1x.svg
for ref https://github.com/pypa/setuptools/issues/767
File renaming fixes this issue
In `assets/static` we have a symlink pointing to `docs/_build/html`
which is .gitignored and missing in the repo since we don't want the
html-generated docs in the repo, meaning the symlink is broken
Having the symlink broken creates issues with pip-compile somehow.
Adding a dummy file here addresses that
fixes https://github.com/apache/incubator-superset/issues/3507
This prevents malformed JSON from getting saved in a slice's params. It
also prevents the issue described in #3507 from happening though as a
result malformed slices will render using default control values.
* Fix the ISO code description of region/province/department
* Missing the data of one province and two regions of China
* Revert " Missing the data of one province and two regions of China"
This reverts commit abff4555cd.
* Add srcdoc-polyfill tosupport Internet Explorer iframes in markup slices. Add allow-top-navigation and allow-popups to support links within iframes
* Remove jquery from markup.js
* ColorSchemeControl: fixing bad use of PropTypes
Accessing PropTypes via the main React package is deprecated, and will be
removed in React v16.0. Use the latest available v15.* prop-types package from
npm instead. For info on usage, compatibility, migration and more, see
https://fb.me/prop-types-docs
* Control: adding PropTypes.func in types allowed inside `value` prop
This removes a warning during yarn tests
Fix#3589
* tests(QueryStateLabel): removing missing prop warning
```
Warning: Failed prop type: The prop `query` is marked as required in
`QueryStateLabel`, but its value is `undefined`.
in QueryStateLabel
```
* SaveQuery: removing invalid prop `target` supplied to `Overlay`.
This removes a warning during yarn tests:
```
Warning: Failed prop type: Invalid prop `target` supplied to `Overlay`.
```
* RunQueryActionButton: removing `isRequired` from queryState props
This removes a warning during yarn tests:
```
Warning: Failed prop type: The prop `queryState` is marked as required in
`RunQueryActionButton`, but its value is `null`.
```
When the database impersonation flag is on, a query using a template
fails. It has to do with templating using a database connection without
a username being specified by the caller, along with the fact that the
work is taking place on a worker, outside a web request, where
referencing g.user raises this exception.
Somehow the nature of `g` in Flask has changed where `g.user` used to
be provided outside the web request scope and its not anymore.
The fix here should address that.
* Feature: added datepicker and time granularity options to dashboard filter
* Added option for Druid datasource time filters
* added more checkbox control over dashboard time filters
it was downgraded in commit 7045018d86.
The old version used React.PropTypes and it was deprecated.
This version is compatible with React 15+.
Fix#3588
* removing deprecated babel-preset-es2015 in favor of babel-preset-env
This removes this yarn warning during install:
```
warning babel-preset-es2015@6.24.1:
Thanks for using Babel: we recommend using babel-preset-env now:
please read babeljs.io/env to update!
```
* updating sinon to 4.0.0
This removes wrench from its dependencies and this yarn warning during install:
```
warning wrench@1.3.9: wrench.js is deprecated!
You should check out fs-extra (https://github.com/jprichardson/node-fs-extra)
for any operations you were using wrench for.
Thanks for all the usage over the years.
```
* Adding annotations to backend
* Auto fetching Annotations on the backend
* Closing the loop
* Adding missing files
* annotation layers UI
for https://github.com/apache/incubator-superset/issues/3502
* a few fixes per code review.
- add annotation input sanity check before add and before update.
- make SelectAsyncControl component statelesis, and generic
- add annotation description in d3 tool tip
- use less variable to replace hard-coded color
* exposed API endpoint to get querystring for a slice
* Added unit tests for endpoint
* fixed test case for python3
* moved get querystring logic into its own func
* renamed query string endpoint
* 1. after user make sql query and visualize, allow user click title to update slice title, and create a new slice at the same time.
2. don't save new title if it is empty. Will still show old title.
* change saveSlice call response and update explore view
- if current user is allowed to edit dashboard, we will allow this user to edit slice name.
- show different tooltip given allowed/not-allowed to update slice name.
- user will click slice name and update.
- after user submit edit, if he doesn't have right to alter slice, server-side will return error message to client-side. Slice name will not be changed or saved.
- will show notification after save slice name.
* Chinese page
* Using react-intl-universal to improve multi language in react page
* Using react-intl-universal to improve multi language in react page
* react_intl_universal
* change
* change
* change
* change
* change
* change
* change
* merge
* multiple page in js
* merge
* merge
* merge
* merge
* Js Translations
* JS Translation
* JS Translations
* Js translation
* JS translations
* JS translations
* Js translaion
* JS en Translation
* JS Translation
* upgrade document
Fixing the damn build (#3179)
* Fixing the build
* Going deeper
[bugfix] only filterable columns should show up in FilterBox list (#3105)
* [bugfix] only filterable columns should show up in FilterBox list
* Touchups
Datasource cannot be empty (#3035)
add title description to model view (#3045)
* add title description to model view
* add missing import
Add 'show/hide totals' option to pivot table vis (#3101)
[bugfix] numeric value for date fields in table viz (#3036)
Bug was present only when using the NOT GROUPED BY option
fixes https://github.com/ApacheInfra/superset/issues/3027
fix hive.fetch_logs (#2968)
add Zalando to the list of organizations (#3171)
docs: fixup installation examples code indentation (#3169)
[bugfix] fix bar order (#3180)
[bugfix] visualize flow error: 'Metric x is not valid' (#3181)
The metric name in the frontend doesn't match the one generated on the
backend. It turns out the explore view will default to the first
metric so specifying one isn't needed.
Fix the segment interval for pulling metadata (#3174)
The end of the interval would be on the truncated today date, which
means that you will exclude today. If your realtime ingestion job
runs shorter than a day, the metadata cannot be pulled from the
druid cluster.
Bump cryptography to 1.9 (#3065)
As 1.7.2 doesn't compile here with openssl 1.1.0f
Escaping the user's SQL in the explore view (#3186)
* Escaping the user's SQL in the explore view
When executing SQL from SQL Lab, we use a lower level API to the
database which doesn't require escaping the SQL. When going through
the explore view, the stack chain leading to the same method may need
escaping depending on how the DBAPI driver is written, and that is the
case for Presto (and perhaps other drivers).
* Using regex to avoid doubling doubles
[sqllab] improve Hive support (#3187)
* [sqllab] improve Hive support
* Fix "Transport not open" bug
* Getting progress bar to show
* Bump pyhive to 0.4.0
* Getting [Track Job] button to show
* Fix testzz
Add BigQuery engine specifications (#3193)
As contributed by @mxmzdlv on issue #945
[bugfix] fix merge conflict that broke Hive support (#3196)
Adding 'apache' to docs (#3194)
[druid] Allow custom druid postaggregators (#3146)
* [druid] Allow custom druid postaggregators
Also, fix the postaggregation for approxHistogram quantiles so it adds
the dependent field and that can show up in the graphs/tables.
In general, postAggregators add significant power, we should probably
support including custom postAggregators. Plywood has standard
postAggregators here, and a customAggregator escape hatch that allows
you to define custom postAggregators.
This commit adds a similar capability for Superset and a additional
field/fields/fieldName breakdown of the typical naming for dependent
aggregations, which should make it significantly easier to develop
approxHistogram and custom postAggregation-required dashboards.
* [druid] Minor style cleanup in tests file.
* [druid] Apply code review suggestions
* break out CustomPostAggregator into separate class. This just cleans
up the creation of the postaggregator a little bit.
* minor style issues.
* move the function around so the git diff is more readable
add combine config for metrics in pivot table (#3086)
* add combine config for metrics in pivot table
* change method to stack/unstack
* update backendSync
Autofocus search input in VizTypeControl modal onEnter (#2929)
Speed up JS build time (#3203)
Also bumping a few related libs
JS Translation
JS translations
js translation
fix issue 3204 (#3205)
[bugfix] capture Hive job_id pre-url transformation (#3213)
js translation
fix issue 3204 (#3205)
[bugfix] capture Hive job_id pre-url transformation (#3213)
[docs] update url in CONTRIBUTING.md (#3212)
[sqllab/cosmetics] add margin-top for labels in query history (#3222)
[explore] nvd3 sort values in rich tooltip (#3197)
[sqllab] fix UI shows 'The query returned no results' momentarily (#3214)
this is visible when running async queries between the fetching and
success state as the rows are getting cached in the component
[explore] DatasourceControl to pick datasource in modal (#3210)
* [explore] DatasourceControl to pick datasource in modal
Makes it easier to change datasource, also makes it such that the list
of all datasources doesn't need to be loaded upfront.
* Adding more metadata
* Js translation
* js tran
* js trans
* js trans
* js tran
* js trans
* js trans
* js tran
* js translation
* js trans
* js translation
* try load language pack async
* Backend translations things
* create language pack inside common data
* performance improvement for js i18n.
- js bundle should not contain localized content
- we populate translation content from server-side, in boostrap.common.language_pack
- in client-side, use promise to wrap around translation content. text will be translated after translation content arrived/parsed.
- fix linting
* fix Timer unit test
* 1. add global hook for all tests, to make translation pack avaialble before each test starts.
2. fix unit test for Timer component
3. remove noused method get_locale, and modules
4. fix page reload after user change page language
* parse and build i18n dictionary as a module
* fix sync-backend task, which should run without DOM
Since the latest pyhive, we don't need pythrifthiveapi as they ship with
the latest version.
There's actually a conflict between the new pyhive and pythrifthiveapi
and this fixes it.
* Add "Impersonate user" setting to Datasource
* Add tests
* Use g.user.username for all the sync cases
* use uri.username instead of uri.user
* Small refactoring
* Fixed bugs when removing filter, switching operators, and switching columns
* Fixed lint errors for code style
* Added more unit tests for FilterControl
* Code format changes to meet standards
* add lanscape?
* prevent empty queries from being sent to db
* Revert "add lanscape?"
This reverts commit b3d6e80af4.
* improve code style
* nit
* unnit
* renit
* [heatmap] numerous improvements
* flexibility as to how to sort X and Y axis (alpha/value, desc/asc)
* option to show a legend
* fixed margins, maximize real estate
* allowed users to define bounds
* Tunning
Currently the heatmap axis are sorted randomly, this PR makes it such
that it's properly sorted.
Also allowing for specifying the left and bottom margins
* Bumping npm
* Fixing the build
This addresses long standing issues and hacks around react-map-gl
that have been creating all sorts of build issues over time.
It appears that recent changes broke things further.
This PR upgrades to the latest `react-map-gl` and removes related hacks.
Previously all 'since' date expression evaluated in the future like
`30 days` would be reassigned to the past (now - `30 days`). It would
extend to fixed dates which is a bad thing and was removed.
Now we have reports and dashboards in the wild that use things like `30
days` and we'd like to not break those as we roll out the next version.
This fix should allow for that.
* [explore] fixed padding bug on filter section
* fix slice_id logging issue
* [superset-sqllab] fix slice_id population in appropriate column
* [explore-logging] test the slice_id logging fix
* fix travis errors
* fix nits pointed out in PR comments
* cleanup tests
* made python more beautiful
* made python even more beautiful
* made python even more more beautiful
* made python even more more more beautiful
* fix lint error
* make exception handling more specific
* fixed silly error
* fixed argument indentation
The left panel of the explore view has become crowded and overwhelming
overtime. This PR adds functionality to collapse the control sections,
and sets most sections to be collapse by default as the explore view
opens up.
* breakdown `Query` section for most viz
* bring filters to the top, under Query section
* collapse most sections by default
* removed confusing outdated description for Filter section
* Update to the version of react-ace with the fixed sizing issues
* Make ace editor resizable
* Use small util method for offset calculation instead of $
* Test ResizableAceEditor
* Make the right pane of the Sql Lab scrollable
* Add default and min height to the ResizableAceEditor
* Implement SplitPane
* Make Splitter fullscreen
* React on resize of the window
* Implement min and max
* Get rid of a magic number + add margin
* Handle resize event with delay + cleanup the code
* Make ResultSet adjustable
* Make QueryHistory adjustable
* Remove ResizableAceEditor
* Make linter happy
* Test SplitPane
* Init sizes properly
number of issues are addressed here:
* x axis formatting doesn't apply in bubble chart
* adding option to show/hide bounds of x and y axis
* with a flaky 'auto' margin mode, allow user to specify hard values or
auto
* x label font-size was different than y axis
* show more options and reorg Control panels for Axes in `line` viz
for chart type: bubble, area, treemap and country map, color scheme change cannot take effect immediately. So have to disable immediately re-render function and hide lightening icon for these chart type.
* Allow for multiple color schemes
1. create ColorSchemeControl component
2. using the same new control component for linear colors
* add color spectum for linear color scheme
* remove dup css
* fix controls setting for linear color scheme
* minor fix by code review comment
Style wasn't working right for separator widget since the iframe sandboxing of
the markup widget. This addresses this small issue and also now allows
for html in the separator widget
* [mapbox] fix viewport alterations
Since explorev2 it appears that altering the viewport hasn't been
changing the controls as it used to. This PR addresses it.
* lint
Somehow Ace's "changeSelection" event is triggered when hitting
backspace (and shouldn't!).
changeSelection on our side triggers enough work to make the
holding backspace sluggish and laggy.
This fix ignores selection with a length of 1, avoiding mutating the
state altogether when hitting/holding backspace.
* improve superset list view page layout
- less header spaces and stacks
- move pagination down to bottom
- apply material design style to 'add' action button
- will apply to all superset list view, like slices list, security tab lists etc.
* improve superset list view page layout
- less header spaces and stacks
- move pagination down to bottom
- apply material design style to 'add' action button
- will apply to all superset list view, like slices list, security tab lists etc.
* improve superset list view page layout
- less header spaces and stacks
- move pagination down to bottom
- apply material design style to 'add' action button
- will apply to all superset list view, like slices list, security tab lists etc.
* improve superset list view page layout
- less header spaces and stacks
- move pagination down to bottom
- apply material design style to 'add' action button
- will apply to all superset list view, like slices list, security tab lists etc.
* improve superset list view page layout
- less header spaces and stacks
- move pagination down to bottom
- apply material design style to 'add' action button
- will apply to all superset list view, like slices list, security tab lists etc.
* remove tabs from indentation
* fix merge conflicts
* adjust css after code merge
parse_human_datetime parses date-only strings, e.g. "today", returning the correct date but time set at 9am. This is an internal implementation in parsedatetime. This patch resets to midnight. If time is specified and parsed, it is correctly returned.
* add translatable columns in label_columns of the view
* display the verbose_name of columns in list view, just like in the metrics list
* Revert "display the verbose_name of columns in list view, just like in the metrics list"
This reverts commit f815d3b3ed.
* [add] Save filters to dashboard
* format code
* fix CI error
* add semicolon semi
* fix none object
* add test data
optimize the js code
fix the compatibility issue
* fix urllib to urllib.parse
* add space
* update test case
* remove 'return'
* fix error
* update test case
* split reducer logic for ExploreViewContainer
* fix saveModal component and unit tests
* revert changes in SaveModal_spec.
will make another commit just to improve test coverage for SaveModal component.
* improve test coverage for explore view components:
- SaveModal component
- URLShortLinkButton
* remove comment-out code
* [bugfix] wrong 'Cant have overlap between Series and Breakdowns' (#3254)
* [explore] make edit datasource a basic link (#3244)
* Relying on FAB for font-awesome.min.css (#3261)
* Modernize SQLA pessimistic handling (#3256)
Looks like SQLAlchemy has redefined the best practice around
pessimistic connection handling.
* [webpack] break CSS and JS files while webpackin' (#3262)
* [webpack] break CSS and JS files while webpackin'
* cleaning up some templates
* Fix pylint issue
* import logging (#3264)
* [bugfix] preserve order in groupby (#3268)
Recently in
https://github.com/apache/incubator-superset/commit/4c3313b01cb508ced8519a68f6479db423974929
I introduced an issue where the order of groupby fields might change.
This addresses this issue and will preserve ordering.
* Explicitly add Flask as dependancy (#3252)
* Use sane Celery defaults to prevent tasks from being delayed (#3267)
* Improve the chart type of Visualize in sqllab (#3241)
* Improve the chart type of Visualize in sqllab & Add some css & Fix the link address in the navbar
* add vizTypes filter
* Set default ports Druid (#3266)
For Druid set the default port for the broker and coordinator.
* [explore] Split large reducer logic in ExploreViewContainer (#3088)
* split reducer logic for ExploreViewContainer
* fix saveModal component and unit tests
* revert changes in SaveModal_spec.
will make another commit just to improve test coverage for SaveModal component.
* remove comment-out code
* fix merge confilicts
* split reducer logic for ExploreViewContainer
* fix saveModal component and unit tests
* revert changes in SaveModal_spec.
will make another commit just to improve test coverage for SaveModal component.
* remove comment-out code
* fix merge confilicts
* [explore] DatasourceControl to pick datasource in modal
Makes it easier to change datasource, also makes it such that the list
of all datasources doesn't need to be loaded upfront.
* Adding more metadata
* [druid] Allow custom druid postaggregators
Also, fix the postaggregation for approxHistogram quantiles so it adds
the dependent field and that can show up in the graphs/tables.
In general, postAggregators add significant power, we should probably
support including custom postAggregators. Plywood has standard
postAggregators here, and a customAggregator escape hatch that allows
you to define custom postAggregators.
This commit adds a similar capability for Superset and a additional
field/fields/fieldName breakdown of the typical naming for dependent
aggregations, which should make it significantly easier to develop
approxHistogram and custom postAggregation-required dashboards.
* [druid] Minor style cleanup in tests file.
* [druid] Apply code review suggestions
* break out CustomPostAggregator into separate class. This just cleans
up the creation of the postaggregator a little bit.
* minor style issues.
* move the function around so the git diff is more readable
* [sqllab] improve Hive support
* Fix "Transport not open" bug
* Getting progress bar to show
* Bump pyhive to 0.4.0
* Getting [Track Job] button to show
* Fix testzz
* Escaping the user's SQL in the explore view
When executing SQL from SQL Lab, we use a lower level API to the
database which doesn't require escaping the SQL. When going through
the explore view, the stack chain leading to the same method may need
escaping depending on how the DBAPI driver is written, and that is the
case for Presto (and perhaps other drivers).
* Using regex to avoid doubling doubles
The end of the interval would be on the truncated today date, which
means that you will exclude today. If your realtime ingestion job
runs shorter than a day, the metadata cannot be pulled from the
druid cluster.
The metric name in the frontend doesn't match the one generated on the
backend. It turns out the explore view will default to the first
metric so specifying one isn't needed.
Related Msg:
sqlalchemy.orm.exc.ObjectDeletedError: Instance '<PermissionView at
0x7f10306b0e90>' has been deleted, or its row is otherwise not present.
* upgrade celery to 4.0.2
* using Redis for unit tests (sqla broker not supported in Celery 4)
* Setting Celery's soft_time_limit based on `SQLLAB_ASYNC_TIME_LIMIT_SEC` config
* Better error handling in async tasks
* Better statsd logging in async tasks
* show [pending/running] query status in Results tab
* systematically using sqla NullPool on worker (async) to limit number
of database connections
* move to explore folder and delete explorev2 folder
* add tests for fetchDatasourceMetadata
* tests for fetchDatasources, fetchDatasourceMetadata
* use $.ajax for fetch dashboards and write test
* sort explicitly on label
* add simple test for /slicemodelview/add endpoint
* make comments and method names more clear
* fix test name
* be more explicit, test status_code
* get compiled js file names
* make manifest available as template var
* use script src directly to avoid flash of unstyled content in the case of csstheme.js
* linting
* attempt to fix tests
* exception
* print the path when no manifest file found
* handle case when manifest.json is not present for some reason, or in the case of tests
* Fix handling of Chunked requests
Add fix for handling chunk encoding requests.
If ENABLE_CHUNK_ENCODING is set to true, for requests with transfer
encoding set to true. It will set wsgi.input_terminated to true which
tells werkzeug to ignore content-length and read the stream till the
end.
break comment in multiple lines
* remove debug print logging
* dont set first datasource as default
* not used
* add a disabled class if datasource is not selected
* sort datasources alphabettically
* make btn disabled is no datasource is selected
* fix linting
* [big number] various improvements
* dynamic number of X axis ticks based on width to prevent label overlap
* corrected overflow on the x axis
* improved tooltips (precise arrow and visible data point circle on hover)
* Fixing tooltips in heatmap viz
* initial structure for add new slice page
* simplify add slice form
* add a test
* fix long line
* use underscore for template name
* fix controls path
* fix vis types select
Some python developers use Python version manager to create and switch Python
enviroments, pyenv (http://github.com/yyuu/pyenv) is one of the version managers.
When you use `pyenv local x.x.x`, `pyenv` will put a `.python-version` file in
project directory, which, in general, should not be commited to git.
Same as explore view, if query takes > 45 seconds not returned, we will show Query timeout warning message. Otherwise user will see 504 Gateway timeout error.
* CONTRIBUTING: document starter_task label
* CONTRIBUTING: PR should work travis python versions
* CONTRIBUTING: move PR guidelines at the top
* CONTRIBUTING: no need to open a new pr after review
in SqlLab view, if query takes over 45 seconds, we will show advise to store a summarized data set before user clicks on Visualize button.
This advise will not block Visualize button.
fixes https://github.com/airbnb/superset/issues/2733
* rename spec folder
* remove special handling for viz_type control since it now uses VizTypeControl
* add test for getOptions
* linting
* add test for cwp
* linting
The reason is that it should be able to create arbitrary filters
over attributes with very high cardinality, where loading all
possible combinations into the filter box is infeasible,
e.g. IPv6 addresses.
* feat(visualization): Create new visualization's tools that display country with geojson file. Currently only france and Spain are loaded
* refacto(visualization): fix issues created by codeclimate
* refacto(visualization): fix issues created by travis for mysql databases
* refacto(visualization): fix issues created by codeclimate
* refacto(visualization): fix issues created by codeclimate
* refacto(visualization): fix issues created by codeclimate
* refacto(visualization): fix issues created by codeclimate
* fix(visualization): fix issues
* doc(visualization): Init visualization documentation
* doc(visualization): init visualization documentation for country
* fix(visualization): implement iso 3166-2 for id of country
* fix(visualization): implement iso 3166-2 for id of country
* doc(visualization): init visualization documentation for country
* fix(visualization): implement iso 3166-2 for id of country
* feat(country_map): add ukraine map in component
* fix(visualization): Test dont working and add color based on metrics
* refacto(visualization): fix issues for es6 and color component
Describe how the feature will be implemented, or the problem will be solved. If possible, include mocks, screenshots, or screencasts (even if from different tools).
### New or Changed Public Interfaces
Describe any new additions to the model, views or `REST` endpoints. Describe any changes to existing visualizations, dashboards and React components. Describe changes that affect the Superset CLI and how Superset is deployed.
### New dependencies
Describe any `npm`/`PyPI` packages that are required. Are they actively maintained? What are their licenses?
### Migration Plan and Compatibility
Describe any database migrations that are necessary, or updates to stored URLs.
### Rejected Alternatives
Describe alternative approaches that were considered and rejected.
[](https://gitter.im/airbnb/superset?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](https://join.slack.com/t/apache-superset/shared_invite/enQtNDMxMDY5NjM4MDU0LWJmOTcxYjlhZTRhYmEyYTMzOWYxOWEwMjcwZDZiNWRiNDY2NDUwNzcwMDFhNzE1ZmMxZTZlZWY0ZTQ2MzMyNTU)
[MessagePack](https://github.com/msgpack/msgpack-python) and
[PyArrow](https://arrow.apache.org/docs/python/) for async query results
backend serialization. To disable set `RESULTS_BACKEND_USE_MSGPACK = False`
in your configuration.
* [8371](https://github.com/apache/incubator-superset/pull/8371): makes
`tables.table_name`, `dbs.database_name`, `datasources.cluster_name`, and `clusters.cluster_name` non-nullable.
Depending on the integrity of the data, manual intervention may be required.
## 0.34.0
* [7848](https://github.com/apache/incubator-superset/pull/7848): If you are
running redis with celery, celery bump to 4.3.0 requires redis-py upgrade to
3.2.0 or later.
* [7667](https://github.com/apache/incubator-superset/pull/7667): a change to
make all Unix timestamp (which by definition are in UTC) comparisons refer
to a timestamp in UTC as opposed to local time.
* [7653](https://github.com/apache/incubator-superset/pull/7653): a change
which deprecates the table_columns.database_expression column. Expressions
should be handled by the DB engine spec conversion, Python date format, or
custom column expression/type.
* The repo no longer contains translation binaries (`.mo`) files. If you
want translations in your build, you now have to run the command
`babel-compile --target superset/translations` as part of your builds
* [5451](https://github.com/apache/incubator-superset/pull/5451): a change
which adds missing non-nullable fields to the `datasources` table. Depending on
the integrity of the data, manual intervention may be required.
* [5452](https://github.com/apache/incubator-superset/pull/5452): a change
which adds missing non-nullable fields and uniqueness constraints (which may be
case insensitive depending on your database configuration) to the `columns`and
`table_columns` tables. Depending on the integrity of the data, manual
intervention may be required.
*`fabmanager` command line is deprecated since Flask-AppBuilder 2.0.0, use
the new `flask fab <command>` integrated with *Flask cli*.
*`SUPERSET_UPDATE_PERMS` environment variable was replaced by
`FAB_UPDATE_PERMS` config boolean key. To disable automatic
creation of permissions set `FAB_UPDATE_PERMS = False` on config.
* [5453](https://github.com/apache/incubator-superset/pull/5453): a change
which adds missing non-nullable fields and uniqueness constraints (which may be
case insensitive depending on your database configuration) to the metrics
and sql_metrics tables. Depending on the integrity of the data, manual
intervention may be required.
* [7616](https://github.com/apache/incubator-superset/pull/7616): this bug fix
changes time_compare deltas to correctly evaluate to the number of days prior
instead of number of days in the future. It will change the data for advanced
analytics time_compare so `1 year` from 5/1/2019 will be calculated as 365 days
instead of 366 days.
## Superset 0.32.0
*`npm run backend-sync` is deprecated and no longer needed, will fail if called
* [5445](https://github.com/apache/incubator-superset/pull/5445): a change
which prevents encoding of empty string from form data in the database.
This involves a non-schema changing migration which does potentially impact
a large number of records. Scheduled downtime may be advised.
## Superset 0.31.0
* If you use `Hive` or `Presto`, we've moved some dependencies that were
in the main package as optional now. To get these packages,
run `pip install superset[presto]` and/or `pip install superset[hive]` as
required.
* Similarly, if you use Celery's `flower`, `gsheetsdb`, `thrift` or
`thrift-sasl`, those dependencies have now been made optional in our
package, meaning you may have to install them in your environment post
0.31.0
* boto3 / botocore was removed from the dependency list. If you use s3
as a place to store your SQL Lab result set or Hive uploads, you may
have to rely on an alternate requirements.txt file to install those
dependencies.
* From 0.31.0 onwards, we recommend not using the npm package `yarn` in
favor of good old `npm install`. While yarn should still work just fine,
you should probably align to guarantee builds similar to the ones we
use in testing and across the community in general.
## Superset 0.30.0
* 0.30.0 includes a db_migration that removes allow_run_sync. This may
require downtime because during the migration if the db is migrated first,
superset will get 500 errors when the code can't find the field (until
the deploy finishes).
## Superset 0.29.0
* India was removed from the "Country Map" visualization as the geojson
file included in the package was very large
## Superset 0.28.0
* Support for Python 2 is deprecated, we only support >=3.6 from
`0.28.0` onwards
* Superset 0.28 deprecates the previous dashboard layout. While 0.27
offered a migration workflow to users and allowed them to validate and
publish their migrated dashboards individually, 0.28 forces
the migration of all
dashboards through an automated db migration script. We
do recommend that you take a backup prior to this migration.
* Superset 0.28 deprecates the `median` cluster label aggregator for mapbox visualizations. This particular aggregation is not supported on mapbox visualizations going forward.
* Superset 0.28 upgrades `flask-login` to `>=0.3`, which includes a
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from https://sphinx-doc.org/)
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?
------------------------------
If you are seeing timeouts (504 Gateway Time-out) when running queries,
it's because the web server is timing out web requests. If you want to
increase the default (50), you can specify the timeout when starting the
web server with the ``-t`` flag, which is expressed in seconds.
There are many reasons may cause long query timing out.
``superset runserver -t 300``
- For running long query from Sql Lab, by default Superset allows it run as long as 6 hours before it being killed by celery. If you want to increase the time for running query, you can specify the timeout in configuration. For example:
``SQLLAB_ASYNC_TIME_LIMIT_SEC = 60 * 60 * 6``
- Superset is running on gunicorn web server, which may time out web requests. If you want to increase the default (50), you can specify the timeout when starting the web server with the ``-t`` flag, which is expressed in seconds.
``superset runserver -t 300``
- If you are seeing timeouts (504 Gateway Time-out) when loading dashboard or explore slice, you are probably behind gateway or proxy server (such as Nginx). If it did not receive a timely response from Superset server (which is processing long queries), these web servers will send 504 status code to clients directly. Superset has a client-side timeout limit to address this issue. If query didn't come back within clint-side timeout (60 seconds by default), Superset will display warning message to avoid gateway timeout message. If you have a longer gateway timeout limit, you can change the timeout settings in ``superset_config.py``:
``SUPERSET_WEBSERVER_TIMEOUT = 60``
Why is the map not visible in the mapbox visualization?
@@ -70,7 +105,7 @@ It's easy: use the ``Filter Box`` widget, build a slice, and add it to your
dashboard.
The ``Filter Box`` widget allows you to define a query to populate dropdowns
that can be use for filtering. To build the list of distinct values, we
that can be used for filtering. To build the list of distinct values, we
run a query, and sort the result by the metric you provide, sorting
descending.
@@ -78,6 +113,11 @@ The widget also has a checkbox ``Date Filter``, which enables time filtering
capabilities to your dashboard. After checking the box and refreshing, you'll
see a ``from`` and a ``to`` dropdown show up.
By default, the filtering will be applied to all the slices that are built
on top of a datasource that shares the column name that the filter is based
on. It's also a requirement for that column to be checked as "filterable"
in the column tab of the table editor.
But what about if you don't want certain widgets to get filtered on your
dashboard? You can do that by editing your dashboard, and in the form,
edit the ``JSON Metadata`` field, more specifically the
@@ -85,15 +125,16 @@ edit the ``JSON Metadata`` field, more specifically the
never be affected by any dashboard level filtering.
..code::
..code-block::json
{
"filter_immune_slices":[324,65,92],
"expanded_slices":{},
"filter_immune_slice_fields":{
"177": ["country_name", "__from", "__to"],
"32": ["__from", "__to"]
}
"177":["country_name","__time_range"],
"32":["__time_range"]
},
"timed_refresh_immune_slices":[324]
}
In the json blob above, slices 324, 65 and 92 won't be affected by any
@@ -103,19 +144,174 @@ Now note the ``filter_immune_slice_fields`` key. This one allows you to
be more specific and define for a specific slice_id, which filter fields
should be disregarded.
Note the use of the ``__from`` and ``__to`` keywords, those are reserved
for dealing with the time boundary filtering mentioned above.
Note the use of the ``__time_range`` keyword, which is reserved for dealing
with the time boundary filtering mentioned above.
But what happens with filtering when dealing with slices coming from
different tables or databases? If the column name is shared, the filter will
be applied, it's as simple as that.
Why does fabmanager or superset freezed/hung/not responding when started (my home directory is NFS mounted)?
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.
How to limit the timed refresh on a dashboard?
----------------------------------------------
By default, the dashboard timed refresh feature allows you to automatically re-query every slice
on a dashboard according to a set schedule. Sometimes, however, you won't want all of the slices
to be refreshed - especially if some data is slow moving, or run heavy queries. To exclude specific
slices from the timed refresh process, add the ``timed_refresh_immune_slices`` key to the dashboard
``JSON Metadata`` field:
..code-block::json
{
"filter_immune_slices":[],
"expanded_slices":{},
"filter_immune_slice_fields":{},
"timed_refresh_immune_slices":[324]
}
In the example above, if a timed refresh is set for the dashboard, then every slice except 324 will
be automatically re-queried on schedule.
Slice refresh will also be staggered over the specified period. You can turn off this staggering
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
{
"stagger_refresh":false,
"stagger_time":2500
}
Here, the entire dashboard will refresh at once if periodic refresh is on. The stagger time of
2.5 seconds is ignored.
Why does 'flask fab' 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
One work around is to create a symlink from ~/.superset to a directory located on a non-NFS partition.
You can override this path using the ``SUPERSET_HOME`` environment variable.
Another work around is to change where superset stores the sqlite database by adding ``SQLALCHEMY_DATABASE_URI = 'sqlite:////new/location/superset.db'`` in superset_config.py (create the file if needed), then adding the directory where superset_config.py lives to PYTHONPATH environment variable (e.g. ``export PYTHONPATH=/opt/logs/sandbox/airbnb/``).
What if the table schema changed?
---------------------------------
Table schemas evolve, and Superset needs to reflect that. It's pretty common
in the life cycle of a dashboard to want to add a new dimension or metric.
To get Superset to discover your new columns, all you have to do is to
go to ``Menu -> Sources -> Tables``, click the ``edit`` icon next to the
table who's schema has changed, and hit ``Save`` from the ``Detail`` tab.
Behind the scene, the new columns will get merged it. Following this,
you may want to
re-edit the table afterwards to configure the ``Column`` tab, check the
appropriate boxes and save again.
How do I go about developing a new visualization type?
To clarify, the *database backend* is an OLTP database used by Superset to store its internal
information like your list of users, slices and dashboard definitions.
Superset is tested using Mysql, Postgresql and Sqlite for its backend. It's recommended you
install Superset on one of these database server for production.
Using a column-store, non-OLTP databases like Vertica, Redshift or Presto as a database backend simply won't work as these databases are not designed for this type of workload. Installation on Oracle, Microsoft SQL Server, or other OLTP databases may work but isn't tested.
Please note that pretty much any databases that have a SqlAlchemy integration should work perfectly fine as a datasource for Superset, just not as the OLTP backend.
How can i configure OAuth authentication and authorization?
interface. This interface allows for defining database-specific configurations
and logic
that go beyond the SQLAlchemy and DBAPI scope. This includes features like:
* date-related SQL function that allow Superset to fetch different
time granularities when running time-series queries
* whether the engine supports subqueries. If false, Superset may run 2-phase
queries to compensate for the limitation
* methods around processing logs and inferring the percentage of completion
of a query
* technicalities as to how to handle cursors and connections if the driver
is not standard DBAPI
* more, read the code for more details
Beyond the SQLAlchemy connector, it's also possible, though much more
involved, to extend Superset and write
your own connector. The only example of this at the moment is the Druid
connector, which is getting superseded by Druid's growing SQL support and
the recent availability of a DBAPI and SQLAlchemy driver. If the database
you are considering integrating has any kind of of SQL support, it's probably
preferable to go the SQLAlchemy route. Note that for a native connector to
be possible the database needs to have support for running OLAP-type queries
and should be able to things that are typical in basic SQL:
- aggregate data
- apply filters (==, !=, >, <, >=, <=, IN, ...)
- apply HAVING-type filters
- be schema-aware, expose columns and types
Another work around is to change where superset stores the sqlite database by adding ``SQLALCHEMY_DATABASE_URI = 'sqlite:////new/localtion/superset.db'`` in superset_config.py (create the file if needed), then adding the directory where superset_config.py lives to PYTHONPATH environment variable (e.g. ``export PYTHONPATH=/opt/logs/sandbox/airbnb/``).
As mentioned in the `Installation & Configuration <https://superset.incubator.apache.org/installation.html#installation-configuration>`_ documentation,
it's possible for administrators to expose more more macros in their
environment using the configuration variable ``JINJA_CONTEXT_ADDONS``.
All objects referenced in this dictionary will become available for users
to integrate in their queries in **SQL Lab**.
Query cost estimation
'''''''''''''''''''''
Some databases support ``EXPLAIN`` queries that allow users to estimate the cost
of queries before executing this. Currently, Presto is supported in SQL Lab. To
enable query cost estimation, add the following keys to the "Extra" field in the
database configuration:
..code-block::json
{
"version":"0.319",
"cost_estimate_enabled":true,
...
}
Here, "version" should be the version of your Presto cluster. Support for this
functionality was introduced in Presto 0.319.
.._ref_ctas_engine_config:
Create Table As (CTAS)
''''''''''''''''''''''
You can use ``CREATE TABLE AS SELECT ...`` statements on SQLLab. This feature can be toggled on
and off at the database configuration level.
Note that since ``CREATE TABLE..`` belongs to a SQL DDL category. Specifically on PostgreSQL, DDL is transactional,
this means that to properly use this feature you have to set ``autocommit`` to true on your engine parameters:
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.