-
Notifications
You must be signed in to change notification settings - Fork 13.8k
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
[SIP-64] Migrate filter_box to Dashboard Native Filter Component #14383
Comments
I think that we should have it as an optional migration tool to run by demand, like a CLI command or a rest endpoint. I can make sure that everyone migrates to the native-filters manually bc we don't have tons of dashboards yet! |
@amitmiran137 I assume your request is to let each dashboard owner run the CLI command? What state is the dashboard currently in, and what state they want to achieve? |
@graceguo-supercat If in the end, we’ll have a back-end migration script that converts a filter box configuration into a native filter configuration, why don’t we skip the part of creating the same logic on the front-end and just do it on the back-end? We can add to each automatically converted filter the status of approved or rejected (which will hide the filter) and offer an option to the owner to set this status on the interface. Something like this: This way we can monitor rejected filters, migration completion, and the owner can save his dashboard without worrying about side effects. Only accepted filters will appear to non-owner users. This workflow also works for users that already have native filters created. The owner can have both filter boxes and native filters at the same time for validation, and when it is validated, he can remove the filter box from the dashboard or we can do it on a pre-defined date. |
In airbnb our DS use Superset do critical jobs. In case any automatically convert didn't work as expected, or after convert to filter components, dashboard is too slow to use etc, we need to unblock our users ASAP so that at least, they can still use old filter_box to complete their work. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. For admin, please label this issue |
Should this stay open? |
I... think so? |
Technically the vote for the SIP is still open, which is why the thread is too. Hopefully we can resolve this soon. It's peculiar since there are more than enough votes to close the SIP, which @graceguo-supercat might want to do, but there's also some talk about the next phase(s) of dashboard filters and how it may further impact this migration plan, so I could also see leaving it open until things are final final. |
Hey, |
PrimerPer #14383 (comment) although the work has been partially completed (per #16992), this SIP has not been voted on and thus I was hoping to share some recent observations combined with a proposed change as to how the migration logic could work, which will then serve as the seed for a formal discussion and potential vote. ObservationsThe dashboard native filters and frontend filter-box migration features are controlled via the DASHBOARD_NATIVE_FILTERS
ENABLE_FILTER_BOX_MIGRATION
Recommendations
|
Per the email I sent on 23-11-2022 titled "[RESULT][VOTE][SIP-64] Migrate filter_box to Dashboard Native Filter Component", The vote has passed with seven +1 binding votes, zero +0 votes, and zero -1 votes. |
@michael-s-molina is the actual work here complete so we can move it to the DONE column? Seems like it :) |
[SIP] Proposal for migrating filter_box viz to dashboard native filter component
Motivation
This is the last step to complete the dashboard filter components. Please see discussion about dashboard filter components.
With the dashboard native filter development become stable, Superset should migrate from filter_box to dashboard native filter components, and prepare to expire filter_box charts. As one of the key component for Superset dashboard in the last 4+ years, and given the big varieties of use cases for different users, this migration will need combination of preview, automatic scripts and manual adjustment, and DB migration.
Note
native_filter_configuration
dashboard metadata, and saved into dashboard.Proposed Change
Precondition
Superset is actively used by at least hundreds of users in many companies as their data analytics tool. In order to make sure that majorities of Superset users' work are not lost, damaged by this filter migration, I feel it is very important to make sure we complete the following Precondition check:
Feature parity: filter components should offer all functionalities that filter_box can do
Performance: When user start to migrate, dashboard performance should not be impacted by using filter components
Extra feature requests: These feature are not available in filter_box, but filter component should provide. They are not blocker to prevent us from moving to Transition Mode.
Fix filter components P0 and P1 bugs
Transition Mode
Once we resolved the feature parity and performance downgrade issue, it is safe to start migrate.
I group users into 2 type and migration solution is a little different:
airbnb user
Not enabled native filter feature flag at the beginning of migration. These users do not have
native_filter_configuration
in the dashboard metadata. I propose this migration process:When Dashboard owner open their dashboard, we offer a function in the front-end (JS only), which read config from each filter_box and automatically convert them into the data compatible with
native_filter_configuration
. Dashboard will seamlessly display filter components from converted filter config. At the same time, dashboard will disable filter_box chart and dashboardFilter related front-end logic to make sure didn't make unnecessary requests.Now Dashboard owner should see how filter components work without much manual work. They should check if filter component generate correct filter value, if filter has right scope, etc,. This is to verify the logic of front-end migration valid and works well.
If Dashboard owner find some issues for the converted version, or any UI/UX feedback, concerns, they can report issue. Dashboard will keep intact no change.
If Dashboard owner do not want to verify right now, I also offer a snooze mode, which allow user set a period of time and Dashboard will not be converted when user open it. After the snooze time, dashboard will be automatically converted again.
If Dashboard owner like the converted dashboard, they can choose SAVE dashboard before they leave. After that this dashboard will have good
native_filter_configuration
in dashboard metadata. And when owner opens dashboard next time, we don't need to run front-end migration logic.Note: There is a tricky part: when Dashboard owner is reviewing JS-converted filters, he/she probably can not save other changes without save native_filter_configuration. We should show clear confirm message to let owners know what content get saved.
advanced users
Already enabled native filter feature flag at the beginning of migration. These users already manually created native filter in their dashboard so that they had
native_filter_configuration
metadata.For these users, they already had filter components in the dashboard, but may also have some old filter_box. So they already knew how filter component work, and there is no data or functionality lost concerns. These users are like above user after Step 5.
Given they already had created valuable
native_filter_configuration
, we should not add automatic converted content into this metatdata.Dashboard owners have to manually create filter components to replace their filter_box. In Transition mode, all filter_box will stop working in the dashboard (as long as dashboard has
native_filter_configuration
metadata).DB Migration
After large number of dashboard filter_box are safely migrated to native filter components, we can move to DB Migration step.
During DB migration, there will be a python function that walk through all dashboards and change its metadata. It will do complete following jobs:
native_filter_configuration
: find its filter_box config and convert them intonative_filter_configuration
, and saved into dashboard metadata.Then we can remove all filter_box viz from slices table, remove front-end JS convert logic, and etc.
New or Changed Public Interfaces
New dependencies
See Precondition section above for more details.
Migration Plan and Compatibility
Based on your dashboard complexity and filter component usage, corporation/company can optionally kickoff migration mode after this PR merged.
Migration mode is optional. In the end all filter_box used in the dashboard, will be converted into filter component by DB migration script (this will be created later by separated PR). And from then on Superset will not expire filter_box viz type in our codebase.
Rejected Alternatives
N/A
The text was updated successfully, but these errors were encountered: