-
Notifications
You must be signed in to change notification settings - Fork 14.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature: Adding new exploration UI #3449
Conversation
Coverage decreased (-0.1%) to 68.987% when pulling baa8635af44def17e98921778a6fb1eb2f849a32 on tc-dc:fmenges/swivel_exploration into 3dfdde1 on apache:master. |
1 similar comment
Coverage decreased (-0.1%) to 68.987% when pulling baa8635af44def17e98921778a6fb1eb2f849a32 on tc-dc:fmenges/swivel_exploration into 3dfdde1 on apache:master. |
baa8635
to
121cb27
Compare
1 similar comment
121cb27
to
ebfc4f3
Compare
Coverage decreased (-0.1%) to 68.987% when pulling ebfc4f3e68db7f105e7e381dd128a10c63355b9d on tc-dc:fmenges/swivel_exploration into 147c12d on apache:master. |
3 similar comments
Coverage decreased (-0.1%) to 68.987% when pulling ebfc4f3e68db7f105e7e381dd128a10c63355b9d on tc-dc:fmenges/swivel_exploration into 147c12d on apache:master. |
Coverage decreased (-0.1%) to 68.987% when pulling ebfc4f3e68db7f105e7e381dd128a10c63355b9d on tc-dc:fmenges/swivel_exploration into 147c12d on apache:master. |
Coverage decreased (-0.1%) to 68.987% when pulling ebfc4f3e68db7f105e7e381dd128a10c63355b9d on tc-dc:fmenges/swivel_exploration into 147c12d on apache:master. |
ebfc4f3
to
61f39c4
Compare
Coverage decreased (-0.1%) to 68.982% when pulling 61f39c4754e07792224f9d7842fff11c2040d37c on tc-dc:fmenges/swivel_exploration into 7c1b56f on apache:master. |
Could you please remove some animated gifs? This crashed my firefox twice :) |
Worked on my machine :P ... I removed all but two, hope this fixes it. |
@fabianmenges this looks great, any plans when it will be ready? :) |
@DaimonPl We are using this in production already. I'll try to push an updated version of this tomorrow with bug fixes, a few more features and rebased to the current tip of master. Its currently not clear if this will make it upstream (into the master branch) anytime soon. I'll try to make it easier for people to check this version of superset out and run. The more community interest there is for this feature the more likely it is we'll get it into the master branch. |
@fabianmenges hi, any updates on updated version of this branch? This feature looks really great and we would like to give it a try. |
@fabianmenges @mistercrunch hi, I saw recent full annotation framework PR being merged. That's great! Any chances to look into this feature as well? We are currently using external tool (pivot) for similar interaction. It would be really, really great to have such feature built into superset. We are getting very, very good feedback from non-tech users for whom static dashboards sometimes are not enough. |
61f39c4
to
0a31605
Compare
@DaimonPl just pushed an updated version. I'm updating the description, a lot of the 'todos' are now in. UI did not change much but quite a few new features around filters, sessions, request canceling and more. There are discussions getting it into the master branch but nothing concrete. I built Swivel for the exact use case you are describing. |
9dce52e
to
d493c44
Compare
f25d2e1
to
5cf813b
Compare
5cf813b
to
7fd15d8
Compare
That looks great. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes this also looking great
Swivel, a new exploration interface for Superset
Swivel is a new exploration interface with a primary design goal of fast and
interactive data exploration.
It currently only supports the following visualizations:
The main features of Swivel are:
groupbys
andfilters
Swivel state design
Swivel uses both redux-undo and redux-localstorage
Redux-undo allows you access to a full history of your local state.
This is specifically useful since its primary development goal was to allow
fast interactive exploration of datasources.
Redux-localstorage persist the state of your current state e.g. open new browser tabs that inherit
the state of the previous tab. This is useful if you are planning on drilling down into
specific parts of the data in parallel. It also brings you back to your last exploration state
after you close a tab or accidentally close your browser.
In order to efficiently use both redux-localstorage and redux-undo the following state
structure was chosen:
settings
contains the part of the state that is both "undoable" and ispersisted to local storage.
query
is the part of the state that contains all settings which requireto run an updated query against the datasource.
viz
is the part of the state that contains all settings that onlyrequire a re-rendering of the visualization without the need to run a query.
refData
contains all reference data used by the Swivel.refData
is notundoable nor is it persisted in local storage.
control
Thecontrol
part of the state contains the global state/settings of Swivelthat are not required for the visualization. This includes, whether a query is in progress,
an error occoured, etc... the control state is not undoable but persisted in local storage.
Following the redux design guidelines there are reducers and actions for each of these partial states/stores.
Separation of
query
andviz
state and ListenersThe
query
and theviz
part of thesettings
state are separated to easily identify when a query needs to be rerun and when it is enough to rerender the the visualization.For this purpose I've chosen to use renderless React components that located in the
listeners
folder. I could have directly subscribed to the redux state changes but this seemed cleaner.These listeners will trigger the running of the updated query or rerendering the vizualization.
The
viz
state (with its reducers and actions) is extremely incomplete and I can potentially reuse big parts of the current explore view including the related react component architecture to complete it.TODOs
Having
filters