ANALISIS TABEL

Berlaku untuk:check marked yes Databricks SQL check marked yes Databricks Runtime

Pernyataan ini ANALYZE TABLE mengumpulkan statistik tentang tabel tertentu atau semua tabel dalam skema tertentu. Statistik ini digunakan oleh pengoptimal kueri untuk menghasilkan rencana kueri yang optimal. Karena dapat menjadi kedaluarsa saat data berubah, statistik ini tidak digunakan untuk menjawab kueri secara langsung. Statistik kedaluarsa masih berguna untuk pengoptimal kueri saat membuat rencana kueri.

Sintaks

ANALYZE TABLE table_name [ PARTITION clause ]
    COMPUTE [ DELTA ] STATISTICS [ NOSCAN | FOR COLUMNS col1 [, ...] | FOR ALL COLUMNS ]

ANALYZE TABLES [ { FROM | IN } schema_name ] COMPUTE STATISTICS [ NOSCAN ]

Parameter

  • table_name

    Mengidentifikasi tabel yang akan dianalisis. Nama tidak boleh menyertakan spesifikasi atau jalur temporal. Jika tabel tidak dapat ditemukan, Azure Databricks menimbulkan kesalahan TABLE_OR_VIEW_NOT_FOUND .

  • Klausul PARTISI

    Secara opsional membatasi perintah ke subset partisi.

    Klausul ini tidak didukung untuk tabel Delta Lake.

  • DELTA

    Berlaku untuk:check marked yes Databricks Runtime 14.3 LTS ke atas

    Komputasi ulang statistik yang disimpan di log Delta untuk kolom yang dikonfigurasi untuk koleksi statistik dalam tabel Delta.

    DELTA Ketika kata kunci ditentukan, statistik normal untuk pengoptimal kueri tidak dikumpulkan.

    Databricks merekomendasikan untuk berjalan ANALYZE TABLE table_name COMPUTE DELTA STATISTICS setelah mengatur kolom baru untuk melewatkan data untuk memperbarui statistik untuk semua baris dalam tabel. Untuk performa yang dioptimalkan, jalankan ANALYZE TABLE table_name COMPUTE STATISTICS untuk memperbarui rencana kueri setelah pembaruan log Delta selesai.

  • [ NOSCAN | FOR COLUMNS col [, …] | FOR ALL COLUMNS ]

    Jika tidak ada opsi analisis yang ditentukan, ANALYZE TABLE akan mengumpulkan jumlah baris dan ukuran tabel dalam byte.

    • NOSCAN

      Hanya mengumpulkan ukuran tabel dalam byte (yang tidak memerlukan pemindaian seluruh tabel).

    • FOR COLUMNS col [, …] | FOR ALL COLUMNS

      Mengumpulkan statistik kolom untuk setiap kolom yang ditentukan, atau untuk setiap kolom, serta statistik tabel.

      Statistik kolom tidak didukung dalam kombinasi dengan klausul PARTITION.

  • { FROM | IN } schema_name

    Menentukan nama skema yang akan dianalisis. Tanpa nama skema, ANALYZE TABLES mengumpulkan semua tabel dalam skema saat ini yang dapat dianalisis oleh pengguna saat ini yang memiliki izin.

Contoh

> CREATE TABLE students (name STRING, student_id INT) PARTITIONED BY (student_id);
> INSERT INTO students PARTITION (student_id = 111111) VALUES ('Mark');
> INSERT INTO students PARTITION (student_id = 222222) VALUES ('John');

> ANALYZE TABLE students COMPUTE STATISTICS NOSCAN;

> DESC EXTENDED students;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           student_id                  int    null
                  ...                  ...     ...
           Statistics            864 bytes
                  ...                  ...     ...

> ANALYZE TABLE students COMPUTE STATISTICS;

> DESC EXTENDED students;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           student_id                  int    null
                  ...                  ...     ...
           Statistics    864 bytes, 2 rows
                  ...                  ...     ...

-- Note: ANALYZE TABLE .. PARTITION is not supported for Delta tables.
> ANALYZE TABLE students PARTITION (student_id = 111111) COMPUTE STATISTICS;

> DESC EXTENDED students PARTITION (student_id = 111111);
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           student_id                  int    null
                  ...                  ...     ...
 Partition Statistics    432 bytes, 1 rows
                  ...                  ...     ...
         OutputFormat org.apache.hadoop...

> ANALYZE TABLE students COMPUTE STATISTICS FOR COLUMNS name;

> DESC EXTENDED students name;
      info_name info_value
 -------------- ----------
       col_name       name
      data_type     string
        comment       NULL
            min       NULL
            max       NULL
      num_nulls          0
 distinct_count          2
    avg_col_len          4
    max_col_len          4
      histogram       NULL

> ANALYZE TABLES IN school_schema COMPUTE STATISTICS NOSCAN;
> DESC EXTENDED teachers;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           teacher_id                  int    null
                  ...                  ...     ...
           Statistics           1382 bytes
                  ...                  ...     ...

> DESC EXTENDED students;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           student_id                  int    null
                  ...                  ...     ...
           Statistics            864 bytes
                  ...                  ...     ...

> ANALYZE TABLES COMPUTE STATISTICS;
> DESC EXTENDED teachers;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           teacher_id                  int    null
                  ...                  ...     ...
           Statistics   1382 bytes, 2 rows
                  ...                  ...     ...

> DESC EXTENDED students;
             col_name            data_type comment
 -------------------- -------------------- -------
                 name               string    null
           student_id                  int    null
                  ...                  ...     ...
           Statistics    864 bytes, 2 rows
                  ...                  ...     ...

> ANALYZE TABLE some_delta_table COMPUTE DELTA STATISTICS;