Forum Discussion

Oodi's avatar
Oodi
Frequent Visitor
2 years ago

Replacing EARLIER functionality to work in a measure

Hello, 
There was already existing topics about this subject but so far had no success with them.

I would like to rank teams with selected season and gamedate with the following way:

 

VAR _HomeGameNumber =
// Game number based on gamedate only with no season condition
RANKX(FILTER(TeamSchedule_, TeamSchedule_[HomeTeam] = EARLIER(TeamSchedule_[HomeTeam])), TeamSchedule_[gameDate], , ASC, Dense)

VAR _HomeGameNumberPerSeason =
// Game number based on gamedate and season 
RANKX(FILTER(TeamSchedule_, TeamSchedule_[HomeTeam] = EARLIER(TeamSchedule_[HomeTeam]) && TeamSchedule_[season] = EARLIER(TeamSchedule_[season])), TeamSchedule_[gameDate], , ASC, Dense)

RETURN
//The Measure should be able to switch between the two whether season is filtered 
//or not which is not possible with calculated column like below:
IF(ISFILTERED(AuxSeason[Season]),
_HomeGameNumberPerSeason,
_HomeGameNumber)

 

 
The goal here would be to replace the EARLIER() function to use in a measure. Would this work somehow with MAX() in a measure?

2 Replies

  • Oodi , Try using below measure

    HomeGameNumber =
    VAR CurrentHomeTeam = MAX(TeamSchedule_[HomeTeam])
    VAR CurrentGameDate = MAX(TeamSchedule_[gameDate])
    RETURN
    RANKX(
    FILTER(
    TeamSchedule_,
    TeamSchedule_[HomeTeam] = CurrentHomeTeam
    ),
    TeamSchedule_[gameDate],
    ,
    ASC,
    DENSE
    )

     

    HomeGameNumberPerSeason =
    VAR CurrentHomeTeam = MAX(TeamSchedule_[HomeTeam])
    VAR CurrentGameDate = MAX(TeamSchedule_[gameDate])
    VAR CurrentSeason = MAX(TeamSchedule_[season])
    RETURN
    RANKX(
    FILTER(
    TeamSchedule_,
    TeamSchedule_[HomeTeam] = CurrentHomeTeam &&
    TeamSchedule_[season] = CurrentSeason
    ),
    TeamSchedule_[gameDate],
    ,
    ASC,
    DENSE
    )

     

    FinalHomeGameNumber =
    IF(
    ISFILTERED(AuxSeason[Season]),
    [HomeGameNumberPerSeason],
    [HomeGameNumber]
    )

    • Oodi's avatar
      Oodi
      Frequent Visitor

      Thanks for the suggestion. Tried it out and the measure returns error:

      A single value for column 'gameDate' in table 'TeamSchedule_' cannot be determined. This can happen when a measure formula refers to a column that contains many values without specifying an aggregation such as min, max, count, or sum to get a single result.

      The error is caused by the RANKX() Expression TeamSchedule_[GameDate] and goes away with  SELECTEDVALUE(TeamSchedule_[GameDate]) but this does not return the correct query i.e. the same the calculated column returns using EARLIER().