Aracılığıyla paylaş


tablo-değeri üreten posexplode fonksiyonu

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş 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: Bir ARRAY veya MAP 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 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:onay işareti evet olarak işaretlenmiş Databricks Runtime 12.1 ve öncesi:

    posexplode yalnızca SELECT listesine bir ifadenin kökü olarak ya da bir LATERAL VIEW'nin ardından yerleştirilebilir. İşlevi SELECT 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:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş 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:onay işareti evet olarak işaretlenmiş 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:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş 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