mondrian.rolap
Class RolapNativeCrossJoin

java.lang.Object
  extended by mondrian.rolap.RolapNative
      extended by mondrian.rolap.RolapNativeSet
          extended by mondrian.rolap.RolapNativeCrossJoin

public class RolapNativeCrossJoin
extends RolapNativeSet

creates a NativeEvaluator 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 queris like

   select ...
   NON EMTPY crossjoin([product].[name].members, [customer].[name].members) on rows
   froms [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
(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.CrossJoinArg, RolapNativeSet.DescendantsCrossJoinArg, RolapNativeSet.MemberListCrossJoinArg, 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
RolapNativeCrossJoin()
           
 
Method Summary
(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
checkCrossJoin, checkCrossJoinArg, checkDescendants, checkEnumeration, checkLevelMembers, checkMemberChildren, isPreferInterpreter, isSimpleLevel, overrideContext, useHardCache
 
Methods inherited from class mondrian.rolap.RolapNative
getListener, isEnabled, setEnabled, setListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RolapNativeCrossJoin

public RolapNativeCrossJoin()
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.

Specified by:
restrictMemberTypes in class RolapNativeSet

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 class RolapNative

SourceForge.net_Logo