إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على:
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 صفا واحدا مع NULLs لقيم الصفيف أو الخريطة يتم إنتاجه.
لإرجاع أي صفوف عند collection NULL استخدام الدالة explode().
ينطبق على:
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
-- The difference between explode() and explode_outer() is that explode_outer() returns NULL if the array is NULL.
> SELECT explode_outer(c1) AS elem, 'Spark' FROM VALUES(array(10, 20)), (null) AS T(c1);
10 Spark
20 Spark
NULL Spark
> SELECT explode(c1) AS elem, 'Spark' FROM VALUES(array(10, 20)), (null) AS T(c1);
10 Spark
20 Spark
ينطبق على:
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