Share via


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

iç içe collectionyerleştirerek 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)

Bağımsız değişkenler

  • collection: Bir ARRAY veya MAP ifadesi.

Döndürülenler

Dizinin öğelerinden veya eşlemenin anahtarlarından ve değerlerinden oluşan bir satır kümesi. Bir dizi tarafından explode üretilen sütun olarak adlandırılır col. Bir haritanın sütunları ve valueolarak adlandırılırkey.

Değilse collectionNULL , satır üretilmemiştir.

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

    explodeyalnızca bir ifadenin SELECT kökü olarak veya yanAL GÖRÜNÜM'ün ardından listeye yerleştirilebilir. İşlevi SELECT listeye yerleştirirken, aynı SELECT listede veya UNSUPPORTED_GENERATOR başka bir oluşturucu işlevi olmamalıdır. MULTI_GENERATOR 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 listeden SELECT çağrı kullanım dışı bırakıldı. Bunun yerine table_reference olarak çağırabilirsinizexplode.

Ö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

Ş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