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


Функция h3_compact

Область применения: флажок Databricks SQL флажок Databricks Runtime 11.3 LTS и выше

Сжимает входной набор ячеек H3. Сжатый набор охватывает тот же набор ячеек H3, что и исходный.

Синтаксис

h3_compact ( h3CellIdsExpr )

Аргументы

  • h3CellIdsExpr: массив выражений BIGINTs или массив шестнадцатеричных выражений STRINGs, представляющих массив идентификаторов ячеек H3.

Возвраты

Массив идентификаторов ячеек H3 того же типа, что и значения во входном выражении ARRAY h3CellIdsExpr.

Функция возвращает значение NULL, если входные данные равны NULL. Функция выполняет частичную проверку, является ли входной аргумент действительным идентификатором ячейки H3. Необходимое, но недостаточное условие для допустимого идентификатора H3 заключается в том, что его значение находится в диапазоне от 0x08001fffffffffff до 0x08ff3b6db6db6db6. Поведение функции не определено, если какой-либо из идентификаторов ячеек во входном массиве не является допустимым идентификатором ячейки. Значения NULL во входном массиве игнорируются.

Условия ошибок

  • Если h3CellIdExpr — это строка, которая не может быть преобразована в BIGINT или соответствует значению BIGINT, которое меньше 0x08001fffffffffff или больше 0x08ff3b6db6db6db6, функция возвращает H3_INVALID_CELL_ID.

Примеры

-- Example where the input is an ARRAY of BIGINTs
> SELECT h3_compact(ARRAY(599686042433355775,599686030622195711,599686044580839423,599686038138388479,599686043507097599,599686015589810175,599686014516068351,599686034917163007,599686029548453887,599686032769679359,599686198125920255,599686040285872127,599686041359613951,599686039212130303,599686023106002943,599686027400970239,599686013442326527,599686012368584703,599686018811035647));
      [599686030622195711,599686015589810175,599686014516068351,599686034917163007,599686029548453887,599686032769679359,599686198125920255,599686023106002943,599686027400970239,599686013442326527,599686012368584703,599686018811035647,595182446027210751]

-- Example where the input is an ARRAY of hexadecimal STRINGs
> SELECT h3_compact(ARRAY('85283473fffffff', '85283447fffffff', '8528347bfffffff', '85283463fffffff', '85283477fffffff', '8528340ffffffff', '8528340bfffffff', '85283457fffffff', '85283443fffffff', '8528344ffffffff', '852836b7fffffff', '8528346bfffffff', '8528346ffffffff', '85283467fffffff', '8528342bfffffff', '8528343bfffffff', '85283407fffffff', '85283403fffffff', '8528341bfffffff'));
 [85283447fffffff, 8528340ffffffff, 8528340bfffffff, 85283457fffffff, 85283443fffffff, 8528344ffffffff, 852836b7fffffff, 8528342bfffffff, 8528343bfffffff, 85283407fffffff, 85283403fffffff, 8528341bfffffff, 8428347ffffffff]

-- Example where the input ARRAY consists of a single element (and thus cannot be compacted further).
> SELECT h3_compact(ARRAY('85283473fffffff'));
 [85283473fffffff]

-- Example where we compare the size of the 2-ring of an H3 cell with its compacted version.
> SELECT ARRAY_SIZE(h3_kring(599686042433355775, 2)), ARRAY_SIZE(h3_compact(h3_kring(599686042433355775, 2)))
 19 13

-- Example where one of the cell IDs is out of range.
> SELECT h3_compact(ARRAY(599686042433355775, 0))
  [H3_INVALID_CELL_ID] 0 is not a valid H3 cell ID