ANALYZE TABLE

Se aplica a:check marked yes Databricks SQL check marked yes Databricks Runtime

La instrucción ANALYZE TABLE recopila estadísticas sobre una tabla específica o sobre todas las tablas de un esquema especificado. El optimizador de consultas usa estas estadísticas para generar un plan de consulta óptimo. Dado que pueden quedar obsoletas al cambiar los datos, estas estadísticas no se usan para responder directamente a las consultas. Las estadísticas obsoletas siguen siendo útiles para el optimizador de consultas al crear un plan de consulta.

Sintaxis

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 ]

Parámetros

  • table_name

    Identifica la tabla que se va a analizar. El nombre no debe incluir una especificación temporal ni una ruta de acceso. Si no se encuentra la tabla, Azure Databricks genera un error TABLE_OR_VIEW_NOT_FOUND.

  • Cláusula PARTITION

    Puede limitar el comando a un subconjunto de particiones.

    Esta cláusula no es compatible con tablas de Delta Lake.

  • DELTA

    Se aplica a:check marked yes Databricks Runtime 14.3 LTS y versiones posteriores

    Vuelve a calcular las estadísticas almacenadas en el registro Delta para las columnas configuradas para la recopilación de estadísticas en una tabla Delta.

    Cuando se especifica la palabra clave DELTA, no se recopilan estadísticas normales del optimizador de consultas.

    Databricks recomienda ejecutar ANALYZE TABLE table_name COMPUTE DELTA STATISTICS después de configurar nuevas columnas a fin de omitir datos para actualizar las estadísticas de todas las filas de una tabla. Para optimizar el rendimiento, ejecute ANALYZE TABLE table_name COMPUTE STATISTICS a fin de actualizar el plan de consulta una vez completada la actualización del registro Delta.

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

    Si no se especifica ninguna opción de análisis, ANALYZE TABLE recopila el número de filas y el tamaño en bytes de la tabla.

    • NOSCAN

      Recopila solo el tamaño en bytes de la tabla (para lo que no se requiere examinar toda la tabla).

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

      Recopila estadísticas de columna para cada columna especificada o, como alternativa, para cada columna, así como estadísticas de tabla.

      Las estadísticas de columna no se admiten en combinación con la cláusula PARTITION.

  • { FROM | IN } schema_name

    Especifica el nombre del esquema que se va a analizar. Sin un nombre de esquema, ANALYZE TABLES recopila todas las tablas del esquema actual para el que el usuario actual tiene permiso de analizar.

Ejemplos

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