Aracılığıyla paylaş


explode tablo değerli oluşturucu işlevi

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

collection nin iç içe geçmiş yapısını açarak bir satır kümesi 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(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 tarafından üretilen sütun cololarak adlandırılır. Bir haritanın sütunları key ve valueolarak adlandırılır.

Eğer collectionNULL ise, satır üretilmez. Dizi veya eşleme değerleri için NULLolan tek bir satır döndürmek için explode_outer() işlevini kullanın.

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

    explode yalnızca bir ifadenin kökü olarak veya bir SELECT'nin ardından LATERAL VIEW listesine yerleştirilebilir. İşlevi SELECT listesine yerleştirirken, aynı SELECT listesinde başka bir oluşturucu işlevi olmamalıdır, aksi takdirde UNSUPPORTED_GENERATOR.MULTI_GENERATOR hatası yükseltilir.

  • Ş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:

    LATERAL VIEW yan tümcesinden veya SELECT listesinden çağrı kullanım dışı bırakıldı. Bunun yerine explode bir table_reference olarak çağırabilirsiniz.

Örnekler

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

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

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

> SELECT explode(array(1, 2)), explode(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(array(10, 20)) AS t(elem);
 10 Spark
 20 Spark

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

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

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