diff --git a/controlplane/clickhouse/migrations/20260707090831_otel_spans_by_trace.sql b/controlplane/clickhouse/migrations/20260707090831_otel_spans_by_trace.sql new file mode 100644 index 0000000000..16c0524d90 --- /dev/null +++ b/controlplane/clickhouse/migrations/20260707090831_otel_spans_by_trace.sql @@ -0,0 +1,25 @@ +-- migrate:up + +CREATE TABLE IF NOT EXISTS cosmo.otel_spans_by_trace ( + FederatedGraphID String CODEC (ZSTD(3)), + OrganizationID LowCardinality(String) CODEC (ZSTD(3)), + TraceId String CODEC (ZSTD(3)), + Timestamp DateTime64(9) CODEC (Delta(8), ZSTD(3)), + SpanId String CODEC (ZSTD(3)), + ParentSpanId String CODEC (ZSTD(3)), + SpanName LowCardinality(String) CODEC (ZSTD(3)), + SpanKind LowCardinality(String) CODEC (ZSTD(3)), + ServiceName LowCardinality(String) CODEC (ZSTD(3)), + Duration Int64 CODEC (ZSTD(3)), + StatusCode LowCardinality(String) CODEC (ZSTD(3)), + StatusMessage String CODEC (ZSTD(3)), + ScopeName String CODEC (ZSTD(3)), + SpanAttributes Map(LowCardinality(String), String) CODEC (ZSTD(3)) +) ENGINE = MergeTree +PARTITION BY toDate(Timestamp) +ORDER BY (FederatedGraphID, OrganizationID, TraceId, Timestamp, SpanId) +TTL toDateTime(Timestamp) + toIntervalDay(30) SETTINGS index_granularity = 8192, ttl_only_drop_parts = 1; + +-- migrate:down + +DROP TABLE IF EXISTS cosmo.otel_spans_by_trace diff --git a/controlplane/clickhouse/migrations/20260707090832_otel_spans_by_trace_mv.sql b/controlplane/clickhouse/migrations/20260707090832_otel_spans_by_trace_mv.sql new file mode 100644 index 0000000000..a94d553a73 --- /dev/null +++ b/controlplane/clickhouse/migrations/20260707090832_otel_spans_by_trace_mv.sql @@ -0,0 +1,26 @@ +-- migrate:up + +CREATE MATERIALIZED VIEW IF NOT EXISTS cosmo.otel_spans_by_trace_mv TO cosmo.otel_spans_by_trace AS +SELECT + SpanAttributes ['wg.federated_graph.id'] as FederatedGraphID, + toLowCardinality(SpanAttributes ['wg.organization.id']) as OrganizationID, + TraceId, + Timestamp, + SpanId, + ParentSpanId, + SpanName, + SpanKind, + ServiceName, + Duration, + StatusCode, + StatusMessage, + ScopeName, + SpanAttributes +FROM + cosmo.otel_traces +WHERE + SpanAttributes ['wg.federated_graph.id'] != ''; + +-- migrate:down + +DROP VIEW IF EXISTS cosmo.otel_spans_by_trace_mv