18
18
"type" : " array" ,
19
19
"items" : {
20
20
"additionalProperties" : false ,
21
- "required" : [" name" , " sql" , " timestamp_column" , " entities" , " facts" ],
21
+ "required" : [
22
+ " name" ,
23
+ " sql" ,
24
+ " timestamp_column" ,
25
+ " entities" ,
26
+ " facts"
27
+ ],
22
28
"properties" : {
23
29
"name" : {
24
30
"description" : " A name for the fact source" ,
42
48
"items" : {
43
49
"type" : " object" ,
44
50
"additionalProperties" : false ,
45
- "required" : [" entity_name" , " column" ],
51
+ "required" : [
52
+ " entity_name" ,
53
+ " column"
54
+ ],
46
55
"properties" : {
47
56
"entity_name" : {
48
57
"description" : " The name of the entity, must exactly match name specified in Eppo UI" ,
60
69
"type" : " array" ,
61
70
"items" : {
62
71
"type" : " object" ,
63
- "required" : [" name" ],
72
+ "required" : [
73
+ " name"
74
+ ],
64
75
"additionalProperties" : false ,
65
76
"properties" : {
66
77
"name" : {
69
80
},
70
81
"column" : {
71
82
"description" : " The column that contains this fact (if not specified, will use each record)" ,
72
- "type" : [" string" , " null" ]
83
+ "type" : [
84
+ " string" ,
85
+ " null"
86
+ ]
73
87
},
74
88
"description" : {
75
89
"description" : " User-friendly description of the fact" ,
76
90
"type" : " string"
77
91
},
78
92
"desired_change" : {
79
93
"description" : " Specify whether or not increases in the fact are desired" ,
80
- "enum" : [" increase" , " decrease" ]
94
+ "enum" : [
95
+ " increase" ,
96
+ " decrease"
97
+ ]
81
98
}
82
99
}
83
100
}
88
105
"items" : {
89
106
"type" : " object" ,
90
107
"additionalProperties" : false ,
91
- "required" : [" name" , " column" ],
108
+ "required" : [
109
+ " name" ,
110
+ " column"
111
+ ],
92
112
"properties" : {
93
113
"name" : {
94
114
"description" : " A user-friendly name for the fact property" ,
122
142
"items" : {
123
143
"type" : " object" ,
124
144
"additionalProperties" : false ,
125
- "required" : [" name" , " entity" ],
145
+ "required" : [
146
+ " name" ,
147
+ " entity"
148
+ ],
126
149
"properties" : {
127
150
"name" : {
128
151
"description" : " A user-friendly name shown in the Eppo UI" ,
134
157
},
135
158
"type" : {
136
159
"description" : " The kind of metric to be calculated" ,
137
- "enum" : [" simple" , " ratio" , " percentile" ]
160
+ "enum" : [
161
+ " simple" ,
162
+ " ratio" ,
163
+ " percentile"
164
+ ]
138
165
},
139
166
"entity" : {
140
167
"description" : " Must exactly match entity's name in Eppo UI" ,
146
173
},
147
174
"metric_display_style" : {
148
175
"description" : " Either decimal or percent" ,
149
- "enum" : [" decimal" , " percent" ]
176
+ "enum" : [
177
+ " decimal" ,
178
+ " percent"
179
+ ]
150
180
},
151
181
"minimum_detectable_effect" : {
152
182
"description" : " Default minimum detectable effect used in progress bar" ,
158
188
},
159
189
"guardrail_cutoff" : {
160
190
"description" : " If a metric is expected to increase, this value should be negative, to warn when the metric is decreasing by more than this value." ,
161
- "type" : [" number" , " null" ]
191
+ "type" : [
192
+ " number" ,
193
+ " null"
194
+ ]
162
195
},
163
196
"numerator" : {
164
197
"description" : " Specify how the numerator of this metric should be aggregated" ,
165
198
"type" : " object" ,
166
199
"additionalProperties" : false ,
167
- "required" : [" fact_name" , " operation" ],
200
+ "required" : [
201
+ " fact_name" ,
202
+ " operation"
203
+ ],
168
204
"properties" : {
169
205
"fact_name" : {
170
206
"description" : " Must match one of the values in fact_sources.facts.name" ,
171
207
"type" : " string"
172
208
},
173
209
"operation" : {
174
210
"description" : " Which aggregation to apply to the fact" ,
175
- "enum" : [" sum" , " count" , " distinct_entity" , " threshold" , " conversion" , " retention" , " count_distinct" , " last_value" , " first_value" ]
211
+ "enum" : [
212
+ " sum" ,
213
+ " count" ,
214
+ " distinct_entity" ,
215
+ " threshold" ,
216
+ " conversion" ,
217
+ " retention" ,
218
+ " count_distinct" ,
219
+ " last_value" ,
220
+ " first_value"
221
+ ]
176
222
},
177
223
"filters" : {
178
224
"description" : " Optional fact property filters to apply" ,
179
225
"type" : " array" ,
180
226
"items" : {
181
227
"type" : " object" ,
182
228
"additionalProperties" : false ,
183
- "required" : [" fact_property" , " operation" , " values" ],
229
+ "required" : [
230
+ " fact_property" ,
231
+ " operation" ,
232
+ " values"
233
+ ],
184
234
"properties" : {
185
235
"fact_property" : {
186
236
"description" : " Must match one of the values in fact_sources.properties.name" ,
187
237
"type" : " string"
188
238
},
189
239
"operation" : {
190
240
"description" : " Either equals or not_equals" ,
191
- "enum" : [" equals" , " not_equals" ]
241
+ "enum" : [
242
+ " equals" ,
243
+ " not_equals"
244
+ ]
192
245
},
193
246
"values" : {
194
247
"description" : " Values to include if operation is 'equals', or exclude if operation is 'not_equals'" ,
208
261
"description" : " Only used if operation = conversion" ,
209
262
"type" : " number"
210
263
},
264
+ "enable_aging_subject_filter" : {
265
+ "description" : " Controls whether subjects (entities) should be filtered out of metric calculations until they have 'aged' for a sufficient period. This is particularly important for metrics that require a certain observation period to be meaningful." ,
266
+ "type" : " boolean"
267
+ },
211
268
"threshold_metric_settings" : {
212
269
"description" : " Only used if operation = conversion" ,
213
270
"type" : " object" ,
214
271
"additionalProperties" : false ,
215
- "required" : [" comparison_operator" , " aggregation_type" , " breach_value" ],
272
+ "required" : [
273
+ " comparison_operator" ,
274
+ " aggregation_type" ,
275
+ " breach_value"
276
+ ],
216
277
"properties" : {
217
278
"comparison_operator" : {
218
279
"description" : " One of gt or gte" ,
219
- "enum" : [" gt" , " gte" ]
280
+ "enum" : [
281
+ " gt" ,
282
+ " gte"
283
+ ]
220
284
},
221
285
"aggregation_type" : {
222
286
"description" : " One of sum or count" ,
223
- "enum" : [" sum" , " count" ]
287
+ "enum" : [
288
+ " sum" ,
289
+ " count"
290
+ ]
224
291
},
225
292
"breach_value" : {
226
293
"description" : " At what value is the threshold breached?" ,
227
294
"type" : " number"
228
295
},
229
296
"timeframe_unit" : {
230
297
"description" : " What time unit to use: minutes, hours, days, or weeks (optional)" ,
231
- "enum" : [" minutes" , " hours" , " days" , " weeks" ]
298
+ "enum" : [
299
+ " minutes" ,
300
+ " hours" ,
301
+ " days" ,
302
+ " weeks"
303
+ ]
232
304
},
233
305
"timeframe_value" : {
234
306
"description" : " How many timeframe units since assignment to include (optional)" ,
246
318
},
247
319
"aggregation_timeframe_unit" : {
248
320
"description" : " What time unit to use: minutes, hours, days, or weeks (optional)" ,
249
- "enum" : [" minutes" , " hours" , " days" , " weeks" , " calendar_days" ]
321
+ "enum" : [
322
+ " minutes" ,
323
+ " hours" ,
324
+ " days" ,
325
+ " weeks" ,
326
+ " calendar_days"
327
+ ]
250
328
},
251
329
"winsorization_lower_percentile" : {
252
330
"description" : " Percentile at which to clip aggregated metrics (optional)" ,
270
348
"description" : " For ratio metrics only: specify how the denominator of this metric should be aggregated" ,
271
349
"type" : " object" ,
272
350
"additionalProperties" : false ,
273
- "required" : [" fact_name" , " operation" ],
351
+ "required" : [
352
+ " fact_name" ,
353
+ " operation"
354
+ ],
274
355
"properties" : {
275
356
"fact_name" : {
276
357
"description" : " Must match one of the values specified in fact_sources.facts.name" ,
277
358
"type" : " string"
278
359
},
279
360
"operation" : {
280
361
"description" : " How to aggregate fact" ,
281
- "enum" : [" sum" , " count" , " distinct_entity" , " count_distinct" , " last_value" , " first_value" ]
362
+ "enum" : [
363
+ " sum" ,
364
+ " count" ,
365
+ " distinct_entity" ,
366
+ " count_distinct" ,
367
+ " last_value" ,
368
+ " first_value"
369
+ ]
282
370
},
283
371
"filters" : {
284
372
"description" : " Optional fact property filters to apply" ,
285
373
"type" : " array" ,
286
374
"items" : {
287
375
"type" : " object" ,
288
376
"additionalProperties" : false ,
289
- "required" : [" fact_property" , " operation" , " values" ],
377
+ "required" : [
378
+ " fact_property" ,
379
+ " operation" ,
380
+ " values"
381
+ ],
290
382
"properties" : {
291
383
"fact_property" : {
292
384
"description" : " Must match one of the values in fact_sources.properties.name" ,
293
385
"type" : " string"
294
386
},
295
387
"operation" : {
296
388
"description" : " Either equals or not_equals" ,
297
- "enum" : [" equals" , " not_equals" ]
389
+ "enum" : [
390
+ " equals" ,
391
+ " not_equals"
392
+ ]
298
393
},
299
394
"values" : {
300
395
"description" : " Values to include if operation is 'equals', or exclude if operation is 'not_equals'" ,
316
411
},
317
412
"aggregation_timeframe_unit" : {
318
413
"description" : " What time unit to use: minutes, hours, days, or weeks (optional)" ,
319
- "enum" : [" minutes" , " hours" , " days" , " weeks" , " calendar_days" ]
414
+ "enum" : [
415
+ " minutes" ,
416
+ " hours" ,
417
+ " days" ,
418
+ " weeks" ,
419
+ " calendar_days"
420
+ ]
320
421
},
321
- "aggregation_enable_aging_subject_filter " : {
422
+ "enable_aging_subject_filter " : {
322
423
"description" : " Controls whether subjects (entities) should be filtered out of metric calculations until they have 'aged' for a sufficient period. This is particularly important for metrics that require a certain observation period to be meaningful." ,
323
424
"type" : " boolean"
324
425
},
344
445
"description" : " For percentile metrics only: specify the fact and percentile value" ,
345
446
"type" : " object" ,
346
447
"additionalProperties" : false ,
347
- "required" : [" fact_name" , " percentile_value" ],
448
+ "required" : [
449
+ " fact_name" ,
450
+ " percentile_value"
451
+ ],
348
452
"properties" : {
349
453
"fact_name" : {
350
454
"description" : " Must match one of the values specified in fact_sources.facts.name" ,
362
466
"items" : {
363
467
"type" : " object" ,
364
468
"additionalProperties" : false ,
365
- "required" : [" fact_property" , " operation" , " values" ],
469
+ "required" : [
470
+ " fact_property" ,
471
+ " operation" ,
472
+ " values"
473
+ ],
366
474
"properties" : {
367
475
"fact_property" : {
368
476
"description" : " Must match one of the values in fact_sources.properties.name" ,
369
477
"type" : " string"
370
478
},
371
479
"operation" : {
372
480
"description" : " Either equals or not_equals" ,
373
- "enum" : [" equals" , " not_equals" ]
481
+ "enum" : [
482
+ " equals" ,
483
+ " not_equals"
484
+ ]
374
485
},
375
486
"values" : {
376
487
"description" : " Values to include if operation is 'equals', or exclude if operation is 'not_equals'" ,
388
499
}
389
500
}
390
501
}
391
- }
502
+ }
0 commit comments