explode_outer funkcja generatora wartości tabeli

Dotyczy:check marked yes Databricks SQL check marked yes Databricks Runtime

Zwraca zestaw wierszy przez anulowanie zagnieżdżania collection przy użyciu semantyki zewnętrznej.

W usługach Databricks SQL i Databricks Runtime 13.3 i nowszych ta funkcja obsługuje wywołanie nazwanych parametrów.

Składnia

explode_outer(collection)

Argumenty

  • collection: wyrażenie ARRAY lub MAP .

Powroty

Zestaw wierszy składający się z elementów tablicy lub kluczy i wartości mapy. Kolumna utworzona przez explode_outer tablicę ma nazwę col. Kolumny mapy są wywoływane i keyvalue.

Jeśli collection jest NULL pojedynczym wierszem z NULLs dla tablicy lub wartości mapy jest generowany.

  • Dotyczy:check marked yes Databricks Runtime 12.1 i starsze:

    explode_outer Można umieścić na SELECT liście tylko jako element główny wyrażenia lub po WIDOKU LATERAL. Podczas umieszczania funkcji na SELECT liście nie może istnieć żadna inna funkcja generatora na tej samej SELECT liście lub UNSUPPORTED_GENERATOR. MULTI_GENERATOR jest podniesiona .

  • Dotyczy:check marked yes Databricks SQL check marked yes Databricks Runtime 12.2 i nowsze:

    Wywołanie z klauzuli LATERAL VIEW lub SELECT lista jest przestarzała. Zamiast tego należy wywołać explode_outer jako table_reference.

Przykłady

Dotyczy:check marked yes Databricks Runtime 12.1 i starsze:

> SELECT explode_outer(array(10, 20)) AS elem, 'Spark';
 10 Spark
 20 Spark

> SELECT explode_outer(collection => array(10, 20)) AS elem, 'Spark';
 10 Spark
 20 Spark

> SELECT explode_outer(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
 1   a   Spark
 2   b   Spark

> SELECT explode_outer(cast(NULL AS array<int>)), 'Spark';
 NULL   Spark

> SELECT explode_outer(array(1, 2)), explode_outer(array(3, 4));
  Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR

Dotyczy:check marked yes Databricks SQL check marked yes Databricks Runtime 12.2 i nowsze:

> SELECT elem, 'Spark' FROM explode_outer(array(10, 20)) AS t(elem);
 10 Spark
 20 Spark

> SELECT num, val, 'Spark' FROM explode_outer(map(1, 'a', 2, 'b')) AS t(num, val);
 1   a   Spark
 2   b   Spark

> SELECT * FROM explode_outer(array(1, 2)), explode_outer(array(3, 4));
 1   3
 1   4
 2   3
 2   4

> SELECT * FROM explode_outer(cast(NULL AS array<int>));
 NULL

-- Using lateral correlation in Databricks 12.2 and above
> SELECT * FROM explode_outer(array(1, 2)) AS t, LATERAL explode_outer(array(3 * t.col, 4 * t.col));
 1   3
 1   4
 2   6
 2   8