Package mondrian.rolap.agg
Class AbstractQuerySpec
- java.lang.Object
-
- mondrian.rolap.agg.AbstractQuerySpec
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
countOnly
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractQuerySpec(RolapStar star, boolean countOnly)
Creates an AbstractQuerySpec.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
addGroupingFunction(SqlQuery sqlQuery)
protected void
addGroupingSets(SqlQuery sqlQuery, Map<String,String> groupingSetsAliases)
protected void
addMeasure(int i, SqlQuery sqlQuery)
Adds a measure to a query.protected Map<String,String>
distinctGenerateSql(SqlQuery outerSqlQuery, boolean countOnly)
Generates a SQL query to retrieve the values in this segment using an algorithm which converts distinct-aggregates to non-distinct aggregates over subqueries.protected void
extraPredicates(SqlQuery sqlQuery)
Adds predicates not associated with columns.Pair<String,List<SqlStatement.Type>>
generateSqlQuery()
protected int
getDistinctMeasureCount()
Returns the number of measures whose aggregation function is distinct-count.protected List<StarPredicate>
getPredicateList()
Returns a list of predicates not associated with a particular column.RolapStar
getStar()
protected abstract boolean
isAggregate()
protected boolean
isOrdered()
Whether to add an ORDER BY clause to make results deterministic.protected boolean
isPartOfSelect(RolapStar.Column col)
Allows subclasses to specify if a given column must be returned as part of the result set, in the select clause.protected boolean
isPartOfSelect(RolapStar.Measure measure)
Allows subclasses to specify if a given column must be returned as part of the result set, in the select clause.protected SqlQuery
newSqlQuery()
Creates a query object.protected Map<String,String>
nonDistinctGenerateSql(SqlQuery sqlQuery)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface mondrian.rolap.agg.QuerySpec
getColumnAlias, getColumnPredicate, getColumns, getMeasure, getMeasureAlias, getMeasureCount
-
-
-
-
Constructor Detail
-
AbstractQuerySpec
protected AbstractQuerySpec(RolapStar star, boolean countOnly)
Creates an AbstractQuerySpec.- Parameters:
star
- Star which defines columns of interest and their relationshipscountOnly
- If true, generate no GROUP BY clause, so the query returns a single row containing a grand total
-
-
Method Detail
-
newSqlQuery
protected SqlQuery newSqlQuery()
Creates a query object.- Returns:
- a new query object
-
addMeasure
protected void addMeasure(int i, SqlQuery sqlQuery)
Adds a measure to a query.- Parameters:
i
- Ordinal of measuresqlQuery
- Query object
-
isAggregate
protected abstract boolean isAggregate()
-
isPartOfSelect
protected boolean isPartOfSelect(RolapStar.Column col)
Allows subclasses to specify if a given column must be returned as part of the result set, in the select clause.
-
isPartOfSelect
protected boolean isPartOfSelect(RolapStar.Measure measure)
Allows subclasses to specify if a given column must be returned as part of the result set, in the select clause.
-
isOrdered
protected boolean isOrdered()
Whether to add an ORDER BY clause to make results deterministic. Necessary if query returns more than one row and results are for human consumption.- Returns:
- whether to sort query
-
generateSqlQuery
public Pair<String,List<SqlStatement.Type>> generateSqlQuery()
- Specified by:
generateSqlQuery
in interfaceQuerySpec
-
addGroupingFunction
protected void addGroupingFunction(SqlQuery sqlQuery)
-
addGroupingSets
protected void addGroupingSets(SqlQuery sqlQuery, Map<String,String> groupingSetsAliases)
-
getDistinctMeasureCount
protected int getDistinctMeasureCount()
Returns the number of measures whose aggregation function is distinct-count.- Returns:
- Number of distinct-count measures
-
distinctGenerateSql
protected Map<String,String> distinctGenerateSql(SqlQuery outerSqlQuery, boolean countOnly)
Generates a SQL query to retrieve the values in this segment using an algorithm which converts distinct-aggregates to non-distinct aggregates over subqueries.- Parameters:
outerSqlQuery
- Query to modifycountOnly
- If true, only generate a single row: no need to generate a GROUP BY clause or put any constraining columns in the SELECT clause- Returns:
- A map of aliases used in the inner query if grouping sets were enabled.
-
extraPredicates
protected void extraPredicates(SqlQuery sqlQuery)
Adds predicates not associated with columns.- Parameters:
sqlQuery
- Query
-
getPredicateList
protected List<StarPredicate> getPredicateList()
Returns a list of predicates not associated with a particular column.- Returns:
- list of non-column predicates
-
-