public Result fetchLatencyByOp()

in src/main/java/org/opensearch/performanceanalyzer/reader/HttpRequestMetricsSnapshot.java [276:366]


    public Result<Record> fetchLatencyByOp() {
        ArrayList<SelectField<?>> fields =
                new ArrayList<SelectField<?>>() {
                    {
                        this.add(DSL.field(DSL.name(Fields.OPERATION.toString()), String.class));
                        this.add(
                                DSL.field(
                                        DSL.name(Fields.HTTP_RESP_CODE.toString()), String.class));
                        this.add(DSL.field(DSL.name(Fields.INDICES.toString()), String.class));
                        this.add(DSL.field(DSL.name(Fields.EXCEPTION.toString()), String.class));
                        this.add(
                                DSL.sum(
                                                DSL.field(
                                                        DSL.name(
                                                                Fields.HTTP_REQUEST_DOCS
                                                                        .toString()),
                                                        Long.class))
                                        .as(
                                                DBUtils.getAggFieldName(
                                                        Fields.HTTP_REQUEST_DOCS.toString(),
                                                        MetricsDB.SUM)));
                        this.add(
                                DSL.avg(
                                                DSL.field(
                                                        DSL.name(
                                                                Fields.HTTP_REQUEST_DOCS
                                                                        .toString()),
                                                        Long.class))
                                        .as(
                                                DBUtils.getAggFieldName(
                                                        Fields.HTTP_REQUEST_DOCS.toString(),
                                                        MetricsDB.AVG)));
                        this.add(
                                DSL.min(
                                                DSL.field(
                                                        DSL.name(
                                                                Fields.HTTP_REQUEST_DOCS
                                                                        .toString()),
                                                        Long.class))
                                        .as(
                                                DBUtils.getAggFieldName(
                                                        Fields.HTTP_REQUEST_DOCS.toString(),
                                                        MetricsDB.MIN)));
                        this.add(
                                DSL.max(
                                                DSL.field(
                                                        DSL.name(
                                                                Fields.HTTP_REQUEST_DOCS
                                                                        .toString()),
                                                        Long.class))
                                        .as(
                                                DBUtils.getAggFieldName(
                                                        Fields.HTTP_REQUEST_DOCS.toString(),
                                                        MetricsDB.MAX)));
                        this.add(
                                DSL.sum(DSL.field(DSL.name(Fields.LAT.toString()), Double.class))
                                        .as(
                                                DBUtils.getAggFieldName(
                                                        Fields.LAT.toString(), MetricsDB.SUM)));
                        this.add(
                                DSL.avg(DSL.field(DSL.name(Fields.LAT.toString()), Double.class))
                                        .as(
                                                DBUtils.getAggFieldName(
                                                        Fields.LAT.toString(), MetricsDB.AVG)));
                        this.add(
                                DSL.min(DSL.field(DSL.name(Fields.LAT.toString()), Double.class))
                                        .as(
                                                DBUtils.getAggFieldName(
                                                        Fields.LAT.toString(), MetricsDB.MIN)));
                        this.add(
                                DSL.max(DSL.field(DSL.name(Fields.LAT.toString()), Double.class))
                                        .as(
                                                DBUtils.getAggFieldName(
                                                        Fields.LAT.toString(), MetricsDB.MAX)));
                        this.add(DSL.count().as(Fields.HTTP_TOTAL_REQUESTS.toString()));
                    }
                };
        ArrayList<Field<?>> groupByFields =
                new ArrayList<Field<?>>() {
                    {
                        this.add(DSL.field(DSL.name(Fields.OPERATION.toString()), String.class));
                        this.add(
                                DSL.field(
                                        DSL.name(Fields.HTTP_RESP_CODE.toString()), String.class));
                        this.add(DSL.field(DSL.name(Fields.INDICES.toString()), String.class));
                        this.add(DSL.field(DSL.name(Fields.EXCEPTION.toString()), String.class));
                    }
                };

        return create.select(fields).from(fetchLatencyTable()).groupBy(groupByFields).fetch();
    }