wu-sheng commented on code in PR #10449:
URL: https://github.com/apache/skywalking/pull/10449#discussion_r1118296408
##########
oap-server/server-receiver-plugin/otel-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/otel/otlp/OpenTelemetryMetricRequestProcessor.java:
##########
@@ -161,6 +163,54 @@ private static Map<Double, Long> buildBuckets(
return result;
}
+ /**
+ * ExponentialHistogram data points are an alternate representation to the
Histogram data point in OpenTelemetry
+ * metric
format(https://opentelemetry.io/docs/reference/specification/metrics/data-model/#exponentialhistogram).
+ * It uses scale, offset and bucket index to calculate the bound. Firstly,
calculate the base using scale by
+ * formula: base = 2**(2**(-scale)). Then the upperBound of specific
bucket can be calculated by formula:
+ * base**(offset+index+1). Above calculation way is about positive
buckets. For the negative case, we just
+ * map them by their absolute value into the negative range using the same
scale as the positive range. So the
+ * upperBound should be calculated as -base**(offset+index).
+ *
+ * @param positiveOffset corresponding to positive Buckets' offset
in ExponentialHistogramDataPoint
+ * @param positiveBucketCounts corresponding to positive Buckets'
bucket_counts in ExponentialHistogramDataPoint
+ * @param negativeOffset corresponding to negative Buckets' offset
in ExponentialHistogramDataPoint
+ * @param negativeBucketCounts corresponding to negative Buckets'
bucket_counts in ExponentialHistogramDataPoint
+ * @param scale corresponding to scale in
ExponentialHistogramDataPoint
+ * @return The map is a bucket set for histogram, the key is specific
bucket's upperBound, the value is item count
+ * in this bucket lower than or equals to key(upperBound)
+ */
+ private static Map<Double, Long> buildBucketsFromExponentialHistogram(
+ int positiveOffset, final List<Long> positiveBucketCounts,
+ int negativeOffset, final List<Long> negativeBucketCounts, int scale) {
+
+ final Map<Double, Long> result = new HashMap<>();
Review Comment:
> There is clear definition of zeros in OTEL data model, we can tackle the
zeros according to the definition, in short, the zero_count is the count of
bucket (-threshold, +threshold), or count of samples that are approximately 0
if threshold is not set.
Yes, they defined. Last time, I check, it mentioned, the zero threshold even
could cover over the existing bucket scopes.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]