mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-08-12 09:19:44 +00:00
feat: absent function in PromQL (#6618)
* feat: absent function in PromQL Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * impl serde Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * sqlness test Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * ai suggests Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * resolve PR comments Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * comment out some tests Signed-off-by: Ruihang Xia <waynestxia@gmail.com> --------- Signed-off-by: Ruihang Xia <waynestxia@gmail.com>
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
create table t (
|
||||
ts timestamp(3) time index,
|
||||
job STRING,
|
||||
instance STRING,
|
||||
val DOUBLE,
|
||||
PRIMARY KEY(job, instance),
|
||||
);
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
insert into t values
|
||||
(0, 'job1', 'instance1', 1),
|
||||
(0, 'job2', 'instance2', 2),
|
||||
(5000, 'job1', 'instance3',3),
|
||||
(5000, 'job2', 'instance4',4),
|
||||
(10000, 'job1', 'instance5',5),
|
||||
(10000, 'job2', 'instance6',6),
|
||||
(15000, 'job1', 'instance7',7),
|
||||
(15000, 'job2', 'instance8',8);
|
||||
|
||||
Affected Rows: 8
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job="job1"});
|
||||
|
||||
++
|
||||
++
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job="job2"});
|
||||
|
||||
++
|
||||
++
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job="job3"});
|
||||
|
||||
+---------------------+-----+------+
|
||||
| ts | val | job |
|
||||
+---------------------+-----+------+
|
||||
| 1970-01-01T00:00:00 | 1.0 | job3 |
|
||||
| 1970-01-01T00:00:05 | 1.0 | job3 |
|
||||
| 1970-01-01T00:00:10 | 1.0 | job3 |
|
||||
| 1970-01-01T00:00:15 | 1.0 | job3 |
|
||||
+---------------------+-----+------+
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(nonexistent_table);
|
||||
|
||||
+---------------------+-------+
|
||||
| time | value |
|
||||
+---------------------+-------+
|
||||
| 1970-01-01T00:00:00 | 1.0 |
|
||||
| 1970-01-01T00:00:05 | 1.0 |
|
||||
| 1970-01-01T00:00:10 | 1.0 |
|
||||
| 1970-01-01T00:00:15 | 1.0 |
|
||||
+---------------------+-------+
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job="nonexistent_job"});
|
||||
|
||||
+---------------------+-----+-----------------+
|
||||
| ts | val | job |
|
||||
+---------------------+-----+-----------------+
|
||||
| 1970-01-01T00:00:00 | 1.0 | nonexistent_job |
|
||||
| 1970-01-01T00:00:05 | 1.0 | nonexistent_job |
|
||||
| 1970-01-01T00:00:10 | 1.0 | nonexistent_job |
|
||||
| 1970-01-01T00:00:15 | 1.0 | nonexistent_job |
|
||||
+---------------------+-----+-----------------+
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (1000, 1000, '1s') absent(t{job="job1"});
|
||||
|
||||
+---------------------+-----+------+
|
||||
| ts | val | job |
|
||||
+---------------------+-----+------+
|
||||
| 1970-01-01T00:16:40 | 1.0 | job1 |
|
||||
+---------------------+-----+------+
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job="nonexistent_job1", job="nonexistent_job2"});
|
||||
|
||||
+---------------------+-----+------------------+
|
||||
| ts | val | job |
|
||||
+---------------------+-----+------------------+
|
||||
| 1970-01-01T00:00:00 | 1.0 | nonexistent_job2 |
|
||||
| 1970-01-01T00:00:05 | 1.0 | nonexistent_job2 |
|
||||
| 1970-01-01T00:00:10 | 1.0 | nonexistent_job2 |
|
||||
| 1970-01-01T00:00:15 | 1.0 | nonexistent_job2 |
|
||||
+---------------------+-----+------------------+
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job=~"nonexistent_job1", job!="nonexistent_job2"});
|
||||
|
||||
+---------------------+-----+
|
||||
| ts | val |
|
||||
+---------------------+-----+
|
||||
| 1970-01-01T00:00:00 | 1.0 |
|
||||
| 1970-01-01T00:00:05 | 1.0 |
|
||||
| 1970-01-01T00:00:10 | 1.0 |
|
||||
| 1970-01-01T00:00:15 | 1.0 |
|
||||
+---------------------+-----+
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') sum(t{job="job2"});
|
||||
|
||||
+---------------------+------------+
|
||||
| ts | sum(t.val) |
|
||||
+---------------------+------------+
|
||||
| 1970-01-01T00:00:00 | 2.0 |
|
||||
| 1970-01-01T00:00:05 | 6.0 |
|
||||
| 1970-01-01T00:00:10 | 12.0 |
|
||||
| 1970-01-01T00:00:15 | 20.0 |
|
||||
+---------------------+------------+
|
||||
|
||||
-- ABSENT is not supported for aggregation functions for now
|
||||
-- tql eval (0, 15, '5s') absent(sum(t{job="job2"}));
|
||||
-- tql eval (0, 15, '5s') absent(sum(t{job="job3"}));
|
||||
drop table t;
|
||||
|
||||
Affected Rows: 0
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
create table t (
|
||||
ts timestamp(3) time index,
|
||||
job STRING,
|
||||
instance STRING,
|
||||
val DOUBLE,
|
||||
PRIMARY KEY(job, instance),
|
||||
);
|
||||
|
||||
insert into t values
|
||||
(0, 'job1', 'instance1', 1),
|
||||
(0, 'job2', 'instance2', 2),
|
||||
(5000, 'job1', 'instance3',3),
|
||||
(5000, 'job2', 'instance4',4),
|
||||
(10000, 'job1', 'instance5',5),
|
||||
(10000, 'job2', 'instance6',6),
|
||||
(15000, 'job1', 'instance7',7),
|
||||
(15000, 'job2', 'instance8',8);
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job="job1"});
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job="job2"});
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job="job3"});
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(nonexistent_table);
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job="nonexistent_job"});
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (1000, 1000, '1s') absent(t{job="job1"});
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job="nonexistent_job1", job="nonexistent_job2"});
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') absent(t{job=~"nonexistent_job1", job!="nonexistent_job2"});
|
||||
|
||||
-- SQLNESS SORT_RESULT 3 1
|
||||
tql eval (0, 15, '5s') sum(t{job="job2"});
|
||||
|
||||
-- ABSENT is not supported for aggregation functions for now
|
||||
-- tql eval (0, 15, '5s') absent(sum(t{job="job2"}));
|
||||
-- tql eval (0, 15, '5s') absent(sum(t{job="job3"}));
|
||||
|
||||
drop table t;
|
||||
Reference in New Issue
Block a user