【问题标题】:Snowflake Get MIN/MAX values from Nested JSONSnowflake 从嵌套 JSON 中获取 MIN/MAX 值
【发布时间】:2021-10-14 10:47:10
【问题描述】:

我在雪花列中有以下示例结构,表示地图多边形的一系列坐标。每对值由“经度,纬度”组成,如下所示:

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"
}

我需要获取每个表格行的最小经度和最小纬度以及最大经度和纬度。 所以,对于这个例子,我需要得到类似的东西:

最小值:-58.467372,-34.573511 最大值:-58.43482,-34.547923

你们知道这是否可以使用查询吗?

我已经导航到 json 以获取坐标集,但我不确定如何从那里开始。我尝试对坐标列执行 MIN,但我不确定如何仅引用“纬度”或“经度”值。

这显然行不通:

MIN(ZONE['coordinates'][0])

有什么建议吗?

【问题讨论】:

    标签: json multidimensional-array nested snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    您可以使用一些 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
    )
    

    【讨论】:

    • 哇,这正是我需要的!我不知道所有这些地理功能都存在。很有用!谢谢!
    猜你喜欢
    • 2017-06-10
    • 2021-11-15
    • 2017-08-07
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2021-07-26
    相关资源
    最近更新 更多