/// <summary>
        /// SubMaxMin delegate. Subtracts min from max value in a timespan.
        /// </summary>
        /// <param name="rdxQuery"></param>
        /// <param name="opcUaNode"></param>
        public static async Task SubMaxMin(RDXOeeKpiQuery rdxQuery, ContosoOpcUaNode opcUaNode)
        {
            double max = await rdxQuery.OpcUaQueries.GetAggregatedNode(rdxQuery.SearchSpan, rdxQuery.AppUri, opcUaNode.NodeId, RDXOpcUaQueries.MaxValues());

            double min = await rdxQuery.OpcUaQueries.GetAggregatedNode(rdxQuery.SearchSpan, rdxQuery.AppUri, opcUaNode.NodeId, RDXOpcUaQueries.MinValues());

            opcUaNode.Last.Value = max - min;
            opcUaNode.Last.Time  = rdxQuery.SearchSpan.To;
            opcUaNode.UpdateRelevance(rdxQuery.TopologyNode);
        }
 /// <summary>
 /// Min delegate. Returns smallest value in a timespan.
 /// </summary>
 public static Task Min(RDXOeeKpiQuery rdxQuery, ContosoOpcUaNode opcUaNode)
 {
     return(Aggregate(rdxQuery, opcUaNode, RDXOpcUaQueries.MinValues()));
 }