dagster-io / dagster

An orchestration platform for the development, production, and observation of data assets.
https://dagster.io
Apache License 2.0
11.12k stars 1.39k forks source link

Allow filtering by only one dimension of MultiPartition in web UI #18668

Open rprechelt opened 8 months ago

rprechelt commented 8 months ago

What's the use case?

On the "Runs" page in the Dagster UI, there is the ability to filter the displayed runs by "Partition" 👍. However, in the case of a MultiPartitionDefinition, the UI does not allow for filtering by the value of only one dimension: the UI will not "select" unless I actually select a full key1|key2 partition key.

It would be extremely to be able to filter on only key1 and have all possible values of dimension2 in the run view, and vice versa.

For example, I have the following definition:

partitions = MultiPartitionsDefinition({
    "country": StaticPartitionsDefinition(["USA", "Australia", "Canada"]), 
    "date": DailyPartitionsDefinition(...)
})

In the Dagster filter UI, I can only filter by USA|20231212 (and see all historical runs for that country on that date), whereas it would be incredibly useful to be able to filter by just USA and see all runs for all dates with that country. Similarly, being able to filter on 20231212 and see runs relating to "USA", "Australia", and "Canada" on that date.

Ideas of implementation

The most generic solution would be to allow "fuzzy filtering" for partitions in the "Runs" filter UI (which covers all possible use cases). If this is not an option, the MVP would be adding the 1D partition keys to the list of available choices in the filter menu, e.g. in the example above, make "USA", "Australia", and "Canada" selectable options in the filter UI.

Additional information

No response

Message from the maintainers

Impacted by this issue? Give it a 👍! We factor engagement into prioritization.

salazarm commented 8 months ago

@johannkm Do you know how feasible this is?

johannkm commented 8 months ago

We tag runs with dagster/partition: <dim 1 value>|<dim 2 value>, dagster/partition/<dim 1 name>: dim 1 value, and dagster/partition/<dim 2 name>: dim 2 value. The latter two should be enough to power this from the backend using the existing tags filter.

I think if we decide on how the new filter option should look, we can add this with only JS. A challenge with design might be that we can't really know if partition is a multi partition (e.g. there might be multiple partitions defs which share the same name and some are, some aren't).

johannkm commented 8 months ago

@braunjj could we put this in the design queue? Happy to share more details as needed