12345678910111213141516171819202122232425262728293031 |
- import {t} from 'sentry/locale';
- import type {MetricsExtractionRule} from 'sentry/types/metrics';
- import {DEFAULT_SPAN_METRIC_ALERT_FIELD, parseField} from 'sentry/utils/metrics/mri';
- export function getFormattedSpanMetricField(
- field: string,
- metricExtractionRules: MetricsExtractionRule[] | null | undefined
- ): string {
- let formattedAggregate =
- field === DEFAULT_SPAN_METRIC_ALERT_FIELD ? t('Select a metrics to continue') : '...';
- const parsedField = parseField(field);
- if (metricExtractionRules && parsedField) {
- const matchedRule = metricExtractionRules.find(extractionRule =>
- extractionRule.conditions.some(condition =>
- condition.mris.includes(parsedField.mri)
- )
- );
- if (matchedRule) {
- const aggregationToDisplay =
- // Internally we use `sum` for counter metrics but expose `count` to the user
- parsedField.aggregation === 'sum' ? 'count' : parsedField.aggregation;
- formattedAggregate = `${aggregationToDisplay}(${matchedRule.spanAttribute})`;
- } else {
- t('Deleted metric');
- }
- }
- return formattedAggregate;
- }
|