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
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:
-
Field Summary
Fields inherited from class mondrian.calc.impl.AbstractCalc
exp, type
-
Constructor Summary
ConstructorDescriptionTupleValueCalc
(Exp exp, TupleCalc tupleCalc, boolean nullCheck) Creates a TupleValueCalc. -
Method Summary
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
-
Constructor Details
-
TupleValueCalc
Creates a TupleValueCalc.- Parameters:
exp
- ExpressiontupleCalc
- Compiled expression to evaluate the tuplenullCheck
- Whether to check for null values due to non-joining dimensions in a virtual cube
-
-
Method Details
-
evaluate
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
Description copied from class:AbstractCalc
Returns this expression's child expressions.- Overrides:
getCalcs
in classAbstractCalc
-
dependsOn
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
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
-