Aracılığıyla paylaş


tablo-değeri üreten explode_outer fonksiyonu

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

Dış semantikleri kullanarak collection'ın iç içelikten çıkarılmasıyla satırların bir kümesini döndürür.

Databricks SQL ve Databricks Runtime 13.3 LTS ve üzerinde bu işlev adlandırılmış parametre çağırmayı destekler.

Söz dizimi

explode_outer(collection)

Argümanlar

  • collection: Bir ARRAY veya MAP ifadesi.

İadeler

Dizinin öğelerinden veya eşlemenin anahtarlarından ve değerlerinden oluşan bir satır kümesi. Bir dizinin explode_outer tarafından üretilen sütun cololarak adlandırılır. Bir haritanın sütunları key ve valueolarak adlandırılır.

collection NULL olduğunda, dizi veya eşleme değerleri için NULLiçeren tek bir satır üretilir. explode() işlevini kullanarak collectionNULL olduğunda hiç satır döndürmek için.

Örnekler

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks Runtime 12.1 ve öncesi:

> 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

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 12.2 LTS ve üzeri:

> 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