Guide and Many Examples – ALL Function in DAX

by | Power BI

Introduction to DAX ALL Function

The DAX (Data Analysis Expressions) language is essential for those working with data in tools like Power BI, Excel, and SQL Server Analysis Services. A critical function in DAX is the ALL function which is particularly useful for data analysis and visualization.

Understanding the ALL Function

The ALL function in DAX can be thought of as a way to remove any filters that might be applied to your data. Essentially, it returns all the rows in a table or all the values in a column, ignoring any filters that have been applied. There are different contexts where this function can be used, such as removing filters in a calculation or comparing against the total data set.

Syntax

The syntax for the ALL function is quite straightforward:

ALL(<TableName>)

-- OR --

ALL(<ColumnName>)

Where:

  • <TableName> is the name of the table you want to reference.
  • <ColumnName> is the name of the column you want to reference.

Practical Examples

Example 1: Removing Filters from a Column

Suppose you have a sales table (Sales) with columns Date, Region, Product, and Revenue. If you want to calculate the total revenue ignoring any filters applied to the Region column, you can use the ALL function as shown below.

Total Revenue (Ignoring Region Filter) = 
CALCULATE(
    SUM(Sales[Revenue]),
    ALL(Sales[Region])
)

In this example:

  • SUM(Sales[Revenue]): Calculates the sum of the Revenue column from the Sales table.
  • ALL(Sales[Region]): Removes any filters that have been applied to the Region column.

Example 2: Removing Filters from a Table

Now, if you want to calculate the total revenue for all regions and all dates, ignoring any filters that might have been applied to the entire Sales table, you would use ALL on the table:

Total Revenue (Ignoring All Filters) = 
CALCULATE(
    SUM(Sales[Revenue]),
    ALL(Sales)
)

In this example:

  • ALL(Sales): Removes all filters that have been applied to the Sales table.

Example 3: Using ALL in a Measure

Measures are often used in Power BI to perform calculations on data. Here’s an example of defining a measure to calculate total sales, ignoring any filters:

Total Sales (Measure) = 
CALCULATE(
    SUM(Sales[Revenue]),
    ALL(Sales)
)

You can then use this measure in your reports and visuals to get total sales values that are not affected by any slicers or filters applied on the report.

Key Notes

  • The ALL function is extremely powerful for creating calculations that need to ignore specific filters or all filters.
  • It is commonly used in scenarios where you need a baseline or total value for comparison against filtered results.

By understanding and implementing the ALL function, you can perform more robust and flexible data analysis that is not constrained by the current filter context.

Practical Examples of DAX ALL Function

Overview

The DAX ALL function is primarily used to clear filters from columns or tables, useful for calculating values relative to all data in a table or specific columns disregarding the active filter context. Below are practical examples to help you master the ALL function application.

Example 1: Calculating Total Sales Ignoring Filters

You have a table Sales with the following columns: ProductID, Region, SalesAmount. You want to calculate the total sales ignoring any active filters.

Total Sales All = 
CALCULATE(
    SUM(Sales[SalesAmount]), 
    ALL(Sales)
)

Here, the ALL(Sales) part clears any filters applied to the Sales table, ensuring that SUM(Sales[SalesAmount]) is calculated for all rows in the Sales table.

Example 2: Calculating Percentage of Total Sales

You want to display each product’s sales as a percentage of the total sales disregarding any filters on Region.

Total Sales = SUM(Sales[SalesAmount])

Percentage of Total Sales = 
DIVIDE(
    SUM(Sales[SalesAmount]),
    CALCULATE(
        [Total Sales],
        ALL(Sales[Region])
    )
)

In this case, ALL(Sales[Region]) removes any filters on the Region column. Thus, the total sales amount in the denominator includes sales from all regions.

Example 3: Sales by Product Without Date Filter

You want to calculate total sales by ProductID but ignore any filter related to dates.

Total Sales without Date Filter = 
CALCULATE(
    SUM(Sales[SalesAmount]),
    ALL(Sales[Date])
)

Sales by Product without Date Filter = 
SUMMARIZE(
    Sales,
    Sales[ProductID],
    "Total Sales", [Total Sales without Date Filter]
)

The ALL(Sales[Date]) clears the date filter, ensuring that the total sales amount is computed over all dates.

Example 4: Dynamic Ranking by Sales

You want to rank products based on their sales while ignoring any filters on region and date.

