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.
tablo-değeri üreten
Şunlar için geçerlidir:
Databricks SQL
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: BirARRAYveyaMAPifadesi.
İ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.
collection işlevini kullanarak NULL olduğunda hiç satır döndürmek için.
Şunlar için geçerlidir:
Databricks Runtime 12.1 ve öncesi:explode_outeryalnızcaSELECTlistesine bir ifadenin kökü olarak ya da bir LATERAL VIEW'nin ardından yerleştirilebilir. İşleviSELECTlistesine yerleştirirken, aynıSELECTlistesinde veya UNSUPPORTED_GENERATOR listesinde başka bir oluşturucu işlev olmamalıdır, aksi halde MULTI_GENERATOR hatası oluşur.Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri:LATERAL VIEW yan tümcesinden veya
SELECTlistesinden çağrı kullanım dışı bırakıldı. Bunun yerineexplode_outertable_reference’ı çağırın.
Örnekler
Şunlar için geçerlidir:
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:
Databricks SQL
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