explode
tabledeğerli oluşturucu işlevi
Şunlar için geçerlidir: Databricks SQL
Databricks Runtime
collection
iç içe yerleştirmeyi açarak set satır sayısını geri 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
: BirARRAY
veyaMAP
ifadesi.
Döndürülenler
Dizinin öğelerinden veya anahtarların ve haritanın values oluşan satırların set.
Bir dizinin explode
tarafından üretilen columncol
olarak adlandırılır.
Haritanın columnskey
ve value
olarak adlandırılır.
Değilse collection
NULL
, satır üretilmemiştir. Dizi veya eşlem için NULL
ile tek bir satır döndürmek üzere valuesexplode_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 bir LATERAL VIEW'ü takip ederekSELECT
list içine yerleştirilebilir. İşleviSELECT
list yerleştirirken aynıSELECT
list veya 'te başka bir oluşturucu işlevi olmamalıdır, aksi takdirde UNSUPPORTED_GENERATOR.MULTI_GENERATOR hatası oluşturulur.Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri:
LATERAL VIEW yan tümcesinden veya
SELECT
list çağrılması artık önerilmemektedir. Bunun yerine table_referenceexplode
ç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