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
- Version:
- $Id: //open/mondrian/src/main/mondrian/calc/impl/TupleValueCalc.java#11 $
- Author:
- jhyde
- See Also:
ValueCalc,
MemberValueCalc
| 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 |
TupleValueCalc
public TupleValueCalc(Exp exp,
TupleCalc tupleCalc,
boolean nullCheck)
- 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
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 class AbstractCalc
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
[Measures].[Unit Sales]
depends on all dimensions except [Measures].
- The boolean expression
([Measures].[Unit Sales],
[Time].[1997]) > 1000
depends on all hierarchies except [Measures] and [Time].
- The list expression
Filter([Store].[USA].Children,
[Measures].[Unit Sales] < 50)
depends upon all hierarchies except [Store] and [Measures].
How so? Normally the scalar expression would depend upon all hierarchies
except [Measures], but the Filter function sets the [Store]
context before evaluating the scalar expression, so it is not inherited
from the surrounding context.
- Specified by:
dependsOn in interface Calc- Overrides:
dependsOn in class AbstractCalc
- Parameters:
hierarchy - Hierarchy
- Returns:
- Whether this expression's result depends upon the current member
of the hierarchy
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