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 02:51:33 UTC

[jira] [Created] (OPTIQ-410) Allow lattice tiles to satisfy a query by rolling up

Julian Hyde created OPTIQ-410:
---------------------------------

             Summary: 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


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 materialization

{code:json}
{
  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}

you can satisfy the query

{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}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)