explode_outer
دالة منشئ قيم الجدول
ينطبق على: Databricks SQL Databricks Runtime
إرجاع مجموعة من الصفوف عن طريق إلغاء التداخل collection
باستخدام الدلالات الخارجية.
في Databricks SQL وDatabricks Runtime 13.3 LTS وما فوق تدعم هذه الدالة استدعاء المعلمة المسماة.
بناء الجملة
explode_outer(collection)
الوسيطات
collection
: تعبيرARRAY
أوMAP
.
المرتجعات
مجموعة من الصفوف تتكون من عناصر الصفيف أو مفاتيح وقيم الخريطة.
يسمى col
العمود الذي تم إنتاجه بواسطة explode_outer
صفيف .
تسمى key
أعمدة الخريطة و value
.
NULL
إذا كان collection
صفا واحدا مع NULL
s لقيم الصفيف أو الخريطة يتم إنتاجه.
ينطبق على: Databricks Runtime 12.1 والإصدارات السابقة:
explode_outer
يمكن وضعها فقط فيSELECT
القائمة كجذر لتعبير أو اتباع طريقة عرض LATERAL. عند وضع الدالة فيSELECT
القائمة، يجب ألا تكون هناك دالة مولد أخرى في نفسSELECT
القائمة أو UNSUPPORTED_GENERATOR. يتم رفع MULTI_GENERATOR.ينطبق على: Databricks SQL Databricks Runtime 12.2 LTS وما فوق:
يتم إهمال الاستدعاء من عبارة LATERAL VIEW أو
SELECT
القائمة. بدلا من ذلك، استدعexplode_outer
ك table_reference.
الأمثلة
ينطبق على: Databricks Runtime 12.1 والإصدارات السابقة:
> SELECT explode_outer(array(10, 20)) AS elem, 'Spark';
10 Spark
20 Spark
> SELECT explode_outer(collection => array(10, 20)) AS elem, 'Spark';
10 Spark
20 Spark
> SELECT explode_outer(map(1, 'a', 2, 'b')) AS (num, val), 'Spark';
1 a Spark
2 b Spark
> SELECT explode_outer(cast(NULL AS array<int>)), 'Spark';
NULL Spark
> SELECT explode_outer(array(1, 2)), explode_outer(array(3, 4));
Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR
ينطبق على: Databricks SQL Databricks Runtime 12.2 LTS وما فوق:
> SELECT elem, 'Spark' FROM explode_outer(array(10, 20)) AS t(elem);
10 Spark
20 Spark
> SELECT num, val, 'Spark' FROM explode_outer(map(1, 'a', 2, 'b')) AS t(num, val);
1 a Spark
2 b Spark
> SELECT * FROM explode_outer(array(1, 2)), explode_outer(array(3, 4));
1 3
1 4
2 3
2 4
> SELECT * FROM explode_outer(cast(NULL AS array<int>));
NULL
-- Using lateral correlation in Databricks 12.2 and above
> SELECT * FROM explode_outer(array(1, 2)) AS t, LATERAL explode_outer(array(3 * t.col, 4 * t.col));
1 3
1 4
2 6
2 8