ANALYZE TABLE

Gäller för:check marked yes Databricks SQL check marked yes Databricks Runtime

Instruktionen ANALYZE TABLE samlar in statistik om en specifik tabell eller alla tabeller i ett angivet schema. Den här statistiken används av frågeoptimeraren för att generera en optimal frågeplan. Eftersom de kan bli inaktuella när data ändras används inte den här statistiken för att svara direkt på frågor. Inaktuell statistik är fortfarande användbart för frågeoptimeraren när du skapar en frågeplan.

Syntax

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 ]

Parametrar

  • Table_name

    Identifierar tabellen som ska analyseras. Namnet får inte innehålla en temporal specifikation eller sökväg. Om det inte går att hitta tabellen skapar Azure Databricks ett TABLE_OR_VIEW_NOT_FOUND fel.

  • PARTITION-sats

    Du kan också begränsa kommandot till en delmängd partitioner.

    Den här satsen stöds inte för Delta Lake-tabeller.

  • DELTA

    Gäller för:check marked yes Databricks Runtime 14.3 LTS och senare

    Beräknar om statistik som lagras i Delta-loggen för de kolumner som konfigurerats för statistikinsamling i en Delta-tabell.

    När nyckelordet DELTA har angetts samlas inte normal statistik för frågeoptimeraren in.

    Databricks rekommenderar att du kör ANALYZE TABLE table_name COMPUTE DELTA STATISTICS efter att du har angett nya kolumner för data som hoppar över för att uppdatera statistik för alla rader i en tabell. För optimerad prestanda kör du ANALYZE TABLE table_name COMPUTE STATISTICS för att uppdatera frågeplanen när deltalogguppdateringen har slutförts.

  • [ NOSCAN | FÖR KOLUMNER col [, ...] | FÖR ALLA KOLUMNER ]

    Om inget analysalternativ har angetts ANALYZE TABLE samlar du in tabellens antal rader och storlek i byte.

    • NOSCAN

      Samla endast in tabellens storlek i byte (vilket inte kräver genomsökning av hela tabellen ).

    • FÖR KOLUMNER col [, ...] | FÖR ALLA KOLUMNER

      Samla in kolumnstatistik för varje angiven kolumn, eller alternativt för varje kolumn, samt tabellstatistik.

      Kolumnstatistik stöds inte i kombination med PARTITION -satsen.

  • { FRÅN | IN } schema_name

    Anger namnet på schemat som ska analyseras. Utan ett schemanamn ANALYZE TABLES samlar du in alla tabeller i det aktuella schemat som den aktuella användaren har behörighet att analysera.

Exempel

> 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;