You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[8.19] Add support to VALUES aggregation for spatial types (#122886) (#127627)
* Add support to VALUES aggregation for spatial types (#122886)
The original work at #106065 did not support geospatial types with this comment:
> I made this work for everything but geo_point and cartesian_point because I'm not 100% sure how to integrate with those. We can grab those in a follow up.
The geospatial types should be possible to collect using the VALUES aggregation with similar behavior to the `ST_COLLECT` OGC function, based on the Elasticsearch convention that treats multi-value geospatial fields as behaving similarly to any geometry collection. So this implementation is a trivial addition to the existing values types support.
* Fix docs
Copy file name to clipboardExpand all lines: x-pack/plugin/esql/qa/testFixtures/src/main/resources/spatial.csv-spec
+64
Original file line number
Diff line number
Diff line change
@@ -145,6 +145,70 @@ c:long | x:double | y:double
145
145
19 | null | null
146
146
;
147
147
148
+
values
149
+
required_capability: agg_values_spatial
150
+
151
+
FROM airports
152
+
| WHERE scalerank == 9
153
+
| STATS locations=VALUES(location)
154
+
| EVAL locations = MV_SORT(TO_STRING(locations))
155
+
;
156
+
157
+
locations:keyword
158
+
[POINT (101.446569298441 0.464600872998505), POINT (105.176060419161 -5.242566777132), POINT (112.711418617258 -7.92998002840567), POINT (126.810839481226 35.1400051390198), POINT (127.495916124681 36.7220227766673), POINT (128.637537699933 35.8999277969087), POINT (129.355731047528 35.5928957527107), POINT (145.243980298582 14.1717712971216), POINT (35.3018728575279 47.8732635579023), POINT (42.97109630194 14.7552534413725), POINT (48.7471065435931 31.3431585560757), POINT (60.900708564915 29.4752941956573), POINT (61.5122589740201 55.2977919496055), POINT (63.0279333519181 25.988794590011), POINT (66.9487311480949 30.249043186181), POINT (72.9878190922305 31.3627435480862), POINT (73.0320498392002 33.5614146278861), POINT (73.3163595376585 54.9576482934059), POINT (73.4084964764375 61.3401672194481), POINT (73.8105674924689 19.9660205672806), POINT (75.3958432922005 19.8672969621082), POINT (75.7584828456005 31.4329422397715), POINT (75.8092915005895 22.727749187571), POINT (75.9330597710755 17.625415183635), POINT (75.9570722403652 30.8503598561702), POINT (76.8017261105242 30.6707248949667), POINT (78.2172186546348 26.285487697937), POINT (78.7089578747476 10.7603571306554), POINT (79.452002687657 28.4218087161144), POINT (81.7317271462187 25.443522027821), POINT (82.6671524525865 55.0095847136264), POINT (83.5504532124038 53.3633850813046), POINT (85.3235970368767 23.3177245989962)]
159
+
;
160
+
161
+
valuesGrouped
162
+
required_capability: agg_values_spatial
163
+
164
+
FROM airports
165
+
| WHERE scalerank == 9
166
+
| EVAL first_letter = SUBSTRING(abbrev, 0, 1)
167
+
| STATS locations=VALUES(location) BY first_letter
168
+
| EVAL locations = MV_SORT(TO_STRING(locations))
169
+
| SORT first_letter
170
+
| KEEP first_letter, locations
171
+
;
172
+
173
+
first_letter:keyword | locations:keyword
174
+
A | POINT (48.7471065435931 31.3431585560757)
175
+
B | POINT (83.5504532124038 53.3633850813046)
176
+
C | [POINT (127.495916124681 36.7220227766673), POINT (61.5122589740201 55.2977919496055)]
177
+
G | POINT (78.2172186546348 26.285487697937)
178
+
H | POINT (42.97109630194 14.7552534413725)
179
+
I | [POINT (73.8105674924689 19.9660205672806), POINT (75.3958432922005 19.8672969621082), POINT (75.8092915005895 22.727749187571), POINT (76.8017261105242 30.6707248949667), POINT (81.7317271462187 25.443522027821), POINT (85.3235970368767 23.3177245989962)]
180
+
K | POINT (126.810839481226 35.1400051390198)
181
+
L | [POINT (72.9878190922305 31.3627435480862), POINT (75.9570722403652 30.8503598561702)]
182
+
M | POINT (112.711418617258 -7.92998002840567)
183
+
O | [POINT (35.3018728575279 47.8732635579023), POINT (73.0320498392002 33.5614146278861), POINT (73.3163595376585 54.9576482934059), POINT (82.6671524525865 55.0095847136264)]
184
+
P | POINT (101.446569298441 0.464600872998505)
185
+
R | POINT (145.243980298582 14.1717712971216)
186
+
S | [POINT (73.4084964764375 61.3401672194481), POINT (75.9330597710755 17.625415183635)]
187
+
T | [POINT (128.637537699933 35.8999277969087), POINT (63.0279333519181 25.988794590011), POINT (78.7089578747476 10.7603571306554)]
188
+
U | [POINT (129.355731047528 35.5928957527107), POINT (66.9487311480949 30.249043186181)]
189
+
V | [POINT (75.7584828456005 31.4329422397715), POINT (79.452002687657 28.4218087161144)]
190
+
W | POINT (105.176060419161 -5.242566777132)
191
+
Z | POINT (60.900708564915 29.4752941956573)
192
+
;
193
+
194
+
valuesGroupedByOrdinals
195
+
required_capability: agg_values_spatial
196
+
197
+
FROM airports
198
+
| WHERE scalerank == 9
199
+
| STATS locations=VALUES(location) BY type
200
+
| EVAL locations = MV_SORT(TO_STRING(locations))
201
+
| SORT type
202
+
| KEEP type, locations
203
+
;
204
+
205
+
type:keyword | locations:keyword
206
+
major | [POINT (127.495916124681 36.7220227766673), POINT (76.8017261105242 30.6707248949667)]
207
+
mid | [POINT (101.446569298441 0.464600872998505), POINT (105.176060419161 -5.242566777132), POINT (112.711418617258 -7.92998002840567), POINT (126.810839481226 35.1400051390198), POINT (128.637537699933 35.8999277969087), POINT (129.355731047528 35.5928957527107), POINT (145.243980298582 14.1717712971216), POINT (35.3018728575279 47.8732635579023), POINT (42.97109630194 14.7552534413725), POINT (48.7471065435931 31.3431585560757), POINT (60.900708564915 29.4752941956573), POINT (61.5122589740201 55.2977919496055), POINT (63.0279333519181 25.988794590011), POINT (66.9487311480949 30.249043186181), POINT (72.9878190922305 31.3627435480862), POINT (73.3163595376585 54.9576482934059), POINT (73.4084964764375 61.3401672194481), POINT (73.8105674924689 19.9660205672806), POINT (75.3958432922005 19.8672969621082), POINT (75.7584828456005 31.4329422397715), POINT (75.8092915005895 22.727749187571), POINT (75.9330597710755 17.625415183635), POINT (78.2172186546348 26.285487697937), POINT (78.7089578747476 10.7603571306554), POINT (82.6671524525865 55.0095847136264), POINT (83.5504532124038 53.3633850813046), POINT (85.3235970368767 23.3177245989962)]
208
+
military | [POINT (112.711418617258 -7.92998002840567), POINT (126.810839481226 35.1400051390198), POINT (35.3018728575279 47.8732635579023), POINT (72.9878190922305 31.3627435480862), POINT (75.7584828456005 31.4329422397715), POINT (76.8017261105242 30.6707248949667), POINT (78.2172186546348 26.285487697937), POINT (79.452002687657 28.4218087161144), POINT (81.7317271462187 25.443522027821)]
209
+
small | [POINT (73.0320498392002 33.5614146278861), POINT (75.9570722403652 30.8503598561702)]
Copy file name to clipboardExpand all lines: x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/aggregate/ValuesErrorTests.java
0 commit comments