Skip to content

[DNS] prototype metric templates #1545

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 40 additions & 3 deletions protos/perfetto/trace_summary/v2_metric.proto
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,39 @@ message TraceMetricV2Spec {
optional PerfettoSqlStructuredQuery query = 4;
}

// A template for generating multiple v2 trace-based metrics.
//
// Often when people start writing more complex sets of metrics, they find that
// they are repeating themselves a lot. This proto is intended to help with
// that: it allows you to specify a set of metrics which share a common prefix
// and a common set of dimensions. The template will then generate a set of
// metrics which share the same prefix and dimensions but differ in the value
// column.
message TraceMetricV2TemplateSpec {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could the TraceMetricV2Spec be expanded instead of creating a new proto ?
Creating a new repeated field value_columns where either value or value_columns are set. Similar to dimensions vs dimensions_specs change.

As it is not clear what TraceSummary output expanded version of TraceMetricV2Spec .

// The prefix for all metric ids generated by this template. The actual id
// for each metric will be `<id_prefix>_<values>`.
//
// See `TraceMetricV2Spec.id` for more information.
optional string id_prefix = 1;

// The shared set of dimensions for all metrics generated by this template.
// See `TraceMetricV2Spec.dimension_specs` and `TraceMetricV2Spec.dimensions`
// for more details.
repeated TraceMetricV2Spec.DimensionSpec dimensions_specs = 5;
repeated string dimensions = 2;

// A list of columns from `query` which each of which will generate a unique
// metric. The id of each metric will be `<id_prefix>_<value_column>`.
//
// See `TraceMetricV2Spec.value` for more information.
repeated string value_columns = 3;

// The structured query which will be used to compute the metric.
//
// See `TraceMetricV2Spec.query` for more information.
optional PerfettoSqlStructuredQuery query = 4;
}

// The output containing all the values for a single v2 trace-based metric.
//
// Note: see `TraceMetricV2Spec` for commentary on what a trace-based metric
Expand Down Expand Up @@ -263,8 +296,12 @@ message TraceMetricV2 {
}
repeated MetricRow row = 1;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will MetricRow.value be repeated field ?


// The spec for the metric. This is simply an echo of the spec which was
// passed in to compute the metric. Useful for knowing what the dimension
// names/value names are.
// The spec for the metric.
//
// If the spec was directly specified when computing the metric, it is simply
// an echo of that spec. However, if the metric spec was generated from a
// template, it will be the "expanded" version of the spec
//
// Useful for knowing what the dimension names/value names are.
optional TraceMetricV2Spec spec = 2;
}