Total Sales by Product = 
CALCULATE(
    SUM(Sales[SalesAmount]),
    ALLEXCEPT(Sales, Sales[ProductID])
)

Sales Rank = 
RANKX(
    ALL(Sales[ProductID]),
    [Total Sales by Product],
    ,
    DESC,
    DENSE
)

The ALL(Sales[ProductID]) ensures that RANKX considers sales for all products regardless of any filters, providing a dynamic rank based on the total sales amount.

Example 5: Distinct Count Ignoring Filters

You need to count the distinct CustomerID without any filters on ProductID or Region.

Distinct Customer Count = 
CALCULATE(
    DISTINCTCOUNT(Sales[CustomerID]),
    ALL(Sales[ProductID], Sales[Region])
)

Here, ALL(Sales[ProductID], Sales[Region]) removes filters from ProductID and Region, allowing the DISTINCTCOUNT function to count distinct customers independently of those filters.

Conclusion

With these examples, you can see how the ALL function in DAX is powerful for controlling filter contexts, enabling you to perform calculations over entire datasets or specific columns, regardless of any active filters in your reports. The applications range from total sales calculations to dynamic rankings and distinct counts. Make sure to adapt these patterns to fit your specific needs.

Advanced Applications of DAX ALL Function

In this guide, we will go beyond basic examples to explore advanced applications of the DAX ALL function. This function has powerful usage in various scenarios for filtering and calculating in Power BI or other DAX-capable solutions. We’ll dive into complex examples that you can immediately apply in your data models.

1. Using ALL for Dynamic Measure Calculation

When you want to calculate ratios or percentages that should ignore certain filters, the ALL function is highly useful.

// Example: Calculate the percentage of total sales
TotalSales = SUM ( Sales[SalesAmount] )

Percentage of Total Sales = 
DIVIDE (
    SUM ( Sales[SalesAmount] ),
    CALCULATE ( 
        SUM ( Sales[SalesAmount] ),
        ALL ( Sales )
    ),
    0
)

Here, CALCULATE(SUM ( Sales[SalesAmount] ), ALL ( Sales )) returns the total sales ignoring other filters. DIVIDE then computes the ratio.

2. ALL in Combination with CALCULATE

Using ALL with CALCULATE can derive more insightful aggregations by removing certain filters temporarily.

// Example: Calculate Sales for All Products
TotalSales_AllProducts = 
CALCULATE (
    SUM ( Sales[SalesAmount] ),
    ALL ( Products )
)

// Example: Calculate Percentage contribution of each product to the total sales
ProductSalesPercentage = 
DIVIDE (
    SUM ( Sales[SalesAmount] ),
    CALCULATE ( 
        SUM ( Sales[SalesAmount] ), 
        ALL ( Products ) 
    ),
    0
)

In these examples, ALL ( Products ) ignores the filters applied on the Products table, thereby calculating total sales for all products.

3. ALL with Time Intelligence

Time-based calculations can leverage the ALL function to compare current performance against past data, ignoring date range selections.

// Example: Calculate Year-to-Date Sales ignoring filter context
YTD Sales = 
CALCULATE (
    SUM ( Sales[SalesAmount] ),
    DATESYTD ( 'Date'[Date] ),
    ALL ( 'Date' )
)

// Example: Calculate difference between current sales and previous year sales
Sales Difference with LY = 
CALCULATE (
    SUM ( Sales[SalesAmount] ),
    'Date'[Year] = YEAR( TODAY() ) - 1,
    ALL ( 'Date' )
) - 
SUM ( Sales[SalesAmount] )

Here, ALL('Date') ensures that the calculation is done ignoring any external date filters, focusing solely on the DAX-specified condition.

By understanding and practicing these advanced applications, you should now be able to harness the full power of the DAX ALL function in your data analyses. These examples can be integrated into real-life BI solutions, providing dynamic and highly accurate data insights.

Combining DAX ALL with Other Functions

Introduction

This section delves into practical examples of combining the DAX ALL function with other DAX functions to achieve more complex queries and calculations.

Practical Examples

1. Using ALL with CALCULATE

The CALCULATE function changes the context in which the data is filtered and evaluated. Combining it with ALL can ignore specific filters.

Example: Calculate total sales ignoring any filters on the ProductCategory column.

TotalSalesAllCategories = CALCULATE(
    SUM(Sales[Amount]), 
    ALL(ProductCategory)
)

2. Using ALL with ALLEXCEPT

