posexplode_outer دالة منشئ قيم الجدول

ينطبق على:وضع علامة Databricks SQL وضع علامة Databricks Runtime

إرجاع الصفوف عن طريق إلغاء تداخل الصفيف مع ترقيم المواضع باستخدام OUTER الدلالات.

بناء الجملة

posexplode_outer(expr)

الوسيطات

  • expr: صفيف أو تعبير MAP.

المرتجعات

مجموعة من الصفوف تتكون من الموضع وعناصر الصفيف أو مفاتيح الخريطة وقيمها. تتم تسمية pos الأعمدة التي ينتجها posexplode_outer صفيف باسم وcol. تسمى posأعمدة الخريطة وkey.value

إذا كان expr ، NULLصفا واحدا مع NULLs لقيم الصفيف أو الخريطة.

  • ينطبق على:وضع علامة Databricks Runtime 12.1 والإصدارات السابقة:

    posexplode_outer يمكن وضعها فقط في SELECT القائمة كجذر لتعبير أو اتباع طريقة عرض LATERAL. عند وضع الدالة في SELECT القائمة، يجب ألا تكون هناك دالة مولد أخرى في نفس SELECT القائمة أو UNSUPPORTED_GENERATOR. يتم رفع MULTI_GENERATOR.

  • ينطبق على:وضع علامة Databricks SQL وضع علامة Databricks Runtime 12.2 LTS وما فوق:

    يتم إهمال الاستدعاء من عبارة LATERAL VIEW أو SELECT القائمة. بدلا من ذلك، استدع posexplode_outer ك table_reference.

الأمثلة

ينطبق على:وضع علامة Databricks Runtime 12.1 والإصدارات السابقة:

> SELECT posexplode_outer(array(10, 20)) AS elem, 'Spark';
 0  10 Spark
 1  20 Spark

> SELECT posexplode_outer(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
 0  1   a   Spark
 1  2   b   Spark

> SELECT posexplode_outer(array(1, 2)), posexplode_outer(array(3, 4));
  Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR

ينطبق على:وضع علامة Databricks SQL وضع علامة Databricks Runtime 12.2 LTS وما فوق:

> SELECT pos, col FROM posexplode_outer(array(10, 20));
 0  10
 1  20

> SELECT pos, key, value FROM posexplode_outer(map(10, 'a', 20, 'b'));
 0  10   a
 1  22   b

> SELECT p1.*, p2.* FROM posexplode_outer(array(1, 2)) AS p1, posexplode_outer(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_outer(array(1, 2)) AS p1, LATERAL posexplode_outer(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