MIN DAX Function (Aggregation)
Returns the smallest value in a column, or the smaller value between two scalar expressions. Ignores logical values. Strings are compared according to alphabetical order.
Syntax
| Parameter | Attributes | Description | 
|---|---|---|
| ColumnNameOrScalar1 | 
                                         The column in which you want to find the smallest value, or the first scalar expression to compare.  | 
                                |
| Scalar2 | Optional | 
                                    
                                         The second value to compare.  | 
                                
Return values
Smallest value found in the column or in the two expressions.
Remarks
When used with a single column, the MIN function internally executes MINX, without any performance difference.
The following MIN call:
MIN ( table[column] )
corresponds to the following MINX call:
MINX (
    table,
    table[column] 
)
The result is blank in case there are no rows in the table with a non-blank value.
When used with two arguments, the syntax:
MIN ( exp1, exp2 )
corresponds to:
VAR v1 = exp1
VAR v2 = exp2
RETURN 
    SWITCH ( TRUE,
        v1 = v2, IF ( ISBLANK ( v1 ), v2, v1 ),
        v1 < v2, v1,
        v2 
    )
Thus, when used with two arguments, MIN consider the BLANK value as significative, whereas MINX ignores it.
-- MIN returns BLANK
MIN ( 2, BLANK() ) 
-- MINX returns 2
MINX ( { 2, BLANK() }, [Value] ) 
                » 2 related functions
Examples
--  MIN is the short version of MINX, when used with one column only
DEFINE
    MEASURE Sales[MIN Net Price 1] = MIN ( Sales[Net Price] )
    MEASURE Sales[MIN Net Price 2] = MINX ( Sales, Sales[Net Price] )
    MEASURE Sales[MIN Line Amount] =
        MINX ( Sales, Sales[Quantity] * Sales[Net Price] )
EVALUATE
SUMMARIZECOLUMNS (
    'Product'[Color],
    "MIN Net Price 1", [MIN Net Price 1],
    "MIN Net Price 2", [MIN Net Price 2],
    "MIN Line Amount", [MIN Line Amount]
)
| Color | MIN Net Price 1 | MIN Net Price 2 | MIN Line Amount | 
|---|---|---|---|
| Silver | 0.76 | 0.76 | 0.76 | 
| Blue | 8.99 | 8.99 | 8.99 | 
| White | 1.79 | 1.79 | 1.79 | 
| Red | 3.98 | 3.98 | 3.98 | 
| Black | 0.88 | 0.88 | 0.88 | 
| Green | 3.99 | 3.99 | 3.99 | 
| Orange | 23.96 | 23.96 | 23.96 | 
| Pink | 0.76 | 0.76 | 0.76 | 
| Yellow | 3.99 | 3.99 | 3.99 | 
| Purple | 22.40 | 22.40 | 22.40 | 
| Brown | 23.99 | 23.99 | 23.99 | 
| Grey | 0.95 | 0.95 | 0.95 | 
| Gold | 13.90 | 13.90 | 13.90 | 
| Azure | 103.20 | 103.20 | 103.20 | 
| Silver Grey | 158.40 | 158.40 | 158.40 | 
| Transparent | 2.35 | 2.35 | 2.35 | 
--  MIN can be used with two scalars, in that case it 
--  returns the minimum between its arguments
DEFINE
    MEASURE Sales[Sales Amount] =
        SUMX ( Sales, Sales[Quantity] * Sales[Net Price] )
    MEASURE Sales[5M or Sales Amount] = 
        MIN ( 5000000, [Sales Amount] )
EVALUATE
SUMMARIZECOLUMNS (
    'Product'[Color],
    "Sales Amount", [Sales Amount],
    "5M or Sales Amount", [5M or Sales Amount]
)
ORDER BY [Color] 
| Color | Sales Amount | 5M or Sales Amount | 
|---|---|---|
| Azure | 97,389.89 | 97,389.89 | 
| Black | 5,860,066.14 | 5,000,000.00 | 
| Blue | 2,435,444.62 | 2,435,444.62 | 
| Brown | 1,029,508.95 | 1,029,508.95 | 
| Gold | 361,496.01 | 361,496.01 | 
| Green | 1,403,184.38 | 1,403,184.38 | 
| Grey | 3,509,138.09 | 3,509,138.09 | 
| Orange | 857,320.28 | 857,320.28 | 
| Pink | 828,638.54 | 828,638.54 | 
| Purple | 5,973.84 | 5,973.84 | 
| Red | 1,110,102.10 | 1,110,102.10 | 
| Silver | 6,798,560.86 | 5,000,000.00 | 
| Silver Grey | 371,908.92 | 371,908.92 | 
| Transparent | 3,295.89 | 3,295.89 | 
| White | 5,829,599.91 | 5,000,000.00 | 
| Yellow | 89,715.56 | 89,715.56 | 
--  MINX is needed to iterate the content of a variable,
--  indeed MIN works only with columns in the model
DEFINE
    MEASURE Sales[Sales Amount] =
        SUMX ( Sales, Sales[Quantity] * Sales[Net Price] )
    MEASURE Sales[MIN Monthly Sales] =
        VAR MonthlySales =
            ADDCOLUMNS (
                DISTINCT ( 'Date'[Calendar Year Month] ),
                "@MonthlySales", [Sales Amount]
            )
        VAR FilteredSales =
            FILTER ( MonthlySales, [@MonthlySales] > 10000 )
        VAR Result =
            -- Iterator required to aggregate the @MonthlySales column        
            MINX ( FilteredSales, [@MonthlySales] )
        RETURN
            Result
EVALUATE
SUMMARIZECOLUMNS ( 
    'Product'[Color], 
    "MINX Monthly Sales", [MIN Monthly Sales] 
)
| Color | MINX Monthly Sales | 
|---|---|
| Silver | 64,226.40 | 
| Blue | 21,907.71 | 
| White | 65,678.96 | 
| Red | 11,202.40 | 
| Black | 94,310.36 | 
| Green | 13,555.70 | 
| Orange | 11,399.62 | 
| Pink | 10,333.59 | 
| Grey | 28,463.19 | 
| Silver Grey | 10,565.60 | 
| Brown | 10,972.75 | 
| Gold | 10,056.00 | 
| Yellow | 11,256.69 | 
Related articles
Learn more about MIN in the following articles:
- 
                                Understanding the difference between LASTDATE and MAX in DAX
                                
This article explains why in many cases, MAX should be used instead of LASTDATE to search for the last date in a time period using DAX. » Read more
 
Related functions
Other related functions are:
Last update: Oct 22, 2025 » Contribute » Show contributors
Contributors: Alberto Ferrari, Marco Russo, Kenneth Barber,
Microsoft documentation: https://docs.microsoft.com/en-us/dax/min-function-dax
