Class RolapCube
- java.lang.Object
-
- mondrian.olap.OlapElementBase
-
- mondrian.olap.CubeBase
-
- mondrian.rolap.RolapCube
-
- All Implemented Interfaces:
Annotated
,Cube
,OlapElement
public class RolapCube extends CubeBase
RolapCube
implementsCube
for a ROLAP database.- Since:
- 10 August, 2001
- Author:
- jhyde
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RolapCube.CubeComparator
-
Nested classes/interfaces inherited from interface mondrian.olap.OlapElement
OlapElement.LocalizedProperty
-
-
Field Summary
Fields Modifier and Type Field Description (package private) BitKey
closureColumnBitKey
(package private) MondrianDef.Relation
fact
For SQL generator.(package private) RolapBaseCubeMeasure
factCountMeasure
(package private) List<RolapHierarchy>
hierarchyList
-
Fields inherited from class mondrian.olap.CubeBase
CATALOG_NAME, CUBE_NAME, DIMENSION_UNIQUE_NAME, dimensions, HIERARCHY_UNIQUE_NAME, LEVEL_NUMBER, LEVEL_UNIQUE_NAME, maxNofConstraintsForAdSchemaMember, MDPROP_USERDEFINED0, MDTREEOP_CHILDREN, MDTREEOP_SELF, MEMBER_CAPTION, MEMBER_NAME, MEMBER_TYPE, MEMBER_UNIQUE_NAME, name, SCHEMA_NAME, Tree_Operator
-
Fields inherited from class mondrian.olap.OlapElementBase
caption, visible
-
-
Constructor Summary
Constructors Constructor Description RolapCube(RolapSchema schema, MondrianDef.Schema xmlSchema, MondrianDef.Cube xmlCube, boolean load)
Creates aRolapCube
from a regular cube.RolapCube(RolapSchema schema, MondrianDef.Schema xmlSchema, MondrianDef.VirtualCube xmlVirtualCube, boolean load)
Creates aRolapCube
from a virtual cube.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clearCachedAggregations()
Clear the in memory aggregate cache associated with this Cube, but only if Disabling Caching has been enabled.void
clearCachedAggregations(boolean forced)
Clear the in memory aggregate cache associated with this Cube.Member
createCalculatedMember(String xml)
Creates a calculated member in this cube.(package private) RolapMember
createCalculatedMember(RolapHierarchy hierarchy, String name, Calc calc)
Creates a calculated member.(package private) RolapCubeDimension
createDimension(MondrianDef.CubeDimension xmlCubeDimension, MondrianDef.Schema xmlSchema)
(package private) static Exp
createDummyExp(Calc calc)
Creates an expression that compiles to a given compiled expression.(package private) void
createUsage(RolapCubeHierarchy hierarchy, MondrianDef.CubeDimension cubeDim)
(package private) RolapHierarchy
findBaseCubeHierarchy(RolapHierarchy hierarchy)
Locates the base cube hierarchy for a particular virtual hierarchy.RolapCubeLevel
findBaseCubeLevel(RolapLevel level)
Locates the base cube level for a particular virtual level.ExplicitRules.Group
getAggGroup()
Map<String,Annotation>
getAnnotationMap()
Returns a list of annotations.(package private) RolapMeasure
getAtomicCellCountMeasure()
Returns the system measure that counts the number of atomic cells in a given cell.(package private) MondrianDef.RelationOrJoin
getFact()
Returns this cube's fact table, null if the cube is virtual.(package private) RolapMeasure
getFactCountMeasure()
Returns the system measure that counts the number of fact table rows in a given cell.(package private) HierarchyUsage
getFirstUsage(Hierarchy hier)
List<RolapHierarchy>
getHierarchies()
Returns a list of all hierarchies in this cube, in order of dimension.protected org.apache.log4j.Logger
getLogger()
(package private) List<Member>
getMeasures()
Hierarchy
getMeasuresHierarchy()
Returns the the measures hierarchy.List<RolapMember>
getMeasuresMembers()
Member[]
getMembersForQuery(String query, List<Member> calcMembers)
Returns Member[].NamedSet[]
getNamedSets()
Returns the named sets of this cube.RolapSchema
getSchema()
SchemaReader
getSchemaReader()
Returns the schema reader which enforces the appropriate access-control context.SchemaReader
getSchemaReader(Role role)
Returns aSchemaReader
for which this cube is the context for lookup up members.RolapStar
getStar()
Returns this cube's underlying star schema.RolapHierarchy
getTimeHierarchy(String funName)
Returns the time hierarchy for this cube.HierarchyUsage[]
getUsages(Hierarchy hierarchy)
A Hierarchy may have one or more HierarchyUsages.boolean
hasAggGroup()
boolean
isCacheAggregations()
Returns true if this Cube is either virtual or if the Cube's RolapStar is caching aggregates.boolean
isLoadInProgress()
boolean
isVirtual()
Returns whether this cube is virtual.(package private) void
loadAggGroup(MondrianDef.Cube xmlCube)
(package private) MondrianDef.CubeDimension
lookup(MondrianDef.CubeDimension[] xmlDimensions, String name)
OlapElement
lookupChild(SchemaReader schemaReader, Id.Segment s)
OlapElement
lookupChild(SchemaReader schemaReader, Id.Segment s, MatchType matchType)
Looks up a child element, returning null if it does not exist.protected RolapStar.Column
makeColumns(RolapStar.Table table, RolapCubeLevel level, RolapStar.Column parentColumn, String usagePrefix)
Adds a column to the appropriate table in theRolapStar
.Set<Dimension>
nonJoiningDimensions(Set<Dimension> otherDims)
Finds out non joining dimensions for this cube.Set<Dimension>
nonJoiningDimensions(Member[] tuple)
Finds out non joining dimensions for this cube.(package private) void
processFormatStringAttribute(MondrianDef.CalculatedMember xmlCalcMember, StringBuilder buf)
(package private) void
registerDimension(RolapCubeDimension dimension)
Understand this and you are no longer a novice.void
setCacheAggregations(boolean cache)
Set if this (non-virtual) Cube's RolapStar should cache aggregations.boolean
shouldIgnoreUnrelatedDimensions(String baseCubeName)
This method tells us if unrelated dimensions to measures from the input base cube should be pushed to default member or not during aggregation.-
Methods inherited from class mondrian.olap.CubeBase
getDescription, getDimension, getDimensions, getHierarchy, getMonthLevel, getName, getQualifiedName, getQuarterLevel, getUniqueName, getWeekLevel, getYearLevel, lookupDimension, lookupHierarchy
-
Methods inherited from class mondrian.olap.OlapElementBase
clone, computeHashCode, equals, equals, getCaption, getLocalized, hashCode, isVisible, setCaption, toString
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface mondrian.olap.OlapElement
getCaption, getLocalized, isVisible
-
-
-
-
Field Detail
-
fact
final MondrianDef.Relation fact
For SQL generator. Fact table.
-
factCountMeasure
RolapBaseCubeMeasure factCountMeasure
-
hierarchyList
final List<RolapHierarchy> hierarchyList
-
closureColumnBitKey
final BitKey closureColumnBitKey
-
-
Constructor Detail
-
RolapCube
RolapCube(RolapSchema schema, MondrianDef.Schema xmlSchema, MondrianDef.Cube xmlCube, boolean load)
Creates aRolapCube
from a regular cube.
-
RolapCube
RolapCube(RolapSchema schema, MondrianDef.Schema xmlSchema, MondrianDef.VirtualCube xmlVirtualCube, boolean load)
Creates aRolapCube
from a virtual cube.
-
-
Method Detail
-
getLogger
protected org.apache.log4j.Logger getLogger()
- Specified by:
getLogger
in classOlapElementBase
-
getAnnotationMap
public Map<String,Annotation> getAnnotationMap()
Description copied from interface:Annotated
Returns a list of annotations.The map may be empty, never null.
- Returns:
- Map from annotation name to annotations.
-
hasAggGroup
public boolean hasAggGroup()
-
getAggGroup
public ExplicitRules.Group getAggGroup()
-
loadAggGroup
void loadAggGroup(MondrianDef.Cube xmlCube)
-
processFormatStringAttribute
void processFormatStringAttribute(MondrianDef.CalculatedMember xmlCalcMember, StringBuilder buf)
-
getSchema
public RolapSchema getSchema()
-
getNamedSets
public NamedSet[] getNamedSets()
Returns the named sets of this cube.
-
getSchemaReader
public SchemaReader getSchemaReader()
Returns the schema reader which enforces the appropriate access-control context. schemaReader is cached, and needs to stay in sync with any changes to the cube.- See Also:
getSchemaReader(Role)
- Post-condition:
- return != null
-
getSchemaReader
public SchemaReader getSchemaReader(Role role)
Description copied from interface:Cube
Returns aSchemaReader
for which this cube is the context for lookup up members. Ifrole
is null, the returned schema reader also obeys the access-control profile of role.
-
lookup
MondrianDef.CubeDimension lookup(MondrianDef.CubeDimension[] xmlDimensions, String name)
-
isCacheAggregations
public boolean isCacheAggregations()
Returns true if this Cube is either virtual or if the Cube's RolapStar is caching aggregates.- Returns:
- Whether this Cube's RolapStar should cache aggregations
-
setCacheAggregations
public void setCacheAggregations(boolean cache)
Set if this (non-virtual) Cube's RolapStar should cache aggregations.- Parameters:
cache
- Whether this Cube's RolapStar should cache aggregations
-
clearCachedAggregations
public void clearCachedAggregations()
Clear the in memory aggregate cache associated with this Cube, but only if Disabling Caching has been enabled.
-
clearCachedAggregations
public void clearCachedAggregations(boolean forced)
Clear the in memory aggregate cache associated with this Cube.
-
getStar
public RolapStar getStar()
Returns this cube's underlying star schema.
-
createUsage
void createUsage(RolapCubeHierarchy hierarchy, MondrianDef.CubeDimension cubeDim)
-
getUsages
public HierarchyUsage[] getUsages(Hierarchy hierarchy)
A Hierarchy may have one or more HierarchyUsages. This method returns an array holding the one or more usages associated with a Hierarchy. The HierarchyUsages hierarchyName attribute always equals the name attribute of the Hierarchy.- Parameters:
hierarchy
- Hierarchy- Returns:
- an HierarchyUsages array with 0 or more members.
-
getFirstUsage
HierarchyUsage getFirstUsage(Hierarchy hier)
-
registerDimension
void registerDimension(RolapCubeDimension dimension)
Understand this and you are no longer a novice.- Parameters:
dimension
- Dimension
-
makeColumns
protected RolapStar.Column makeColumns(RolapStar.Table table, RolapCubeLevel level, RolapStar.Column parentColumn, String usagePrefix)
Adds a column to the appropriate table in theRolapStar
. Note that if the RolapLevel has a table attribute, then the associated column needs to be associated with that table.
-
shouldIgnoreUnrelatedDimensions
public boolean shouldIgnoreUnrelatedDimensions(String baseCubeName)
This method tells us if unrelated dimensions to measures from the input base cube should be pushed to default member or not during aggregation.- Parameters:
baseCubeName
- name of the base cube for which we want to check this property- Returns:
- boolean
-
getHierarchies
public List<RolapHierarchy> getHierarchies()
Returns a list of all hierarchies in this cube, in order of dimension.TODO: Make this method return RolapCubeHierarchy, when the measures hierarchy is a RolapCubeHierarchy.
- Returns:
- List of hierarchies
-
isLoadInProgress
public boolean isLoadInProgress()
-
getMembersForQuery
public Member[] getMembersForQuery(String query, List<Member> calcMembers)
Description copied from interface:Cube
Returns Member[]. It builds Member[] by analyzing cellset, which gets created by running mdx sQuery.query
has to be in the format of something like "[with calculated members] select *members* on columns fromthis
".
-
getTimeHierarchy
public RolapHierarchy getTimeHierarchy(String funName)
Returns the time hierarchy for this cube. If there is no time hierarchy, throws.
-
nonJoiningDimensions
public Set<Dimension> nonJoiningDimensions(Member[] tuple)
Finds out non joining dimensions for this cube. Useful for finding out non joining dimensions for a stored measure from a base cube.- Parameters:
tuple
- array of members- Returns:
- Set of dimensions that do not exist (non joining) in this cube
-
nonJoiningDimensions
public Set<Dimension> nonJoiningDimensions(Set<Dimension> otherDims)
Finds out non joining dimensions for this cube. Equality test for dimensions is done based on the unique name. Object equality can't be used.- Parameters:
otherDims
- Set of dimensions to be tested for existence in this cube- Returns:
- Set of dimensions that do not exist (non joining) in this cube
-
getFact
MondrianDef.RelationOrJoin getFact()
Returns this cube's fact table, null if the cube is virtual.
-
isVirtual
public boolean isVirtual()
Returns whether this cube is virtual. We use the fact that virtual cubes do not have fact tables.
-
getFactCountMeasure
RolapMeasure getFactCountMeasure()
Returns the system measure that counts the number of fact table rows in a given cell.Never null, because if there is no count measure explicitly defined, the system creates one.
-
getAtomicCellCountMeasure
RolapMeasure getAtomicCellCountMeasure()
Returns the system measure that counts the number of atomic cells in a given cell.A cell is atomic if all dimensions are at their lowest level. If the fact table has a primary key, this measure is equivalent to the
fact count measure
.
-
findBaseCubeHierarchy
RolapHierarchy findBaseCubeHierarchy(RolapHierarchy hierarchy)
Locates the base cube hierarchy for a particular virtual hierarchy. If not found, return null. This may be converted to a map lookup or cached in some way in the future to increase performance with cubes that have large numbers of hierarchies- Parameters:
hierarchy
- virtual hierarchy- Returns:
- base cube hierarchy if found
-
findBaseCubeLevel
public RolapCubeLevel findBaseCubeLevel(RolapLevel level)
Locates the base cube level for a particular virtual level. If not found, return null. This may be converted to a map lookup or cached in some way in the future to increase performance with cubes that have large numbers of hierarchies and levels- Parameters:
level
- virtual level- Returns:
- base cube level if found
-
createDimension
RolapCubeDimension createDimension(MondrianDef.CubeDimension xmlCubeDimension, MondrianDef.Schema xmlSchema)
-
lookupChild
public OlapElement lookupChild(SchemaReader schemaReader, Id.Segment s)
-
lookupChild
public OlapElement lookupChild(SchemaReader schemaReader, Id.Segment s, MatchType matchType)
Description copied from interface:OlapElement
Looks up a child element, returning null if it does not exist.- Specified by:
lookupChild
in interfaceOlapElement
- Overrides:
lookupChild
in classCubeBase
-
getMeasuresHierarchy
public Hierarchy getMeasuresHierarchy()
Returns the the measures hierarchy.
-
getMeasuresMembers
public List<RolapMember> getMeasuresMembers()
-
createCalculatedMember
public Member createCalculatedMember(String xml)
Description copied from interface:Cube
Creates a calculated member in this cube.The XML string must be a
<CalculatedMember/>
element, as defined inMondrian.xml
.- Parameters:
xml
- XML string
-
createCalculatedMember
RolapMember createCalculatedMember(RolapHierarchy hierarchy, String name, Calc calc)
Creates a calculated member.The member will be called [{dimension name}].[{name}].
Not for public use.
- Parameters:
hierarchy
- Hierarchy the calculated member belongs toname
- Name of membercalc
- Compiled expression
-
createDummyExp
static Exp createDummyExp(Calc calc)
Creates an expression that compiles to a given compiled expression.Use this for synthetic expressions that do not correspond to anything in an MDX parse tree, and just need to compile to a particular compiled expression. The expression has minimal amounts of metadata, for example type information, but the function has no name or description.
- See Also:
DummyExp
-
-