- Schémas :
Vue TABLE_QUERY_PRUNING_HISTORY¶
Utilisez cette vue d’utilisation du compte pour mieux comprendre les modèles d’accès aux données pendant l’exécution des requêtes.
Vous pouvez utiliser cette vue en combinaison avec Vue COLUMN_QUERY_PRUNING_HISTORY. Par exemple, vous pouvez identifier l’accès aux tables cibles en utilisant la vue TABLE_QUERY_PRUNING_HISTORY, puis identifier les colonnes fréquemment utilisées dans ces tables à l’aide de la vue COLUMN_QUERY_PRUNING_HISTORY.
En particulier, ces vues peuvent vous aider à faire un choix plus éclairé en matière de clés de clustering.
Chaque ligne de cette vue représente l’historique des requêtes éliminées 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 de requêtes exécutées, les partitions analysées, les partitions supprimées, les lignes analysées, les lignes supprimées et les lignes correspondantes.
Voir aussi Vue TABLE_PRUNING_HISTORY et Élagage de requête.
Colonnes¶
Nom de la colonne |
Type de données |
Description |
---|---|---|
INTERVAL_START_TIME |
TIMESTAMP_LTZ |
Début de la plage horaire (sur la marque horaire) pendant laquelle les requêtes ont été exécutées. |
INTERVAL_END_TIME |
TIMESTAMP_LTZ |
Fin de la plage horaire (sur la marque horaire) pendant laquelle les requêtes ont été exécuté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. |
WAREHOUSE_ID |
NUMBER |
Identificateur interne / généré par le système pour l’entrepôt utilisé pour exécuter des requêtes. |
WAREHOUSE_NAME |
VARCHAR |
Nom de l’entrepôt qui a exécuté les requêtes. |
QUERY_HASH |
VARCHAR |
La valeur de hachage calculée sur la base du texte SQL canonisé. |
QUERY_PARAMETERIZED_HASH |
VARCHAR |
La valeur de hachage calculée à partir de la requête paramétrée. |
NUM_QUERIES |
NUMBER |
Nombre de requêtes exécutées dans cet intervalle de temps avec cette valeur QUERY_HASH spécifique, en utilisant cet entrepôt, en accédant à cette table. |
AGGREGATE_QUERY_ELAPSED_TIME |
NUMBER |
Temps total écoulé (en millisecondes) pour les requêtes définies par NUM_QUERIES. Ce total comprend le temps d’attente et tout autre temps non lié à la compilation et à l’exécution. |
AGGREGATE_QUERY_COMPILATION_TIME |
NUMBER |
Temps total de compilation (en millisecondes) pour les requêtes définies par NUM_QUERIES. |
AGGREGATE_QUERY_EXECUTION_TIME |
NUMBER |
Temps d’exécution total (en millisecondes) pour les requêtes définies par NUM_QUERIES. |
PARTITIONS_SCANNED |
NUMBER |
Nombre de partitions analysées sur cette table pour les requêtes définies par NUM_QUERIES. |
PARTITIONS_PRUNED |
NUMBER |
Nombre de partitions supprimées dans cette table pour les requêtes définies par NUM_QUERIES. Ces partitions ont été supprimées lors du traitement de la requête et non analysées, ce qui améliore l’efficacité de la requête. |
ROWS_SCANNED |
NUMBER |
Nombre de lignes analysées dans cette table pour les requêtes définies par NUM_QUERIES. |
ROWS_PRUNED |
NUMBER |
Nombre de lignes supprimées dans cette table pour les requêtes définies par NUM_QUERIES. Ces lignes ont été supprimées lors du traitement de la requête et non analysées, ce qui améliore l’efficacité de la requête. |
ROWS_MATCHED |
NUMBER |
Nombre de lignes correspondant aux filtres de la clause WHERE lors de l’analyse de cette table pour les requêtes définies par NUM_QUERIES. |
Notes sur l’utilisation¶
La latence pour la vue peut atteindre 4 heures.
Les données sont conservées pendant 1 an.
Cette vue n’inclut pas les informations d’élagage pour les tables hybrides.
Pour les conditions de filtrage complexes qui ne peuvent pas bénéficier d’une optimisation pushdown, les lignes peuvent ne pas être filtrées lors de l’opération d’analyse de la table, même si elles ne répondent pas à la condition de filtrage. Par conséquent, ces lignes sont comptées dans la valeur ROWS_MATCHED.
Les utilisateurs et les rôles auxquels le rôle de base de données USAGE_VIEWER a été attribué peuvent accéder à cette vue. Pour plus d’informations, voir Rôles des bases de données SNOWFLAKE.
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¶
La première requête est un exemple fonctionnel simple qui renvoie l’historique des suppressions pour les requêtes effectuées sur une table spécifique à une date donnée, où au moins une ligne a été supprimée. Chaque ligne du résultat correspond à une fenêtre de temps spécifique d’une heure pour les requêtes qui ont été effectuées à la date spécifiée dans la clause WHERE (INTERVAL_START_TIME).
La table sensor_data_ts
de cette requête contient 5 356 800 lignes de données chronologiques synthétiques. Exactement la moitié des lignes du tableau (2 678 400) ont été supprimées pour toutes les requêtes présentées ici. Le nombre de lignes correspondantes varie pour ces requêtes.
SELECT interval_start_time, interval_end_time, table_id, table_name,
num_queries, query_hash, rows_scanned, rows_pruned, rows_matched
FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_QUERY_PRUNING_HISTORY
WHERE interval_start_time LIKE '2025-04-24%'
AND table_name='SENSOR_DATA_TS'
AND rows_pruned > 0
ORDER BY 1;
+-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------+
| INTERVAL_START_TIME | INTERVAL_END_TIME | TABLE_ID | TABLE_NAME | NUM_QUERIES | QUERY_HASH | ROWS_SCANNED | ROWS_PRUNED | ROWS_MATCHED |
|-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------|
| 2025-04-24 14:00:00.000 -0700 | 2025-04-24 15:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 833f4ec4ebbda62c7882e1839faec799 | 2678400 | 2678400 | 5 |
| 2025-04-24 14:00:00.000 -0700 | 2025-04-24 15:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 94d16d2fa0892247d27066e45b58d3e4 | 2678400 | 2678400 | 5 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 24e89f5c01209d7b395f56559f893dc8 | 2678400 | 2678400 | 2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 71c9c6570ef849e66f83af0625b793a2 | 2678400 | 2678400 | 2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | c75cb64d446c1ba222ac14ebd1923641 | 2678400 | 2678400 | 2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 5a3784c59fc788804c903d96698dd969 | 2678400 | 2678400 | 5 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 069a076d4d6850e3d242fccf498c7c6d | 2678400 | 2678400 | 216642 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 4c9c5aacb7a61fc6858d107c5c46fb14 | 2678400 | 2678400 | 216642 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 3e509721380b262906c62c76107e46c9 | 2678400 | 2678400 | 2678400 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 9f7e607fe48faa18e332f65cde49f037 | 2678400 | 2678400 | 2678400 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | b4488d8a84ab18b00dd6b2fead4a4cb4 | 2678400 | 2678400 | 394106 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 | 652324 | SENSOR_DATA_TS | 1 | 157d775a79c5bae120fb5db9f7d8d027 | 2678400 | 2678400 | 216642 |
+-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------+
L’exemple suivant calcule un « taux d’élagage » pour chaque table afin de déterminer l’efficacité du nettoyage des requêtes exécutées sur un entrepôt donné à un moment donné. La requête renvoie également le nombre de partitions analysées par requête, ce qui vous aide à comprendre les performances de la requête par rapport au volume de données à analyser.
Au vu des résultats de cette requête, les utilisateurs pourraient conclure que, bien que sensor_data_ts
soit beaucoup plus consulté que sensor_data1
, ces requêtes prennent généralement moins de temps et analysent beaucoup moins de micro-partitions.
SELECT
SUM(total_execution_time) as sum_exec_time,
SUM(num_queries) as sum_num_queries,
SUM(partitions_pruned)/SUM(partitions_pruned+partitions_scanned) AS pruning_ratio,
SUM(partitions_scanned)/SUM(num_queries) AS partitions_scanned_per_query,
table_name,
schema_name,
database_name
FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_QUERY_PRUNING_HISTORY
WHERE interval_start_time > '2025-04-25 12:00:00.000 -0700'
AND warehouse_name = 'SENSORS_WH'
GROUP BY ALL
ORDER BY 1 DESC;
+---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+
| SUM_EXEC_TIME | SUM_NUM_QUERIES | PRUNING_RATIO | PARTITIONS_SCANNED_PER_QUERY | TABLE_NAME | SCHEMA_NAME | DATABASE_NAME |
|---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------|
| 1938743 | 19283 | 0.230000 | 1800.000000 | SENSOR_DATA1 | SENSORS_SCHEMA | SENSORS_DB |
| 123732 | 39320 | 0.950000 | 12.000000 | SENSOR_DATA_TS | SENSORS_SCHEMA | SENSORS_DB |
+---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+