A sales manager opens a monthly Power BI report and asks a simple question: “When did this customer first buy from us?” The data comes from Excel files stored in SharePoint, and the report already shows revenue, orders, and product performance. Yet finding the first transaction date correctly becomes difficult once users start filtering by region, salesperson, or product category.
I have seen this often in client sales dashboards. A basic date calculation works in a table visual but suddenly returns an unexpected result in a card or chart because the filter context changes. The MIN function solves this problem when you understand what table and filters Power BI evaluates.
This guide shows how to use Power BI DAX MIN Date in a real sales dashboard, including basic measures, filtered calculations, date tables, visuals, and common mistakes.
What Is Power BI DAX MIN Date?
Power BI DAX MIN Date returns the earliest date from a date column or from two date values. DAX stands for Data Analysis Expressions, the formula language used in Power BI for measures, calculated columns, and tables.
For a retail sales dashboard, imagine a Sales table with these fields:
- Order ID
- Order Date
- Customer Name
- Product Category
- Region
- Sales Amount
If the oldest order date in the Sales table is February 6, 2023, the following measure returns that date:
First Sales Date = MIN(Sales[Order Date])
This formula creates a Measure, which calculates a result when someone views a report visual. Unlike a calculated column, a measure reacts to filters, slicers, rows, and columns in the report.
For example, when a manager selects the South region in a Slicer, the measure returns the earliest order date only for that region. That behavior makes the measure useful in interactive reports.
Before going deeper, it helps to understand the wider role of DAX in reporting. Review this practical guide to Power BI DAX functions if you want a stronger foundation for writing and organizing DAX measures.
Why Use Power BI DAX MIN Date?
A minimum date measure helps you answer business questions that sales totals alone cannot answer. It gives context about the beginning of an activity, customer relationship, campaign, or product launch.
In a mid-sized retail company dashboard, I commonly use the earliest date for these scenarios:
- Show the first recorded sale in the selected period.
- Identify a customer’s first purchase date.
- Find the earliest order date for a product category.
- Check the first date available after a data refresh.
- Calculate how long a customer has remained active.
- Flag stores or salespeople with no recent history.
- Display the beginning date for a selected campaign or project.
The key benefit is that MIN responds to report context. A card may show the earliest overall order date. A table grouped by customer may show a different earliest date for every customer. A line chart can use the measure as part of a more advanced KPI calculation.
For example, the same formula below returns different values depending on the visual:
First Sales Date = MIN(Sales[Order Date])

In a Card visual, it returns the earliest date across all visible records. In a Table visual with Customer Name on rows, it returns the earliest order date for each customer. In a report with a Region slicer, it returns the earliest date for the selected region.
Pro Tip: In my experience, most wrong minimum-date results come from filters, not from the MIN formula itself. Before changing DAX, I always test the measure in a table with the same columns and slicers used by the report page.
Power BI DAX MIN Date Syntax
The simplest syntax accepts one column:
MIN(<column>)
For a date column, use:
First Sales Date = MIN(Sales[Order Date])
The function scans the visible values in Sales[Order Date] and returns the earliest one.
You can also compare two scalar values:
MIN(<expression1>, <expression2>)
For example, you might compare a selected date against today’s date:
Earlier Date =
MIN(
SELECTEDVALUE('Date'[Date]),
TODAY()
)
However, I recommend the one-column version for most dashboard reporting. It is easier to read, easier to test, and works naturally with filters.
MIN Versus MINA
MIN works well with numeric values, dates, and text comparisons. MINA also evaluates logical values and text values differently. For date calculations, use MIN unless you have a very specific reason to include non-date values.
Your source column should use the Date or Date/Time data type. If Power BI stores dates as text, MIN may return incorrect results or fail to sort dates properly.
If your imported dates arrive as numbers such as 20240131, first convert them using this guide on how to convert YYYYMMDD to date in Power BI. Clean date fields before writing DAX.
Set Up the Sales Data Model in Power BI
A reliable Power BI DAX MIN Date measure starts with a clean data model. A data model is the set of tables and relationships that Power BI uses to calculate and display results.
For this example, use a retail sales model with:
- Sales as the fact table containing transaction-level orders.
- Date as the calendar table containing one row for every date.
- Customers as the customer lookup table.
- Products as the product lookup table.

The Sales table may come from a SQL Server database, an Excel file, or a SharePoint list. The source does not change the DAX formula, but it does affect refresh planning and data quality.
Load and check the date field in Power BI
Follow these steps in Power BI Desktop:
- Select Get data and connect to your sales source.
- Choose Transform data to open Power Query Editor.
- Select the Order Date column in the Sales table.
- Set its data type to Date if you do not need time values.
- Select Close & Apply to load the cleaned data model.
- Open Data view and confirm that order dates sort chronologically.

