Forum Discussion

conniedevina's avatar
conniedevina
Helper I
8 months ago
Solved

Calculation for matrix table based on 3 date range slicer

Hi,   Currently I have the raw data like this Month Value Value grouping Jan-24 100 more than equals to 50 Feb-24 55 more than equals to 50 Mar-24 36 less than 50 Apr-24 23...
  • krishnakanth240's avatar
    krishnakanth240
    8 months ago

    Hi conniedevina 

     

     

    Need 3 things:

    1. Three disconnected Date slicer tables (one per range)

    2. One helper table to force 3 rows in the table/matrix

    3. Measures that read slicer selections and calculate per row

     

    1) Create 3 Disconnected Date Tables (for slicers)

     

    ```DAX

    Date Range 1 =

    CALENDAR ( DATE(2023,1,1), DATE(2025,12,31) )

     

    Date Range 2 =

    CALENDAR ( DATE(2023,1,1), DATE(2025,12,31) )

     

    Date Range 3 =

    CALENDAR ( DATE(2023,1,1), DATE(2025,12,31) )

    ```

    2) Create a Helper Table (forces 3 rows)

     

    ```DAX

    Range Selector =

    DATATABLE (

        "Range ID", INTEGER,

        "Range Name", STRING,

        {

            { 1, "Date Range 1" },

            { 2, "Date Range 2" },

            { 3, "Date Range 3" }

        }

    )

    ```

    3) Capture Selected Dates per Slicer

     

    ```DAX

    Start Date =

    SWITCH (

        SELECTEDVALUE ( 'Range Selector'[Range ID] ),

        1, MIN ( 'Date Range 1'[Date] ),

        2, MIN ( 'Date Range 2'[Date] ),

        3, MIN ( 'Date Range 3'[Date] )

    )

     

    End Date =

    SWITCH (

        SELECTEDVALUE ( 'Range Selector'[Range ID] ),

        1, MAX ( 'Date Range 1'[Date] ),

        2, MAX ( 'Date Range 2'[Date] ),

        3, MAX ( 'Date Range 3'[Date] )

    )

    ```

    4) Dynamic Month Range Label (since data is monthly)

     

    ```DAX

    Month Range Label =

    VAR StartDt = [Start Date]

    VAR EndDt = [End Date]

    RETURN

    FORMAT ( StartDt, "MMM yy" ) & " - " & FORMAT ( EndDt, "MMM yy" )

    ```

     

    5) Range-Aware Measures

     

    ```DAX

    Total Value (By Range) =

    VAR StartDt = [Start Date]

    VAR EndDt = [End Date]

    RETURN

    CALCULATE (

        SUM ( FactTable[Value] ),

        FILTER (

            ALL ( DateTable ),

            DateTable[Date] >= StartDt &&

            DateTable[Date] <= EndDt

        )

    )

    ```

     

    ```DAX

    GE 50 (By Range) =

    VAR StartDt = [Start Date]

    VAR EndDt = [End Date]

    RETURN

    CALCULATE (

        SUM ( FactTable[Value] ),

        FactTable[Value] >= 50,

        FILTER (

            ALL ( DateTable ),

            DateTable[Date] >= StartDt &&

            DateTable[Date] <= EndDt

        )

    )

    ```

     

    ```DAX

    % GE 50 =

    DIVIDE ( [GE 50 (By Range)], [Total Value (By Range)] )

    ``

    Matrix visual

    * Rows → `Range Selector[Range Name]`

    * Values →

      * `Month Range Label`

      * `Total Value (By Range)`

      * `GE 50 (By Range)`

      * `% GE 50`

     

    Slicers

    * Date Range 1 → `Date Range 1[Date]`

    * Date Range 2 → `Date Range 2[Date]`

    * Date Range 3 → `Date Range 3[Date]