Commit Graph

210 Commits

Author SHA1 Message Date
John Bodley
7f1d7543d0 [logs] Dropping dt column (#4587) 2018-04-10 18:34:32 -07:00
Beto Dealmeida
426c34ee86 Pass granularity from backend to frontend as ISO duration (#4755)
* 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
2018-04-06 16:19:17 -07:00
Maxime Beauchemin
f6fe11f76e [bugfix] convert metrics to numeric in dataframe (#4726)
* [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
2018-04-02 21:48:14 -07:00
timifasubaa
8dd052de4b [security] Refactor security code into SupersetSecurityManager (#4565)
* 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
2018-03-27 16:46:02 -07:00
Maxime Beauchemin
93ec76f757 [sql lab] reduce the number of metadata calls when loading a table (#4593) 2018-03-15 17:53:34 -07:00
Maxime Beauchemin
d522292b01 [sql lab] option to disable cross schema search (#4551)
* [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
2018-03-09 14:54:39 -08:00
Maxime Beauchemin
34a081b926 [sql lab] comment injection hook (#4585) 2018-03-09 11:27:36 -08:00
Maxime Beauchemin
b63dc91cd1 Expose hook to inject database connection logic on the fly (#4505)
* 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
2018-03-06 22:35:46 -08:00
Maxime Beauchemin
83524f97d7 [WiP] Cleanup & fix URL scheme for the explore view (#4490)
* Improve URLs

* Fix js tests
2018-02-27 15:08:06 -08:00
John Bodley
d57a37e341 [flake8] Adding flake8-coding (#4477) 2018-02-25 15:06:11 -08:00
Grace Guo
342180b263 [Explore view] Use POST method for charting requests (#3993)
* [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
2018-02-13 17:21:15 -08:00
Maxime Beauchemin
2e172d77cf Fix caching issues (#4316) 2018-02-07 14:49:19 -08:00
Grace Guo
724c3f48a4 add frontend logging utility function (#4226)
add loading log for dash and exploreview
breakdown whole page load action to multiple charts loading events and render events
2018-01-30 10:27:13 -08:00
timifasubaa
2c72a7ae4f Use json for imports and exports, not pickle (#4243)
* make superset imports and exports use json, not pickle

* fix tests
2018-01-23 20:55:27 -08:00
Maxime Beauchemin
4b11f45f72 Using a NullPool for external connections by default (#4251)
Currently, even though `get_sqla_engine` calls get memoized, engines are
still short lived since they are attached to an models.Database ORM
object. All engines created through this method have the scope of a web
request.

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

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

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

Opening the PR for conversation. Putting this query into our staging
today to run some tests.
2018-01-23 15:13:50 -08:00
fabianmenges
23c98294bd Moving the custom_password_store out of Database class (#4182) 2018-01-09 13:14:20 -08:00
Maxime Beauchemin
0a6208296e [explore] add datasource metadata (#4104) 2018-01-02 08:41:27 -08:00
Jeff Niu
af7cdeba4d [Feature] enhanced memoized on get_sqla_engine and other functions (#3530)
* added watch to memoized

* added unit tests for memoized

* code style changes
2017-12-17 10:35:00 -08:00
fabianmenges
72627b1761 Adding YAML Import-Export for Datasources to CLI (#3978)
* Adding import and export for databases

* Linting
2017-12-05 11:14:52 -08:00
michellethomas
9904593dc3 Improving speed of dashboard import (#3958)
* Improve dashboard import

* Updating tests for Slice.import_obj
2017-11-30 20:47:22 -08:00
Yu Xiao
feb15a30a2 fix the schema-fetching problem for impala in sql_lab (#3906)
* fix the schema-fetching problem for impala in sql_lab

* delete redundant print

* remove blank lines...

* minior corrections
2017-11-21 09:28:31 -08:00
John Bodley
ac57780607 [flake8] Resolving Q??? errors (#3847) 2017-11-13 21:06:51 -08:00
John Bodley
1b4f128f55 [flake8] Resolving F5?? errors (#3846) 2017-11-12 11:09:22 -08:00
John Bodley
d908e48d61 [slice] Removing deprecated argument (#3838) 2017-11-11 21:44:24 -08:00
John Bodley
1ea4521d0c [flake8] Resolving E7?? errors (#3816) 2017-11-09 20:23:59 -08:00
Ishpreet Singh
0280bc52e0 Allowing Leading and Trailing spaces in connection (#3433) 2017-11-07 22:13:18 -08:00
John Bodley
17623f71d4 [flake8] Resolving C??? errors (#3787) 2017-11-07 21:32:45 -08:00
John Bodley
e2bca47421 [flake8] Resolve I??? errors (#3797) 2017-11-07 20:23:40 -08:00
Alejandro Fernandez
b059506afa DI-1113. ADDENDUM. Authentication: Enable user impersonation for Superset to HiveServer2 using hive.server2.proxy.user (a.fernandez) (#3697) 2017-11-06 10:20:38 -08:00
mxmzdlv
5bc734b2e5 Fix has_table method (#3741)
Dialect's has_table method requires connection as the first argument, not engine (https://github.com/zzzeek/sqlalchemy/blob/master/lib/sqlalchemy/engine/interfaces.py#L454). Instead, we can use engine's has_table method that handles the connection for us (https://github.com/zzzeek/sqlalchemy/blob/master/lib/sqlalchemy/engine/base.py#L2141). Alternatively, we could call engine.dialect.has_table(engine.connect(), ...).
2017-10-30 21:04:23 -07:00
Maxime Beauchemin
a9b6d11ade Validate JSON in slice's params on save (#3720)
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.
2017-10-26 16:16:21 -07:00
Alejandro Fernandez
adef519583 DI-1113. Authentication: Enable user impersonation for Superset to HiveServer2 using hive.server2.proxy.user (a.fernandez) (#3652) 2017-10-16 20:15:16 -07:00
Maxime Beauchemin
76f8d33d81 [sql lab] fix impersonation + template issue (#3644)
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.
2017-10-10 17:52:22 -07:00
Jeff Niu
f3146ef6f9 Add Table performance improvements (#3509)
* Improved performance of 'Add table' function

* got rid of pvt function call

* changes metric obj to key on metric_name
2017-09-25 11:35:09 -07:00
Dmitry Goryunov
c988080990 Feature: "Impersonate user" setting on Datasource (#3404)
* 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
2017-09-18 09:52:29 -07:00
fabianmenges
fdee06bbf2 Adding hook for external password store for databases (#3436) 2017-09-13 20:59:03 -07:00
Maxime Beauchemin
e53f3032bb [dashboard] adding an option to duplicate slices when "Saving AS" (#3391)
* [dashboard] adding an option to duplicate slices when "Saving AS"

* Fix tests
2017-08-30 14:09:29 -07:00
timifasubaa
8d877e8a35 [explore] Fix and test slice id logging issue (#3339)
* [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
2017-08-24 09:11:41 -07:00
Rogan
a5320a0f37 [add] Save filters to dashboard (#3183)
* [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
2017-08-10 20:49:49 -07:00
Rich @ RadICS
163f4e359c Allow 'refresh_immune_slices' (#2974)
* Allow 'refresh_immune_slices'

* Changed param name, added note in FAQ

* Linting
2017-08-02 08:46:19 -07:00
Maxime Beauchemin
06fcaa3095 Stabilizing Celery / SQL Lab (#2981)
* 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
2017-06-20 13:55:03 -07:00
Maxime Beauchemin
7c5f61d6a6 Adding some STATSD logging (#2715) 2017-05-18 15:25:09 -07:00
Maxime Beauchemin
fe3f5f69ae [hotfix] 'No numeric types to aggregate' 2017-05-16 21:57:02 -07:00
Rich @ RadICS
91d951ac42 Change hardcoded references to 'User' security model to allow custom class override (#2728) 2017-05-12 09:37:24 -07:00
Maxime Beauchemin
a6e1e18244 [sql lab] fix CREATE TABLE AS (#2719) 2017-05-06 21:23:55 -07:00
Maxime Beauchemin
d65054e015 [sql lab] fix csv export where % in query (#2711)
* [sql lab] fix csv export where  in query

* Prgoress
2017-05-04 16:34:18 -07:00
Maxime Beauchemin
03c42b5b87 Showing slices on datasource edit form (#2645)
* Showing slices on datasource edit form

* fixing build
2017-04-24 17:40:34 -07:00
Maxime Beauchemin
efaef8fe09 [hotfix] fix endpoint 2017-04-17 17:58:13 +00:00
Maxime Beauchemin
23aeee5a9c Slice level cache_timeout isn't taken into consideration (#2631) 2017-04-17 08:48:33 -07:00
Maxime Beauchemin
fc7bd63039 [sql lab] fixes issues specific to Sqlite (#2606) 2017-04-13 15:19:58 -07:00