The ALLEXCEPT function removes all filters except those from specified columns. Combining it with ALL enables selective ignoring of filters.

Example: Calculate total sales ignoring all filters except for the Region column.

TotalSalesExcludingRegion = CALCULATE(
    SUM(Sales[Amount]), 
    ALL(Sales),
    ALLEXCEPT(Sales, Sales[Region])
)

3. Using ALL with FILTER

The FILTER function returns a table that represents a subset of another table or expression. Combining it with ALL helps control filter context precisely.

Example: Calculate sales for products with a price higher than the average, ignoring other filters.

HighPricedProductSales = CALCULATE(
    SUM(Sales[Amount]), 
    FILTER(
        ALL(Products), 
        Products[Price] > AVERAGE(Products[Price])
    )
)

4. Using ALL with SUMX

The SUMX function applies an expression to each row of a table before summing up the results. Combining it with ALL allows for ignoring row filters.

Example: Calculate the total of sales amount and tax ignoring any filters.

TotalSalesAndTax = SUMX(
    ALL(Sales), 
    Sales[Amount] + Sales[Tax]
)

5. Using ALL with AVERAGEX

The AVERAGEX function evaluates an expression for each row in a table and returns the average of those values. When combined with ALL, it can ignore existing filters.

Example: Calculate the average sales amount per product ignoring any filters.

AverageSalesAmount = AVERAGEX(
    ALL(Sales), 
    Sales[Amount]
)

Conclusion

Combining the ALL function with other DAX functions enables you to build complex queries and perform advanced calculations by altering the filter context in flexible ways. The examples above demonstrate practical implementations that can be applied directly to real-life data scenarios.

Real-World Use Cases and Projects of DAX ALL Function

Use Case 1: Creating Custom Totals

The DAX ALL function can be used to create custom totals, overriding any filters.

Custom Total Measure Example:

Total Sales := SUM(Sales[Amount])

Custom Total Sales := CALCULATE (
    [Total Sales],
    ALL(Sales)
)

In this example, Custom Total Sales calculates the total sales amount ignoring any filters applied to the Sales table.

Use Case 2: Year-over-Year Growth Calculation

When calculating Year-over-Year (YoY) growth, you might need to ignore the date filters applied by slicers.

YoY Growth Measure Example:

Total Revenue := SUM(Revenue[Amount])

Revenue LY := CALCULATE(
    [Total Revenue],
    SAMEPERIODLASTYEAR(Date[Date])
)

YoY Growth := [Total Revenue] - [Revenue LY]

YoY Growth % := 
    DIVIDE([YoY Growth], [Revenue LY], 0)

Here, Revenue LY uses the SAMEPERIODLASTYEAR function within CALCULATE to get the revenue for the same period last year, ignoring any current period filters.

Use Case 3: Filtered Average Calculation

With DAX ALL, you can calculate what a value would be if certain filters don’t apply.

Filtered Average Sales Example:

Average Sales := 
    AVERAGE(Sales[Amount])

Filtered Total Sales :=
    CALCULATE (
        [Total Sales],
        ALL(Sales[Product])
    )

Filtered Average Sales :=
    DIVIDE (
        [Filtered Total Sales],
        CALCULATE (
            COUNTROWS(Sales),
            ALL(Sales[Product])
        )
    )

Filtered Average Sales calculates the average sales ignoring any filters on the Product column of the Sales table.

Use Case 4: Dynamic Rankings

Create dynamic rankings by ignoring certain filters.

Dynamic Ranking Example:

Sales Rank :=
    RANKX(
        ALL(Sales[Region]),
        [Total Sales],
        ,
        DESC
    )

Sales Rank calculates the rank of Total Sales, ignoring any filters on the Region column, thus producing a dynamic rank based on total sales across all regions.

Use Case 5: Custom Filtering Scenarios

Custom filtering scenarios where some filters need to be ignored for specific calculations while keeping others.

Custom Filtering Example:

Filtered Net Revenue :=
    CALCULATE (
        [Net Revenue],
        ALL(Sales[Product]),
        KEEPFILTERS(Sales[Region] = "North America")
    )

Filtered Net Revenue calculates net revenue while ignoring filters on Product but keeping filters on the Region column specifically for “North America”.

Conclusion

These practical use cases show how the DAX ALL function can be used to customize filters, create dynamic rankings, and calculate values ignoring certain filters. These examples should provide a solid foundation for implementing DAX ALL in real-world scenarios.

Related Posts