Package mondrian.rolap
Class RolapNativeCrossJoin
- java.lang.Object
-
- mondrian.rolap.RolapNative
-
- mondrian.rolap.RolapNativeSet
-
- mondrian.rolap.RolapNativeCrossJoin
-
public class RolapNativeCrossJoin extends RolapNativeSet
Creates aNativeEvaluator
that evaluates NON EMPTY CrossJoin in SQL. The generated SQL will join the dimension tables with the fact table and return all combinations that have a corresponding row in the fact table. The current context (slicer) is used for filtering (WHERE clause in SQL). This very effective computes queries likeSELECT ... NON EMTPY Crossjoin( [product].[name].members, [customer].[name].members) ON ROWS FROM [Sales] WHERE ([store].[store #14])
where both, customer.name and product.name have many members, but the resulting crossjoin only has few.The implementation currently can not handle sets containting parent/child hierarchies, ragged hierarchies, calculated members and the ALL member. Otherwise all
- Since:
- Nov 21, 2005
- Author:
- av
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
RolapNativeCrossJoin.NonEmptyCrossJoinConstraint
Constraint that restricts the result to the current context.-
Nested classes/interfaces inherited from class mondrian.rolap.RolapNativeSet
RolapNativeSet.SchemaReaderWithMemberReaderAvailable, RolapNativeSet.SetConstraint, RolapNativeSet.SetEvaluator
-
Nested classes/interfaces inherited from class mondrian.rolap.RolapNative
RolapNative.Listener, RolapNative.NativeEvent, RolapNative.TupleEvent
-
-
Field Summary
-
Fields inherited from class mondrian.rolap.RolapNativeSet
LOGGER
-
Fields inherited from class mondrian.rolap.RolapNative
listener
-
-
Constructor Summary
Constructors Constructor Description RolapNativeCrossJoin()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) CrossJoinArg[]
combineArgs(List<CrossJoinArg[]> allArgs)
(package private) NativeEvaluator
createEvaluator(RolapEvaluator evaluator, FunDef fun, Exp[] args)
If function can be implemented in SQL, returns a NativeEvaluator that computes the result; otherwise returns null.protected boolean
restrictMemberTypes()
Returns whether certain member types (e.g.-
Methods inherited from class mondrian.rolap.RolapNativeSet
crossJoinArgFactory, flushCache, isPreferInterpreter, overrideContext, useHardCache
-
Methods inherited from class mondrian.rolap.RolapNative
getListener, isEnabled, setEnabled, setListener
-
-
-
-
Method Detail
-
restrictMemberTypes
protected boolean restrictMemberTypes()
Description copied from class:RolapNativeSet
Returns whether certain member types (e.g. calculated members) should disable native SQL evaluation for expressions containing them.If true, expressions containing calculated members will be evaluated by the interpreter, instead of using SQL.
If false, calc members will be ignored and the computation will be done in SQL, returning more members than requested. This is ok, if the superflous members are filtered out in java code afterwards.
- Specified by:
restrictMemberTypes
in classRolapNativeSet
- Returns:
- whether certain member types should disable native SQL evaluation
-
createEvaluator
NativeEvaluator createEvaluator(RolapEvaluator evaluator, FunDef fun, Exp[] args)
Description copied from class:RolapNative
If function can be implemented in SQL, returns a NativeEvaluator that computes the result; otherwise returns null.- Specified by:
createEvaluator
in classRolapNative
-
combineArgs
CrossJoinArg[] combineArgs(List<CrossJoinArg[]> allArgs)
-
-