Функция h3_uncompact
Область применения: Databricks SQL Databricks Runtime 11.3 LTS и выше
Восстанавливает сжатый входной набор ячеек H3 до указанного разрешения. После восстановления набор охватывает тот же набор ячеек H3, что и исходный, используя ячейки в указанном разрешении.
Синтаксис
h3_uncompact ( h3CellIdsExpr, resolutionExpr )
Аргументы
h3CellIdsExpr
: массив выражений BIGINTs или массив шестнадцатеричных выражений STRINGs, представляющих массив идентификаторов ячеек H3.resolutionExpr
: выражение INTEGER, значение которого должно быть между максимальным разрешением входных ячеек H3 и15
включительно, задающим разрешение идентификаторов ячеек H3 в выходном массиве.
Возвраты
Массив значений того же типа, что и значения во входном выражении массива h3cellIdsExpr
. Разрешение идентификаторов ячеек H3 в выходном массиве равно значению resolutionExpr
.
Функция возвращает значение NULL, если входные данные равны NULL.
Функция выполняет частичную проверку, является ли входной аргумент действительным идентификатором ячейки H3. Необходимое, но недостаточное условие для допустимого идентификатора H3 заключается в том, что его значение находится в диапазоне от 0x08001fffffffffff
до 0x08ff3b6db6db6db6
.
Поведение функции не определено, если какой-либо из идентификаторов ячеек во входном массиве не является допустимым идентификатором ячейки.
Значения NULL во входном массиве игнорируются.
Условия ошибок
- Если
h3CellIdExpr
— это строка, которая не может быть преобразована в BIGINT или соответствует значению BIGINT, которое меньше0x08001fffffffffff
или больше0x08ff3b6db6db6db6
, функция возвращает H3_INVALID_CELL_ID. - Если значение
resolutionExpr
меньше максимального разрешения ячейки H3 во входном массиве или больше15
, функция возвращает H3_INVALID_RESOLUTION_VALUE.
Примеры
-- Example where the input is an ARRAY of BIGINTs
> SELECT h3_uncompact(ARRAY(599686030622195711,599686015589810175,599686014516068351,599686034917163007,599686029548453887,599686032769679359,599686198125920255,599686023106002943,599686027400970239,599686013442326527,599686012368584703,599686018811035647,595182446027210751), 5);
[599686030622195711,599686015589810175,599686014516068351,599686034917163007,599686029548453887,599686032769679359,599686198125920255,599686023106002943,599686027400970239,599686013442326527,599686012368584703,599686018811035647,599686038138388479,599686039212130303,599686040285872127,599686041359613951,599686042433355775,599686043507097599,599686044580839423]
-- In this example we verify that uncompacting the compacted set of the 2-ring of an H3 cell at the cell’s resolution returns the original 2-ring.
> SELECT COUNT(*) FROM ((SELECT explode(h3_uncompact(h3_compact(h3_kring(599686042433355775, 2)), h3_resolution(599686042433355775)))) MINUS (SELECT explode(h3_kring(599686042433355775, 2))))
0
-- Second input is an invalid resolution value.
> SELECT h3_uncompact(ARRAY(599686030622195711,599686015589810175,599686014516068351,599686034917163007,599686029548453887,599686032769679359,599686198125920255,599686023106002943,599686027400970239,599686013442326527,599686012368584703,599686018811035647,595182446027210751), 2);
[H3_INVALID_RESOLUTION_VALUE] H3 resolution 2 must be between 5 and 15, inclusive