MENJELASKAN

Berlaku untuk:centang ditandai ya pemeriksaan Databricks SQL ditandai ya Databricks Runtime

Menyediakan rencana logis atau fisik untuk pernyataan input. Secara default, klausa ini hanya menyediakan informasi tentang paket fisik.

Sintaks

EXPLAIN [ EXTENDED | CODEGEN | COST | FORMATTED ] statement

Parameter

  • DIPERPANJANG

    Menghasilkan rencana logis yang diurai, rencana logis yang dianalisis, rencana logis yang dioptimalkan, dan rencana fisik. Rencana Logis terurai adalah rencana yang belum terselesaikan yang diekstrak dari kueri. Rencana logis yang dianalisis mengubah yang menerjemahkan unresolvedAttribute dan unresolvedRelation menjadi objek yang sepenuhnya diketik. Rencana logis yang dioptimalkan berubah melalui serangkaian aturan pengoptimalan, menghasilkan rencana fisik.

  • CODEGEN

    Menghasilkan kode untuk pernyataan, jika ada dan rencana fisik.

  • BIAYA

    Jika statistik simpul paket tersedia, menghasilkan rencana logis dan statistik.

  • DIFORMAT

    Menghasilkan dua bagian: kerangka rencana fisik dan detail simpul.

  • Pernyataan

    Pernyataan SQL yang akan dijelaskan.

Contoh

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