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

MIN ( <ColumnNameOrScalar1> [, <Scalar2>] )
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

Scalar A single value of any type.

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] ) 
» 1 related article
» 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:

Related functions

Other related functions are:

Last update: Mar 13, 2024   » Contribute   » Show contributors

Contributors: Alberto Ferrari, Marco Russo, Kenneth Barber,

Microsoft documentation: https://docs.microsoft.com/en-us/dax/min-function-dax

2018-2024 © SQLBI. All rights are reserved. Information coming from Microsoft documentation is property of Microsoft Corp. » Contact us   » Privacy Policy & Cookies

Context Transition

This function performs a Context Transition if called in a Row Context. Click to read more.

Row Context

This expression is executed in a Row Context. Click to read more.

Iterator

Not recommended

The use of this function is not recommended. See Remarks and Related functions for alternatives.

Not recommended

The use of this parameter is not recommended.

Deprecated

This function is deprecated. Jump to the Alternatives section to see the function to use.

Volatile

A volatile function may return a different result every time you call it, even if you provide the same arguments. Click to read more.

Deprecated

This parameter is deprecated and its use is not recommended.

DirectQuery compatibility

Limitations are placed on DAX expressions allowed in measures and calculated columns.
The state below shows the DirectQuery compatibility of the DAX function.

Contribute

Want to improve the content of MIN? Did you find any issue?
Please, report it us! All submissions will be evaluated for possible updates of the content.


This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.