Funkcja h3_compact
Dotyczy: Databricks SQL Databricks Runtime 11.3 LTS i nowsze
Kompaktuje zestaw wejściowy komórek H3. Zwarty zestaw obejmuje ten sam zestaw komórek H3 co oryginalny.
Składnia
h3_compact ( h3CellIdsExpr )
Argumenty
h3CellIdsExpr
: Tablica wyrażenia BIGINTs lub tablica szesnastkowe wyrażenie STRINGs reprezentujące tablicę identyfikatorów komórek H3.
Zwraca
Tablica identyfikatorów komórek H3 tego samego typu co wartości w wyrażeniu h3CellIdsExpr
ARRAY wejściowego .
Funkcja zwraca wartość NULL, jeśli dane wejściowe mają wartość NULL.
Funkcja wykonuje częściową walidację dotyczącą tego, czy argument wejściowy jest prawidłowym identyfikatorem komórki H3. Wymagany, ale nie wystarczający warunek prawidłowego identyfikatora H3 jest taki, że jego wartość mieści się między 0x08001fffffffffff
i 0x08ff3b6db6db6db6
.
Zachowanie funkcji jest niezdefiniowane, jeśli którykolwiek z identyfikatorów komórek w tablicy wejściowej nie jest prawidłowym identyfikatorem komórki.
Wartości NULL w tablicy wejściowej są ignorowane.
Warunki błędu
- Jeśli
h3CellIdExpr
jest ciągiem, którego nie można przekonwertować na BIGINT lub odpowiada wartości BIGINT, która jest mniejsza lub większa niż0x08001fffffffffff
0x08ff3b6db6db6db6
, funkcja zwraca H3_INVALID_CELL_ID.
Przykłady
-- 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