EXPLAIN

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

يوفر الخطط المنطقية أو المادية لبيان إدخال. بشكل افتراضي، توفر هذه العبارة معلومات حول خطة فعلية فقط.

بناء الجملة

EXPLAIN [ EXTENDED | CODEGEN | COST | FORMATTED ] statement

المعلمات

  • ممتد

    إنشاء خطة منطقية محللة، خطة منطقية تم تحليلها، خطة منطقية محسنة وخطة فعلية. الخطة المنطقية التي تم تحليلها هي خطة لم يتم حلها تم استخراجها من الاستعلام. تحول الخطط المنطقية التي تم تحليلها ما يترجم لم يتم حلهAttribute وsosedRelation إلى كائنات مكتوبة بالكامل. تتحول الخطة المنطقية المحسنة من خلال مجموعة من قواعد التحسين، ما يؤدي إلى الخطة الفعلية.

  • CODEGEN

    إنشاء تعليمة برمجية للبيان، إن وجدت وخطة فعلية.

  • كلف

    إذا كانت إحصائيات عقدة الخطة متوفرة، ينشئ خطة منطقية والإحصائيات.

  • تنسيق

    إنشاء قسمين: مخطط تفصيلي فعلي وتفاصيل العقدة.

  • بيان

    عبارة SQL التي سيتم شرحها.

الأمثلة

-- Default Output
> EXPLAIN select k, sum(v) from values (1, 2), (1, 3) t(k, v) group by k;
+----------------------------------------------------+
|                                                plan|
+----------------------------------------------------+
| == Physical Plan ==
 *(2) HashAggregate(keys=[k#33], functions=[sum(cast(v#34 as bigint))])
 +- Exchange hashpartitioning(k#33, 200), true, [id=#59]
    +- *(1) HashAggregate(keys=[k#33], functions=[partial_sum(cast(v#34 as bigint))])
       +- *(1) LocalTableScan [k#33, v#34]
|
+----------------------------------------------------

-- Using Extended
> EXPLAIN EXTENDED select k, sum(v) from values (1, 2), (1, 3) t(k, v) group by k;
+----------------------------------------------------+
|                                                plan|
+----------------------------------------------------+
| == Parsed Logical Plan ==
 'Aggregate ['k], ['k, unresolvedalias('sum('v), None)]
 +- 'SubqueryAlias `t`
    +- 'UnresolvedInlineTable [k, v], [List(1, 2), List(1, 3)]

 == Analyzed Logical Plan ==
 k: int, sum(v): bigint
 Aggregate [k#47], [k#47, sum(cast(v#48 as bigint)) AS sum(v)#50L]
 +- SubqueryAlias `t`
    +- LocalRelation [k#47, v#48]

 == Optimized Logical Plan ==
 Aggregate [k#47], [k#47, sum(cast(v#48 as bigint)) AS sum(v)#50L]
 +- LocalRelation [k#47, v#48]

 == Physical Plan ==
 *(2) HashAggregate(keys=[k#47], functions=[sum(cast(v#48 as bigint))], output=[k#47, sum(v)#50L])
+- Exchange hashpartitioning(k#47, 200), true, [id=#79]
   +- *(1) HashAggregate(keys=[k#47], functions=[partial_sum(cast(v#48 as bigint))], output=[k#47, sum#52L])
    +- *(1) LocalTableScan [k#47, v#48]
|
+----------------------------------------------------+

-- Using Formatted
> EXPLAIN FORMATTED select k, sum(v) from values (1, 2), (1, 3) t(k, v) group by k;
+----------------------------------------------------+
|                                                plan|
+----------------------------------------------------+
| == Physical Plan ==
 * HashAggregate (4)
 +- Exchange (3)
    +- * HashAggregate (2)
       +- * LocalTableScan (1)

 (1) LocalTableScan [codegen id : 1]
 Output: [k#19, v#20]

 (2) HashAggregate [codegen id : 1]
 Input: [k#19, v#20]

 (3) Exchange
 Input: [k#19, sum#24L]

 (4) HashAggregate [codegen id : 2]
 Input: [k#19, sum#24L]
|
+----------------------------------------------------+