/** * Create a new result set with an additional final column. * * @param column the column being added * * @return the result set being constructed */ public ResultSetSchema withAddColumn(Column column) { LinkedHashSet<Column> columns = new LinkedHashSet<>(this.getColumns()); columns.add(column); return new ResultSetSchema(this.getGranularity(), columns); } }
/** * Build a result set using the api request time grain. * * @param json The json representing the druid response. * @param druidQuery The druid query being processed * @param dateTimeZone The date time zone for parsing result rows * * @return The initial result set from the json node. */ public ResultSet buildResultSet(JsonNode json, DruidAggregationQuery<?> druidQuery, DateTimeZone dateTimeZone) { LinkedHashSet<Column> columns = druidResponseParser.buildSchemaColumns(druidQuery) .collect(Collectors.toCollection(LinkedHashSet::new)); ResultSetSchema resultSetSchema = new ResultSetSchema(granularity, columns); return druidResponseParser.parse(json, resultSetSchema, druidQuery.getQueryType(), dateTimeZone); } }
/** * Generates ZonedSchema object from given JsonNode. * * @param schemaNode JsonNode which contains all the columns, timezone and granularity * * @return ResultSetSchema object generated from the JsonNode */ private ResultSetSchema getResultSetSchema(JsonNode schemaNode) { DateTimeZone timezone = generateTimezone( schemaNode.get(SCHEMA_TIMEZONE).asText(), DateTimeZone.forID( SYSTEM_CONFIG.getStringProperty(SYSTEM_CONFIG.getPackageVariableName("timezone"), "UTC") ) ); //Recreate ResultSetSchema LinkedHashSet<Column> columns = Stream.concat( Streams.stream(schemaNode.get(SCHEMA_DIM_COLUMNS)) .map(JsonNode::asText) .map(this::resolveDimensionName) .map(DimensionColumn::new), Streams.stream(() -> schemaNode.get(SCHEMA_METRIC_COLUMNS_TYPE).fields()) .map(entry -> new MetricColumnWithValueType(entry.getKey(), entry.getValue().asText())) ).collect(Collectors.toCollection(LinkedHashSet::new)); return new ResultSetSchema(generateGranularity(schemaNode.get(SCHEMA_GRANULARITY).asText(), timezone), columns); }
new ResultSetSchema(AllGranularity.INSTANCE, Collections.emptySet()), Collections.emptyList() ), responseContext
metricValues.put(pageViewColumn, new BigDecimal(111)); ResultSetSchema schema = new ResultSetSchema(granularity, Collections.singleton(pageViewColumn)); Result result = new Result(new HashMap<>(), metricValues, DateTime.parse("2016-01-12T00:00:00.000Z")); List<Result> results = new ArrayList<>();
metricValues.put(pageViewColumn, new BigDecimal(111)); ResultSetSchema schema = new ResultSetSchema(granularity, Collections.singleton(pageViewColumn)); Result result = new Result(new HashMap<>(), metricValues, DateTime.parse("2016-01-12T00:00:00.000Z")); List<Result> results = new ArrayList<>();