mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-06 21:32:58 +00:00
* feat: impl label_join and label_replace for promql * chore: style * fix: dst_label is eqauls to src_label * fix: forgot to sort the results * fix: processing empty source label
200 lines
8.8 KiB
Plaintext
200 lines
8.8 KiB
Plaintext
CREATE TABLE test (
|
|
ts timestamp(3) time index,
|
|
host STRING,
|
|
idc STRING,
|
|
val BIGINT,
|
|
PRIMARY KEY(host, idc),
|
|
);
|
|
|
|
Affected Rows: 0
|
|
|
|
INSERT INTO TABLE test VALUES
|
|
(0, 'host1', 'idc1', 1),
|
|
(0, 'host2', 'idc1', 2),
|
|
(5000, 'host1', 'idc2:zone1',3),
|
|
(5000, 'host2', 'idc2',4),
|
|
(10000, 'host1', 'idc3:zone2',5),
|
|
(10000, 'host2', 'idc3',6),
|
|
(15000, 'host1', 'idc4:zone3',7),
|
|
(15000, 'host2', 'idc4',8);
|
|
|
|
Affected Rows: 8
|
|
|
|
-- Missing source labels --
|
|
TQL EVAL (0, 15, '5s') label_join(test{host="host1"}, "new_host", "-");
|
|
|
|
Error: 1004(InvalidArguments), Invalid function argument for label_join
|
|
|
|
-- dst_label is equal to source label --
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 15, '5s') label_join(test{host="host1"}, "host", "-", "host");
|
|
|
|
+---------------------+-----+-------+------------+
|
|
| ts | val | host | idc |
|
|
+---------------------+-----+-------+------------+
|
|
| 1970-01-01T00:00:00 | 1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:05 | 1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:05 | 3 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:10 | 3 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 5 | host1 | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:15 | 3 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:15 | 5 | host1 | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 7 | host1 | idc4:zone3 |
|
|
+---------------------+-----+-------+------------+
|
|
|
|
-- dst_label is in source labels --
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 15, '5s') label_join(test{host="host1"}, "host", "-", "idc", "host");
|
|
|
|
+---------------------+-----+------------------+------------+
|
|
| ts | val | host | idc |
|
|
+---------------------+-----+------------------+------------+
|
|
| 1970-01-01T00:00:00 | 1 | idc1-host1 | idc1 |
|
|
| 1970-01-01T00:00:05 | 1 | idc1-host1 | idc1 |
|
|
| 1970-01-01T00:00:05 | 3 | idc2:zone1-host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 1 | idc1-host1 | idc1 |
|
|
| 1970-01-01T00:00:10 | 3 | idc2:zone1-host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 5 | idc3:zone2-host1 | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 1 | idc1-host1 | idc1 |
|
|
| 1970-01-01T00:00:15 | 3 | idc2:zone1-host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:15 | 5 | idc3:zone2-host1 | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 7 | idc4:zone3-host1 | idc4:zone3 |
|
|
+---------------------+-----+------------------+------------+
|
|
|
|
-- test the empty source label --
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 15, '5s') label_join(test{host="host1"}, "host", "-", "");
|
|
|
|
+---------------------+-----+------+------------+
|
|
| ts | val | host | idc |
|
|
+---------------------+-----+------+------------+
|
|
| 1970-01-01T00:00:00 | 1 | | idc1 |
|
|
| 1970-01-01T00:00:05 | 1 | | idc1 |
|
|
| 1970-01-01T00:00:05 | 3 | | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 1 | | idc1 |
|
|
| 1970-01-01T00:00:10 | 3 | | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 5 | | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 1 | | idc1 |
|
|
| 1970-01-01T00:00:15 | 3 | | idc2:zone1 |
|
|
| 1970-01-01T00:00:15 | 5 | | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 7 | | idc4:zone3 |
|
|
+---------------------+-----+------+------------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 15, '5s') label_join(test{host="host1"}, "new_host", "-", "idc", "host");
|
|
|
|
+---------------------+-----+------------------+-------+------------+
|
|
| ts | val | new_host | host | idc |
|
|
+---------------------+-----+------------------+-------+------------+
|
|
| 1970-01-01T00:00:00 | 1 | idc1-host1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:05 | 1 | idc1-host1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:05 | 3 | idc2:zone1-host1 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 1 | idc1-host1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:10 | 3 | idc2:zone1-host1 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 5 | idc3:zone2-host1 | host1 | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 1 | idc1-host1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:15 | 3 | idc2:zone1-host1 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:15 | 5 | idc3:zone2-host1 | host1 | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 7 | idc4:zone3-host1 | host1 | idc4:zone3 |
|
|
+---------------------+-----+------------------+-------+------------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 15, '5s') label_replace(test{host="host1"}, "new_idc", "$2", "idc", "(.*):(.*)");
|
|
|
|
+---------------------+-----+---------+-------+------------+
|
|
| ts | val | new_idc | host | idc |
|
|
+---------------------+-----+---------+-------+------------+
|
|
| 1970-01-01T00:00:00 | 1 | idc1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:05 | 1 | idc1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:05 | 3 | zone1 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 1 | idc1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:10 | 3 | zone1 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 5 | zone2 | host1 | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 1 | idc1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:15 | 3 | zone1 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:15 | 5 | zone2 | host1 | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 7 | zone3 | host1 | idc4:zone3 |
|
|
+---------------------+-----+---------+-------+------------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 15, '5s') label_replace(test{host="host1"}, "new_idc", "idc99", "idc", "idc2.*");
|
|
|
|
+---------------------+-----+------------+-------+------------+
|
|
| ts | val | new_idc | host | idc |
|
|
+---------------------+-----+------------+-------+------------+
|
|
| 1970-01-01T00:00:00 | 1 | idc1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:05 | 1 | idc1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:05 | 3 | idc99 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 1 | idc1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:10 | 3 | idc99 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:10 | 5 | idc3:zone2 | host1 | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 1 | idc1 | host1 | idc1 |
|
|
| 1970-01-01T00:00:15 | 3 | idc99 | host1 | idc2:zone1 |
|
|
| 1970-01-01T00:00:15 | 5 | idc3:zone2 | host1 | idc3:zone2 |
|
|
| 1970-01-01T00:00:15 | 7 | idc4:zone3 | host1 | idc4:zone3 |
|
|
+---------------------+-----+------------+-------+------------+
|
|
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 15, '5s') label_replace(test{host="host2"}, "new_idc", "$2", "idc", "(.*):(.*)");
|
|
|
|
+---------------------+-----+---------+-------+------+
|
|
| ts | val | new_idc | host | idc |
|
|
+---------------------+-----+---------+-------+------+
|
|
| 1970-01-01T00:00:00 | 2 | idc1 | host2 | idc1 |
|
|
| 1970-01-01T00:00:05 | 2 | idc1 | host2 | idc1 |
|
|
| 1970-01-01T00:00:05 | 4 | idc2 | host2 | idc2 |
|
|
| 1970-01-01T00:00:10 | 2 | idc1 | host2 | idc1 |
|
|
| 1970-01-01T00:00:10 | 4 | idc2 | host2 | idc2 |
|
|
| 1970-01-01T00:00:10 | 6 | idc3 | host2 | idc3 |
|
|
| 1970-01-01T00:00:15 | 2 | idc1 | host2 | idc1 |
|
|
| 1970-01-01T00:00:15 | 4 | idc2 | host2 | idc2 |
|
|
| 1970-01-01T00:00:15 | 6 | idc3 | host2 | idc3 |
|
|
| 1970-01-01T00:00:15 | 8 | idc4 | host2 | idc4 |
|
|
+---------------------+-----+---------+-------+------+
|
|
|
|
-- dst_label is equal to source label --
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 15, '5s') label_replace(test{host="host2"}, "idc", "$2", "idc", "(.*):(.*)");
|
|
|
|
+---------------------+-----+------+-------+
|
|
| ts | val | idc | host |
|
|
+---------------------+-----+------+-------+
|
|
| 1970-01-01T00:00:00 | 2 | idc1 | host2 |
|
|
| 1970-01-01T00:00:05 | 2 | idc1 | host2 |
|
|
| 1970-01-01T00:00:05 | 4 | idc2 | host2 |
|
|
| 1970-01-01T00:00:10 | 2 | idc1 | host2 |
|
|
| 1970-01-01T00:00:10 | 4 | idc2 | host2 |
|
|
| 1970-01-01T00:00:10 | 6 | idc3 | host2 |
|
|
| 1970-01-01T00:00:15 | 2 | idc1 | host2 |
|
|
| 1970-01-01T00:00:15 | 4 | idc2 | host2 |
|
|
| 1970-01-01T00:00:15 | 6 | idc3 | host2 |
|
|
| 1970-01-01T00:00:15 | 8 | idc4 | host2 |
|
|
+---------------------+-----+------+-------+
|
|
|
|
-- test the empty source label --
|
|
-- TODO(dennis): we can't remove the label currently --
|
|
-- SQLNESS SORT_RESULT 3 1
|
|
TQL EVAL (0, 15, '5s') label_replace(test{host="host2"}, "idc", "", "", "");
|
|
|
|
+---------------------+-----+-----+-------+
|
|
| ts | val | idc | host |
|
|
+---------------------+-----+-----+-------+
|
|
| 1970-01-01T00:00:00 | 2 | | host2 |
|
|
| 1970-01-01T00:00:05 | 2 | | host2 |
|
|
| 1970-01-01T00:00:05 | 4 | | host2 |
|
|
| 1970-01-01T00:00:10 | 2 | | host2 |
|
|
| 1970-01-01T00:00:10 | 4 | | host2 |
|
|
| 1970-01-01T00:00:10 | 6 | | host2 |
|
|
| 1970-01-01T00:00:15 | 2 | | host2 |
|
|
| 1970-01-01T00:00:15 | 4 | | host2 |
|
|
| 1970-01-01T00:00:15 | 6 | | host2 |
|
|
| 1970-01-01T00:00:15 | 8 | | host2 |
|
|
+---------------------+-----+-----+-------+
|
|
|
|
DROP TABLE test;
|
|
|
|
Affected Rows: 0
|
|
|