Forum Discussion

awitt's avatar
awitt
Helper III
6 years ago
Solved

Dynamic measures based on multiple slicer selection.

I am looking to calculate a time difference between two status of the same order with the status changing as I need. The idea is that I would have two identical slicers with each of the statuses to chose from. So in this case "Confirmed" "Ordered" "Delayed" "Allocated" and "Shipped". In slicer 1 I choose "Confirmed" and the other I choose "Shipped" and the result is either an average or some other time between function. 

 

I may want to choose different time between statuses though. So i may want to look at time between Allocated and Shipped and so on. Right now i have dozens of statuses and I have to create a measure for each expression I want to evaluate. This can be literally hundreds of measures... Thoughts?

 

Order NumberItemOrder Number ItemStatusTimeStamp
1A1AConfirmed1/1/2019
1A1AOrdered1/1/2019
1A1ADelayed1/2/2019
1A1AAllocated1/8/2019
1A1AShipped1/9/2019
1B1BConfirmed1/2/2019
1B1BOrdered1/2/2019
1B1BAllocated1/3/2019
1B1BShipped1/10/2019
2A2AConfirmed1/1/2019
2A2AOrdered1/1/2019
2A2ADelayed1/2/2019
2A2AAllocated1/8/2019
2A2AShipped1/9/2019
2C2CConfirmed1/2/2019
2C2COrdered1/2/2019
2C2CAllocated1/3/2019
2C2CShipped1/10/2019
  • awitt 

    I took a pass at a solution but I have a question.  Right now I am showing the highest date so if you are looking at order 1 ordered date it will show 1/2 but if you look at order 1 with the item it will have a different date for the two items.

    First we make a couple of tables using all available status.  Doint it this way insures we always have the full list.

    Status1 = DISTINCT('Table'[Status])
    Status2 = DISTINCT('Table'[Status])

    I have a couple measures to test the dates that are coming from the slicers (Date1 and Date2)

    And finally a meaure to do the calc.

    DateDiff = 
    VAR FirstStatus = SELECTEDVALUE ( Status1[Status] )
    VAR FirstStatusDate = CALCULATE(LASTDATE('Table'[TimeStamp]),'Table'[Status] = FirstStatus )
    VAR SecondStatus = SELECTEDVALUE ( Status2[Status] )
    VAR SecondStatusDate = CALCULATE(LASTDATE('Table'[TimeStamp]),'Table'[Status] = SecondStatus )
    RETURN DATEDIFF( FirstStatusDate,SecondStatusDate,DAY)

    I have attached my sample .pbix for you to look at.

     

9 Replies

  • awitt not sure what you are actually looking for? What is your final goal? What you are trying to achieve?

    • awitt's avatar
      awitt
      Helper III

      Pretty much what the other commenter got at. Having two seperate slicers containing a large selection of statuses and building measures based on the dynamic selection of those two slicers. So in this example its a DateDiff function based off the two slicers - the difference in time between any selection of statuses. I might need an average or a count of how many times something happened moving forward.

       

      The issue is building a model that has a dynamic selection of statuses rather than writing a measure for each one. 

  • awitt 

    I took a pass at a solution but I have a question.  Right now I am showing the highest date so if you are looking at order 1 ordered date it will show 1/2 but if you look at order 1 with the item it will have a different date for the two items.

    First we make a couple of tables using all available status.  Doint it this way insures we always have the full list.

    Status1 = DISTINCT('Table'[Status])
    Status2 = DISTINCT('Table'[Status])

    I have a couple measures to test the dates that are coming from the slicers (Date1 and Date2)

    And finally a meaure to do the calc.

    DateDiff = 
    VAR FirstStatus = SELECTEDVALUE ( Status1[Status] )
    VAR FirstStatusDate = CALCULATE(LASTDATE('Table'[TimeStamp]),'Table'[Status] = FirstStatus )
    VAR SecondStatus = SELECTEDVALUE ( Status2[Status] )
    VAR SecondStatusDate = CALCULATE(LASTDATE('Table'[TimeStamp]),'Table'[Status] = SecondStatus )
    RETURN DATEDIFF( FirstStatusDate,SecondStatusDate,DAY)

    I have attached my sample .pbix for you to look at.

     

    • awitt's avatar
      awitt
      Helper III

      jdbuchanan71  Thanks for the response! I am getting this error in my model though. This is just with the Date1 measure. 

       

      • jdbuchanan71's avatar
        jdbuchanan71
        Super User

        awitt 

        I don't know why you are getting that error.  This measure works for me and there are duplicate dates in the table.

        LastDate = LASTDATE ( 'Table'[TimeStamp] )

        Do you get the error with this measure?  If so, can you share your .pbix file?