Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Show minimum date greater than today....

Morning,

I am trying to find a way to display milestones on a chart- the problem is that I have repetitively named milestones and I have to tell the chart which to display. Here are the characteristics of an if expression I want to create:

  • If there is only one milestone with a particular name show the date
  • If there are more than one milestone with a particular name and they all happen in the future (> today) show the minimum date
  • If there are more than one milestone with a particular name and they all happen in the past (< today) show the maximum date
  • If there are more than one milestone with a particular name and some happen in the past and some in the future show the next occurring date

The data would look something like this if today = 7/28/15:

MilestoneCalendarDate
Start1/1/15
Jump2/2/15
Jump3/3/15
Jump4/4/15
Kick5/5/15
Kick6/6/15
Kick7/7/15
Kick8/8/15
Kick9/9/15
Spin10/10/15
Spin11/11/15
Spin12/12/15
Finish1/1/16

The red highlights are the milestones I want to show in the chart:

The dimension on the chart is - Milestone and

I have started the following expression and everything is working so far, except the next (Spin in the example above), which I am trying to perform as set analysis in the last nest of the if statement:

if (count ([Milestone])=1, CalendarDate

         if (count ([Milestone])>1 and min(CalendarDate)-today()>=0, min(CalendarDate),

                    if (count ([Milestone])>1 and max(CalendarDate)-today()<=0, max(CalendarDate),

                           if (count ([Milestone])>1 and (min(CalendarDate)-today()>=0 and max(CalendarDate)-today()<=0),

                           Only({<CalendarDate= {">=$(= today())"}>} CalendarDate)

                           )

                    )

          )

)

Any help or guidance would be greatly appreciated.

Thanks,
Vince

1 Solution

Accepted Solutions
morganaaron
Specialist
Specialist

Hi Vince,

Just change your last expression to Min() instead of Only() and it should work - though you could remove your last If() statement as this should be the only available condition left and so you can have it as your 'false' part of the previous if statement.

Aaron

View solution in original post

14 Replies
jonathandienst
Partner - Champion III
Partner - Champion III

Perhaps this:

If(Count(CalendarDate) = 1, CalendarDate, Min({<CalendarDate = {">=$(=Today())"}>} CalendarDate))

Logic will get you from a to b. Imagination will take you everywhere. - A Einstein
morganaaron
Specialist
Specialist

Hi Vince,

Just change your last expression to Min() instead of Only() and it should work - though you could remove your last If() statement as this should be the only available condition left and so you can have it as your 'false' part of the previous if statement.

Aaron

marcus_sommer

You could try something like this:

firstsortedvalue({< [CalendarDate] = {"<$(=date(today(),'M/D/YY'))"}>} [CalendarDate], -[CalendarDate])

- Marcus

Not applicable
Author

Jonathan,

No items or milestones show on the chart with this statement.

Thanks,
Vince

Not applicable
Author

Hey Aaron,

This still is not showing the Kick milestone.

All other items are showing correctly.

Thanks,
Vince

Not applicable
Author

Marcus,

I am getting a "No data to display message"

Thanks,
Vince

marcus_sommer

Is [CalendarDate] numeric - it's left-aligned? For each calculation or matching on date-fields the fields needed to be numeric.

- Marcus

morganaaron
Specialist
Specialist

Hi Vince,

Just tested myself and it worked - the exact expression I used is:

if (count ([Milestone])=1, CalendarDate,  

if (count ([Milestone])>1 and min(CalendarDate)-today()>=0, min(CalendarDate),
if (count ([Milestone])>1 and max(CalendarDate)-today()<=0, max(CalendarDate),
Min({<CalendarDate= {">=$(= today())"}>} CalendarDate
)

)

)

)

Not applicable
Author

Unfortunately I am not seeing that result - the Spin is disappearing from the data set.

I will keep playing with it