Skip to content

Commit 58c63f2

Browse files
chore: add support for distinct array agregation operator
1 parent 24377a9 commit 58c63f2

File tree

8 files changed

+31
-1
lines changed

8 files changed

+31
-1
lines changed

hypertrace-graphql-explorer-schema/src/main/java/org/hypertrace/graphql/explorer/request/ExploreSelectionRequestBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ private List<Object> getArguments(
165165
case PERCENTILE:
166166
return MetricArguments.percentileWithSize(size.orElseThrow());
167167
case DISTINCT_COUNT:
168+
case DISTINCT_ARRAY:
168169
case COUNT:
169170
case AVG:
170171
case SUM:

hypertrace-graphql-gateway-service-metric-utils/src/main/java/org/hypertrace/graphql/utils/metrics/gateway/BaselinedConvertedAggregationContainer.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,9 @@ public BaselinedMetricAggregation percentile(int size) {
5858
public @GraphQLNonNull BaselinedMetricAggregation distinctcount() {
5959
return this.metricAggregationMap.get(MetricLookupMapKey.basicAggregation(DISTINCT_COUNT));
6060
}
61+
62+
@Override
63+
public @GraphQLNonNull BaselinedMetricAggregation distinctarray() {
64+
return this.metricAggregationMap.get(MetricLookupMapKey.basicAggregation(DISTINCT_ARRAY));
65+
}
6166
}

hypertrace-graphql-gateway-service-metric-utils/src/main/java/org/hypertrace/graphql/utils/metrics/gateway/ConvertedAggregationContainer.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.AVG;
44
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.COUNT;
5+
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.DISTINCT_ARRAY;
56
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.DISTINCT_COUNT;
67
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.MAX;
78
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.MIN;
@@ -59,4 +60,9 @@ public MetricAggregation percentile(int size) {
5960
public @GraphQLNonNull MetricAggregation distinctcount() {
6061
return this.metricAggregationMap.get(MetricLookupMapKey.basicAggregation(DISTINCT_COUNT));
6162
}
63+
64+
@Override
65+
public @GraphQLNonNull MetricAggregation distinctarray() {
66+
return this.metricAggregationMap.get(MetricLookupMapKey.basicAggregation(DISTINCT_ARRAY));
67+
}
6268
}

hypertrace-graphql-gateway-service-metric-utils/src/main/java/org/hypertrace/graphql/utils/metrics/gateway/FunctionTypeConverter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public Single<FunctionType> convert(AttributeModelMetricAggregationType aggregat
2727
return Single.just(FunctionType.PERCENTILE);
2828
case DISTINCT_COUNT:
2929
return Single.just(FunctionType.DISTINCTCOUNT);
30+
case DISTINCT_ARRAY:
31+
return Single.just(FunctionType.DISTINCT_ARRAY);
3032
default:
3133
return Single.error(
3234
new UnknownFormatConversionException(

hypertrace-graphql-gateway-service-metric-utils/src/main/java/org/hypertrace/graphql/utils/metrics/gateway/MetricBaselineConvertedAggregationContainer.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.AVG;
44
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.COUNT;
5+
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.DISTINCT_ARRAY;
56
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.DISTINCT_COUNT;
67
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.MAX;
78
import static org.hypertrace.core.graphql.attributes.AttributeModelMetricAggregationType.MIN;
@@ -63,4 +64,9 @@ public MetricBaselineAggregation percentile(int size) {
6364
public @GraphQLNonNull MetricBaselineAggregation distinctcount() {
6465
return this.metricAggregationMap.get(MetricLookupMapKey.basicAggregation(DISTINCT_COUNT));
6566
}
67+
68+
@Override
69+
public @GraphQLNonNull MetricBaselineAggregation distinctarray() {
70+
return this.metricAggregationMap.get(MetricLookupMapKey.basicAggregation(DISTINCT_ARRAY));
71+
}
6672
}

hypertrace-graphql-metric-schema/src/main/java/org/hypertrace/graphql/metric/request/DefaultMetricAggregationRequestBuilder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.hypertrace.graphql.metric.schema.MetricAggregationContainer.METRIC_AGGREGATION_CONTAINER_AVGRATE_KEY;
55
import static org.hypertrace.graphql.metric.schema.MetricAggregationContainer.METRIC_AGGREGATION_CONTAINER_AVG_KEY;
66
import static org.hypertrace.graphql.metric.schema.MetricAggregationContainer.METRIC_AGGREGATION_CONTAINER_COUNT_KEY;
7+
import static org.hypertrace.graphql.metric.schema.MetricAggregationContainer.METRIC_AGGREGATION_CONTAINER_DISTINCTARRAY_KEY;
78
import static org.hypertrace.graphql.metric.schema.MetricAggregationContainer.METRIC_AGGREGATION_CONTAINER_DISTINCTCOUNT_KEY;
89
import static org.hypertrace.graphql.metric.schema.MetricAggregationContainer.METRIC_AGGREGATION_CONTAINER_MAX_KEY;
910
import static org.hypertrace.graphql.metric.schema.MetricAggregationContainer.METRIC_AGGREGATION_CONTAINER_MIN_KEY;
@@ -126,6 +127,8 @@ private Optional<AttributeModelMetricAggregationType> getAggregationTypeForField
126127
return Optional.of(AttributeModelMetricAggregationType.COUNT);
127128
case METRIC_AGGREGATION_CONTAINER_DISTINCTCOUNT_KEY:
128129
return Optional.of(AttributeModelMetricAggregationType.DISTINCT_COUNT);
130+
case METRIC_AGGREGATION_CONTAINER_DISTINCTARRAY_KEY:
131+
return Optional.of(AttributeModelMetricAggregationType.DISTINCT_ARRAY);
129132
default:
130133
return Optional.empty();
131134
}
@@ -144,6 +147,7 @@ private List<Object> getArgumentsForAggregation(
144147
case MIN:
145148
case MAX:
146149
case DISTINCT_COUNT:
150+
case DISTINCT_ARRAY:
147151
default:
148152
return Collections.emptyList();
149153
}

hypertrace-graphql-metric-schema/src/main/java/org/hypertrace/graphql/metric/schema/MetricAggregationContainer.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public interface MetricAggregationContainer {
1717
String METRIC_AGGREGATION_CONTAINER_PERCENTILE_KEY = "percentile";
1818
String METRIC_AGGREGATION_CONTAINER_COUNT_KEY = "count";
1919
String METRIC_AGGREGATION_CONTAINER_DISTINCTCOUNT_KEY = "distinctcount";
20+
String METRIC_AGGREGATION_CONTAINER_DISTINCTARRAY_KEY = "distinctarray";
2021

2122
@GraphQLField
2223
@GraphQLNonNull
@@ -48,6 +49,11 @@ public interface MetricAggregationContainer {
4849
@GraphQLName(METRIC_AGGREGATION_CONTAINER_DISTINCTCOUNT_KEY)
4950
MetricAggregation distinctcount();
5051

52+
@GraphQLField
53+
@GraphQLNonNull
54+
@GraphQLName(METRIC_AGGREGATION_CONTAINER_DISTINCTARRAY_KEY)
55+
MetricAggregation distinctarray();
56+
5157
@GraphQLField
5258
@GraphQLNonNull
5359
@GraphQLName(METRIC_AGGREGATION_CONTAINER_AVGRATE_KEY)

0 commit comments

Comments
 (0)