@@ -76,6 +76,7 @@ type MathExpression struct {
7676
7777type ResampleExpression struct {
7878 Expression string
79+ Window string
7980 DownSampler expr.TypeResampleDownsampler
8081 UpSampler expr.TypeResampleUpsampler
8182}
@@ -137,47 +138,57 @@ func newConditionQuery(options ConditionQuery) *alerting.QueryBuilder {
137138 DatasourceUid ("__expr__" )
138139
139140 if options .ReduceExpression != nil {
140- reduceBuider := expr .NewTypeReduceBuilder ().
141+ reduceBuilder := expr .NewTypeReduceBuilder ().
141142 RefId (options .RefID ).
142143 Expression (options .ReduceExpression .Expression ).
143144 IntervalMs (* options .IntervalMs ).
144145 MaxDataPoints (* options .MaxDataPoints ).
145146 Reducer (options .ReduceExpression .Reducer )
146147
147148 if options .ReduceExpression .ReduceSettings != nil && options .ReduceExpression .ReduceSettings .Mode != "" {
148- reduceBuider .Settings (newReduceSettingsOptions (* options .ReduceExpression .ReduceSettings ))
149+ reduceBuilder .Settings (newReduceSettingsOptions (* options .ReduceExpression .ReduceSettings ))
149150 }
150- res .Model (reduceBuider )
151+ res .Model (expr .NewTypeMathOrTypeReduceOrTypeResampleOrTypeClassicConditionsOrTypeThresholdOrTypeSqlBuilder ().
152+ TypeReduce (reduceBuilder ))
151153 }
152154
153155 if options .MathExpression != nil {
154- res .Model (expr .NewTypeMathBuilder ().
155- RefId (options .RefID ).
156- Expression (options .MathExpression .Expression ).
157- IntervalMs (* options .IntervalMs ).
158- MaxDataPoints (* options .MaxDataPoints ),
159- )
156+ res .Model (expr .NewTypeMathOrTypeReduceOrTypeResampleOrTypeClassicConditionsOrTypeThresholdOrTypeSqlBuilder ().
157+ TypeMath (expr .NewTypeMathBuilder ().
158+ RefId (options .RefID ).
159+ Expression (options .MathExpression .Expression ).
160+ IntervalMs (* options .IntervalMs ).
161+ MaxDataPoints (* options .MaxDataPoints ),
162+ ))
160163 }
161164
162165 if options .ResampleExpression != nil {
163- res .Model (expr .NewTypeResampleBuilder ().
164- RefId (options .RefID ).
165- Expression (options .ResampleExpression .Expression ).
166- IntervalMs (* options .IntervalMs ).
167- MaxDataPoints (* options .MaxDataPoints ).
168- Downsampler (options .ResampleExpression .DownSampler ).
169- Upsampler (options .ResampleExpression .UpSampler ),
170- )
166+ window := options .ResampleExpression .Window
167+ if window == "" {
168+ // Window is required (>= 1 char) by the SDK; default to the relative time range.
169+ window = "10m"
170+ }
171+ res .Model (expr .NewTypeMathOrTypeReduceOrTypeResampleOrTypeClassicConditionsOrTypeThresholdOrTypeSqlBuilder ().
172+ TypeResample (expr .NewTypeResampleBuilder ().
173+ RefId (options .RefID ).
174+ Expression (options .ResampleExpression .Expression ).
175+ IntervalMs (* options .IntervalMs ).
176+ MaxDataPoints (* options .MaxDataPoints ).
177+ Window (window ).
178+ Downsampler (options .ResampleExpression .DownSampler ).
179+ Upsampler (options .ResampleExpression .UpSampler ),
180+ ))
171181 }
172182
173183 if options .ThresholdExpression != nil {
174- res .Model (expr .NewTypeThresholdBuilder ().
175- RefId (options .RefID ).
176- Expression (options .ThresholdExpression .Expression ).
177- IntervalMs (* options .IntervalMs ).
178- MaxDataPoints (* options .MaxDataPoints ).
179- Conditions (newThresholdConditionsOptions (options .ThresholdExpression .ThresholdConditionsOptions )),
180- )
184+ res .Model (expr .NewTypeMathOrTypeReduceOrTypeResampleOrTypeClassicConditionsOrTypeThresholdOrTypeSqlBuilder ().
185+ TypeThreshold (expr .NewTypeThresholdBuilder ().
186+ RefId (options .RefID ).
187+ Expression (options .ThresholdExpression .Expression ).
188+ IntervalMs (* options .IntervalMs ).
189+ MaxDataPoints (* options .MaxDataPoints ).
190+ Conditions (newThresholdConditionsOptions (options .ThresholdExpression .ThresholdConditionsOptions )),
191+ ))
181192 }
182193
183194 return res
0 commit comments