otel.data.type decoder property.
The decoder expects OpenTelemetry JSON payloads shaped like OTLP JSON export messages. It does not run an OTLP collector endpoint by itself; use a stream such as Kafka or another supported realtime source to deliver the JSON payloads to Pinot.
When to Use
Use the OpenTelemetry decoder when:- Logs, metrics, or traces are already exported as JSON messages into a stream.
- You want Pinot tables to support observability analytics without writing a custom transform pipeline.
- You need OpenTelemetry attributes available as either JSON blobs or promoted Pinot columns.
Decoder Property
Set the decoder class and choose one data type:otel.data.type values:
The value is case-insensitive in practice because it is normalized before matching.
Log Ingestion
OpenTelemetry log payloads are decoded fromresourceLogs[].scopeLogs[].logRecords[].
Recommended schema:
Example query:
Metrics Ingestion
OpenTelemetry metric payloads are decoded fromresourceMetrics[].scopeMetrics[].metrics[].
Recommended schema:
Example query:
Trace Ingestion
OpenTelemetry trace payloads are decoded fromresourceSpans[].scopeSpans[].spans[].
Recommended schema:
Example latency query:
Attribute Modeling
For logs and traces, attribute handling follows two patterns:- Keep the full attributes object in
attributes,resourceAttributes, orcontextJSON columns for flexible exploration. - Promote frequently filtered attributes to top-level Pinot columns by adding matching column names to the schema.

