Funkcja h3_uncompact
Dotyczy: Databricks SQL Databricks Runtime 11.3 LTS i nowsze
Niekompaktuje zestawu danych wejściowych komórek H3 do określonej rozdzielczości. Zestaw niekompaktorowany obejmuje ten sam zestaw komórek H3 co oryginalny, używając komórek w określonej rozdzielczości.
Składnia
h3_uncompact ( h3CellIdsExpr, resolutionExpr )
Argumenty
h3CellIdsExpr
: Tablica wyrażenia BIGINTs lub tablica szesnastkowe wyrażenie STRINGs reprezentujące tablicę identyfikatorów komórek H3.resolutionExpr
: Wyrażenie INTEGER, którego wartość powinna należeć do maksymalnej rozdzielczości wejściowych komórek H3 i15
włącznie, określając rozdzielczość identyfikatorów komórek H3 w tablicy wyjściowej.
Zwraca
Tablica wartości tego samego typu co wartości w wyrażeniu h3cellIdsExpr
tablicy wejściowej . Rozdzielczość identyfikatorów komórek H3 w wyjściowej tablicy jest równa wartości resolutionExpr
.
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. - Jeśli
resolutionExpr
jest mniejsza niż maksymalna rozdzielczość komórki H3 w tablicy wejściowej lub większej niż15
, funkcja zwraca H3_INVALID_RESOLUTION_VALUE.
Przykłady
-- 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