Package mondrian.calc.impl
Class TupleValueCalc
- java.lang.Object
-
- mondrian.calc.impl.AbstractCalc
-
- mondrian.calc.impl.GenericCalc
-
- mondrian.calc.impl.TupleValueCalc
-
- All Implemented Interfaces:
BooleanCalc
,Calc
,DateTimeCalc
,DimensionCalc
,DoubleCalc
,HierarchyCalc
,IntegerCalc
,LevelCalc
,MemberCalc
,StringCalc
,TupleCalc
,VoidCalc
public class TupleValueCalc extends GenericCalc
Expression which evaluates a tuple expression, sets the dimensional context to the result of that expression, then yields the value of the current measure in the current dimensional context.The evaluator's context is preserved.
- Since:
- Sep 27, 2005
- Author:
- jhyde
- See Also:
ValueCalc
,MemberValueCalc
-
-
Field Summary
-
Fields inherited from class mondrian.calc.impl.AbstractCalc
exp, type
-
-
Constructor Summary
Constructors Constructor Description TupleValueCalc(Exp exp, TupleCalc tupleCalc, boolean nullCheck)
Creates a TupleValueCalc.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
dependsOn(Hierarchy hierarchy)
Returns whether this expression depends upon a given hierarchy.Object
evaluate(Evaluator evaluator)
Evaluates this expression.Calc[]
getCalcs()
Returns this expression's child expressions.Calc
optimize()
Optimizes the scalar evaluation of a tuple.-
Methods inherited from class mondrian.calc.impl.GenericCalc
evaluateBoolean, evaluateDateTime, evaluateDimension, evaluateDouble, evaluateHierarchy, evaluateInteger, evaluateLevel, evaluateMember, evaluateString, evaluateTuple, evaluateVoid, numberToDouble
-
Methods inherited from class mondrian.calc.impl.AbstractCalc
accept, anyDepends, anyDependsButFirst, butDepends, collectArguments, getArguments, getName, getResultStyle, getType, isWrapperFor, simplifyEvaluator, unwrap
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface mondrian.calc.Calc
accept, getResultStyle, getType, isWrapperFor, unwrap
-
-
-
-
Method Detail
-
evaluate
public Object evaluate(Evaluator evaluator)
Description copied from interface:Calc
Evaluates this expression.- Parameters:
evaluator
- Provides dimensional context in which to evaluate this expression- Returns:
- Result of expression evaluation
-
getCalcs
public Calc[] getCalcs()
Description copied from class:AbstractCalc
Returns this expression's child expressions.- Overrides:
getCalcs
in classAbstractCalc
-
dependsOn
public boolean dependsOn(Hierarchy hierarchy)
Description copied from interface:Calc
Returns whether this expression depends upon a given hierarchy.If it does not depend on the hierarchy, then re-evaluating the expression with a different member of this context must produce the same answer.
Some examples:- The expression
depends on all dimensions except[Measures].[Unit Sales]
[Measures]
. - The boolean expression
depends on all hierarchies except [Measures] and [Time].([Measures].[Unit Sales], [Time].[1997]) > 1000
- The list expression
depends upon all hierarchies except [Store] and [Measures]. How so? Normally the scalar expression would depend upon all hierarchies except [Measures], but theFilter([Store].[USA].Children, [Measures].[Unit Sales] < 50)
Filter
function sets the [Store] context before evaluating the scalar expression, so it is not inherited from the surrounding context.
- Specified by:
dependsOn
in interfaceCalc
- Overrides:
dependsOn
in classAbstractCalc
- Parameters:
hierarchy
- Hierarchy- Returns:
- Whether this expression's result depends upon the current member of the hierarchy
- The expression
-
optimize
public Calc optimize()
Optimizes the scalar evaluation of a tuple. It evaluates the members of the tuple, sets the context to these members, and evaluates the scalar result in one step, without generating a tuple. This is useful when evaluating calculated members:WITH MEMBER [Measures].[Sales last quarter] AS ' ([Measures].[Unit Sales], [Time].PreviousMember) '
- Returns:
- optimized expression
-
-