Função h3_compact
Aplica-se a: SQL do Databricks Databricks Runtime 11.3 LTS e versões posteriores
Compacta o conjunto de entrada de células H3. O conjunto compactado abrange o mesmo conjunto de células H3 que o original.
Sintaxe
h3_compact ( h3CellIdsExpr )
Argumentos
h3CellIdsExpr
: um ARRAY de expressões BIGINTs ou um ARRAY de expressões hexadecimais STRINGs que representam uma matriz de IDs de célula H3.
Retornos
Uma MATRIZ de IDs de célula H3 do mesmo tipo que os valores na expressão h3CellIdsExpr
ARRAY de entrada.
A função retornará NULL se a entrada for NULL.
A função faz validação parcial se o argumento de entrada for uma ID de célula H3 válida. Uma condição necessária, mas não suficiente para uma ID H3 válida, é que seu valor esteja entre 0x08001fffffffffff
e 0x08ff3b6db6db6db6
.
O comportamento da função é indefinido se algum dos IDs de célula no ARRAY de entrada não for um ID de célula válido.
Os valores NULL na matriz de entrada são ignorados.
Condições de erro
- Se
h3CellIdExpr
for uma STRING que não pode ser convertida em um BIGINT ou corresponde a um valor BIGINT menor que0x08001fffffffffff
ou maior que0x08ff3b6db6db6db6
, a função retorna H3_INVALID_CELL_ID.
Exemplos
-- 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