Disclaimer: This is work in progress intended to consolidate information from various sources for learning purposes. For the latest information please consult the documentation (see the links below)!
Last updated: 13-Oct-2026
[DAX] ALLSELECTED()
- {def} function that returns all the rows in a table, or all the values in a column [1]
- ignores any filters that might have been applied inside the query [1]
- removes the corresponding filters from the filter context, restoring the last shadow filter context
- keeps filters that come from outside [1]
- gets the context that represents all rows and columns in the query, while keeping explicit filters and contexts other than row and column filters
- does not materialize the resulting table when called directly in a filter argument of CALCULATE or CALCULATETABLE
- via ALLSELECTED([<tableName> | <columnName>[, <columnName>[, <columnName>[,…]]
- {parameter|optional} tableName
- the name of an existing table
- cannot be an expression
- {parameter|optional} columnName
- the name of an existing column using standard DAX syntax, usually fully qualified
- cannot be an expression
- if there is one argument, the argument is either tableName or columnName [1]
- if there is more than one argument, they must be columns from the same table [1]
- {scenario} used to obtain visual totals in queries [1]
- {scenario} used as a table expression when it has at least one argument [2]
- {scenario} used without arguments only as a CALCULATE or CALCULATETABLE modifier [2]
- {distinction} different from ALL() because
- it retains all filters explicitly set within the query [1]
- it retains all context filters other than row and column filters [1]
- {limitation}[DirectQuery mode] not supported when used in calculated columns or RLS rules [1]
- only DAX function that leverages shadow filter contexts [3]
- has a slightly different behavior when
- used in SUMMARIZECOLUMNS
- mostly produces the expected result [3]
- removes filters for the currently-iterated group-by column, restoring the original filter set by SUMMARIZECOLUMNS itself [3]
- SUMMARIZECOLUMNS can be used in nearly all the visuals [3]
- inside an iterator
- {warning} can produce weird results [3]
- does not return the values of a column (or table) filtered outside a visual [3]
- displays different behaviors, depending on whether it is used in SUMMARIZECOLUMNS or not, and on the presence of shadow filter contexts [3]
- {best practice} don’t create a measure that uses ALLSELECTED within an iteration [3]
- it can produce unexpected results, poor performance, and difficult-to-understand calculations.
- {best practice} minimize the use of measures that contain ALLSELECTED [3]
- can be safely used only in measures that are directly placed in the reports [3]
References:
[1] Microsoft Learn (2026) DAX: ALLSELECTED [link]
[2] DAX Guide (2026) ALLSELECTED DAX Function (Filter) SQL[link]
[3] SQLBI (2026) ALLSELECTED Best Practices [link]

No comments:
Post a Comment