Spade A 0dc21f0aeb
feat: support random sample (#39532)
issue: #39541

This PR implements random sample, the syntax is:
```
filter="random_sample(factor)"
or 
filter="boolean_expression && random_sample(factor)"

where 
factor is a float between (0, 1) and 
boolean_expression is like
 "1 <= number < 10", "color in ["read, "blue"]" or others
```

---------

Signed-off-by: SpadeA-Tang <tangchenjie1210@gmail.com>
Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
2025-02-18 12:40:50 +08:00

118 lines
6.2 KiB
Plaintext

token literal names:
null
'('
')'
'['
','
']'
'{'
'}'
'<'
'<='
'>'
'>='
'=='
'!='
null
null
null
null
null
'+'
'-'
'*'
'/'
'%'
'**'
'<<'
'>>'
'&'
'|'
'^'
null
null
null
null
'~'
null
null
null
null
null
null
null
null
null
null
null
null
null
null
'$meta'
null
null
null
null
token symbolic names:
null
null
null
null
null
null
LBRACE
RBRACE
LT
LE
GT
GE
EQ
NE
LIKE
EXISTS
TEXTMATCH
PHRASEMATCH
RANDOMSAMPLE
ADD
SUB
MUL
DIV
MOD
POW
SHL
SHR
BAND
BOR
BXOR
AND
OR
ISNULL
ISNOTNULL
BNOT
NOT
IN
EmptyArray
JSONContains
JSONContainsAll
JSONContainsAny
ArrayContains
ArrayContainsAll
ArrayContainsAny
ArrayLength
BooleanConstant
IntegerConstant
FloatingConstant
Identifier
Meta
StringLiteral
JSONIdentifier
Whitespace
Newline
rule names:
expr
atn:
[4, 1, 53, 161, 2, 0, 7, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 21, 8, 0, 10, 0, 12, 0, 24, 9, 0, 1, 0, 3, 0, 27, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 45, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 85, 8, 0, 10, 0, 12, 0, 88, 9, 0, 1, 0, 3, 0, 91, 8, 0, 3, 0, 93, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 102, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 3, 0, 118, 8, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 156, 8, 0, 10, 0, 12, 0, 159, 9, 0, 1, 0, 0, 1, 0, 1, 0, 0, 13, 1, 0, 48, 49, 2, 0, 19, 20, 34, 35, 2, 0, 38, 38, 41, 41, 2, 0, 39, 39, 42, 42, 2, 0, 40, 40, 43, 43, 2, 0, 48, 48, 51, 51, 1, 0, 21, 23, 1, 0, 19, 20, 1, 0, 25, 26, 1, 0, 8, 9, 1, 0, 10, 11, 1, 0, 8, 11, 1, 0, 12, 13, 202, 0, 101, 1, 0, 0, 0, 2, 3, 6, 0, -1, 0, 3, 102, 5, 46, 0, 0, 4, 102, 5, 47, 0, 0, 5, 102, 5, 45, 0, 0, 6, 102, 5, 50, 0, 0, 7, 102, 7, 0, 0, 0, 8, 102, 5, 51, 0, 0, 9, 10, 5, 6, 0, 0, 10, 11, 5, 48, 0, 0, 11, 102, 5, 7, 0, 0, 12, 13, 5, 1, 0, 0, 13, 14, 3, 0, 0, 0, 14, 15, 5, 2, 0, 0, 15, 102, 1, 0, 0, 0, 16, 17, 5, 3, 0, 0, 17, 22, 3, 0, 0, 0, 18, 19, 5, 4, 0, 0, 19, 21, 3, 0, 0, 0, 20, 18, 1, 0, 0, 0, 21, 24, 1, 0, 0, 0, 22, 20, 1, 0, 0, 0, 22, 23, 1, 0, 0, 0, 23, 26, 1, 0, 0, 0, 24, 22, 1, 0, 0, 0, 25, 27, 5, 4, 0, 0, 26, 25, 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 28, 1, 0, 0, 0, 28, 29, 5, 5, 0, 0, 29, 102, 1, 0, 0, 0, 30, 102, 5, 37, 0, 0, 31, 32, 5, 16, 0, 0, 32, 33, 5, 1, 0, 0, 33, 34, 5, 48, 0, 0, 34, 35, 5, 4, 0, 0, 35, 36, 5, 50, 0, 0, 36, 102, 5, 2, 0, 0, 37, 38, 5, 17, 0, 0, 38, 39, 5, 1, 0, 0, 39, 40, 5, 48, 0, 0, 40, 41, 5, 4, 0, 0, 41, 44, 5, 50, 0, 0, 42, 43, 5, 4, 0, 0, 43, 45, 3, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 46, 1, 0, 0, 0, 46, 102, 5, 2, 0, 0, 47, 48, 5, 18, 0, 0, 48, 49, 5, 1, 0, 0, 49, 50, 3, 0, 0, 0, 50, 51, 5, 2, 0, 0, 51, 102, 1, 0, 0, 0, 52, 53, 7, 1, 0, 0, 53, 102, 3, 0, 0, 22, 54, 55, 7, 2, 0, 0, 55, 56, 5, 1, 0, 0, 56, 57, 3, 0, 0, 0, 57, 58, 5, 4, 0, 0, 58, 59, 3, 0, 0, 0, 59, 60, 5, 2, 0, 0, 60, 102, 1, 0, 0, 0, 61, 62, 7, 3, 0, 0, 62, 63, 5, 1, 0, 0, 63, 64, 3, 0, 0, 0, 64, 65, 5, 4, 0, 0, 65, 66, 3, 0, 0, 0, 66, 67, 5, 2, 0, 0, 67, 102, 1, 0, 0, 0, 68, 69, 7, 4, 0, 0, 69, 70, 5, 1, 0, 0, 70, 71, 3, 0, 0, 0, 71, 72, 5, 4, 0, 0, 72, 73, 3, 0, 0, 0, 73, 74, 5, 2, 0, 0, 74, 102, 1, 0, 0, 0, 75, 76, 5, 44, 0, 0, 76, 77, 5, 1, 0, 0, 77, 78, 7, 5, 0, 0, 78, 102, 5, 2, 0, 0, 79, 80, 5, 48, 0, 0, 80, 92, 5, 1, 0, 0, 81, 86, 3, 0, 0, 0, 82, 83, 5, 4, 0, 0, 83, 85, 3, 0, 0, 0, 84, 82, 1, 0, 0, 0, 85, 88, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 86, 87, 1, 0, 0, 0, 87, 90, 1, 0, 0, 0, 88, 86, 1, 0, 0, 0, 89, 91, 5, 4, 0, 0, 90, 89, 1, 0, 0, 0, 90, 91, 1, 0, 0, 0, 91, 93, 1, 0, 0, 0, 92, 81, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 94, 1, 0, 0, 0, 94, 102, 5, 2, 0, 0, 95, 96, 5, 48, 0, 0, 96, 102, 5, 32, 0, 0, 97, 98, 5, 48, 0, 0, 98, 102, 5, 33, 0, 0, 99, 100, 5, 15, 0, 0, 100, 102, 3, 0, 0, 1, 101, 2, 1, 0, 0, 0, 101, 4, 1, 0, 0, 0, 101, 5, 1, 0, 0, 0, 101, 6, 1, 0, 0, 0, 101, 7, 1, 0, 0, 0, 101, 8, 1, 0, 0, 0, 101, 9, 1, 0, 0, 0, 101, 12, 1, 0, 0, 0, 101, 16, 1, 0, 0, 0, 101, 30, 1, 0, 0, 0, 101, 31, 1, 0, 0, 0, 101, 37, 1, 0, 0, 0, 101, 47, 1, 0, 0, 0, 101, 52, 1, 0, 0, 0, 101, 54, 1, 0, 0, 0, 101, 61, 1, 0, 0, 0, 101, 68, 1, 0, 0, 0, 101, 75, 1, 0, 0, 0, 101, 79, 1, 0, 0, 0, 101, 95, 1, 0, 0, 0, 101, 97, 1, 0, 0, 0, 101, 99, 1, 0, 0, 0, 102, 157, 1, 0, 0, 0, 103, 104, 10, 23, 0, 0, 104, 105, 5, 24, 0, 0, 105, 156, 3, 0, 0, 24, 106, 107, 10, 21, 0, 0, 107, 108, 7, 6, 0, 0, 108, 156, 3, 0, 0, 22, 109, 110, 10, 20, 0, 0, 110, 111, 7, 7, 0, 0, 111, 156, 3, 0, 0, 21, 112, 113, 10, 19, 0, 0, 113, 114, 7, 8, 0, 0, 114, 156, 3, 0, 0, 20, 115, 117, 10, 18, 0, 0, 116, 118, 5, 35, 0, 0, 117, 116, 1, 0, 0, 0, 117, 118, 1, 0, 0, 0, 118, 119, 1, 0, 0, 0, 119, 120, 5, 36, 0, 0, 120, 156, 3, 0, 0, 19, 121, 122, 10, 12, 0, 0, 122, 123, 7, 9, 0, 0, 123, 124, 7, 5, 0, 0, 124, 125, 7, 9, 0, 0, 125, 156, 3, 0, 0, 13, 126, 127, 10, 11, 0, 0, 127, 128, 7, 10, 0, 0, 128, 129, 7, 5, 0, 0, 129, 130, 7, 10, 0, 0, 130, 156, 3, 0, 0, 12, 131, 132, 10, 10, 0, 0, 132, 133, 7, 11, 0, 0, 133, 156, 3, 0, 0, 11, 134, 135, 10, 9, 0, 0, 135, 136, 7, 12, 0, 0, 136, 156, 3, 0, 0, 10, 137, 138, 10, 8, 0, 0, 138, 139, 5, 27, 0, 0, 139, 156, 3, 0, 0, 9, 140, 141, 10, 7, 0, 0, 141, 142, 5, 29, 0, 0, 142, 156, 3, 0, 0, 8, 143, 144, 10, 6, 0, 0, 144, 145, 5, 28, 0, 0, 145, 156, 3, 0, 0, 7, 146, 147, 10, 5, 0, 0, 147, 148, 5, 30, 0, 0, 148, 156, 3, 0, 0, 6, 149, 150, 10, 4, 0, 0, 150, 151, 5, 31, 0, 0, 151, 156, 3, 0, 0, 5, 152, 153, 10, 27, 0, 0, 153, 154, 5, 14, 0, 0, 154, 156, 5, 50, 0, 0, 155, 103, 1, 0, 0, 0, 155, 106, 1, 0, 0, 0, 155, 109, 1, 0, 0, 0, 155, 112, 1, 0, 0, 0, 155, 115, 1, 0, 0, 0, 155, 121, 1, 0, 0, 0, 155, 126, 1, 0, 0, 0, 155, 131, 1, 0, 0, 0, 155, 134, 1, 0, 0, 0, 155, 137, 1, 0, 0, 0, 155, 140, 1, 0, 0, 0, 155, 143, 1, 0, 0, 0, 155, 146, 1, 0, 0, 0, 155, 149, 1, 0, 0, 0, 155, 152, 1, 0, 0, 0, 156, 159, 1, 0, 0, 0, 157, 155, 1, 0, 0, 0, 157, 158, 1, 0, 0, 0, 158, 1, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 10, 22, 26, 44, 86, 90, 92, 101, 117, 155, 157]