public class RolapStar extends Object
RolapStar
is a star schema. It is the means to read cell
values.
todo: Move this class into a package that specializes in relational aggregation, doesn't know anything about hierarchies etc.
Modifier and Type | Class and Description |
---|---|
static class |
RolapStar.AliasReplacer
Creates a copy of an expression, everywhere replacing one alias
with another.
|
static class |
RolapStar.Bar
Temporary.
|
static class |
RolapStar.Column
A column in a star schema.
|
static class |
RolapStar.ColumnComparator
Comparator to compare columns based on their name and table that contains them
|
static class |
RolapStar.Condition |
static class |
RolapStar.Measure
Definition of a measure in a star schema.
|
static class |
RolapStar.Table
Definition of a table in a star schema.
|
Modifier and Type | Method and Description |
---|---|
void |
addAggStar(AggStar aggStar)
Adds an
AggStar to this star. |
protected MondrianDef.RelationOrJoin |
cloneRelation(MondrianDef.Relation rel,
String possibleName) |
static void |
collectColumns(Collection<RolapStar.Column> columnList,
RolapStar.Table table,
MondrianDef.Column joinColumn)
Collects all columns in this table and its children.
|
String |
generateSql(List<RolapStar.Column> columnList,
List<String> columnNameList)
Generates a SQL statement to read all instances of the given attributes.
|
List<AggStar> |
getAggStars()
Returns this RolapStar's aggregate table AggStars, ordered in ascending
order of size.
|
List<String> |
getAliasList()
Returns a list of all aliases used in this star.
|
BitKey |
getBitKey(String[] tableAlias,
String[] columnName) |
Object |
getCellFromAllCaches(CellRequest request) |
Object |
getCellFromCache(CellRequest request,
RolapAggregationManager.PinSet pinSet)
Retrieves the value of the cell identified by a cell request, if it
can be found in the local cache of the current statement (thread).
|
DataSourceChangeListener |
getChangeListener()
Returns the listener for changes to this star's underlying database.
|
RolapStar.Column |
getColumn(int bitPos)
Look up the column at the given bit position.
|
int |
getColumnCount()
Returns this RolapStar's column count.
|
DataSource |
getDataSource()
Returns the DataSource used to connect to the underlying DBMS.
|
RolapStar.Table |
getFactTable()
Returns the fact table at the center of this RolapStar.
|
RolapSchema |
getSchema() |
SqlQuery |
getSqlQuery()
Clones an existing SqlQuery to create a new one (this cloning creates one
with an empty sql query).
|
Dialect |
getSqlQueryDialect()
Returns this RolapStar's SQL dialect.
|
static RolapStar.Measure |
getStarMeasure(Member member)
Retrieves the
RolapStar.Measure in which a measure is stored. |
RolapStatisticsCache |
getStatisticsCache() |
MondrianDef.RelationOrJoin |
getUniqueRelation(MondrianDef.RelationOrJoin rel,
String factForeignKey,
String primaryKey,
String primaryKeyTable)
Generates a unique relational join to the fact table via re-aliasing
MondrianDef.Relations
currently called in the RolapCubeHierarchy constructor.
|
RolapStar.Column |
lookupColumn(String tableAlias,
String columnName)
This is used by TestAggregationManager only.
|
RolapStar.Column[] |
lookupColumns(String tableAlias,
String columnName)
Retrieves a named column, returns null if not found.
|
Aggregation |
lookupOrCreateAggregation(AggregationKey aggregationKey)
Looks up an aggregation or creates one if it does not exist in an
atomic (synchronized) operation.
|
Aggregation |
lookupSegment(AggregationKey aggregationKey)
Looks for an existing aggregation over a given set of columns, in the
local segment cache, returning
null if there is none. |
void |
prepareToLoadAggregates()
Place holder in case in the future we wish to be able to
reload aggregates.
|
void |
print(PrintWriter pw,
String prefix,
boolean structure)
Prints the state of this
RolapStar |
void |
register(SegmentWithData segment) |
void |
reOrderAggStarList()
Reorder the list of aggregate stars.
|
void |
setChangeListener(DataSourceChangeListener changeListener)
Sets the listener for changes to this star's underlying database.
|
void |
setDataSource(DataSource dataSource)
For testing purposes only.
|
String |
toString() |
public Object getCellFromCache(CellRequest request, RolapAggregationManager.PinSet pinSet)
If it is not in the local cache, returns null. The client's next step will presumably be to request a segment that contains the cell from the global cache, external cache, or by issuing a SQL statement.
Returns Util.nullValue
if a segment contains the cell and the
cell's value is null.
If pinSet
is not null, pins the segment that holds it
into the local cache. pinSet
ensures that a segment is
only pinned once.
request
- Cell requestpinSet
- Set into which to pin the segment; or nullUtil.nullValue
if the cell value is null,
or null if the cell is not in any segment in the local cache.public Object getCellFromAllCaches(CellRequest request)
public void register(SegmentWithData segment)
public RolapStatisticsCache getStatisticsCache()
protected MondrianDef.RelationOrJoin cloneRelation(MondrianDef.Relation rel, String possibleName)
public MondrianDef.RelationOrJoin getUniqueRelation(MondrianDef.RelationOrJoin rel, String factForeignKey, String primaryKey, String primaryKeyTable)
rel
- the relation needing uniquenessfactForeignKey
- the foreign key of the fact tableprimaryKey
- the join key of the relationprimaryKeyTable
- the join table of the relationpublic int getColumnCount()
public void prepareToLoadAggregates()
public void addAggStar(AggStar aggStar)
AggStar
to this star.
Internally the AggStars are added in sort order, smallest row count to biggest, so that the most efficient AggStar is encountered first; ties do not matter.
public void reOrderAggStarList()
public List<AggStar> getAggStars()
public RolapStar.Table getFactTable()
public SqlQuery getSqlQuery()
public Dialect getSqlQueryDialect()
public Aggregation lookupOrCreateAggregation(AggregationKey aggregationKey)
When a new aggregation is created, it is marked as thread local.
aggregationKey
- this is the constrained column bitkeypublic Aggregation lookupSegment(AggregationKey aggregationKey)
null
if there is none.
Must be called from synchronized context.
currently always returns null -- remove
public void setDataSource(DataSource dataSource)
public DataSource getDataSource()
public static RolapStar.Measure getStarMeasure(Member member)
RolapStar.Measure
in which a measure is stored.public RolapStar.Column[] lookupColumns(String tableAlias, String columnName)
public RolapStar.Column lookupColumn(String tableAlias, String columnName)
public static void collectColumns(Collection<RolapStar.Column> columnList, RolapStar.Table table, MondrianDef.Column joinColumn)
joinColumn
is specified, only considers child tables
joined by the given column.public RolapStar.Column getColumn(int bitPos)
bitPos
- bit position to look uppublic RolapSchema getSchema()
public String generateSql(List<RolapStar.Column> columnList, List<String> columnNameList)
The SQL statement is of the form SELECT ... FROM ... JOIN ...
GROUP BY ...
. It is useful for populating an aggregate table.
columnList
- List of columns (attributes and measures)columnNameList
- List of column names (must have same cardinality
as columnList
)public void print(PrintWriter pw, String prefix, boolean structure)
RolapStar
pw
- Writerprefix
- Prefix to print at the start of each linestructure
- Whether to print the structure of the starpublic DataSourceChangeListener getChangeListener()
public void setChangeListener(DataSourceChangeListener changeListener)
changeListener
- The Data source change listener to setCopyright © 2018 Hitachi Vantara. All rights reserved.