Class OSQLFunctionVariance

java.lang.Object
com.orientechnologies.orient.core.sql.functions.OSQLFunctionAbstract
com.orientechnologies.orient.core.sql.functions.stat.OSQLFunctionVariance
All Implemented Interfaces:
OSQLFunction
Direct Known Subclasses:
OSQLFunctionStandardDeviation

public class OSQLFunctionVariance extends OSQLFunctionAbstract
Compute the variance estimation for a given field.

This class uses the Weldford's algorithm (presented in Donald Knuth's Art of Computer Programming) to avoid multiple distribution values' passes. When executed in distributed mode it uses the Chan at al. pairwise variance algorithm to merge the results.

References

  • Cook, John D. Accurately computing running variance.

  • Knuth, Donald E. (1998) The Art of Computer Programming, Volume 2: Seminumerical Algorithms, 3rd Edition.

  • Welford, B. P. (1962) Note on a method for calculating corrected sums of squares and products. Technometrics

  • Chan, Tony F.; Golub, Gene H.; LeVeque, Randall J. (1979), Parallel Algorithm.

Author:
Fabrizio Fortino
  • Field Details

  • Constructor Details

    • OSQLFunctionVariance

      public OSQLFunctionVariance()
    • OSQLFunctionVariance

      public OSQLFunctionVariance(String iName, int iMinParams, int iMaxParams)
  • Method Details

    • execute

      public Object execute(Object iThis, OIdentifiable iCurrentRecord, Object iCurrentResult, Object[] iParams, OCommandContext iContext)
      Description copied from interface: OSQLFunction
      Process a record.
      iCurrentRecord - : current record
      iCurrentResult - TODO
      iParams - : function parameters, number is ensured to be within minParams and maxParams.
      iContext - : object calling this function
      Returns:
      function result, can be null. Special cases : can be null if function aggregate results, can be null if function filter results : this mean result is excluded
    • aggregateResults

      public boolean aggregateResults()
      Description copied from interface: OSQLFunction
      A function can make calculation on several records before returning a result.

      Example of such function : sum, count, max, min ...

      The final result of the aggregation is obtain by calling OSQLFunction.getResult(OCommandContext)

      Specified by:
      aggregateResults in interface OSQLFunction
      Overrides:
      aggregateResults in class OSQLFunctionAbstract
      Returns:
      true if function aggregate results
    • getResult

      public Object getResult(OCommandContext ctx)
      Description copied from interface: OSQLFunction
      Only called when function aggregates results after all records have been passed to the function.
      Specified by:
      getResult in interface OSQLFunction
      Overrides:
      getResult in class OSQLFunctionAbstract
      Parameters:
      ctx - TODO
      Returns:
      Aggregation result
    • mergeDistributedResult

      public Object mergeDistributedResult(List<Object> resultsToMerge)
      Description copied from interface: OSQLFunction
      This method correspond to distributed query execution
      Specified by:
      mergeDistributedResult in interface OSQLFunction
      Overrides:
      mergeDistributedResult in class OSQLFunctionAbstract
      Parameters:
      resultsToMerge - is the results that comes from different nodes
      Returns:
      is the valid merged result
    • getSyntax

      public String getSyntax()
      Description copied from interface: OSQLFunction
      Returns a convenient SQL String representation of the function.

      Example :

        myFunction( param1, param2, [optionalParam3])
       

      This text will be used in exception messages.

      Returns:
      String , never null.