Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
-- migrate:up
CREATE TABLE gql_metrics_schema_usage_5m_90d_v2
(
Timestamp DateTime('UTC') CODEC(Delta(4), ZSTD(3)),
OrganizationID LowCardinality(String) CODEC(ZSTD(3)),
FederatedGraphID LowCardinality(String) CODEC(ZSTD(3)),
RouterConfigVersion LowCardinality(String) CODEC(ZSTD(3)),
OperationHash LowCardinality(String) CODEC(ZSTD(3)),
OperationName LowCardinality(String) CODEC(ZSTD(3)),
OperationType LowCardinality(String) CODEC(ZSTD(3)),
Path Array(String) CODEC(ZSTD(3)),
FieldName LowCardinality(String) CODEC(ZSTD(3)),
TypeNames Array(String) CODEC(ZSTD(3)),
NamedType LowCardinality(String) CODEC(ZSTD(3)),
ClientName LowCardinality(String) CODEC(ZSTD(3)),
ClientVersion LowCardinality(String) CODEC(ZSTD(3)),
SubgraphIDs Array(LowCardinality(String)) CODEC(ZSTD(3)),
IsArgument Bool CODEC(ZSTD(3)),
IsInput Bool CODEC(ZSTD(3)),
TotalUsages UInt64 CODEC(ZSTD(3)),
TotalErrors UInt64 CODEC(ZSTD(3)),
TotalClientErrors UInt64 CODEC(ZSTD(3)),
IsIndirectFieldUsage Bool DEFAULT false CODEC(ZSTD(3)),
IsNull Bool DEFAULT false CODEC(ZSTD(3)),
INDEX idx_path Path TYPE bloom_filter(0.01) GRANULARITY 4,
INDEX idx_source_ids SubgraphIDs TYPE bloom_filter(0.01) GRANULARITY 4,
INDEX idx_type_names TypeNames TYPE bloom_filter(0.01) GRANULARITY 4,
INDEX idx_total_usages TotalUsages TYPE minmax GRANULARITY 4,
INDEX idx_total_errors TotalErrors TYPE minmax GRANULARITY 4,
INDEX idx_total_client_errors TotalClientErrors TYPE minmax GRANULARITY 4
)
ENGINE = SummingMergeTree
PARTITION BY toDate(Timestamp)
ORDER BY (FederatedGraphID, Timestamp, OrganizationID, FieldName, NamedType, OperationHash, ClientName, ClientVersion)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

ORDER BY change may alter aggregation semantics.

The new ORDER BY excludes columns present in the old table's ordering:

  • Path, TypeNames, SubgraphIDs (Array columns)
  • RouterConfigVersion, IsArgument, IsInput

With SummingMergeTree, rows matching on all ORDER BY columns are merged, summing TotalUsages, TotalErrors, TotalClientErrors. Rows that previously remained distinct (differing by Path, IsArgument, etc.) will now be merged together, potentially losing granularity.

Please confirm this aggregation behavior change is intentional and won't impact downstream queries that rely on per-path or per-argument-type breakdowns.

TTL toDateTime(Timestamp) + toIntervalDay(90)
SETTINGS index_granularity = 8192, ttl_only_drop_parts = 1

-- migrate:down

DROP TABLE IF EXISTS gql_metrics_schema_usage_5m_90d_v2;
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-- migrate:up

-- Step 1: Migrate data from 90 to 68 days ago
INSERT INTO gql_metrics_schema_usage_5m_90d_v2
SELECT * FROM gql_metrics_schema_usage_5m_90d
WHERE Timestamp >= now() - INTERVAL 90 DAY
AND Timestamp < now() - INTERVAL 68 DAY;

-- migrate:down

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-- migrate:up

-- Step 2: Migrate data from 68 to 46 days ago
INSERT INTO gql_metrics_schema_usage_5m_90d_v2
SELECT * FROM gql_metrics_schema_usage_5m_90d
WHERE Timestamp >= now() - INTERVAL 68 DAY
AND Timestamp < now() - INTERVAL 46 DAY;

-- migrate:down

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-- migrate:up

