MCPcopy
hub / github.com/grafana/tempo / ParquetTraceToTempopbTrace

Function ParquetTraceToTempopbTrace

tempodb/encoding/vparquet5/schema.go:777–869  ·  view source on GitHub ↗
(meta *backend.BlockMeta, parquetTrace *Trace)

Source from the content-addressed store, hash-verified

775}
776
777func ParquetTraceToTempopbTrace(meta *backend.BlockMeta, parquetTrace *Trace) *tempopb.Trace {
778 protoTrace := &tempopb.Trace{}
779 protoTrace.ResourceSpans = make([]*v1_trace.ResourceSpans, 0, len(parquetTrace.ResourceSpans))
780
781 // dedicated attribute column assignments
782 dedicatedResourceAttributes := dedicatedColumnsToColumnMapping(meta.DedicatedColumns, backend.DedicatedColumnScopeResource)
783 dedicatedSpanAttributes := dedicatedColumnsToColumnMapping(meta.DedicatedColumns, backend.DedicatedColumnScopeSpan)
784 dedicatedEventAttributes := dedicatedColumnsToColumnMapping(meta.DedicatedColumns, backend.DedicatedColumnScopeEvent)
785
786 for _, rs := range parquetTrace.ResourceSpans {
787 protoBatch := &v1_trace.ResourceSpans{}
788 resAttrs := parquetToProtoAttrs(rs.Resource.Attrs)
789 protoBatch.Resource = &v1_resource.Resource{
790 Attributes: resAttrs,
791 DroppedAttributesCount: uint32(rs.Resource.DroppedAttributesCount),
792 }
793
794 // dynamically assigned dedicated resource attribute columns
795 for attr, col := range dedicatedResourceAttributes.items() {
796 val := col.readValue(&rs.Resource.DedicatedAttributes)
797 if val != nil {
798 protoBatch.Resource.Attributes = append(protoBatch.Resource.Attributes, &v1.KeyValue{
799 Key: attr,
800 Value: val,
801 })
802 }
803 }
804
805 // known resource attributes
806 if rs.Resource.ServiceName != "" {
807 protoBatch.Resource.Attributes = append(protoBatch.Resource.Attributes, &v1.KeyValue{
808 Key: LabelServiceName,
809 Value: &v1.AnyValue{
810 Value: &v1.AnyValue_StringValue{
811 StringValue: rs.Resource.ServiceName,
812 },
813 },
814 })
815 }
816
817 protoBatch.ScopeSpans = make([]*v1_trace.ScopeSpans, 0, len(rs.ScopeSpans))
818
819 for _, scopeSpan := range rs.ScopeSpans {
820 protoSS := &v1_trace.ScopeSpans{
821 Scope: parquetToProtoInstrumentationScope(&scopeSpan.Scope),
822 }
823
824 protoSS.Spans = make([]*v1_trace.Span, 0, len(scopeSpan.Spans))
825 for _, span := range scopeSpan.Spans {
826
827 spanAttr := parquetToProtoAttrs(span.Attrs)
828 protoSpan := &v1_trace.Span{
829 TraceId: parquetTrace.TraceID,
830 SpanId: span.SpanID,
831 TraceState: span.TraceState,
832 Name: span.Name,
833 Kind: v1_trace.Span_SpanKind(span.Kind),
834 ParentSpanId: span.ParentSpanID,

Callers 7

findTraceByIDFunction · 0.70
TestProtoParquetRandoFunction · 0.70
TestFieldsAreClearedFunction · 0.70
FindTraceByIDMethod · 0.70
NextMethod · 0.70

Calls 7

itemsMethod · 0.80
parquetToProtoAttrsFunction · 0.70
parquetToProtoEventsFunction · 0.70
parquetToProtoLinksFunction · 0.70
readValueMethod · 0.45

Tested by 4

TestProtoParquetRandoFunction · 0.56
TestFieldsAreClearedFunction · 0.56