/** * Get the schema column names from the dimensions and metrics. * * @param request A request which supplies grouping dimensions and filtering dimensions * @param query A query model which has metric column and possibly dimension column names * * @return a set of strings representing schema column names */ public static Set<String> getColumnNames(DataApiRequest request, DruidAggregationQuery<?> query) { return Stream.concat( getDimensions(request, query).map(Dimension::getApiName), query.getDependentFieldNames().stream() ).collect(Collectors.toSet()); }
/** * Get the fact store column names from the dimensions and metrics. * <p> * NOTE: This method exists since TemplateDruidQuery's don't have a valid DataSource from which we can * retrieve a valid PhysicalTable. Consequently, at time of resolution, the table should be passed in. * * @param request A request which supplies grouping dimensions and filtering dimensions * @param query A query model which has metric column and possibly dimension column names * @param table Physical table used in resolving dimension names * * @return a set of strings representing fact store column names * * @deprecated in favor of getColumnNames(DataApiRequest, DruidAggregationQuery) returning dimension api name */ @Deprecated public static Set<String> getColumnNames( DataApiRequest request, DruidAggregationQuery<?> query, PhysicalTable table ) { return Stream.of( getDimensions(request, query) .map(Dimension::getApiName) .map(table::getPhysicalColumnName), query.getDependentFieldNames().stream() ).flatMap(Function.identity()).collect(Collectors.toSet()); }
/** * Constructor. * * @param dataApiRequest Api request containing the constraints information. * @param templateDruidQuery Query containing metric constraint information. */ public DataSourceConstraint(DataApiRequest dataApiRequest, DruidAggregationQuery<?> templateDruidQuery) { this.requestDimensions = Collections.unmodifiableSet(dataApiRequest.getDimensions()); this.filterDimensions = Collections.unmodifiableSet(dataApiRequest.getApiFilters().keySet()); this.metricDimensions = Collections.unmodifiableSet(templateDruidQuery.getMetricDimensions()); this.metricNames = Collections.unmodifiableSet(templateDruidQuery.getDependentFieldNames()); this.apiFilters = new ApiFilters(dataApiRequest.getApiFilters()); this.allDimensions = generateAllDimensions(); this.allDimensionNames = generateAllDimensionNames(); this.allColumnNames = generateAllColumnNames(); }