Forum Discussion

esilva32's avatar
esilva32
Frequent Visitor
7 years ago
Solved

DAX Calculation

Hello guys I am performing a calculation with DAX on power BI and would like to know if anyone could help me. My data is in table A and the results I want are in table B. Best regards, Thank you ...
  • AlB's avatar
    AlB
    7 years ago

    Hi esilva32

     

    It certainly looks like it would be easier to do this in the query editor. If you do need to do it in DAX, try this. Create a new calculated table:

     

    TableB = 
    VAR _BaseTable =
        ADDCOLUMNS (
            GENERATE (
                DISTINCT ( TableA[Id] );
                GENERATESERIES (
                    CALCULATE ( DISTINCT ( TableA[StartDate] ) );
                    CALCULATE ( DISTINCT ( TableA[EndDate] ) )
                )
            );
            "TempVal"; CALCULATE ( DISTINCT ( TableA[Value] ) )
        )
    VAR _Dates =
        DISTINCT ( SELECTCOLUMNS ( _BaseTable; "Date"; [Value] ) )
    VAR _ResTable =
        ADDCOLUMNS (
            _Dates;
            "Total Value"; SUMX ( _BaseTable; IF ( [Value] = [Date]; [TempVal] ) )
        )
    RETURN
        _ResTable

     

     

     

  • esilva32's avatar
    esilva32
    7 years ago

    Hello guys

    Thank you for your help. @AIB thank you, worked perfectly, thanks for the help.

    Regards, Portugal.

  • AlB's avatar
    AlB
    7 years ago

    esilva32

     

    Minor modification:

     

    TableB =
    VAR _BaseTable =
        ADDCOLUMNS (
            GENERATE (
                DISTINCT ( TableA[Id] );
                GENERATESERIES (
                    CALCULATE ( DISTINCT ( TableA[StartDate] ) );
                    MIN ( TODAY (); CALCULATE ( DISTINCT ( TableA[EndDate] ) ) )
                )
            );
            "TempVal"; CALCULATE ( DISTINCT ( TableA[Value] ) )
        )
    VAR _Dates =
        DISTINCT ( SELECTCOLUMNS ( _BaseTable; "Date"; [Value] ) )
    VAR _ResTable =
        ADDCOLUMNS (
            _Dates;
            "Total Value"; SUMX ( _BaseTable; IF ( [Value] = [Date]; [TempVal] ) )
        )
    RETURN
        _ResTable