If your source contains date and time values, decide whether time matters. For first-sale reporting, the date often matters more than the precise order time. You can create a date-only field in Power Query or use a DAX calculated column when appropriate.
Create a dedicated Date table
A Date table is a separate table that contains every calendar date in a defined period. It supports time intelligence, consistent filtering, and cleaner report design.
Create a calculated table from Modeling > New table:
Date =
CALENDAR(
MIN(Sales[Order Date]),
MAX(Sales[Order Date])
)
This formula creates a continuous calendar from the first sales date to the last sales date.
Next, add useful reporting columns:
Year = YEAR('Date'[Date])
Month Number = MONTH('Date'[Date])
Month Name = FORMAT('Date'[Date], "MMMM")
Year Month = FORMAT('Date'[Date], "YYYY-MM")

Sort Month Name by Month Number so month visuals follow calendar order. You can learn more about sorting month values through this guide on getting the month name from a month number in Power BI.
Then select the Date table, open Table tools, choose Mark as date table, and select the Date column. This tells Power BI that the table controls time-based calculations.
Create the relationship in Power BI
Open Model view and create a one-to-many relationship:
Date[Date] → Sales[Order Date]
The Date table should sit on the one side, and the Sales table should sit on the many side. Use a single-direction filter from Date to Sales in most cases.
This layout follows a star schema, where lookup tables filter a central transaction table. It makes calculations more predictable and helps performance as the sales dataset grows.
Create Your First Power BI DAX MIN Date Measure
Once the data model is ready, create the basic measure.
- In the Fields pane, select the Sales table.
- Select Modeling > New measure.
- Enter the formula below.
- Press Enter.
- Set the measure format to Short date in the Measure tools pane.
First Sales Date = MIN(Sales[Order Date])

The measure returns the earliest visible order date. The word “visible” matters because a slicer, visual row, page filter, or report filter can reduce the available records.
Create a basic sales measure alongside it:
Total Sales = SUM(Sales[Sales Amount])

This measure adds every visible sales amount. Use it in the same visual as First Sales Date to connect the beginning date with the selected sales amount.
If you need help deciding when to use each type of calculation, read the comparison between a calculated column and measure in Power BI. For a date returned by a filter-aware report visual, a measure is usually the right choice.
Use Power BI DAX MIN Date in a Sales Dashboard
A measure becomes useful when you place it in the right visual. For the retail sales dashboard, I would create a report page with a date slicer, region slicer, customer table, and a few clear KPIs.
Add an earliest-sale KPI card
A Card visual displays a single key number or value. Add a Card visual and drag First Sales Date into its field well.

Then add a date Slicer using Date[Date]. When a manager selects a date range, the Card shows the first order within that range. When they select a region, the Card shows the first sale in that region.
A date slicer gives users control without requiring separate report pages. If you need options such as between dates, before a date, or relative dates, follow this walkthrough for a Power BI date slicer.
Show the first purchase date by customer
Add a Table visual with:
- Customers[Customer Name]
- Total Sales
- First Sales Date

The First Sales Date measure now calculates separately for every customer row. This gives sales teams a quick view of customer tenure and revenue.
For example, a customer with a first purchase date in 2021 may need a different engagement approach than a customer acquired last month. You can add a customer segment slicer or product category slicer without changing the formula.
Create a first order date measure that ignores date slicers
Sometimes the sales manager wants the true first-ever purchase date, even when the report page uses a date slicer. The basic MIN measure will change with the slicer, so use CALCULATE with REMOVEFILTERS.
First Ever Sales Date =
CALCULATE(
MIN(Sales[Order Date]),
REMOVEFILTERS('Date')
)

CALCULATE changes the filter context used by a measure. REMOVEFILTERS(‘Date’) removes filters coming from the Date table, while customer, region, and product filters can remain active.
Put both measures into a customer table:
- First Sales Date shows the earliest date inside the current date selection.
- First Ever Sales Date shows the customer’s earliest date across all recorded history.
This comparison helps business users understand why a date changes after they adjust a slicer.
For related techniques, see how to remove filters in Power BI DAX. It is one of the most useful skills when building interactive KPIs.
Return the earliest date for a selected condition
You may need the earliest order date for a particular status, such as Completed orders. Use CALCULATE with a filter condition:
First Completed Order Date =
CALCULATE(
MIN(Sales[Order Date]),
Sales[Order Status] = "Completed"
)

This measure first filters the Sales table to completed orders, then returns the earliest order date from those rows.
You can apply the same pattern to a campaign, product category, sales channel, or territory. The rule stays the same: define the business condition clearly, then calculate the minimum date from the filtered data.
If conditions become more complex, use the techniques in this guide about filtering Power BI data with DAX.
Pro Tip: I name date measures based on their filter behavior. “First Sales Date” means the current report filters affect it. “First Ever Sales Date” signals that the formula ignores the calendar filter. Clear names prevent confusion during report handover.
Calculate Days Since the First Sale in Power BI
The earliest date becomes more valuable when you use it in another measure. One common KPI is customer tenure, which measures the number of days from the first purchase through today.
Create this measure:
Days Since First Sale =
DATEDIFF(
[First Ever Sales Date],
TODAY(),
DAY
)

