From 31d3db01cafef450f63b3305b32d7382a6a3923f Mon Sep 17 00:00:00 2001 From: tony-resendiz Date: Mon, 15 Dec 2025 11:38:25 -0800 Subject: [PATCH 1/3] update some ddsketch fields from histogram --- lib/vector-core/src/metrics/ddsketch.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/vector-core/src/metrics/ddsketch.rs b/lib/vector-core/src/metrics/ddsketch.rs index b66f25ceb150b..5fb910b39f369 100644 --- a/lib/vector-core/src/metrics/ddsketch.rs +++ b/lib/vector-core/src/metrics/ddsketch.rs @@ -779,6 +779,8 @@ impl AgentDDSketch { /// ## Errors /// /// Returns an error if a bucket size is greater that `u32::MAX`. + #[allow(clippy::cast_possible_truncation)] + #[allow(clippy::cast_precision_loss)] pub fn transform_to_sketch(mut metric: Metric) -> Result { let sketch = match metric.data_mut().value_mut() { MetricValue::Distribution { samples, .. } => { @@ -788,10 +790,24 @@ impl AgentDDSketch { } Some(sketch) } - MetricValue::AggregatedHistogram { buckets, .. } => { + MetricValue::AggregatedHistogram { + buckets, + sum, + count, + .. + } => { let delta_buckets = mem::take(buckets); let mut sketch = AgentDDSketch::with_agent_defaults(); sketch.insert_interpolate_buckets(delta_buckets)?; + + let orig_sum = *sum; + let orig_count = *count; + if orig_count > 0 { + sketch.sum = orig_sum; + sketch.count = orig_count as u32; + sketch.avg = orig_sum / orig_count as f64; + } + Some(sketch) } // We can't convert from any other metric value. From be24867b958b243c41739804489e0bde0f86995c Mon Sep 17 00:00:00 2001 From: tony-resendiz Date: Mon, 15 Dec 2025 11:40:04 -0800 Subject: [PATCH 2/3] add changelog fragment --- changelog.d/dd_sketch_averages_from_histograms.fix.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog.d/dd_sketch_averages_from_histograms.fix.md diff --git a/changelog.d/dd_sketch_averages_from_histograms.fix.md b/changelog.d/dd_sketch_averages_from_histograms.fix.md new file mode 100644 index 0000000000000..c02dd5d2d0cb8 --- /dev/null +++ b/changelog.d/dd_sketch_averages_from_histograms.fix.md @@ -0,0 +1,3 @@ +Improved accuracy of ddsketch averages by using histogram's sum / count. + +authors: tony-resendiz \ No newline at end of file From 3911f2ee14a3808306bf44a9bd4266b9304670d6 Mon Sep 17 00:00:00 2001 From: tony-resendiz Date: Tue, 6 Jan 2026 08:59:49 -0800 Subject: [PATCH 3/3] formatting --- changelog.d/dd_sketch_averages_from_histograms.fix.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/dd_sketch_averages_from_histograms.fix.md b/changelog.d/dd_sketch_averages_from_histograms.fix.md index c02dd5d2d0cb8..e409858602600 100644 --- a/changelog.d/dd_sketch_averages_from_histograms.fix.md +++ b/changelog.d/dd_sketch_averages_from_histograms.fix.md @@ -1,3 +1,3 @@ Improved accuracy of ddsketch averages by using histogram's sum / count. -authors: tony-resendiz \ No newline at end of file +authors: tony-resendiz