Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Databricks SQL
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
: BirARRAY
veyaMAP
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 col
olarak adlandırılır.
Bir haritanın sütunları key
ve value
olarak adlandırılır.
Eğer collection
NULL
ise, satır üretilmez. Dizi veya eşleme değerleri için NULL
olan tek bir satır döndürmek için explode_outer() işlevini kullanın.
Şunlar için geçerlidir:
Databricks Runtime 12.1 ve öncesi:
explode
yalnızca bir ifadenin kökü olarak veya birSELECT
'nin ardından LATERAL VIEW listesine yerleştirilebilir. İşleviSELECT
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:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri:
LATERAL VIEW yan tümcesinden veya
SELECT
listesinden çağrı kullanım dışı bırakıldı. Bunun yerineexplode
bir table_reference olarak çağırabilirsiniz.
Örnekler
Şunlar için geçerlidir: Databricks SQL
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: Databricks SQL
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