EXPLICAR

Aplica-se a:verificar a verificação sim Databricks SQL marcada como sim Databricks Runtime

Fornece os planos lógicos ou físicos para uma instrução de entrada. Por predefinição, esta cláusula fornece informações apenas sobre um plano físico.

Sintaxe

EXPLAIN [ EXTENDED | CODEGEN | COST | FORMATTED ] statement

Parâmetros

  • EXPANDIDO

    Gera um plano lógico analisado, um plano lógico analisado, um plano lógico otimizado e um plano físico. O plano Lógico Analisado é um plano não resolvido que foi extraído da consulta. Os planos lógicos analisados transformam o que traduz não resolvidoAttribute e não resolvidoRelation em objetos totalmente digitados. O plano lógico otimizado transforma-se através de um conjunto de regras de otimização, resultando no plano físico.

  • CODEGEN

    Gera código para a instrução, se existir e um plano físico.

  • CUSTO

    Se estiverem disponíveis estatísticas de nós de plano, gera um plano lógico e as estatísticas.

  • FORMATADO

    Gera duas secções: um destaque do plano físico e detalhes do nó.

  • instrução

    Uma instrução SQL a ser explicada.

Exemplos

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