Udostępnij za pomocą


explode_outer funkcja generatora wartości tabeli

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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 LTS i nowszych ta funkcja obsługuje wywołanie nazwanych parametrów.

Składnia

explode_outer(collection)

Argumenty

  • collection: wyrażenie ARRAY lub MAP .

Zwraca

Zestaw wierszy składający się z elementów tablicy lub kluczy i wartości mapy. Kolumna utworzona przez explode_outer tablicy nosi nazwę col. Kolumny mapy są nazywane key i value.

Jeśli collection jest NULL pojedynczym wierszem z NULL dla wartości tablicy lub mapy, jest generowany. Aby nie zwracać żadnych wierszy, gdy collection jest NULL, użyj funkcji explode().

  • Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks Runtime 12.1 i starsze:

    explode_outer można umieścić tylko na liście SELECT jako początek wyrażenia lub po LATERAL VIEW. Podczas umieszczania funkcji na liście SELECT nie może istnieć żadna inna funkcja generatora na tej samej liście SELECT albo zostanie zgłoszony błąd UNSUPPORTED_GENERATOR.MULTI_GENERATOR.

  • Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 12.2 LTS i nowsze:

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

Przykłady

Dotyczy:zaznacz pole wyboru oznaczone jako tak 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

-- The difference between explode() and explode_outer() is that explode_outer() returns NULL if the array is NULL.
> SELECT explode_outer(c1) AS elem, 'Spark' FROM VALUES(array(10, 20)), (null) AS T(c1);
 10   Spark
 20   Spark
 NULL Spark

> SELECT explode(c1) AS elem, 'Spark' FROM VALUES(array(10, 20)), (null) AS T(c1);
 10 Spark
 20 Spark

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 12.2 LTS 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