public SelectQuery withOverriddenContext(Map<String, Object> contextOverrides) { return new SelectQuery( getDataSource(), getQuerySegmentSpec(), dimFilter, granularity, dimensions, metrics, pagingSpec, computeOverridenContext(contextOverrides) ); }
public SelectQuery withQuerySegmentSpec(QuerySegmentSpec querySegmentSpec) { return new SelectQuery( getDataSource(), querySegmentSpec, dimFilter, granularity, dimensions, metrics, pagingSpec, getContext() ); }
@Override public String toString() { return "SelectQuery{" + "dataSource='" + getDataSource() + '\'' + ", querySegmentSpec=" + getQuerySegmentSpec() + ", descending=" + isDescending() + ", dimFilter=" + dimFilter + ", granularity=" + getGranularity() + ", dimensions=" + dimensions + ", metrics=" + metrics + ", virtualColumns=" + virtualColumns + ", pagingSpec=" + pagingSpec + '}'; }
DbTable table1= schema.findSchema("table1"); DbColumn column1 = table1.findColumn("column1"); SelectQuery sql = new SelectQuery(); sql.addAllColumns().addCustomFromTable(table1); sql.addCondition(BinaryCondition.like(column1, "A"));
public static SelectQueryBuilder copy(SelectQuery query) { return new SelectQueryBuilder() .dataSource(query.getDataSource()) .intervals(query.getQuerySegmentSpec()) .descending(query.isDescending()) .filters(query.getFilter()) .granularity(query.getGranularity()) .dimensionSpecs(query.getDimensions()) .metrics(query.getMetrics()) .virtualColumns(query.getVirtualColumns()) .pagingSpec(query.getPagingSpec()) .context(query.getContext()); }
String dataSource = Iterables.getOnlyElement(query.getDataSource().getNames()); if (query.getDimensions() == null || query.getDimensions().isEmpty()) { dims = DefaultDimensionSpec.toSpec(adapter.getAvailableDimensions()); } else { dims = query.getDimensions(); if (query.getMetrics() == null || query.getMetrics().isEmpty()) { metrics = adapter.getAvailableMetrics(); } else { metrics = query.getMetrics(); List<Interval> intervals = query.getQuerySegmentSpec().getIntervals(); Preconditions.checkArgument(intervals.size() == 1, "Can only handle a single interval, got[%s]", intervals); final Filter filter = Filters.convertToCNFFromQueryContext(query, Filters.toFilter(query.getDimensionsFilter())); query.getQuerySegmentSpec().getIntervals(), filter, query.getVirtualColumns(), query.isDescending(), query.getGranularity(), new Function<Cursor, Result<SelectResultValue>>()
@Override public byte[] computeCacheKey(SelectQuery query) final DimFilter dimFilter = query.getDimensionsFilter(); final byte[] filterBytes = dimFilter == null ? new byte[]{} : dimFilter.getCacheKey(); final byte[] granularityBytes = query.getGranularity().getCacheKey(); query.getDimensions() != null ? query.getDimensions() : Collections.<DimensionSpec>emptyList(); final byte[][] dimensionsBytes = new byte[dimensionSpecs.size()][]; int dimensionsBytesSize = 0; if (query.getMetrics() != null) { metrics.addAll(query.getMetrics()); final byte[] virtualColumnsCacheKey = query.getVirtualColumns().getCacheKey(); final byte isDescendingByte = query.isDescending() ? (byte) 1 : 0; + query.getPagingSpec().getCacheKey().length + dimensionsBytesSize + metricBytesSize .put(granularityBytes) .put(filterBytes) .put(query.getPagingSpec().getCacheKey()) .put(isDescendingByte);
@Override public byte[] computeCacheKey(SelectQuery query) final DimFilter dimFilter = query.getDimensionsFilter(); final byte[] filterBytes = dimFilter == null ? new byte[]{} : dimFilter.getCacheKey(); final byte[] granularityBytes = query.getGranularity().cacheKey(); if (query.getDimensions() != null) { dimensions.addAll(query.getDimensions()); if (query.getMetrics() != null) { metrics.addAll(query.getMetrics()); + query.getPagingSpec().getCacheKey().length + dimensionsBytesSize + metricBytesSize .put(granularityBytes) .put(filterBytes) .put(query.getPagingSpec().getCacheKey());
final String dataSource = Iterables.getOnlyElement(query.getDataSource().getNames()); PagingSpec pagingSpec = query.getPagingSpec(); Map<String, Integer> paging = pagingSpec.getPagingIdentifiers(); if (paging == null || paging.isEmpty()) { final Granularity granularity = query.getGranularity(); ); Collections.sort( intervals, query.isDescending() ? Comparators.intervalsByEndThenStart() : Comparators.intervalsByStartThenEnd() ); if (query.isDescending()) { long granularEnd = granularity.bucketStart(interval.getEnd()).getMillis(); Long currentEnd = granularThresholds.get(granularEnd); if (query.isDescending()) { while (it.hasNext()) { Interval interval = it.next().getInterval();
String selectQuery = (new SelectQuery()) .addColumns(t1Col1, t1Col2, t2Col1) .addJoin(SelectQuery.JoinType.INNER_JOIN, joinOfT1AndT2) .addOrderings(t1Col1) .validate().toString();
@Override protected BinaryFn<Result<SelectResultValue>, Result<SelectResultValue>, Result<SelectResultValue>> createMergeFn( Query<Result<SelectResultValue>> input ) { SelectQuery query = (SelectQuery) input; return new SelectBinaryFn( query.getGranularity(), query.getPagingSpec(), query.isDescending() ); } };
@Override public String toString() { return "SelectQuery{" + "dataSource='" + getDataSource() + '\'' + ", querySegmentSpec=" + getQuerySegmentSpec() + ", dimFilter=" + dimFilter + ", granularity=" + granularity + ", dimensions=" + dimensions + ", metrics=" + metrics + ", pagingSpec=" + pagingSpec + '}'; }
SelectQuery query = new SelectQuery(Responsibility.class); query.addPrefetch("employee"); List<Responsibility> responsibilities = context.performQuery(query);
@Override protected BinaryFn<Result<SelectResultValue>, Result<SelectResultValue>, Result<SelectResultValue>> createMergeFn( Query<Result<SelectResultValue>> input ) { SelectQuery query = (SelectQuery) input; return new SelectBinaryFn( query.getGranularity(), query.getPagingSpec() ); } };
@Override public ServiceMetricEvent.Builder makeMetricBuilder(SelectQuery query) { int numMinutes = 0; for (Interval interval : query.getIntervals()) { numMinutes += Minutes.minutesIn(interval).getMinutes(); } return new ServiceMetricEvent.Builder() .setUser2(query.getDataSource().toString()) .setUser4("Select") .setUser5(COMMA_JOIN.join(query.getIntervals())) .setUser6(String.valueOf(query.hasFilters())) .setUser9(Minutes.minutes(numMinutes).toString()); }
query.getPagingSpec(), query.isDescending() ); final PagingOffset offset = query.getPagingOffset(segmentId);
@Override public Sequence<Result<SelectResultValue>> run( QueryPlus<Result<SelectResultValue>> queryPlus, Map<String, Object> responseContext ) { SelectQuery selectQuery = (SelectQuery) queryPlus.getQuery(); if (selectQuery.getDimensionsFilter() != null) { selectQuery = selectQuery.withDimFilter(selectQuery.getDimensionsFilter().optimize()); queryPlus = queryPlus.withQuery(selectQuery); } return runner.run(queryPlus, responseContext); } }, this);
@Override public SelectQuery withOverriddenContext(Map<String, Object> contextOverrides) { Map<String, Object> newContext = computeOverriddenContext(getContext(), contextOverrides); return Druids.SelectQueryBuilder.copy(this).context(newContext).build(); }
@Override protected Ordering<Result<SelectResultValue>> makeOrdering(Query<Result<SelectResultValue>> query) { return Ordering.from( new ResultGranularTimestampComparator<SelectResultValue>( ((SelectQuery) query).getGranularity() ) ); }
query.getDimensions() != null ? query.getDimensions() : Collections.<DimensionSpec>emptyList(); private final List<String> dimOutputNames = dimensionSpecs.size() > 0 ? Lists.transform(dimensionSpecs, DimensionSpec::getOutputName) : Collections.emptyList();