-
Notifications
You must be signed in to change notification settings - Fork 16.3k
Add filters to Browse XComs #54049
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
Add filters to Browse XComs #54049
Conversation
|
Looks good on the first view. When I test I realize that an exact match is needed, also no wildcard is supported. Can this be added? |
|
Thanks for the review @jscheffl! Yes, I'll modify the backend to use I'll add this once the UI work is finalized. |
UI UpdateHere’s a quick demo of the new Advanced filter. Hope this help us to push the main issue forward. filter.mp4I've avoided abstracting these components for now to prevent premature optimization, as the UI design isn't final yet. I'll make them reusable for other pages once the design stabilizes. |
pierrejeambrun
left a comment
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.
Nice.
Do not incorporate the collapsing of filters etc... in this PR. (FilterManager.tsx) It is a separate one because we will probably need to discuss about the design. We should keep the same structure that other page filters, for instance in your example there is no 'reset filter' button, etc.
|
@pierrejeambrun Sure! I'll scope this PR down to focus on the core filtering functionality. My initial reason for adding the collapsible panel was based on the "UI Impact" section in the related issue #53056, but I completely agree that a separate PR is better for discussing and implementing. I'll make a separate PR for those UI changes after finishing the basic filter. 💪 |
fix(api): Refactor XCom entries filter fix(api): Correct XCom endpoint filtering
|
I noticed that filtering by So I changed |
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.
Nice! Thanks for the PR!
Non-blocking:
It would be great to add some test cases for new filters in airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_xcom.py, thanks.
jscheffl
left a comment
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.
I also think this is looking good now!
One thing that jumps into my view now - but is something that might be a follow-up PR: The view in the tag of a task instance is fitlering on the task instance. But (1) filters as well as (2) table columns are not needed for these pre-selections as dag, run, task, map-index are filtered. That might make the screen a bit cleaner inside the tab of the grid view:

