From f3dde76fe8cae3f30bf5c544a00cb5ddfd3d5c64 Mon Sep 17 00:00:00 2001 From: alrocar Date: Wed, 10 Sep 2025 23:07:23 +0200 Subject: [PATCH] feat: add datasources and materializations for trace timing aggregations --- datasources/otel_traces_trace_id_ts.datasource | 10 ++++++++++ materializations/otel_traces_trace_id_ts_mv.pipe | 15 +++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 datasources/otel_traces_trace_id_ts.datasource create mode 100644 materializations/otel_traces_trace_id_ts_mv.pipe diff --git a/datasources/otel_traces_trace_id_ts.datasource b/datasources/otel_traces_trace_id_ts.datasource new file mode 100644 index 0000000..d932721 --- /dev/null +++ b/datasources/otel_traces_trace_id_ts.datasource @@ -0,0 +1,10 @@ +DESCRIPTION > + Target datasource for trace timing aggregations with TraceId start and end times + +SCHEMA > + `TraceId` String, + `Start` DateTime64(9) CODEC(Delta(8), ZSTD(1)), + `End` DateTime64(9) CODEC(Delta(8), ZSTD(1)), + +ENGINE "MergeTree" +ENGINE_SORTING_KEY "TraceId, toUnixTimestamp(Start)" \ No newline at end of file diff --git a/materializations/otel_traces_trace_id_ts_mv.pipe b/materializations/otel_traces_trace_id_ts_mv.pipe new file mode 100644 index 0000000..397359f --- /dev/null +++ b/materializations/otel_traces_trace_id_ts_mv.pipe @@ -0,0 +1,15 @@ +DESCRIPTION > + Materialized view to aggregate trace start and end times by TraceId + +NODE otel_traces_trace_id_ts_mv_node +SQL > + SELECT + TraceId, + min(Timestamp) AS Start, + max(Timestamp) AS End + FROM otel_traces + WHERE TraceId != '' + GROUP BY TraceId + +TYPE MATERIALIZED +DATASOURCE otel_traces_trace_id_ts \ No newline at end of file