Exago Logo
Search
Generic filters
Exact matches only

Custom Aggregate Function: ArgumentMax()

Review the documentation on Custom Aggregate Functions for full details on developing and implementing this function.

DescriptionReturns the corresponding correspondingValue associated with the maximum value of maximizedValue.
Arguments
  • maximizedValue: the field to find the maximum value of. Required.
  • correspondingValue: the corresponding value to return. Required.
  • recordLevel: indicates whether to aggregate by recordLevel (true) or entity level (false). Optional, defaults to true if not provided.
Namespaces
  • WebReports.Api.Common
  • WebReports.Api.Custom
ExampleTo return the name of the most played artist: ArgumentMax({Spins.Plays}, {Artists.Name})
Jamiroquai

Program Code

public class MaxMapAggregator: ICustomAggregator
{
	IComparable max;
	object maxKey;

	public void AddValue(SessionInfo sessionInfo, object value, params object[] args)
	{
		// Treat nulls as zero
		if (value == null)
			value = 0;
		else if (!(value is IComparable))
		{
			throw new WrAggregationException(@"Tried to take the maximum of a set 
                                                      containing a non-comparable value");
		}

		if (this.max == null || this.max.CompareTo(value) == -1)
		{
			this.max = (IComparable)value;
			// The "key" to associate with the maximum value is passed as the second
			// argument to this aggregate function, which shows up here as the first item
			// in the args array.
			this.maxKey = args[0];
		}
	}

	public object Result(SessionInfo sessionInfo)
	{
		return this.maxKey;
	}
}
Was this article helpful?
0 out of 5 stars
5 Stars 0%
4 Stars 0%
3 Stars 0%
2 Stars 0%
1 Stars 0%
How can we improve this article?
Please submit the reason for your vote so that we can improve the article.
Table of Contents