Forum Discussion

David_Verdon's avatar
David_Verdon
Regular Visitor
1 year ago
Solved

USE Relationship with Switch

I'm working on a DAX measure to calculate Sales Value based on project status. The measure should use different date relationships for "Closed Project" and "Live Project" statuses. Here's the measure...
  • bhanu_gautam's avatar
    bhanu_gautam
    1 year ago

    David_Verdon , Try using this then

    DAX
    Sales Value =
    VAR Status_ = SELECTEDVALUE(ProjectDetails[ProjectStatus])
    VAR Rev = [Revenue Actual]
    VAR Fee = SUM(ProjectDetails[FeeEstimate])
    VAR Result =
    SWITCH(
    TRUE(),
    Status_ = "Closed Project",
    CALCULATE(
    Rev,
    USERELATIONSHIP(ProjectDetails[ClosedDate], 'Date'[Date])
    ),
    Status_ = "Live Project",
    CALCULATE(
    Fee - Rev,
    USERELATIONSHIP(CMap_ProjectDetails_Live[WonDate], 'Date'[Date]),
    REMOVEFILTERS('Date'),
    USERELATIONSHIP(ProjectDetails[ClosedDate], 'Date'[Date])
    ),
    BLANK()
    )
    RETURN
    Result

     

    The USERELATIONSHIP function for ClosedDate is explicitly deactivated for the "Live Project" calculation.

  • johnt75's avatar
    1 year ago

    The problem is that variables in DAX aren't really variable, they are constants. Once they are evaluated they are never evaluated again, so trying to reevaluate them in a different context won't work. Try

    Sales Value =
    VAR Status_ =
        SELECTEDVALUE ( ProjectDetails[ProjectStatus] )
    VAR Result =
        SWITCH (
            TRUE (),
            Status_ = "Closed Project",
                CALCULATE (
                    [Revenue Actual],
                    USERELATIONSHIP ( ProjectDetails[ClosedDate], 'Date'[Date] )
                ),
            Status_ = "Live Project",
                CALCULATE (
                    SUM ( ProjectDetails[FeeEstimate] ) - [Revenue Actual],
                    USERELATIONSHIP ( CMap_ProjectDetails_Live[WonDate], 'Date'[Date] )
                ),
            BLANK ()
        )
    RETURN
        Result