micromegas_analytics/lakehouse/otel/
spans_table.rs1use datafusion::arrow::datatypes::{DataType, Field, Schema, TimeUnit};
8
9pub fn otel_spans_table_schema() -> Schema {
10 Schema::new(vec![
11 Field::new(
12 "process_id",
13 DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)),
14 false,
15 ),
16 Field::new(
17 "stream_id",
18 DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)),
19 false,
20 ),
21 Field::new(
22 "block_id",
23 DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)),
24 false,
25 ),
26 Field::new(
27 "insert_time",
28 DataType::Timestamp(TimeUnit::Nanosecond, Some("+00:00".into())),
29 false,
30 ),
31 Field::new("exe", DataType::Utf8, false),
32 Field::new("username", DataType::Utf8, false),
33 Field::new("computer", DataType::Utf8, false),
34 Field::new(
35 "process_properties",
36 DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Binary)),
37 false,
38 ),
39 Field::new("trace_id", DataType::FixedSizeBinary(16), false),
40 Field::new("span_id", DataType::FixedSizeBinary(8), false),
41 Field::new("parent_span_id", DataType::FixedSizeBinary(8), true),
42 Field::new(
43 "start_time",
44 DataType::Timestamp(TimeUnit::Nanosecond, Some("+00:00".into())),
45 false,
46 ),
47 Field::new(
48 "end_time",
49 DataType::Timestamp(TimeUnit::Nanosecond, Some("+00:00".into())),
50 false,
51 ),
52 Field::new("duration", DataType::Int64, false),
53 Field::new(
54 "name",
55 DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)),
56 false,
57 ),
58 Field::new(
59 "kind",
60 DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)),
61 false,
62 ),
63 Field::new(
64 "status",
65 DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)),
66 false,
67 ),
68 Field::new("status_message", DataType::Utf8, true),
69 Field::new(
70 "properties",
71 DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Binary)),
72 false,
73 ),
74 Field::new("events", DataType::Binary, false),
75 Field::new("links", DataType::Binary, false),
76 ])
77}