You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Julian Hyde (JIRA)" <ji...@apache.org> on 2014/09/16 08:29:36 UTC
[jira] [Resolved] (OPTIQ-410) Allow lattice tiles to satisfy a
query by rolling up
[ https://issues.apache.org/jira/browse/OPTIQ-410?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Julian Hyde resolved OPTIQ-410.
-------------------------------
Resolution: Fixed
Fix Version/s: 0.9.1-incubating
Fixed in http://git-wip-us.apache.org/repos/asf/incubator-optiq/commit/7938e10d.
> Allow lattice tiles to satisfy a query by rolling up
> ----------------------------------------------------
>
> Key: OPTIQ-410
> URL: https://issues.apache.org/jira/browse/OPTIQ-410
> Project: Optiq
> Issue Type: Bug
> Reporter: Julian Hyde
> Assignee: Julian Hyde
> Fix For: 0.9.1-incubating
>
>
> If a lattice has a materialized tile on say columns (x, y, z), allow that tile to be used to evaluate a query on say ( x ) or (y, z). Implementation would require an extra aggregation to roll up from (x, y, z) to the actual column set (y, z).
> Measures would need to be present in the materialization, and be able to be rolled up; for instance, count(a) is rolled up from a partial result p using sum(p). Min, max and sum roll up using themselves.
> You can also compute aggregate functions on grouping columns, for example min( x ), and expressions of aggregate functions.
> Given the a lattice with a single initially materialized tile,
> {code:javascript}
> {
> auto: false,
> defaultMeasures: [ {
> agg: 'count'
> } ],
> tiles: [ {
> dimensions: [ 'the_year', ['t', 'quarter'] ],
> measures: [ {
> agg: 'sum',
> args: 'unit_sales'
> }, {
> agg: 'sum',
> args: 'store_sales'
> }, {
> agg: 'count'
> } ]
> } ]
> }
> {code}
> Optiq can satisfy the following query from that tile:
> {code:sql}
> select t."the_year",
> count(*) as c,
> min("quarter") as q,
> sum("unit_sales") * 10 as us
> from "foodmart"."sales_fact_1997" as s
> join "foodmart"."time_by_day" as t using ("time_id")
> group by t."the_year"
> {code}
> Note that it rolls up from (the_year, quarter) to (the_year), rolls up count( * ) using sum, rolls up sum(unit_sales), and computes min(quarter) from a column (quarter) that is a dimension, not a measure, of the tile. And it automatically matches the tables joined in the query to the 5 joined tables in the SQL definition of the lattice (not shown above).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)