Partager via


Référence de table système d’optimisation prédictive

Important

Cette table système est en préversion publique.

Remarque

Pour avoir accès à cette table, votre région doit prendre en charge l’optimisation prédictive. Voir les régions Azure Databricks.

Cet article décrit le schéma de la table d’historique des opérations d’optimisation prédictive et fournit des exemples de requêtes. L’optimisation prédictive optimise votre disposition de données pour obtenir des performances optimales et une bonne rentabilité. La table système suit l’historique des opérations de cette fonctionnalité. Pour plus d’informations sur l’optimisation prédictive, consultez Optimisation prédictive pour les tables managées Unity Catalog.

Chemin d’accès de la table : cette table système se trouve à l’emplacement system.storage.predictive_optimization_operations_history.

Considérations relatives à la livraison

  • La table système d’optimisation prédictive est mise à jour dans les deux heures. Toutefois, les informations de facturation peuvent prendre jusqu’à 24 heures pour remplir les données.
  • L’optimisation prédictive peut exécuter plusieurs opérations sur le même cluster. Si c’est le cas, le partage des DBU attribuées à chacune des opérations multiples est approximatif. C’est pourquoi le usage_unit est défini sur ESTIMATED_DBU. Toutefois, le nombre total d’unités de DBU utilisées dans le cluster sera exact.

Schéma de table d’optimisation prédictive

La table système de l’historique des opérations d’optimisation prédictive utilise le schéma suivant :

Nom de la colonne Type de données Descriptif Exemple :
account_id ficelle ID du compte. 11e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id ficelle L’ID de l’espace de travail dans lequel l’optimisation prédictive a exécuté l’opération. 1234567890123456
start_time horodatage L’heure à laquelle l’opération a démarré. Les informations de fuseau horaire sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC. 2023-01-09 10:00:00.000+00:00
end_time horodatage L’heure à laquelle l’opération s’est terminée. Les informations de fuseau horaire sont enregistrées à la fin de la valeur, où +00:00 représente le fuseau horaire UTC. 2023-01-09 11:00:00.000+00:00
metastore_name ficelle Le nom du metastore auquel appartient la table optimisée. metastore
metastore_id ficelle ID du metastore auquel appartient la table optimisée. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
catalog_name ficelle Le nom du catalogue auquel appartient la nouvelle table. catalog
schema_name ficelle Le nom du schéma auquel appartient la nouvelle table. schema
table_id ficelle L’ID de la table optimisée. 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name ficelle Le nom de la table optimisée. table1
operation_type ficelle Opération d’optimisation effectuée. Doit être l’une des valeurs suivantes : COMPACTION, , VACUUMANALYZE, CLUSTERING, AUTO_CLUSTERING_COLUMN_SELECTION, DATA_SKIPPING_COLUMN_SELECTIONou COMPATIBILITY_MODE_REFRESH. COMPACTION
operation_id ficelle L’ID de l’opération d’optimisation. 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status ficelle L’état de l’opération d’optimisation. Doit être l’une des valeurs suivantes : SUCCESSFUL ou FAILED: INTERNAL_ERROR. SUCCESSFUL
operation_metrics map[string, string] Détails supplémentaires sur l’optimisation spécifique effectuée. Consultez les métriques d’opération. {"number_of_output_files":"100","number_of_compacted_files":"1000","amount_of_output_data_bytes":"4000","amount_of_data_compacted_bytes":"10000"}
usage_unit ficelle L’unité d’utilisation que cette opération a engagée. Doit être la valeur suivante : ESTIMATED_DBU. ESTIMATED_DBU
usage_quantity Décimal La quantité de l’unité d’utilisation utilisée par cette opération. 2.12

Métriques d’opération

Les métriques enregistrées dans la operation_metrics colonne varient en fonction du type d’opération :

