Schémas :

ACCOUNT_USAGE

Vue TABLE_PRUNING_HISTORY

Cette vue Account Usage peut être utilisée pour déterminer l’efficacité de l’élagage pour toutes les tables et pour comprendre comment l’ordre par défaut (naturel) des données d’une table affecte l’élagage.

Vous pouvez comparer le nombre de partitions élaguées (PARTITIONS_PRUNED) au nombre total de partitions analysées et élaguées (PARTITIONS_SCANNED + PARTITIONS_PRUNED).

Chaque ligne de cette vue représente l’historique des suppressions pour une table spécifique au cours d’un intervalle de temps donné. Les données sont agrégées par intervalle de temps et comprennent des informations sur le nombre d’analyses, les partitions analysées, les partitions supprimées, les lignes analysées et les lignes supprimées.

Vous pouvez également utiliser cette vue pour comparer les effets sur l’élagage avant et après l’activation du clustering automatique et de l”optimisation de la recherche pour une table.

Voir aussi Vue TABLE_QUERY_PRUNING_HISTORY et Vue COLUMN_QUERY_PRUNING_HISTORY.

Colonnes

Nom de la colonne

Type de données

Description

START_TIME

TIMESTAMP_LTZ

Début de l’intervalle de temps (sur le repère horaire) pendant lequel les requêtes ont été exécutées et complétées.

END_TIME

TIMESTAMP_LTZ

Fin de l’intervalle de temps (sur le repère horaire) pendant lequel les requêtes ont été exécutées et terminées.

TABLE_ID

NUMBER

Identificateur interne/généré par le système pour la table qui a été interrogée.

TABLE_NAME

VARCHAR

Nom de la table interrogée.

SCHEMA_ID

NUMBER

Identificateur interne/généré par le système pour le schéma contenant la table interrogée.

SCHEMA_NAME

VARCHAR

Nom du schéma contenant la tâche de la table interrogée.

DATABASE_ID

NUMBER

Identificateur interne/généré par le système pour la base de données contenant la table interrogée.

DATABASE_NAME

VARCHAR

Nom de la base de données contenant la table interrogée.

NUM_SCANS

NUMBER

Nombre d’opérations d’analyse de toutes les requêtes (y compris les déclarations SELECT et DML) sur la table dans la fenêtre START_TIME et END_TIME. Notez qu’une requête donnée peut entraîner plusieurs opérations d’analyse sur la même table.

PARTITIONS_SCANNED

NUMBER

Nombre de partitions analysées pendant les opérations d’analyse décrites dans NUM_SCANS.

PARTITIONS_PRUNED

NUMBER

Nombre de partitions élaguées pour les requêtes décrites dans NUM_SCANS. Ces partitions ont été éliminées lors du traitement de la requête, améliorant ainsi l’efficacité de la requête.

ROWS_SCANNED

NUMBER

Nombre de lignes analysées pendant les opérations d’analyse décrites dans NUM_SCANS.

ROWS_PRUNED

NUMBER

Nombre de lignes élaguées pour les requêtes décrites dans NUM_SCANS. Ces lignes ont été éliminées lors du traitement de la requête, ce qui a permis d’améliorer l’efficacité de la requête.

Notes sur l’utilisation

  • La latence pour la vue peut atteindre 6 heures.

  • Cette vue n’inclut pas les informations d’élagage pour les tables hybrides.

  • Cette vue conserve les données des 1 000 analyses de table les plus longues par requête. Seules les requêtes extrêmement complexes dépassent ce nombre d’analyses, de sorte que les données sont rarement omises.

Exemples

Dressez la liste des cinq premières tables qui ont eu la plus mauvaise efficacité d’élagage au cours des sept derniers jours :

SELECT
    table_id,
    ANY_VALUE(table_name) AS table_name,
    SUM(num_scans) AS total_num_scans,
    SUM(partitions_scanned) AS total_partitions_scanned,
    SUM(partitions_pruned) AS total_partitions_pruned,
    SUM(rows_scanned) AS total_rows_scanned,
    SUM(rows_pruned) AS total_rows_pruned
  FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_PRUNING_HISTORY
  WHERE start_time >= DATEADD(day, -7, CURRENT_TIMESTAMP())
  GROUP BY table_id
  ORDER BY
    total_partitions_pruned / GREATEST(total_partitions_scanned + total_partitions_pruned, 1),
    total_partitions_scanned DESC
  LIMIT 5;
Copy
+----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------+
| TABLE_ID | TABLE_NAME     | TOTAL_NUM_SCANS | TOTAL_PARTITIONS_SCANNED | TOTAL_PARTITIONS_PRUNED | TOTAL_ROWS_SCANNED | TOTAL_ROWS_PRUNED |
|----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------|
|   308226 | SENSOR_DATA_TS |              11 |                       21 |                       1 |           52500000 |           2500000 |
|   185364 | MATCH          |              16 |                       14 |                       2 |             240968 |             34424 |
|   209932 | ORDER_HEADER   |               2 |                      300 |                      56 |          421051748 |          75350790 |
|   209922 | K7_T1          |             261 |                      261 |                      52 |              30421 |              3272 |
|   338948 | SENSOR_DATA_TS |               9 |                       15 |                       3 |           38880000 |           8035200 |
+----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------+

L’exemple ci-dessus utilise GREATEST pour éviter de diviser par zéro lorsque la somme du nombre de partitions analysées et du nombre de partitions élaguées est nulle.