|
@jason810496 Sure, I'll give it a try! |
|
@jscheffl I'm happy to open a follow-up PR to hide the filter bars and clean up the UI for task instance Xcom tab. Before I start, I want to make sure we're all aligned. @pierrejeambrun mentioned previously in this PR that he'd prefer to keep the filtering options on detail pages. To make sure I build the right thing, could we get a consensus on the final direction? |
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.
A few things to address but looking good overall!
airflow-core/src/airflow/api_fastapi/core_api/routes/public/xcom.py
Outdated
Show resolved
Hide resolved
Yeah, follow-up PR is totally fine! |
Yes Jens is right, we need to hide some filters in the details tab depending on the context. (those that are set in the URL should not appear). I tend to recommend to do it in this PR because this PR is not self sufficient and the follow up is required. If for some reason we can't work on the follow up, we forget to do it or it gets delayed, the UI is in a blocking state. Unless you're sure you can follow up in a short term, then it doesn't really matter, and as you prefer. |
|
Agreed, collapsing the advanced search is a good idea. Notion's filter design is also a great example. It lets users combine multiple conditions with direct results, the UI is clean, and the functionality is flexible. I personally think it's an even better pattern than the traditional dropdown form. Notion filters examplenotion_filter.mp4 |
|
It could look like this: filterPill_demo.mp4 |
|
@RoyLee1224 Oh yeah that's much better. Let's do that in a separate PR |
|
@bbovenzi Sure, I'm happy to open follow-up PR for new filter design. And I'll try to make it reusable for other pages. |
(from https://github.com/apache/airflow/tree/python-client/3.1.0rc1) ## New Features: - Add `map_index` filter to TaskInstance API queries ([#55614](apache/airflow#55614)) - Add `has_import_errors` filter to Core API GET /dags endpoint ([#54563](apache/airflow#54563)) - Add `dag_version` filter to get_dag_runs endpoint ([#54882](apache/airflow#54882)) - Implement pattern search for event log endpoint ([#55114](apache/airflow#55114)) - Add asset-based filtering support to DAG API endpoint ([#54263](apache/airflow#54263)) - Add Greater Than and Less Than range filters to DagRuns and Task Instance list ([#54302](apache/airflow#54302)) - Add `try_number` as filter to task instances ([#54695](apache/airflow#54695)) - Add filters to Browse XComs endpoint ([#54049](apache/airflow#54049)) - Add Filtering by DAG Bundle Name and Version to API routes ([#54004](apache/airflow#54004)) - Add search filter for DAG runs by triggering user name ([#53652](apache/airflow#53652)) - Enable multi sorting (AIP-84) ([#53408](apache/airflow#53408)) - Add `run_on_latest_version` support for backfill and clear operations ([#52177](apache/airflow#52177)) - Add `run_id_pattern` search for Dag Run API ([#52437](apache/airflow#52437)) - Add tracking of triggering user to Dag runs ([#51738](apache/airflow#51738)) - Expose DAG parsing duration in the API ([#54752](apache/airflow#54752)) ## New API Endpoints: - Add Human-in-the-Loop (HITL) endpoints for approval workflows ([#52868](apache/airflow#52868), [#53373](apache/airflow#53373), [#53376](apache/airflow#53376), [#53885](apache/airflow#53885), [#53923](apache/airflow#53923), [#54308](apache/airflow#54308), [#54310](apache/airflow#54310), [#54723](apache/airflow#54723), [#54773](apache/airflow#54773), [#55019](apache/airflow#55019), [#55463](apache/airflow#55463), [#55525](apache/airflow#55525), [#55535](apache/airflow#55535), [#55603](apache/airflow#55603), [#55776](apache/airflow#55776)) - Add endpoint to watch dag run until finish ([#51920](apache/airflow#51920)) - Add TI bulk actions endpoint ([#50443](apache/airflow#50443)) - Add Keycloak Refresh Token Endpoint ([#51657](apache/airflow#51657)) ## Deprecations: - Mark `DagDetailsResponse.concurrency` as deprecated ([#55150](apache/airflow#55150)) ## Bug Fixes: - Fix dag import error modal pagination ([#55719](apache/airflow#55719))
(from https://github.com/apache/airflow/tree/python-client/3.1.0rc1) ## New Features: - Add `map_index` filter to TaskInstance API queries ([#55614](apache/airflow#55614)) - Add `has_import_errors` filter to Core API GET /dags endpoint ([#54563](apache/airflow#54563)) - Add `dag_version` filter to get_dag_runs endpoint ([#54882](apache/airflow#54882)) - Implement pattern search for event log endpoint ([#55114](apache/airflow#55114)) - Add asset-based filtering support to DAG API endpoint ([#54263](apache/airflow#54263)) - Add Greater Than and Less Than range filters to DagRuns and Task Instance list ([#54302](apache/airflow#54302)) - Add `try_number` as filter to task instances ([#54695](apache/airflow#54695)) - Add filters to Browse XComs endpoint ([#54049](apache/airflow#54049)) - Add Filtering by DAG Bundle Name and Version to API routes ([#54004](apache/airflow#54004)) - Add search filter for DAG runs by triggering user name ([#53652](apache/airflow#53652)) - Enable multi sorting (AIP-84) ([#53408](apache/airflow#53408)) - Add `run_on_latest_version` support for backfill and clear operations ([#52177](apache/airflow#52177)) - Add `run_id_pattern` search for Dag Run API ([#52437](apache/airflow#52437)) - Add tracking of triggering user to Dag runs ([#51738](apache/airflow#51738)) - Expose DAG parsing duration in the API ([#54752](apache/airflow#54752)) ## New API Endpoints: - Add Human-in-the-Loop (HITL) endpoints for approval workflows ([#52868](apache/airflow#52868), [#53373](apache/airflow#53373), [#53376](apache/airflow#53376), [#53885](apache/airflow#53885), [#53923](apache/airflow#53923), [#54308](apache/airflow#54308), [#54310](apache/airflow#54310), [#54723](apache/airflow#54723), [#54773](apache/airflow#54773), [#55019](apache/airflow#55019), [#55463](apache/airflow#55463), [#55525](apache/airflow#55525), [#55535](apache/airflow#55535), [#55603](apache/airflow#55603), [#55776](apache/airflow#55776)) - Add endpoint to watch dag run until finish ([#51920](apache/airflow#51920)) - Add TI bulk actions endpoint ([#50443](apache/airflow#50443)) - Add Keycloak Refresh Token Endpoint ([#51657](apache/airflow#51657)) ## Deprecations: - Mark `DagDetailsResponse.concurrency` as deprecated ([#55150](apache/airflow#55150)) ## Bug Fixes: - Fix dag import error modal pagination ([#55719](apache/airflow#55719))




Related Issue
closes: #53056
Changes Made
Added search filters for
Key,Dag display name,Task ID,Run ID,logical date,run after.- Note: The current implementation requires an exact match for the filter values.Screenshot
xcom_filters.mp4
TO-DO
Logical Date Range,Run After Range)map_indexfilter with NumberInput^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named
{pr_number}.significant.rstor{issue_number}.significant.rst, in airflow-core/newsfragments.