ANALYZE TABLE

S’applique à :check marked yes Databricks SQL check marked yes Databricks Runtime

L’instruction ANALYZE TABLE collecte des statistiques sur une table spécifique ou sur toutes les tables d’un schéma spécifié. Ces statistiques sont utilisées par l’optimiseur de requêtes pour générer un plan de requête optimal. Parce qu’elles peuvent devenir obsolètes au fur et à mesure que les données changent, ces statistiques ne sont pas utilisées pour répondre directement aux demandes de renseignements. Les statistiques périmées restent utiles à l’optimiseur de requêtes lors de la création d’un plan de requête.

Syntaxe

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 ]

Paramètres

  • table_name

    Identifie la table à analyser. Le nom ne doit pas inclure une spécification temporelle ou un chemin d’accès. Si la table est introuvable, Azure Databricks génère une erreur TABLE_OR_VIEW_NOT_FOUND.

  • Clause PARTITION

    Limite éventuellement la commande à un sous-ensemble de partitions.

    Cette clause est uniquement prise en charge pour les tables Delta Lake.

  • DELTA

    S’applique à :check marked yes Databricks Runtime 14.3 LTS et versions ultérieures

    Recalcule les statistiques stockées dans le journal Delta pour les colonnes configurées pour la collecte de statistiques dans une table Delta.

    Lorsque le mot clé DELTA est spécifié, les statistiques normales pour l’optimiseur de requête ne sont pas collectées.

    Databricks recommande d’exécuter ANALYZE TABLE table_name COMPUTE DELTA STATISTICS après avoir défini de nouvelles colonnes pour ignorer les données, afin de mettre à jour les statistiques pour toutes les lignes d’une table. Pour optimiser les performances, exécutez ANALYZE TABLE table_name COMPUTE STATISTICS afin de mettre à jour le plan de requête une fois la mise à jour du journal Delta terminée.

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

    Si aucune option d’analyse n’est spécifiée, ANALYZE TABLE collecte le nombre de lignes et la taille de la table en octets.

    • NOSCAN

      Collecte uniquement la taille de la table en octets (ce qui ne nécessite pas l’analyse de la table entière).

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

      Collectez les statistiques de colonne pour chaque colonne spécifiée, ou une autre pour chaque colonne, ainsi que les statistiques de table.

      Les statistiques de colonne ne sont pas prises en charge en combinaison avec la clause PARTITION.

  • { FROM | IN } schema_name

    Spécifie le nom du schéma à analyser. Sans nom de schéma, ANALYZE TABLES collecte toutes les tables du schéma actuel que l’utilisateur actuel est autorisé à analyser.

Exemples

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