雪花从嵌套 JSON 中获取 MIN/MAX 个值
Snowflake Get MIN/MAX values from Nested JSON
我在雪花列中有以下示例结构,表示地图多边形的一系列坐标。每对值由“经度、纬度”组成,如下所示:
COLUMN ZONE
{
"coordinates": [
[
[
-58.467372,
-34.557908
],
[
-58.457565,
-34.569341
],
[
-58.446836,
-34.573511
],
[
-58.43482,
-34.553367
],
[
-58.441944,
-34.547923
]
]
],
"type": "POLYGON"
}
我需要为每个 table 行获取最小的经度和最小的纬度以及最大的经度和纬度。
所以,对于这个例子,我需要得到类似的东西:
最小值:-58.467372,-34.573511
最大值:-58.43482,-34.547923
你们知道这是否可以使用查询吗?
我尽可能导航 json 以获取坐标集,但我不确定如何从那里继续。我尝试对坐标列执行 MIN,但我不确定如何仅引用“纬度”或“经度”值。
这显然行不通:
MIN(ZONE['coordinates'][0])
有什么建议吗?
您可以使用一些 Snowflake GIS 函数来执行此操作,并处理输入数据以便于解析:
with data as (
select '
{
"coordinates": [
[
[
-58.467372,
-34.557908
],
[
-58.457565,
-34.569341
],
[
-58.446836,
-34.573511
],
[
-58.43482,
-34.553367
],
[
-58.441944,
-34.547923
]
]
],
"type": "POLYGON"
}
' x
)
select st_xmin(g), st_xmax(g), st_ymin(g), st_ymax(g)
from (
select to_geography(replace(x, 'POLYGON', 'MultiLineString')) g
from data
)
我在雪花列中有以下示例结构,表示地图多边形的一系列坐标。每对值由“经度、纬度”组成,如下所示:
COLUMN ZONE
{
"coordinates": [
[
[
-58.467372,
-34.557908
],
[
-58.457565,
-34.569341
],
[
-58.446836,
-34.573511
],
[
-58.43482,
-34.553367
],
[
-58.441944,
-34.547923
]
]
],
"type": "POLYGON"
}
我需要为每个 table 行获取最小的经度和最小的纬度以及最大的经度和纬度。 所以,对于这个例子,我需要得到类似的东西:
最小值:-58.467372,-34.573511 最大值:-58.43482,-34.547923
你们知道这是否可以使用查询吗?
我尽可能导航 json 以获取坐标集,但我不确定如何从那里继续。我尝试对坐标列执行 MIN,但我不确定如何仅引用“纬度”或“经度”值。
这显然行不通:
MIN(ZONE['coordinates'][0])
有什么建议吗?
您可以使用一些 Snowflake GIS 函数来执行此操作,并处理输入数据以便于解析:
with data as (
select '
{
"coordinates": [
[
[
-58.467372,
-34.557908
],
[
-58.457565,
-34.569341
],
[
-58.446836,
-34.573511
],
[
-58.43482,
-34.553367
],
[
-58.441944,
-34.547923
]
]
],
"type": "POLYGON"
}
' x
)
select st_xmin(g), st_xmax(g), st_ymin(g), st_ymax(g)
from (
select to_geography(replace(x, 'POLYGON', 'MultiLineString')) g
from data
)