COUNTBLANK DAX Function (Aggregation)

Counts the number of blanks in a column.

Syntax

COUNTBLANK ( <ColumnName> )
Parameter Attributes Description
ColumnName

The column containing the blanks to be counted.

Return values

Scalar A single integer value.

If no rows are found that meet the blank condition, the function returns blank.

Remarks

The function never returns 0. If there are no rows or no blanks, it returns always blank.

Any empty string is considered as a blank for COUNTBLANK purposes, even though ISBLANK would return FALSE for an empty string.

Even though COUNTBLANK is semantically equivalent to the following expressions, it may be slower than corresponding syntax based on CALCULATE.

-- Example of COUNTBLANK over a column
COUNTBLANK ( 'Table'[Column] )

-- Semantically equivalent expression that can be faster (only for columns that are not strings):
CALCULATE (
    COUNTROWS ( 'Table' ),
    KEEPFILTERS ( ISBLANK ( 'Table'[Column] ) )
)

-- Semantically equivalent expression that can be faster (only for columns that are strings):
CALCULATE ( 
    COUNTROWS ( 'Table' ), 
    KEEPFILTERS ( 'Table'[Value] = "" ) 
)
» 2 related functions

Examples

--  COUNTBLANK counts both empty strings and blanks
--  For numeric columns, COUNTBLANK only considers blanks
DEFINE
    MEASURE Customer[# No Name 1] = COUNTBLANK ( Customer[Customer Name] )
    MEASURE Customer[# No Name 2] = 
        CALCULATE ( 
            COUNTROWS ( Customer ), 
            KEEPFILTERS ( Customer[Customer Name] = "" ) 
        )
    MEASURE Customer[# No Birth Date 1] =
        COUNTBLANK ( Customer[Birth Date] )
    MEASURE Customer[# No Birth Date 2] =
        CALCULATE ( 
            COUNTROWS ( Customer ), 
            KEEPFILTERS ( ISBLANK ( Customer[Birth Date] ) ) 
        )
EVALUATE
SUMMARIZECOLUMNS (
    Customer[Continent],
    "# No Name 1", [# No Name 1],
    "# No Name 2", [# No Name 2],
    "# No Birth Date 1", [# No Birth Date 1],
    "# No Birth Date 2", [# No Birth Date 2]
)
Continent # No Name 1 # No Name 2 # No Birth Date 1 # No Birth Date 2
North America 276 276 276 276
Europe 42 42 42 42
Asia 67 67 67 67
--  COUNTBLANK handles empty strings like blanks
--  The version with CALCULATE makes the intention of the developer clearer
DEFINE
    MEASURE Customer[# COUNTBLANK] =
        COUNTBLANK ( Customer[Customer Name] )
    MEASURE Customer[# EMPTY STRING / BLANK] =
        CALCULATE ( COUNTROWS ( Customer ), Customer[Customer Name] = "" )
    MEASURE Customer[# EMPTY STRING ONLY] =
        CALCULATE ( COUNTROWS ( Customer ), Customer[Customer Name] == "" )
    MEASURE Customer[# BLANK ONLY 1] =
        CALCULATE ( COUNTROWS ( Customer ), Customer[Customer Name] == BLANK () )
    MEASURE Customer[# BLANK ONLY 2] =
        CALCULATE ( COUNTROWS ( Customer ), ISBLANK ( Customer[Customer Name] ) )
EVALUATE
SUMMARIZECOLUMNS (
    Customer[Continent],
    "# COUNTBLANK", [# COUNTBLANK],
    "# EMPTY STRING / BLANK", [# EMPTY STRING / BLANK],
    "# EMPTY STRING ONLY", [# EMPTY STRING ONLY],
    "# BLANK ONLY 1", [# BLANK ONLY 1],
    "# BLANK ONLY 2", [# BLANK ONLY 2]
)
ORDER BY [Continent]
Continent # COUNTBLANK # EMPTY STRING / BLANK # EMPTY STRING ONLY # BLANK ONLY 1 # BLANK ONLY 2
Asia 67 67 33 34 34
Europe 42 42 21 21 21
North America 276 276 138 138 138

Related functions

Other related functions are:

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

Contributors: Alberto Ferrari, Marco Russo

Microsoft documentation: https://docs.microsoft.com/en-us/dax/countblank-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 COUNTBLANK? 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.