適用範圍:
Databricks SQL
Databricks Runtime 11.3 LTS 和其以上版本
傳回與原 H3 單元格的網格線距離 k 內的所有 H3 單元格(以長整數或字串表示),以及其與原 H3 單元格的距離。
語法
h3_kringdistances ( h3CellIdExpr, kExpr )
引數
-
h3CellIdExpr:BIGINT 運算式,或代表 H3 單元格標識符的十六進位 STRING 運算式。 -
kExpr:代表網格線距離的 INTEGER 運算式。kExpr必須是非負數。
退貨
名為 和cellid的具名結構陣列,分別具有兩個字段distance,其中結構中的第一個字段是 H3 單元格標識符(以長整數或字串表示),而結構中的第二個字段是與原 H3 單元格(以整數表示)的距離。 輸出中 H3 儲存格識別碼的類型與 的類型 h3CellIdExpr相同。
傳回之ARRAY中的元素會根據其與原始H3單元格的距離排序。 對應於返回陣列中相同距離的元素可以按任何順序返回。
如果任一輸入表達式為 NULL,此函式會傳回 NULL。
函式會針對輸入自變數是否為有效的 H3 單元格標識碼執行部分驗證。 有效 H3 識別符的一個必要但非充分條件是其值在 0x08001fffffffffff 和 0x08ff3b6db6db6db6 之間。
如果輸入儲存格標識碼不是有效的儲存格標識碼,則函式的行為是未定義的。
如果方格距離的值為零,傳回的陣列會包含等於輸入 H3 單元格標識碼的單一值。
錯誤條件
- 如果
h3CellIdExpr是無法轉換成 BIGINT 的 STRING,或對應至小於0x08001fffffffffff或大於0x08ff3b6db6db6db6的 BIGINT 值,則函式會傳 回H3_INVALID_CELL_ID - 如果
kExpr為負數,則函式會傳 回H3_INVALID_GRID_DISTANCE_VALUE
範例
-- Simple example where the first argument is a BIGINT.
> SELECT h3_kringdistances(599686042433355775, 1);
[{"cellid":599686042433355775,"distance":0},{"cellid":599686030622195711,"distance":1},{"cellid":599686044580839423,"distance":1},{"cellid":599686038138388479,"distance":1},{"cellid":599686043507097599,"distance":1},{"cellid":599686015589810175,"distance":1},{"cellid":599686014516068351,"distance":1}]
-- Simple example where the first argument is a STRING.
> SELECT h3_kringdistances('85283473fffffff', 1);
[{"cellid":"85283473fffffff","distance":0},{"cellid":"85283447fffffff","distance":1},{"cellid":"8528347bfffffff","distance":1},{"cellid":"85283463fffffff","distance":1},{"cellid":"85283477fffffff","distance":1},{"cellid":"8528340ffffffff","distance":1},{"cellid":"8528340bfffffff","distance":1}]
-- First input is an invalid H3 cell ID.
> SELECT h3_kringdistances(0, 0);
[H3_INVALID_CELL_ID] 0 is not a valid H3 cell ID
-- Second input is an invalid grid distance value.
> SELECT h3_kringdistances('85283473fffffff', -1);
[H3_INVALID_GRID_DISTANCE_VALUE] H3 grid distance -1 must be non-negative