@oneuptime/common 10.5.28 → 10.5.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/AnalyticsModels/MetricBaselineHourly.ts +30 -0
- package/Models/AnalyticsModels/MetricItemAggMV1m.ts +35 -5
- package/Models/AnalyticsModels/MetricItemAggMV1mByHost.ts +28 -0
- package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js +30 -0
- package/build/dist/Models/AnalyticsModels/MetricBaselineHourly.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js +35 -5
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1m.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHost.js +28 -0
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByHost.js.map +1 -1
- package/package.json +1 -1
|
@@ -171,6 +171,36 @@ export default class MetricBaselineHourly extends AnalyticsBaseModel {
|
|
|
171
171
|
maxObsStateColumn,
|
|
172
172
|
],
|
|
173
173
|
projections: [],
|
|
174
|
+
/*
|
|
175
|
+
* Baseline materialized view. Canonical definition applied
|
|
176
|
+
* idempotently by the analytics schema-sync on every boot (see
|
|
177
|
+
* AnalyticsTableManagement.createMaterializedViews), so a
|
|
178
|
+
* wiped/recreated ClickHouse volume self-heals. Aggregates each
|
|
179
|
+
* sample into a (calendar day, hour-of-week) cell.
|
|
180
|
+
*/
|
|
181
|
+
materializedViews: [
|
|
182
|
+
{
|
|
183
|
+
name: "MetricBaselineHourly_mv",
|
|
184
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricBaselineHourly_mv
|
|
185
|
+
TO MetricBaselineHourly
|
|
186
|
+
AS
|
|
187
|
+
SELECT
|
|
188
|
+
projectId,
|
|
189
|
+
name,
|
|
190
|
+
serviceId,
|
|
191
|
+
toDate(time) AS day,
|
|
192
|
+
toUInt8((toDayOfWeek(time, 1) - 1) * 24 + toHour(time)) AS hourOfWeek,
|
|
193
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS sampleCountState,
|
|
194
|
+
avgState(toFloat64(coalesce(value, sum, 0))) AS meanState,
|
|
195
|
+
stddevPopState(toFloat64(coalesce(value, sum, 0))) AS stddevState,
|
|
196
|
+
quantileState(0.5)(toFloat64(coalesce(value, sum, 0))) AS medianState,
|
|
197
|
+
quantileState(0.95)(toFloat64(coalesce(value, sum, 0))) AS p95State,
|
|
198
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS minObsState,
|
|
199
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS maxObsState
|
|
200
|
+
FROM MetricItemV2
|
|
201
|
+
GROUP BY projectId, name, serviceId, day, hourOfWeek`,
|
|
202
|
+
},
|
|
203
|
+
],
|
|
174
204
|
/*
|
|
175
205
|
* Sort key prefix matches the read-side WHERE clause of
|
|
176
206
|
* MetricBaselineService.getBaseline so lookups touch a tight
|
|
@@ -8,11 +8,12 @@ import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
|
|
|
8
8
|
* Per-minute pre-aggregated rollup of `MetricItemV2` value samples.
|
|
9
9
|
*
|
|
10
10
|
* Populated by the attached materialized view `MetricItemAggMV1m_mv`
|
|
11
|
-
* (
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* `*Merge()` (e.g.
|
|
11
|
+
* (declared below in `materializedViews` and applied idempotently by
|
|
12
|
+
* the analytics schema-sync on every boot), which fires on every
|
|
13
|
+
* insert into `MetricItemV2`. Each row holds AggregateFunction
|
|
14
|
+
* *states* — partial intermediate values combined by background merges
|
|
15
|
+
* and finalized at read time via `*Merge()` (e.g.
|
|
16
|
+
* `sumMerge(valueSumState)`).
|
|
16
17
|
*
|
|
17
18
|
* Read access goes through `MetricService.tryBuildMinuteAggregateMVStatement`
|
|
18
19
|
* for chart aggregation queries that span ≥ 1 minute and don't filter
|
|
@@ -130,6 +131,35 @@ export default class MetricItemAggMV1m extends AnalyticsBaseModel {
|
|
|
130
131
|
retentionDateColumn,
|
|
131
132
|
],
|
|
132
133
|
projections: [],
|
|
134
|
+
/*
|
|
135
|
+
* Materialized view that pre-rolls MetricItemV2 value samples into
|
|
136
|
+
* 1-minute buckets. This is the canonical definition: the analytics
|
|
137
|
+
* schema-sync (AnalyticsTableManagement.createMaterializedViews)
|
|
138
|
+
* creates it on every boot if missing, so a wiped/recreated
|
|
139
|
+
* ClickHouse volume self-heals even when the one-time DataMigration
|
|
140
|
+
* is already recorded as executed in Postgres. Kept idempotent with
|
|
141
|
+
* `IF NOT EXISTS`.
|
|
142
|
+
*/
|
|
143
|
+
materializedViews: [
|
|
144
|
+
{
|
|
145
|
+
name: "MetricItemAggMV1m_mv",
|
|
146
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricItemAggMV1m_mv
|
|
147
|
+
TO MetricItemAggMV1m
|
|
148
|
+
AS
|
|
149
|
+
SELECT
|
|
150
|
+
projectId,
|
|
151
|
+
name,
|
|
152
|
+
serviceId,
|
|
153
|
+
toStartOfMinute(time) AS bucketTime,
|
|
154
|
+
sumState(toFloat64(coalesce(value, sum, 0))) AS valueSumState,
|
|
155
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
|
|
156
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
|
|
157
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
|
|
158
|
+
max(retentionDate) AS retentionDate
|
|
159
|
+
FROM MetricItemV2
|
|
160
|
+
GROUP BY projectId, name, serviceId, bucketTime`,
|
|
161
|
+
},
|
|
162
|
+
],
|
|
133
163
|
sortKeys: ["projectId", "name", "serviceId", "bucketTime"],
|
|
134
164
|
primaryKeys: ["projectId", "name", "serviceId", "bucketTime"],
|
|
135
165
|
partitionKey: "sipHash64(projectId) % 16",
|
|
@@ -131,6 +131,34 @@ export default class MetricItemAggMV1mByHost extends AnalyticsBaseModel {
|
|
|
131
131
|
retentionDateColumn,
|
|
132
132
|
],
|
|
133
133
|
projections: [],
|
|
134
|
+
/*
|
|
135
|
+
* Per-host materialized view. Canonical definition applied
|
|
136
|
+
* idempotently by the analytics schema-sync on every boot (see
|
|
137
|
+
* AnalyticsTableManagement.createMaterializedViews), so a
|
|
138
|
+
* wiped/recreated ClickHouse volume self-heals. Rows without a
|
|
139
|
+
* host identifier are filtered out so the per-host MV stays small.
|
|
140
|
+
*/
|
|
141
|
+
materializedViews: [
|
|
142
|
+
{
|
|
143
|
+
name: "MetricItemAggMV1mByHost_mv",
|
|
144
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricItemAggMV1mByHost_mv
|
|
145
|
+
TO MetricItemAggMV1mByHost
|
|
146
|
+
AS
|
|
147
|
+
SELECT
|
|
148
|
+
projectId,
|
|
149
|
+
name,
|
|
150
|
+
attributes['resource.host.name'] AS hostIdentifier,
|
|
151
|
+
toStartOfMinute(time) AS bucketTime,
|
|
152
|
+
sumState(toFloat64(coalesce(value, sum, 0))) AS valueSumState,
|
|
153
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
|
|
154
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
|
|
155
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
|
|
156
|
+
max(retentionDate) AS retentionDate
|
|
157
|
+
FROM MetricItemV2
|
|
158
|
+
WHERE attributes['resource.host.name'] != ''
|
|
159
|
+
GROUP BY projectId, name, hostIdentifier, bucketTime`,
|
|
160
|
+
},
|
|
161
|
+
],
|
|
134
162
|
sortKeys: ["projectId", "name", "hostIdentifier", "bucketTime"],
|
|
135
163
|
primaryKeys: ["projectId", "name", "hostIdentifier", "bucketTime"],
|
|
136
164
|
partitionKey: "sipHash64(projectId) % 16",
|
|
@@ -148,6 +148,36 @@ export default class MetricBaselineHourly extends AnalyticsBaseModel {
|
|
|
148
148
|
maxObsStateColumn,
|
|
149
149
|
],
|
|
150
150
|
projections: [],
|
|
151
|
+
/*
|
|
152
|
+
* Baseline materialized view. Canonical definition applied
|
|
153
|
+
* idempotently by the analytics schema-sync on every boot (see
|
|
154
|
+
* AnalyticsTableManagement.createMaterializedViews), so a
|
|
155
|
+
* wiped/recreated ClickHouse volume self-heals. Aggregates each
|
|
156
|
+
* sample into a (calendar day, hour-of-week) cell.
|
|
157
|
+
*/
|
|
158
|
+
materializedViews: [
|
|
159
|
+
{
|
|
160
|
+
name: "MetricBaselineHourly_mv",
|
|
161
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricBaselineHourly_mv
|
|
162
|
+
TO MetricBaselineHourly
|
|
163
|
+
AS
|
|
164
|
+
SELECT
|
|
165
|
+
projectId,
|
|
166
|
+
name,
|
|
167
|
+
serviceId,
|
|
168
|
+
toDate(time) AS day,
|
|
169
|
+
toUInt8((toDayOfWeek(time, 1) - 1) * 24 + toHour(time)) AS hourOfWeek,
|
|
170
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS sampleCountState,
|
|
171
|
+
avgState(toFloat64(coalesce(value, sum, 0))) AS meanState,
|
|
172
|
+
stddevPopState(toFloat64(coalesce(value, sum, 0))) AS stddevState,
|
|
173
|
+
quantileState(0.5)(toFloat64(coalesce(value, sum, 0))) AS medianState,
|
|
174
|
+
quantileState(0.95)(toFloat64(coalesce(value, sum, 0))) AS p95State,
|
|
175
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS minObsState,
|
|
176
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS maxObsState
|
|
177
|
+
FROM MetricItemV2
|
|
178
|
+
GROUP BY projectId, name, serviceId, day, hourOfWeek`,
|
|
179
|
+
},
|
|
180
|
+
],
|
|
151
181
|
/*
|
|
152
182
|
* Sort key prefix matches the read-side WHERE clause of
|
|
153
183
|
* MetricBaselineService.getBaseline so lookups touch a tight
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricBaselineHourly.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricBaselineHourly.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,oBAAoB,MAAM,oDAAoD,CAAC;AACtF,OAAO,kBAAkB,MAAM,kDAAkD,CAAC;AAClF,OAAO,oBAAoB,MAAM,2CAA2C,CAAC;AAC7E,OAAO,eAAe,MAAM,+CAA+C,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,kBAAkB;IAClE;QACE,MAAM,eAAe,GAAyB,IAAI,oBAAoB,CAAC;YACrE,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,0DAA0D;YACvE,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,IAAI;YAC1B,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAyB,IAAI,oBAAoB,CAAC;YAChE,GAAG,EAAE,MAAM;YACX,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,IAAI;SAC3B,CAAC,CAAC;QAEH,MAAM,eAAe,GAAyB,IAAI,oBAAoB,CAAC;YACrE,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,2CAA2C;YACxD,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,IAAI;SAC3B,CAAC,CAAC;QAEH,MAAM,SAAS,GAAyB,IAAI,oBAAoB,CAAC;YAC/D,GAAG,EAAE,KAAK;YACV,KAAK,EAAE,KAAK;YACZ,WAAW,EACT,mFAAmF;YACrF,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,IAAI;SAC3B,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAyB,IAAI,oBAAoB,CAAC;YACtE,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,cAAc;YACrB,WAAW,EACT,kFAAkF;YACpF,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,KAAK;SAC5B,CAAC,CAAC;QAEH,MAAM,sBAAsB,GAC1B,IAAI,oBAAoB,CAAC;YACvB,GAAG,EAAE,kBAAkB;YACvB,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EACT,kGAAkG;YACpG,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,2BAA2B,EAAE,gBAAgB;SAC9C,CAAC,CAAC;QAEL,MAAM,eAAe,GAAyB,IAAI,oBAAoB,CAAC;YACrE,GAAG,EAAE,WAAW;YAChB,KAAK,EAAE,cAAc;YACrB,WAAW,EACT,sEAAsE;YACxE,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,2BAA2B,EAAE,cAAc;SAC5C,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAyB,IAAI,oBAAoB,CAAC;YACvE,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,4BAA4B;YACnC,WAAW,EACT,oFAAoF;YACtF,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,2BAA2B,EAAE,oBAAoB;SAClD,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAyB,IAAI,oBAAoB,CAAC;YACvE,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,gBAAgB;YACvB,WAAW,EACT,6IAA6I;YAC/I,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,2BAA2B,EAAE,wBAAwB;SACtD,CAAC,CAAC;QAEH,MAAM,cAAc,GAAyB,IAAI,oBAAoB,CAAC;YACpE,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,aAAa;YACpB,WAAW,EACT,2FAA2F;YAC7F,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,2BAA2B,EAAE,yBAAyB;SACvD,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAyB,IAAI,oBAAoB,CAAC;YACvE,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EACT,wEAAwE;YAC1E,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,2BAA2B,EAAE,cAAc;SAC5C,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAyB,IAAI,oBAAoB,CAAC;YACvE,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EACT,wEAAwE;YAC1E,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,eAAe,CAAC,iBAAiB;YACvC,2BAA2B,EAAE,cAAc;SAC5C,CAAC,CAAC;QAEH,KAAK,CAAC;YACJ,SAAS,EAAE,kBAAkB,CAAC,oBAAoB;YAClD,WAAW,EAAE,oBAAoB,CAAC,oBAAoB;YACtD,YAAY,EAAE,0BAA0B;YACxC,UAAU,EAAE,2BAA2B;YACvC,YAAY,EAAE;gBACZ,eAAe;gBACf,UAAU;gBACV,eAAe;gBACf,SAAS;gBACT,gBAAgB;gBAChB,sBAAsB;gBACtB,eAAe;gBACf,iBAAiB;gBACjB,iBAAiB;gBACjB,cAAc;gBACd,iBAAiB;gBACjB,iBAAiB;aAClB;YACD,WAAW,EAAE,EAAE;YACf;;;;eAIG;YACH,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC;YACjE,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC;YACpE,YAAY,EAAE,2BAA2B;YACzC,aAAa,EAAE,uBAAuB;SACvC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"MetricBaselineHourly.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricBaselineHourly.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,11 +7,12 @@ import TableColumnType from "../../Types/AnalyticsDatabase/TableColumnType";
|
|
|
7
7
|
* Per-minute pre-aggregated rollup of `MetricItemV2` value samples.
|
|
8
8
|
*
|
|
9
9
|
* Populated by the attached materialized view `MetricItemAggMV1m_mv`
|
|
10
|
-
* (
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* `*Merge()` (e.g.
|
|
10
|
+
* (declared below in `materializedViews` and applied idempotently by
|
|
11
|
+
* the analytics schema-sync on every boot), which fires on every
|
|
12
|
+
* insert into `MetricItemV2`. Each row holds AggregateFunction
|
|
13
|
+
* *states* — partial intermediate values combined by background merges
|
|
14
|
+
* and finalized at read time via `*Merge()` (e.g.
|
|
15
|
+
* `sumMerge(valueSumState)`).
|
|
15
16
|
*
|
|
16
17
|
* Read access goes through `MetricService.tryBuildMinuteAggregateMVStatement`
|
|
17
18
|
* for chart aggregation queries that span ≥ 1 minute and don't filter
|
|
@@ -113,6 +114,35 @@ export default class MetricItemAggMV1m extends AnalyticsBaseModel {
|
|
|
113
114
|
retentionDateColumn,
|
|
114
115
|
],
|
|
115
116
|
projections: [],
|
|
117
|
+
/*
|
|
118
|
+
* Materialized view that pre-rolls MetricItemV2 value samples into
|
|
119
|
+
* 1-minute buckets. This is the canonical definition: the analytics
|
|
120
|
+
* schema-sync (AnalyticsTableManagement.createMaterializedViews)
|
|
121
|
+
* creates it on every boot if missing, so a wiped/recreated
|
|
122
|
+
* ClickHouse volume self-heals even when the one-time DataMigration
|
|
123
|
+
* is already recorded as executed in Postgres. Kept idempotent with
|
|
124
|
+
* `IF NOT EXISTS`.
|
|
125
|
+
*/
|
|
126
|
+
materializedViews: [
|
|
127
|
+
{
|
|
128
|
+
name: "MetricItemAggMV1m_mv",
|
|
129
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricItemAggMV1m_mv
|
|
130
|
+
TO MetricItemAggMV1m
|
|
131
|
+
AS
|
|
132
|
+
SELECT
|
|
133
|
+
projectId,
|
|
134
|
+
name,
|
|
135
|
+
serviceId,
|
|
136
|
+
toStartOfMinute(time) AS bucketTime,
|
|
137
|
+
sumState(toFloat64(coalesce(value, sum, 0))) AS valueSumState,
|
|
138
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
|
|
139
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
|
|
140
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
|
|
141
|
+
max(retentionDate) AS retentionDate
|
|
142
|
+
FROM MetricItemV2
|
|
143
|
+
GROUP BY projectId, name, serviceId, bucketTime`,
|
|
144
|
+
},
|
|
145
|
+
],
|
|
116
146
|
sortKeys: ["projectId", "name", "serviceId", "bucketTime"],
|
|
117
147
|
primaryKeys: ["projectId", "name", "serviceId", "bucketTime"],
|
|
118
148
|
partitionKey: "sipHash64(projectId) % 16",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricItemAggMV1m.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricItemAggMV1m.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,oBAAoB,MAAM,oDAAoD,CAAC;AACtF,OAAO,kBAAkB,MAAM,kDAAkD,CAAC;AAClF,OAAO,oBAAoB,MAAM,2CAA2C,CAAC;AAC7E,OAAO,eAAe,MAAM,+CAA+C,CAAC;AAE5E
|
|
1
|
+
{"version":3,"file":"MetricItemAggMV1m.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricItemAggMV1m.ts"],"names":[],"mappings":"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"}
|
|
@@ -111,6 +111,34 @@ export default class MetricItemAggMV1mByHost extends AnalyticsBaseModel {
|
|
|
111
111
|
retentionDateColumn,
|
|
112
112
|
],
|
|
113
113
|
projections: [],
|
|
114
|
+
/*
|
|
115
|
+
* Per-host materialized view. Canonical definition applied
|
|
116
|
+
* idempotently by the analytics schema-sync on every boot (see
|
|
117
|
+
* AnalyticsTableManagement.createMaterializedViews), so a
|
|
118
|
+
* wiped/recreated ClickHouse volume self-heals. Rows without a
|
|
119
|
+
* host identifier are filtered out so the per-host MV stays small.
|
|
120
|
+
*/
|
|
121
|
+
materializedViews: [
|
|
122
|
+
{
|
|
123
|
+
name: "MetricItemAggMV1mByHost_mv",
|
|
124
|
+
query: `CREATE MATERIALIZED VIEW IF NOT EXISTS MetricItemAggMV1mByHost_mv
|
|
125
|
+
TO MetricItemAggMV1mByHost
|
|
126
|
+
AS
|
|
127
|
+
SELECT
|
|
128
|
+
projectId,
|
|
129
|
+
name,
|
|
130
|
+
attributes['resource.host.name'] AS hostIdentifier,
|
|
131
|
+
toStartOfMinute(time) AS bucketTime,
|
|
132
|
+
sumState(toFloat64(coalesce(value, sum, 0))) AS valueSumState,
|
|
133
|
+
countState(toFloat64(coalesce(value, sum, 0))) AS valueCountState,
|
|
134
|
+
minState(toFloat64(coalesce(value, sum, 0))) AS valueMinState,
|
|
135
|
+
maxState(toFloat64(coalesce(value, sum, 0))) AS valueMaxState,
|
|
136
|
+
max(retentionDate) AS retentionDate
|
|
137
|
+
FROM MetricItemV2
|
|
138
|
+
WHERE attributes['resource.host.name'] != ''
|
|
139
|
+
GROUP BY projectId, name, hostIdentifier, bucketTime`,
|
|
140
|
+
},
|
|
141
|
+
],
|
|
114
142
|
sortKeys: ["projectId", "name", "hostIdentifier", "bucketTime"],
|
|
115
143
|
primaryKeys: ["projectId", "name", "hostIdentifier", "bucketTime"],
|
|
116
144
|
partitionKey: "sipHash64(projectId) % 16",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricItemAggMV1mByHost.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricItemAggMV1mByHost.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MetricItemAggMV1mByHost.js","sourceRoot":"","sources":["../../../../Models/AnalyticsModels/MetricItemAggMV1mByHost.ts"],"names":[],"mappings":"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"}
|