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
: BirARRAY
veyaMAP
ifadesi.
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 col
olarak adlandırılır.
Haritanın sütunları pos
, key
ve value
olarak adlandırılır.
Değilse collection
NULL
, satır üretilmemiştir.
Şunlar için geçerlidir:
Databricks Runtime 12.1 ve öncesi:
posexplode
yalnızcaSELECT
listesine bir ifadenin kökü olarak ya da bir LATERAL VIEW'nin ardından 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ı oluşturulur.Şunlar için geçerlidir:
Databricks SQL
Databricks Runtime 12.2 LTS ve üzeri:
LATERAL VIEW yan tümcesinden veya
SELECT
listesinden 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