Forum Discussion

svendaems's avatar
svendaems
Frequent Visitor
2 years ago
Solved

Find previous and next date

Hi,

I hope somebody can help me with this setup I want to achieve in PowerBI. 

 

I've 2 tables, a table tblServers & a table tblWaves. The tblServers lists out all servers & to which wave they belong. The tabel tblWaves gives for each wave some dates. Sometimes a wave only occures each quarter, some waves are more frequently (wave3 in this example). There's a one to many relationship between those 2 tables.

 

 

I want to show on my dashboard on what date the previous wave took place & when the next wave will take place, depending on todays date. So in this example (today is May 3rd) it would give this example.

 

Anybody an idea how to crack this one?

  • Anonymous's avatar
    Anonymous
    2 years ago

    Hi svendaems ,

    Thanks for your concern about this case!
    svendaems Have you solved your problem? If not, please try this way:
    Because today is not May 3rd, so I use May 3rd to test:

    Previous Patching = 
    VAR PatchingName = tblPatching[Name]
    VAR RelatedWave = RELATED(tblServers[Wave])
    VAR TargetDate = CALCULATE(
        MINX(
            FILTER(
                tblWaves,
                tblWaves[Wave] = RelatedWave &&
                tblWaves[Date] <= DATE(2024, 5, 3)
            ),
            tblWaves[Date]
        ),
        ALL(tblWaves)
    )
    RETURN TargetDate
    Next Patching = 
    VAR PatchingName = tblPatching[Name]
    VAR RelatedWave = RELATED(tblServers[Wave])
    VAR TargetDate = CALCULATE(
        MINX(
            FILTER(
                tblWaves,
                tblWaves[Wave] = RelatedWave &&
                tblWaves[Date] >= DATE(2024, 5, 3)
            ),
            tblWaves[Date]
        ),
        ALL(tblWaves)
    )
    RETURN TargetDate

    Please change the 

    DATE(2024, 5, 3)

    into

    TODAY()


    Best Regards,
    Dino Tao
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

6 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi svendaems ,

    Thanks for your concern about this case!
    svendaems Have you solved your problem? If not, please try this way:
    Because today is not May 3rd, so I use May 3rd to test:

    Previous Patching = 
    VAR PatchingName = tblPatching[Name]
    VAR RelatedWave = RELATED(tblServers[Wave])
    VAR TargetDate = CALCULATE(
        MINX(
            FILTER(
                tblWaves,
                tblWaves[Wave] = RelatedWave &&
                tblWaves[Date] <= DATE(2024, 5, 3)
            ),
            tblWaves[Date]
        ),
        ALL(tblWaves)
    )
    RETURN TargetDate
    Next Patching = 
    VAR PatchingName = tblPatching[Name]
    VAR RelatedWave = RELATED(tblServers[Wave])
    VAR TargetDate = CALCULATE(
        MINX(
            FILTER(
                tblWaves,
                tblWaves[Wave] = RelatedWave &&
                tblWaves[Date] >= DATE(2024, 5, 3)
            ),
            tblWaves[Date]
        ),
        ALL(tblWaves)
    )
    RETURN TargetDate

    Please change the 

    DATE(2024, 5, 3)

    into

    TODAY()


    Best Regards,
    Dino Tao
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

  • Greg_Deckler's avatar
    Greg_Deckler
    Community Champion

    svendaems Try:

    Previous Patching = 
      VAR __Today = TODAY()
      VAR __Result = MAXX(FILTETER('tblWaves', [Date] <= __Today), [Date])
    RETURN
      __Result
    
    Next Patching = 
      VAR __Today = TODAY()
      VAR __Result = MINX(FILTETER('tblWaves', [Date] >= __Today), [Date])
    RETURN
      __Result
    • svendaems's avatar
      svendaems
      Frequent Visitor

      Hi Greg_Deckler 

       

      Thanks already for your reply. Unfortunlatly it's not working out as it should. It isn't looking at the related server, but giving for all servers the same date. It takes the first date that matches the formula (first previous date or first next date, related to today).

       

       

      • Greg_Deckler's avatar
        Greg_Deckler
        Community Champion

        svendaems Can you post your data as text? I also don't understand how you have a 1 to many relationship between those two tables. This *may* be it::

        Previous Patching = 
          VAR __Today = TODAY()
          VAR __Wave = MAX('tblServers'[Wave])
          VAR __Result = MAXX(FILTETER('tblWaves', [Wave] = __Wave && [Date] <= __Today), [Date])
        RETURN
          __Result
        
        Next Patching = 
          VAR __Today = TODAY()
          VAR __Result = MINX(FILTETER('tblWaves', [Wave] = __Wave && [Date] >= __Today), [Date])
        RETURN
          __Result