Udostępnij za pośrednictwem


EXPLAIN

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Udostępnia plany logiczne lub fizyczne dla instrukcji wejściowej. Domyślnie ta klauzula zawiera informacje dotyczące tylko planu fizycznego.

Składnia

EXPLAIN [ EXTENDED | CODEGEN | COST | FORMATTED ] statement

Parametry

  • ROZSZERZONE

    Generuje przeanalizowany plan logiczny, przeanalizowany plan logiczny, zoptymalizowany plan logiczny i plan fizyczny. Przeanalizowany plan logiczny to nierozwiązany plan wyodrębniony z zapytania. Przeanalizowane plany logiczne przekształcają nierozwiązane atrybutyAttribute i nierozwiązaneRelation na w pełni typizowane obiekty. Zoptymalizowany plan logiczny przekształca się za pomocą zestawu reguł optymalizacji, co powoduje utworzenie planu fizycznego.

  • CODEGEN

    Generuje kod instrukcji , jeśli istnieje i plan fizyczny.

  • KOSZT

    Jeśli są dostępne statystyki węzłów planu, generuje plan logiczny i statystyki.

  • SFORMATOWANY

    Generuje dwie sekcje: konspekt planu fizycznego i szczegóły węzła.

  • wypowiedź

    Objaśnienie instrukcji SQL.

Przykłady

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