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
Konumların numaralandırmasıyla iç içe yerleştirerek expr bir satır kümesi döndürür.
Databricks SQL ve Databricks Runtime 16.1 ve sonrasında, bu işlev adlı parametre çağırmayıdestekler.
Söz dizimi
posexplode(collection)
Bağımsız değişkenler
-
collection: BirARRAYveyaMAPifadesi.
Döndürülenler
Dizinin konumundan ve öğelerinden veya eşlemenin anahtarlarından ve değerlerinden oluşan bir satır kümesi.
Bir dizinin posexplode tarafından üretilen sütunlar pos ve cololarak adlandırılır.
Haritanın sütunları pos, key ve valueolarak adlandırılır.
Değilse collectionNULL , satır üretilmemiştir.
Şunlar için geçerlidir:
Databricks Runtime 12.1 ve öncesi:posexplodeyalnızcaSELECTlistesine bir ifadenin kökü olarak ya da bir LATERAL VIEW'nin ardından yerleştirilebilir. İşleviSELECTlistesine yerleştirirken, aynıSELECTlistesinde 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
SELECTlistesinden yapılan çağrı kullanım dışı bırakılmıştır. Bunun yerine table_referenceposexplodeçağırabilirsiniz.
Örnekler
Şunlar için geçerlidir:
Databricks Runtime 12.1 ve öncesi:
> SELECT posexplode(array(10, 20)) AS elem, 'Spark';
0 10 Spark
1 20 Spark
> SELECT posexplode(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
0 1 a Spark
1 2 b Spark
> SELECT posexplode(array(1, 2)), posexplode(array(3, 4));
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri:
> SELECT pos, col FROM posexplode(array(10, 20));
0 10
1 20
> SELECT pos, key, value FROM posexplode(map(10, 'a', 20, 'b'));
0 10 a
1 22 b
> SELECT p1.*, p2.* FROM posexplode(array(1, 2)) AS p1, posexplode(array(3, 4)) AS p2;
0 1 0 3
0 1 1 4
1 2 0 3
1 2 1 4
-- Using lateral correlation in Databricks 12.2 and above
> SELECT p1.*, p2.* FROM posexplode(array(1, 2)) AS p1, LATERAL posexplode(array(3 * p1.col, 4 * p1.col)) AS p2;
0 1 0 3
0 1 1 4
1 2 0 6
1 2 1 8