Delen via


EXPLAIN

Van toepassing op: vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Biedt de logische of fysieke plannen voor een invoerinstructie. Deze component bevat standaard alleen informatie over een fysiek plan.

Syntaxis

EXPLAIN [ EXTENDED | CODEGEN | COST | FORMATTED ] statement

Parameters

  • VERLENGD

    Genereert geparseerd logisch plan, geanalyseerd logisch plan, geoptimaliseerd logisch plan en fysiek plan. Geparseerd logisch plan is een onopgeloste plan dat is geëxtraheerd uit de query. Geanalyseerde logische plannen transformeren die unresolvedAttribute en unresolvedRelation omzetten in volledig getypte objecten. Het geoptimaliseerde logische plan transformeert via een set optimalisatieregels, wat resulteert in het fysieke plan.

  • CODEGEN

    Genereert code voor de instructie, indien van toepassing en een fysiek plan.

  • KOSTEN

    Als er statistieken over planknooppunten beschikbaar zijn, genereert u een logisch plan en de statistieken.

  • GEFORMATTEERD

    Hiermee worden twee secties gegenereerd: een overzicht van een fysiek plan en details van knooppunten.

  • verklaring

    Een SQL-instructie die moet worden uitgelegd.

Voorbeelden

-- 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]
|
+----------------------------------------------------+