مشاركة عبر


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

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

إرجاع مجموعة من الصفوف عن طريق إلغاء التداخل collection.

في Databricks SQL وDatabricks Runtime 13.3 LTS وما فوق تدعم هذه الدالة استدعاء المعلمة المسماة.

بناء الجملة

explode(collection)

الوسيطات

  • collection: تعبير ARRAY أو MAP .

المرتجعات

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

إذا collection لم يتم NULL إنتاج صفوف. لإرجاع صف واحد مع NULLs لقيم الصفيف أو الخريطة، استخدم الدالة explode_outer().

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

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

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

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

الأمثلة

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

> SELECT explode(array(10, 20)) AS elem, 'Spark';
 10 Spark
 20 Spark

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

> SELECT explode(array(1, 2)), explode(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(array(10, 20)) AS t(elem);
 10 Spark
 20 Spark

> SELECT num, val, 'Spark' FROM explode(map(1, 'a', 2, 'b')) AS t(num, val);
 1   a   Spark
 2   b   Spark

> SELECT * FROM explode(array(1, 2)), explode(array(3, 4));
 1   3
 1   4
 2   3
 2   4

-- Using lateral correlation in Databricks 12.2 and above
> SELECT * FROM explode(array(1, 2)) AS t, LATERAL explode(array(3 * t.col, 4 * t.col));
 1   3
 1   4
 2   6
 2   8