Поделиться через


Функция 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