public Measure resolveMeasure(String aggName, Object args) { final SqlAggFunction agg = resolveAgg(aggName); final ImmutableList<Column> list = resolveArgs(args); return new Measure(agg, list); }
StepRef stepRef(TableRef source, TableRef target, List<IntPair> keys) { keys = LatticeSpace.sortUnique(keys); final Step h = new Step(source.table, target.table, keys); if (h.isBackwards(space.statisticProvider)) { final List<IntPair> keys1 = LatticeSpace.swap(h.keys); final Step h2 = space.addEdge(h.target(), h.source(), keys1); return new StepRef(target, source, h2, stepRefCount++); } else { final Step h2 = space.addEdge(h.source(), h.target(), h.keys); return new StepRef(source, target, h2, stepRefCount++); } } }
public void visit(JsonTile jsonTile) { assert tileBuilder == null; tileBuilder = Lattice.Tile.builder(); for (JsonMeasure jsonMeasure : jsonTile.measures) { jsonMeasure.accept(this); } for (Object dimension : jsonTile.dimensions) { final Lattice.Column column = latticeBuilder.resolveColumn(dimension); tileBuilder.addDimension(column); } latticeBuilder.addTile(tileBuilder.build()); tileBuilder = null; }
/** Generates a SQL query to populate a tile of the lattice specified by a * given set of columns and measures. */ public String sql(ImmutableBitSet groupSet, List<Measure> aggCallList) { return sql(groupSet, true, aggCallList); }
public Iterable<? extends Tile> computeTiles() { if (!algorithm) { return tiles; } return new TileSuggester(this).tiles(); }
public static Builder builder(CalciteSchema calciteSchema, String sql) { return builder(new LatticeSpace(MapSqlStatisticProvider.INSTANCE), calciteSchema, sql); }
/** Defines a new materialization. Returns its key. */ public MaterializationKey defineMaterialization(final CalciteSchema schema, TileKey tileKey, String viewSql, List<String> viewSchemaPath, final String suggestedTableName, boolean create, boolean existing) { return defineMaterialization(schema, tileKey, viewSql, viewSchemaPath, suggestedTableName, tableFactory, create, existing); }
void addPath(Path path, String alias) { MutableNode n = this; for (Step step1 : path.steps) { MutableNode n2 = n.findChild(step1); if (n2 == null) { n2 = new MutableNode(step1.target(), n, step1); if (alias != null) { n2.alias = alias; } } n = n2; } }
private java.util.function.Function<Lattice.Column, Lattice.Column> mapper( final Lattice lattice, final Lattice.Builder builder) { return (Lattice.Column c) -> { if (c instanceof Lattice.BaseColumn) { Lattice.BaseColumn baseColumn = (Lattice.BaseColumn) c; Pair<Path, Integer> p = lattice.columnToPathOffset(baseColumn); return builder.pathOffsetToColumn(p.left, p.right); } else { final Lattice.DerivedColumn derivedColumn = (Lattice.DerivedColumn) c; return builder.expression(derivedColumn.e, derivedColumn.alias, derivedColumn.tables); } }; }
void createPathsRecurse(LatticeSpace space, List<Step> steps, List<Path> paths) { paths.add(space.addPath(steps)); for (LatticeChildNode child : children) { steps.add(space.addEdge(table, child.table, child.link)); child.createPathsRecurse(space, steps, paths); steps.remove(steps.size() - 1); } }
/** Returns an estimate of the number of rows in the tile with the given * dimensions. */ public double getRowCount(List<Column> columns) { return statisticProvider.cardinality(columns); }
public Step createEdge(LatticeTable source, LatticeTable target, Object... attributes) { @SuppressWarnings("unchecked") final List<IntPair> keys = (List) attributes[0]; return new Step(source, target, keys); } }
public StepRef createEdge(TableRef source, TableRef target, Object... attributes) { final Step step = (Step) attributes[0]; final Integer ordinalInQuery = (Integer) attributes[1]; return new StepRef(source, target, step, ordinalInQuery); } }
public void visit(JsonTile jsonTile) { assert tileBuilder == null; tileBuilder = Lattice.Tile.builder(); for (JsonMeasure jsonMeasure : jsonTile.measures) { jsonMeasure.accept(this); } for (Object dimension : jsonTile.dimensions) { final Lattice.Column column = latticeBuilder.resolveColumn(dimension); tileBuilder.addDimension(column); } latticeBuilder.addTile(tileBuilder.build()); tileBuilder = null; }
/** Generates a SQL query to populate a tile of the lattice specified by a * given set of columns and measures. */ public String sql(ImmutableBitSet groupSet, List<Measure> aggCallList) { return sql(groupSet, true, aggCallList); }
public Iterable<? extends Tile> computeTiles() { if (!algorithm) { return tiles; } return new TileSuggester(this).tiles(); }
/** Returns an estimate of the number of rows in the tile with the given * dimensions. */ public double getRowCount(List<Column> columns) { return statisticProvider.cardinality(columns); }