posexplode
دالة منشئ قيم الجدول
ينطبق على: Databricks SQL Databricks Runtime
إرجاع مجموعة من الصفوف عن طريق إلغاء التداخل expr
مع ترقيم المواضع.
بناء الجملة
posexplode(expr)
الوسيطات
expr
: تعبيرARRAY
أوMAP
.
المرتجعات
مجموعة من الصفوف تتكون من الموضع وعناصر الصفيف أو مفاتيح الخريطة وقيمها.
تتم تسمية pos
الأعمدة التي ينتجها posexplode
صفيف باسم وcol
.
تسمى pos
أعمدة الخريطة وkey
.value
إذا expr
لم يتم NULL
إنتاج صفوف.
ينطبق على: Databricks Runtime 12.1 والإصدارات السابقة:
posexplode
يمكن وضعها فقط فيSELECT
القائمة كجذر لتعبير أو اتباع طريقة عرض LATERAL. عند وضع الدالة فيSELECT
القائمة، يجب ألا تكون هناك دالة مولد أخرى في نفسSELECT
القائمة أو UNSUPPORTED_GENERATOR. يتم رفع MULTI_GENERATOR.ينطبق على: Databricks SQL Databricks Runtime 12.2 LTS وما فوق:
يتم إهمال الاستدعاء من عبارة LATERAL VIEW أو
SELECT
القائمة. بدلا من ذلك، استدعposexplode
ك table_reference.
الأمثلة
ينطبق على: Databricks Runtime 12.1 والإصدارات السابقة:
> 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
ينطبق على: Databricks SQL Databricks Runtime 12.2 LTS وما فوق:
> 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