public double cardinality(List<Lattice.Column> columns) { final List<Double> counts = new ArrayList<>(); for (Lattice.Column column : columns) { counts.add(cardinality(lattice, column)); } return (int) Lattice.getRowCount(lattice.getFactRowCount(), counts); }
/** 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 static Builder builder(CalciteSchema calciteSchema, String sql) { return builder(new LatticeSpace(MapSqlStatisticProvider.INSTANCE), calciteSchema, sql); }
public double getRowCount(List<Attribute> attributes) { return lattice.getRowCount( Util.transform(attributes, input -> ((AttributeImpl) input).column)); }
lattice.lattice.toMeasures(mergedAggregate.getAggCallList()); final Pair<CalciteSchema.TableEntry, TileKey> pair = lattice.getAggregate(call.getPlanner(), mergedAggregate.getGroupSet(),
public double getFactRowCount() { return lattice.getFactRowCount(); }
/** Called after the constructor has completed and the model has been * loaded. */ void init() { final MaterializationService service = MaterializationService.instance(); for (CalciteSchema.LatticeEntry e : Schemas.getLatticeEntries(rootSchema)) { final Lattice lattice = e.getLattice(); for (Lattice.Tile tile : lattice.computeTiles()) { service.defineTile(lattice, tile.bitSet(), tile.measures, e.schema, true, true); } } }
/** Creates a LatticeEntryImpl. */ public LatticeEntryImpl(CalciteSchema schema, String name, Lattice lattice) { super(schema, name); this.lattice = lattice; // Star table has same name as lattice and is in same schema. final StarTable starTable = lattice.createStarTable(); starTableEntry = schema.add(name, starTable); }
private double cardinality(Lattice lattice, Lattice.Column column) { final String sql = lattice.countSql(ImmutableBitSet.of(column.ordinal)); final Table table = new MaterializationService.DefaultTableFactory() .createTable(lattice.rootSchema, sql, ImmutableList.of()); final Object[] values = Iterables.getOnlyElement(((ScannableTable) table).scan(null)); return ((Number) values[0]).doubleValue(); } }
/** Builds a lattice. */ public Lattice build() { LatticeStatisticProvider.Factory statisticProvider = this.statisticProvider != null ? AvaticaUtils.instantiatePlugin( LatticeStatisticProvider.Factory.class, this.statisticProvider) : Lattices.CACHED_SQL; Preconditions.checkArgument(rootSchema.isRoot(), "must be root schema"); return new Lattice(rootSchema, ImmutableList.copyOf(nodes), auto, algorithm, algorithmMaxMillis, statisticProvider, rowCountEstimate, columns, defaultMeasureListBuilder.build(), tileListBuilder.build()); }
foodmart = addSchemaIfNotExists(rootSchema, SchemaSpec.JDBC_FOODMART); foodmart.add(schema.schemaName, Lattice.create(foodmart.unwrap(CalciteSchema.class), "select 1 from \"foodmart\".\"sales_fact_1997\" as s\n" + "join \"foodmart\".\"time_by_day\" as t using (\"time_id\")\n"
public double getRowCount(List<Attribute> attributes) { return lattice.getRowCount( Util.transform(attributes, input -> ((AttributeImpl) input).column)); }
lattice.lattice.toMeasures(aggregate.getAggCallList()); final Pair<CalciteSchema.TableEntry, TileKey> pair = lattice.getAggregate(call.getPlanner(), aggregate.getGroupSet(),
public double getFactRowCount() { return lattice.getFactRowCount(); }
/** Called after the constructor has completed and the model has been * loaded. */ void init() { final MaterializationService service = MaterializationService.instance(); for (CalciteSchema.LatticeEntry e : Schemas.getLatticeEntries(rootSchema)) { final Lattice lattice = e.getLattice(); for (Lattice.Tile tile : lattice.computeTiles()) { service.defineTile(lattice, tile.bitSet(), tile.measures, e.schema, true, true); } } }
/** Creates a LatticeEntryImpl. */ public LatticeEntryImpl(CalciteSchema schema, String name, Lattice lattice) { super(schema, name); this.lattice = lattice; // Star table has same name as lattice and is in same schema. final StarTable starTable = lattice.createStarTable(); starTableEntry = schema.add(name, starTable); }
private double cardinality(Lattice lattice, Lattice.Column column) { final String sql = lattice.countSql(ImmutableBitSet.of(column.ordinal)); final Table table = new MaterializationService.DefaultTableFactory() .createTable(lattice.rootSchema, sql, ImmutableList.of()); final Object[] values = Iterables.getOnlyElement(((ScannableTable) table).scan(null)); return ((Number) values[0]).doubleValue(); } }
/** Builds a lattice. */ public Lattice build() { LatticeStatisticProvider.Factory statisticProvider = this.statisticProvider != null ? AvaticaUtils.instantiatePlugin( LatticeStatisticProvider.Factory.class, this.statisticProvider) : Lattices.CACHED_SQL; Preconditions.checkArgument(rootSchema.isRoot(), "must be root schema"); final ImmutableList.Builder<Column> columnBuilder = ImmutableList.<Column>builder() .addAll(baseColumns) .addAll(derivedColumnsByName.values()); return new Lattice(rootSchema, rootNode, auto, algorithm, algorithmMaxMillis, statisticProvider, rowCountEstimate, columnBuilder.build(), ImmutableSortedSet.copyOf(defaultMeasureSet), tileListBuilder.build()); }
foodmart = addSchemaIfNotExists(rootSchema, SchemaSpec.JDBC_FOODMART); foodmart.add(schema.schemaName, Lattice.create(foodmart.unwrap(CalciteSchema.class), "select 1 from \"foodmart\".\"sales_fact_1997\" as s\n" + "join \"foodmart\".\"time_by_day\" as t using (\"time_id\")\n"
public double cardinality(List<Lattice.Column> columns) { final List<Double> counts = new ArrayList<>(); for (Lattice.Column column : columns) { counts.add(cardinality(lattice, column)); } return (int) Lattice.getRowCount(lattice.getFactRowCount(), counts); }