-- Step 3: Migrate data from 46 to 24 days ago
INSERT INTO gql_metrics_schema_usage_5m_90d_v2
SELECT * FROM gql_metrics_schema_usage_5m_90d
WHERE Timestamp >= now() - INTERVAL 46 DAY
AND Timestamp < now() - INTERVAL 24 DAY;

-- migrate:down

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
-- migrate:up

-- Step 4: Migrate data from 24 to 1 day ago
INSERT INTO gql_metrics_schema_usage_5m_90d_v2
SELECT * FROM gql_metrics_schema_usage_5m_90d
WHERE Timestamp >= now() - INTERVAL 24 DAY
AND Timestamp < now() - INTERVAL 1 DAY;

-- migrate:down

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
-- migrate:up

-- Step 5: Migrate data from the last 1 day
INSERT INTO gql_metrics_schema_usage_5m_90d_v2
SELECT * FROM gql_metrics_schema_usage_5m_90d
WHERE Timestamp >= now() - INTERVAL 1 DAY;

-- migrate:down

Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
-- migrate:up

DROP TABLE IF EXISTS gql_metrics_schema_usage_5m_90d;

-- migrate:down

CREATE TABLE gql_metrics_schema_usage_5m_90d
(
Timestamp DateTime('UTC') CODEC(Delta(4), ZSTD(3)),
OrganizationID LowCardinality(String) CODEC(ZSTD(3)),
FederatedGraphID LowCardinality(String) CODEC(ZSTD(3)),
RouterConfigVersion LowCardinality(String) CODEC(ZSTD(3)),
OperationHash LowCardinality(String) CODEC(ZSTD(3)),
OperationName LowCardinality(String) CODEC(ZSTD(3)),
OperationType LowCardinality(String) CODEC(ZSTD(3)),
Path Array(String) CODEC(ZSTD(3)),
FieldName LowCardinality(String) CODEC(ZSTD(3)),
TypeNames Array(String) CODEC(ZSTD(3)),
NamedType LowCardinality(String) CODEC(ZSTD(3)),
ClientName LowCardinality(String) CODEC(ZSTD(3)),
ClientVersion LowCardinality(String) CODEC(ZSTD(3)),
SubgraphIDs Array(LowCardinality(String)) CODEC(ZSTD(3)),
IsArgument Bool CODEC(ZSTD(3)),
IsInput Bool CODEC(ZSTD(3)),
TotalUsages UInt64 CODEC(ZSTD(3)),
TotalErrors UInt64 CODEC(ZSTD(3)),
TotalClientErrors UInt64 CODEC(ZSTD(3)),
IsIndirectFieldUsage Bool DEFAULT false CODEC(ZSTD(3)),
IsNull Bool DEFAULT false CODEC(ZSTD(3)),
INDEX idx_operation_hash OperationHash TYPE bloom_filter(0.001) GRANULARITY 1,
INDEX idx_path Path TYPE bloom_filter(0.01) GRANULARITY 1,
INDEX idx_source_ids SubgraphIDs TYPE bloom_filter(0.01) GRANULARITY 1,
INDEX idx_type_names TypeNames TYPE bloom_filter(0.01) GRANULARITY 1,
INDEX idx_total_usages TotalUsages TYPE minmax GRANULARITY 1,
INDEX idx_total_errors TotalErrors TYPE minmax GRANULARITY 1,
INDEX idx_total_client_errors TotalClientErrors TYPE minmax GRANULARITY 1
)
ENGINE = SharedSummingMergeTree('/clickhouse/tables/{uuid}/{shard}', '{replica}')
PARTITION BY toDate(Timestamp)
ORDER BY (OrganizationID, FederatedGraphID, ClientName, ClientVersion, RouterConfigVersion, OperationHash, Path, FieldName, NamedType, TypeNames, SubgraphIDs, IsArgument, IsInput, toUnixTimestamp(Timestamp))
TTL toDateTime(Timestamp) + toIntervalDay(90)
SETTINGS index_granularity = 8192, ttl_only_drop_parts = 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
-- migrate:up

RENAME TABLE gql_metrics_schema_usage_5m_90d_v2 TO gql_metrics_schema_usage_5m_90d;

-- migrate:down

RENAME TABLE gql_metrics_schema_usage_5m_90d TO gql_metrics_schema_usage_5m_90d_v2;
Loading