How to limit Date Filter to only show available dates (dropdown instead of calendar)?

Hi everyone,

I’m looking for a way to restrict a dashboard filter to show only the dates that actually exist in my underlying table.

My setup:
I have a table that maintains a rolling 7-day window of data. Every day, a new record is added, and the oldest one is removed. Essentially, the table always contains exactly 7 distinct dates.

The problem:
When I use a standard Date Filter on my dashboard, Metabase displays a full calendar picker. This is confusing for my users because they don't know which 7 days are currently available without clicking around.

In other tools (like Looker Studio), I can easily create a dropdown list based on the actual values in the date column. Or I can set the view filter to only 7 days, despite the number of days in my table (every day separately).

My question:
Is there a way to force Metabase to display a dropdown list of available dates instead of a calendar picker?

I have tried changing the filter type, but since the column is a Date type in the database, Metabase seems to default to the calendar UI. Is there a workaround (e.g., casting the date to a string or changing the Field Type in Data Model settings) that would allow for a simple "Select Date" dropdown containing only those 7 days?

Thanks in advance for your help!

What database are the tables in? What data type is the date column?

I can think of a way to do this with a column of the dates casted to varchar/text, then reference that column as the source of the dropdown values. You might have to make a Model or a database view to create the text-ified column. You need to use a native query for the main query, though, so you can cast the text filter value back to a date type, otherwise you’ll get a type mismatch when the query runs (depending on the DB). This also assumes the string format is easily interchangeable with the date type in your particular DB.

A date makes this a bit easier since they are not timestamp aware and the formats are generally well defined. “Generally” I say, it shouldn’t be a problem if you are taking what the DB sends out and feeding it back to it. Don’t try to localize the format (i.e., change it from m/d/y to d/m/y) or you will have to undo it later and it will be messy.