Skip to content

Commit 7e05113

Browse files
authored
Add telemetry for TS command (#135471)
* Add telemetry for `TS` command * fix from review
1 parent f21c61c commit 7e05113

File tree

4 files changed

+201
-6
lines changed

4 files changed

+201
-6
lines changed

muted-tests.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -429,9 +429,6 @@ tests:
429429
- class: org.elasticsearch.xpack.search.CrossClusterAsyncSearchIT
430430
method: testCancelViaExpirationOnRemoteResultsWithMinimizeRoundtrips
431431
issue: https://github.com/elastic/elasticsearch/issues/127302
432-
- class: org.elasticsearch.xpack.test.rest.XPackRestIT
433-
method: test {p0=esql/60_usage/*}
434-
issue: https://github.com/elastic/elasticsearch/issues/133449
435432
- class: org.elasticsearch.xpack.esql.action.CrossClusterQueryWithFiltersIT
436433
method: testFilterWithUnavailableRemote
437434
issue: https://github.com/elastic/elasticsearch/issues/133450

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/telemetry/FeatureMetric.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
package org.elasticsearch.xpack.esql.telemetry;
99

10+
import org.elasticsearch.index.IndexMode;
1011
import org.elasticsearch.xpack.esql.EsqlIllegalArgumentException;
1112
import org.elasticsearch.xpack.esql.plan.logical.Aggregate;
1213
import org.elasticsearch.xpack.esql.plan.logical.ChangePoint;
@@ -59,7 +60,8 @@ public enum FeatureMetric {
5960
MV_EXPAND(MvExpand.class::isInstance),
6061
SHOW(ShowInfo.class::isInstance),
6162
ROW(Row.class::isInstance),
62-
FROM(EsRelation.class::isInstance),
63+
FROM(x -> x instanceof EsRelation relation && relation.indexMode() != IndexMode.TIME_SERIES),
64+
TS(x -> x instanceof EsRelation relation && relation.indexMode() == IndexMode.TIME_SERIES),
6365
DROP(Drop.class::isInstance),
6466
KEEP(Keep.class::isInstance),
6567
RENAME(Rename.class::isInstance),

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/telemetry/VerifierMetricsTests.java

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import static org.elasticsearch.xpack.esql.telemetry.FeatureMetric.SHOW;
4242
import static org.elasticsearch.xpack.esql.telemetry.FeatureMetric.SORT;
4343
import static org.elasticsearch.xpack.esql.telemetry.FeatureMetric.STATS;
44+
import static org.elasticsearch.xpack.esql.telemetry.FeatureMetric.TS;
4445
import static org.elasticsearch.xpack.esql.telemetry.FeatureMetric.WHERE;
4546
import static org.elasticsearch.xpack.esql.telemetry.Metrics.FEATURES_PREFIX;
4647
import static org.elasticsearch.xpack.esql.telemetry.Metrics.FUNC_PREFIX;
@@ -63,6 +64,7 @@ public void testDissectQuery() {
6364
assertEquals(0, show(c));
6465
assertEquals(0, row(c));
6566
assertEquals(1L, from(c));
67+
assertEquals(0, ts(c));
6668
assertEquals(0, drop(c));
6769
assertEquals(0, keep(c));
6870
assertEquals(0, rename(c));
@@ -86,6 +88,7 @@ public void testEvalQuery() {
8688
assertEquals(0, show(c));
8789
assertEquals(0, row(c));
8890
assertEquals(1L, from(c));
91+
assertEquals(0, ts(c));
8992
assertEquals(0, drop(c));
9093
assertEquals(0, keep(c));
9194
assertEquals(0, rename(c));
@@ -109,6 +112,7 @@ public void testGrokQuery() {
109112
assertEquals(0, show(c));
110113
assertEquals(0, row(c));
111114
assertEquals(1L, from(c));
115+
assertEquals(0, ts(c));
112116
assertEquals(0, drop(c));
113117
assertEquals(0, keep(c));
114118
assertEquals(0, rename(c));
@@ -132,6 +136,7 @@ public void testLimitQuery() {
132136
assertEquals(0, show(c));
133137
assertEquals(0, row(c));
134138
assertEquals(1L, from(c));
139+
assertEquals(0, ts(c));
135140
assertEquals(0, drop(c));
136141
assertEquals(0, keep(c));
137142
assertEquals(0, rename(c));
@@ -154,6 +159,7 @@ public void testSortQuery() {
154159
assertEquals(0, show(c));
155160
assertEquals(0, row(c));
156161
assertEquals(1L, from(c));
162+
assertEquals(0, ts(c));
157163
assertEquals(0, drop(c));
158164
assertEquals(0, keep(c));
159165
assertEquals(0, rename(c));
@@ -176,6 +182,7 @@ public void testStatsQuery() {
176182
assertEquals(0, show(c));
177183
assertEquals(0, row(c));
178184
assertEquals(1L, from(c));
185+
assertEquals(0, ts(c));
179186
assertEquals(0, drop(c));
180187
assertEquals(0, keep(c));
181188
assertEquals(0, rename(c));
@@ -199,6 +206,7 @@ public void testWhereQuery() {
199206
assertEquals(0, show(c));
200207
assertEquals(0, row(c));
201208
assertEquals(1L, from(c));
209+
assertEquals(0, ts(c));
202210
assertEquals(0, drop(c));
203211
assertEquals(0, keep(c));
204212
assertEquals(0, rename(c));
@@ -221,6 +229,7 @@ public void testTwoWhereQuery() {
221229
assertEquals(0, show(c));
222230
assertEquals(0, row(c));
223231
assertEquals(1L, from(c));
232+
assertEquals(0, ts(c));
224233
assertEquals(0, drop(c));
225234
assertEquals(0, keep(c));
226235
assertEquals(0, rename(c));
@@ -263,6 +272,7 @@ public void testTwoQueriesExecuted() {
263272
assertEquals(0, show(c));
264273
assertEquals(0, row(c));
265274
assertEquals(2L, from(c));
275+
assertEquals(0, ts(c));
266276
assertEquals(0, drop(c));
267277
assertEquals(0, keep(c));
268278
assertEquals(0, rename(c));
@@ -349,6 +359,7 @@ public void testEnrich() {
349359
assertEquals(0, show(c));
350360
assertEquals(0, row(c));
351361
assertEquals(1L, from(c));
362+
assertEquals(0, ts(c));
352363
assertEquals(0, drop(c));
353364
assertEquals(1L, keep(c));
354365
assertEquals(0, rename(c));
@@ -381,6 +392,7 @@ public void testMvExpand() {
381392
assertEquals(0, show(c));
382393
assertEquals(0, row(c));
383394
assertEquals(1L, from(c));
395+
assertEquals(0, ts(c));
384396
assertEquals(0, drop(c));
385397
assertEquals(1L, keep(c));
386398
assertEquals(0, rename(c));
@@ -403,6 +415,7 @@ public void testShowInfo() {
403415
assertEquals(1L, show(c));
404416
assertEquals(0, row(c));
405417
assertEquals(0, from(c));
418+
assertEquals(0, ts(c));
406419
assertEquals(0, drop(c));
407420
assertEquals(0, keep(c));
408421
assertEquals(0, rename(c));
@@ -426,6 +439,7 @@ public void testRow() {
426439
assertEquals(0, show(c));
427440
assertEquals(1L, row(c));
428441
assertEquals(0, from(c));
442+
assertEquals(0, ts(c));
429443
assertEquals(0, drop(c));
430444
assertEquals(0, keep(c));
431445
assertEquals(0, rename(c));
@@ -448,6 +462,7 @@ public void testDropAndRename() {
448462
assertEquals(0, show(c));
449463
assertEquals(0, row(c));
450464
assertEquals(1L, from(c));
465+
assertEquals(0, ts(c));
451466
assertEquals(1L, drop(c));
452467
assertEquals(0, keep(c));
453468
assertEquals(1L, rename(c));
@@ -476,6 +491,7 @@ public void testKeep() {
476491
assertEquals(0, show(c));
477492
assertEquals(0, row(c));
478493
assertEquals(1L, from(c));
494+
assertEquals(0, ts(c));
479495
assertEquals(0, drop(c));
480496
assertEquals(1L, keep(c));
481497
assertEquals(0, rename(c));
@@ -502,6 +518,7 @@ public void testCategorize() {
502518
assertEquals(0, show(c));
503519
assertEquals(0, row(c));
504520
assertEquals(1L, from(c));
521+
assertEquals(0, ts(c));
505522
assertEquals(0, drop(c));
506523
assertEquals(1L, keep(c));
507524
assertEquals(0, rename(c));
@@ -530,6 +547,7 @@ public void testInlineStatsStandalone() {
530547
assertEquals(0, show(c));
531548
assertEquals(0, row(c));
532549
assertEquals(1L, from(c));
550+
assertEquals(0, ts(c));
533551
assertEquals(0, drop(c));
534552
assertEquals(0, keep(c));
535553
assertEquals(0, rename(c));
@@ -558,6 +576,7 @@ public void testInlineStatsWithOtherStats() {
558576
assertEquals(0, show(c));
559577
assertEquals(0, row(c));
560578
assertEquals(1L, from(c));
579+
assertEquals(0, ts(c));
561580
assertEquals(0, drop(c));
562581
assertEquals(0, keep(c));
563582
assertEquals(0, rename(c));
@@ -585,6 +604,7 @@ public void testBinaryPlanAfterStats() {
585604
assertEquals(0, show(c));
586605
assertEquals(0, row(c));
587606
assertEquals(1L, from(c));
607+
assertEquals(0, ts(c));
588608
assertEquals(0, drop(c));
589609
assertEquals(0, keep(c));
590610
assertEquals(0, rename(c));
@@ -617,6 +637,7 @@ public void testBinaryPlanAfterStatsExpressionJoin() {
617637
assertEquals(0, show(c));
618638
assertEquals(0, row(c));
619639
assertEquals(1L, from(c));
640+
assertEquals(0, ts(c));
620641
assertEquals(0, drop(c));
621642
assertEquals(0, keep(c));
622643
assertEquals(1L, rename(c));
@@ -645,6 +666,7 @@ public void testBinaryPlanAfterInlineStats() {
645666
assertEquals(0, show(c));
646667
assertEquals(0, row(c));
647668
assertEquals(1L, from(c));
669+
assertEquals(0, ts(c));
648670
assertEquals(0, drop(c));
649671
assertEquals(0, keep(c));
650672
assertEquals(0, rename(c));
@@ -654,6 +676,60 @@ public void testBinaryPlanAfterInlineStats() {
654676
assertEquals(1, function("max", c));
655677
}
656678

679+
public void testTimeSeriesAggregate() {
680+
assumeTrue("TS required", EsqlCapabilities.Cap.TS_COMMAND_V0.isEnabled());
681+
Counters c = esql("""
682+
TS metrics
683+
| STATS sum(avg_over_time(salary))""");
684+
assertEquals(0, dissect(c));
685+
assertEquals(0, eval(c));
686+
assertEquals(0, grok(c));
687+
assertEquals(0, limit(c));
688+
assertEquals(0, sort(c));
689+
assertEquals(1L, stats(c));
690+
assertEquals(0, where(c));
691+
assertEquals(0, enrich(c));
692+
assertEquals(0, mvExpand(c));
693+
assertEquals(0, show(c));
694+
assertEquals(0, row(c));
695+
assertEquals(0, from(c));
696+
assertEquals(1L, ts(c));
697+
assertEquals(0, drop(c));
698+
assertEquals(0, keep(c));
699+
assertEquals(0, rename(c));
700+
assertEquals(0, inlineStats(c));
701+
assertEquals(0, lookupJoinOnFields(c));
702+
assertEquals(0, lookupJoinOnExpression(c));
703+
assertEquals(1, function("sum", c));
704+
assertEquals(1, function("avg_over_time", c));
705+
}
706+
707+
public void testTimeSeriesNoAggregate() {
708+
assumeTrue("TS required", EsqlCapabilities.Cap.TS_COMMAND_V0.isEnabled());
709+
Counters c = esql("""
710+
TS metrics
711+
| KEEP salary""");
712+
assertEquals(0, dissect(c));
713+
assertEquals(0, eval(c));
714+
assertEquals(0, grok(c));
715+
assertEquals(0, limit(c));
716+
assertEquals(0, sort(c));
717+
assertEquals(0, stats(c));
718+
assertEquals(0, where(c));
719+
assertEquals(0, enrich(c));
720+
assertEquals(0, mvExpand(c));
721+
assertEquals(0, show(c));
722+
assertEquals(0, row(c));
723+
assertEquals(0, from(c));
724+
assertEquals(1L, ts(c));
725+
assertEquals(0, drop(c));
726+
assertEquals(1L, keep(c));
727+
assertEquals(0, rename(c));
728+
assertEquals(0, inlineStats(c));
729+
assertEquals(0, lookupJoinOnFields(c));
730+
assertEquals(0, lookupJoinOnExpression(c));
731+
}
732+
657733
private long dissect(Counters c) {
658734
return c.get(FEATURES_PREFIX + DISSECT);
659735
}
@@ -702,6 +778,10 @@ private long from(Counters c) {
702778
return c.get(FEATURES_PREFIX + FROM);
703779
}
704780

781+
private long ts(Counters c) {
782+
return c.get(FEATURES_PREFIX + TS);
783+
}
784+
705785
private long drop(Counters c) {
706786
return c.get(FEATURES_PREFIX + DROP);
707787
}

0 commit comments

Comments
 (0)