Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 (consultez 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
- Les données peuvent prendre jusqu’à 24 heures pour être alimenté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_unitest défini surESTIMATED_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 | L’opération d’optimisation qui a été effectuée. La valeur sera COMPACTION, VACUUM, ANALYZE ou CLUSTERING. |
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. La valeur sera 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. Ne peut être qu’une seule valeur : 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 :
-
COMPACTION:number_of_compacted_files, ,amount_of_data_compacted_bytes,number_of_output_files,amount_of_output_data_bytes -
VACUUM:number_of_deleted_files,amount_of_data_deleted_bytes -
ANALYZE:amount_of_scanned_bytes,number_of_scanned_files,staleness_percentage_reduced -
CLUSTERING:number_of_removed_files, ,number_of_clustered_files,amount_of_data_removed_bytes,amount_of_clustered_data_bytes -
AUTO_CLUSTERING_COLUMN_SELECTION:old_clustering_columns, ,new_clustering_columns,has_column_selection_changed,additional_reason(inclut la raison pour laquelle la sélection de colonne a ou n’a pas changé)
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 ?
- Sur quelles tables l'optimisation prédictive a-t-elle dépensé le plus au cours des 30 derniers jours (coût estimé) ?
- Sur quelles tables l’optimisation prédictive effectue-t-elle le plus d’opérations ?
- Pour un catalogue donné, combien d’octets totaux ont été compactés ?
- Quelles sont les tables pour lesquelles le plus grand nombre d’octets a été aspiré ?
- Quel est le taux de réussite des opérations exécutées par des optimisations prédictives ?
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 des optimisations prédictives ?
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;