Nom de l’opération Description de l’opération Métriques d’opération Description
COMPACTION Améliore les performances des requêtes en optimisant les tailles de fichier. Consultez Optimiser la disposition des fichiers de données. number_of_compacted_files Nombre de fichiers supprimés par cette opération.
amount_of_data_compacted_bytes Quantité d’octets supprimés par cette opération.
number_of_output_files Nombre de nouveaux fichiers ajoutés par cette opération.
amount_of_output_data_bytes Quantité d’octets ajoutés par cette opération.
VACUUM Réduit les coûts de stockage en supprimant les fichiers de données qui ne sont plus référencés par la table. Consultez Supprimer les fichiers de données inutilisés avec le nettoyage. number_of_deleted_files Nombre de fichiers ramassés par le processus de collecte des déchets de cette opération.
amount_of_data_deleted_bytes Quantité d’octets de déchets mémoire collectés par cette opération.
ANALYZE Déclenche la mise à jour incrémentielle des statistiques pour améliorer les performances des requêtes. Voir ANALYZE TABLE. amount_of_scanned_bytes Quantité d’octets analysés par cette opération.
number_of_scanned_files Nombre de fichiers analysés par cette opération.
staleness_percentage_reduced Réduction du pourcentage d’obsolescence après cette opération. Cette statistique peut être comprise entre 0 et 100 en fonction de la fréquence d’exécution ANALYZE .
CLUSTERING Déclenche le clustering incrémentiel pour les tables activées. Consultez Utilisation de Liquid Clustering pour les tables. number_of_removed_files Nombre de fichiers supprimés par cette opération.
number_of_clustered_files Nombre de nouveaux fichiers ajoutés par cette opération.
amount_of_data_removed_bytes Quantité d’octets supprimés par cette opération.
amount_of_clustered_data_bytes Quantité d’octets ajoutés par cette opération.
AUTO_CLUSTERING_COLUMN_SELECTION Détermine s’il faut faire évoluer les colonnes de regroupement. Consultez le regroupement automatique de liquide. old_clustering_columns Disposition de données précédente, qui peut être d'anciennes clés de clustering ou « aucun » si elle n’est pas partitionnée.
new_clustering_columns Nouvelles colonnes de clustering appliquées par cette opération.
has_column_selection_changed Indique si cette opération a modifié les colonnes de clustering.
additional_reason Raisons de la modification ou de l’absence de modification dans les colonnes de clustering.
DATA_SKIPPING_COLUMN_SELECTION Détecte les colonnes avec des données manquantes, ignore les statistiques des charges de travail, et les complète. Consultez le saut de données. amount_of_scanned_bytes Quantité d’octets analysés par cette opération.
number_of_scanned_files Nombre de fichiers analysés par cette opération.
added_data_skipping_columns Les colonnes de saut de données nouvellement ajoutées sont appliquées par cette opération.
removed_data_skipping_columns Données qui ignorent les colonnes supprimées par cette opération.
old_data_skipping_columns Liste exhaustive précédente des colonnes de saut de données.
new_data_skipping_columns Liste exhaustive actuelle des colonnes de saut de données.
COMPATIBILITY_MODE_REFRESH Détecte si le mode de compatibilité est obsolète et actualise la table. Consultez le mode de compatibilité. N/A Opérations d’actualisation du mode de compatibilité.

Exemples de requêtes

Les sections suivantes incluent des exemples de requêtes que vous pouvez utiliser pour obtenir des insights sur la table système d’optimisation prédictive. Pour que ces requêtes fonctionnent, vous devez remplacer les valeurs de paramètre par vos propres valeurs.

Vous trouverez dans cet article des requêtes telles que :

Combien de DBU estimés utilisent l’optimisation prédictive au cours des 30 derniers jours ?

SELECT SUM(usage_quantity)
  FROM system.storage.predictive_optimization_operations_history
  WHERE
    usage_unit = "ESTIMATED_DBU"
    AND timestampdiff(day, start_time, Now()) < 30;

Pour trouver la même valeur pour un pipeline ETL spécifique, vous pouvez d'abord identifier les tables de ce pipeline, puis rechercher les DBUs :

-- Find all full table names for the pipeline:
WITH pipeline_mapping AS (
  SELECT DISTINCT target_table_full_name AS target_table_name
  FROM system.access.table_lineage
  WHERE entity_type = 'PIPELINE' AND entity_id = :pipeline_id
)
-- Select all operations for any table in that pipeline:
SELECT SUM(usage_quantity)
  FROM system.storage.predictive_optimization_operations_history
  WHERE
    CONCAT_WS('.', catalog_name, schema_name, table_name)
      IN ( SELECT target_table_name FROM pipeline_mapping)
    AND usage_unit = "ESTIMATED_DBU"
    AND timestampdiff(day, start_time, Now()) < 30;

Sur quelles tables l’optimisation prédictive est-elle intervenue le plus souvent au cours des 30 derniers jours (coût estimé) ?

SELECT
  metastore_name,
  catalog_name,
  schema_name,
  table_name,
  SUM(usage_quantity) as totalDbus
FROM system.storage.predictive_optimization_operations_history
WHERE
  usage_unit = "ESTIMATED_DBU"
  AND timestampdiff(day, start_time, Now()) < 30
GROUP BY ALL
ORDER BY totalDbus DESC;

Sur quelles tables l’optimisation prédictive effectue-t-elle le plus d’opérations ?

SELECT
  metastore_name,
  catalog_name,
  schema_name,
  table_name,
  operation_type,
  COUNT(DISTINCT operation_id) as operations
FROM system.storage.predictive_optimization_operations_history
GROUP BY ALL
ORDER BY operations DESC;

Pour un catalogue donné, combien d’octets totaux ont été compactés ?

SELECT
  schema_name,
  table_name,
  SUM(operation_metrics["amount_of_data_compacted_bytes"]) as bytesCompacted
FROM system.storage.predictive_optimization_operations_history
WHERE
  metastore_name = :metastore_name
  AND catalog_name = :catalog_name
  AND operation_type = "COMPACTION"
GROUP BY ALL
ORDER BY bytesCompacted DESC;

Quelles sont les tables pour lesquelles le plus grand nombre d’octets a été aspiré ?

SELECT
  metastore_name,
  catalog_name,
  schema_name,
  table_name,
  SUM(operation_metrics["amount_of_data_deleted_bytes"]) as bytesVacuumed
FROM system.storage.predictive_optimization_operations_history
WHERE operation_type = "VACUUM"
GROUP BY ALL
ORDER BY bytesVacuumed DESC;

Quel est le taux de réussite des opérations exécutées par l’optimisation prédictive ?

WITH operation_counts AS (
  SELECT
    COUNT(DISTINCT (CASE WHEN operation_status = "SUCCESSFUL" THEN operation_id END)) as successes,
    COUNT(DISTINCT operation_id) as total_operations
  FROM system.storage.predictive_optimization_operations_history
 )
SELECT successes / total_operations as success_rate
FROM operation_counts;