DATEDIFF counts the difference between two dates. This formula takes the earliest lifetime sales date and compares it with today.
Add the measure to a customer table or a customer profile tooltip. You can also group customers into tenure bands such as New, Growing, and Established.
For example, create a calculated column in the Customers table only if you have a stable customer-level first purchase date. For interactive reporting, prefer a measure because it responds to filters.
You can explore the function in more detail in this guide to DATEDIFF in Power BI DAX.
Build a Better Date-Aware Report
The Power BI DAX MIN Date measure should support a business decision, not just fill a card visual. For the retail dashboard, combine it with other visuals that answer the next question.
Use this layout:
- A Card for First Sales Date.
- A Card for Total Sales.
- A Line chart for monthly sales trend.
- A Clustered column chart for sales by product category.
- A Table for customers, first purchase date, total sales, and days since first sale.
- Slicers for date, region, category, and salesperson.

A line chart helps managers see whether sales grew after the earliest selected date. A clustered column chart helps them compare category results. Learn how to configure a clustered column chart in Power BI when you want a clean category comparison.
Use Date[Date] in slicers and chart axes, not Sales[Order Date]. The separate Date table keeps date filtering consistent across all visuals.
When the report is ready, publish it to the Power BI Service. The Power BI Service is the online environment where teams store, share, refresh, and manage reports. Publish to a workspace, configure refresh credentials for the Excel, SharePoint, or SQL source, and share the report with the right business group.
Key Points
- Use a true date data type: Do not calculate minimum dates from text fields. Convert imported text or number dates before creating the measure.
- Know your filter context: A slicer, visual row, and report filter can change the result of
MIN(Sales[Order Date]). Use a test table to verify the expected context. - Create a dedicated Date table: Build and mark a continuous Date table, then use it for slicers, axes, and time calculations.
- Choose measures over calculated columns: Use a Measure for a date KPI that should react to report selections. Use a calculated column only when you need a fixed row-level value.
- Avoid unnecessary bidirectional relationships: A one-way relationship from Date to Sales keeps filters predictable and reduces model complexity.
- Protect sensitive sales data: Apply Row-Level Security when different regional managers should see only their assigned records. Learn how to configure Row-Level Security in Power BI before sharing the report.
Frequently Asked Questions
How do I find the minimum date in Power BI DAX?
Create a measure using the MIN function and the date column:
First Date = MIN(Sales[Order Date])
Add the measure to a card or table visual. The measure returns the earliest date in the current filter context.
Why does my Power BI DAX MIN Date change when I use a slicer?
A slicer filters the rows available to the measure. The MIN function then returns the earliest date from only those filtered rows. Use REMOVEFILTERS(‘Date’) inside CALCULATE when you need the first date from all history.
Can I use MIN with a Date/Time column in Power BI?
Yes, but MIN returns the earliest date and time value. If you only need the calendar date, change the source field to Date or create a date-only column before building the measure.
What is the difference between MIN and MINX in Power BI?
MIN returns the smallest value from a column or two values. MINX evaluates an expression for each row in a table and then returns the smallest result. Use MIN for a direct date column and MINX when your date comes from a row-by-row expression.
How do I show the first purchase date for each customer?
Create First Sales Date = MIN(Sales[Order Date]), then add Customer Name and the measure to a table visual. Power BI evaluates the measure for each customer row and returns that customer’s earliest purchase.
How do I ignore a date filter when finding the earliest date?
Use CALCULATE with REMOVEFILTERS:
First Ever Sales Date =
CALCULATE(
MIN(Sales[Order Date]),
REMOVEFILTERS(‘Date’)
)
This removes filters from the Date table while preserving filters from other dimensions, such as customer or region.
Power BI DAX MIN Date helps you find the earliest transaction, customer activity, campaign event, or reporting record while respecting the filters users apply. Build a clean Date table, use a simple MIN measure first, and add CALCULATE only when your business rule requires a different filter behavior. I hope you found this article helpful.
You may also like:
- Use the DAX MAX date function in Power BI
- Filter distinct dates using Power BI DAX
- Create a Power BI calendar table with DAX
- Filter data between two dates in Power BI
- Create a current month report in Power BI

Hey! I’m Bijay Kumar, founder of SPGuides.com and a Microsoft Business Applications MVP (Power Automate, Power Apps). I launched this site in 2020 because I truly enjoy working with SharePoint, Power Platform, and SharePoint Framework (SPFx), and wanted to share that passion through step-by-step tutorials, guides, and training videos. My mission is to help you learn these technologies so you can utilize SharePoint, enhance productivity, and potentially build business solutions along the way.