Referencia de la tabla del sistema de optimización predictiva

Importante

Esta tabla del sistema está en versión preliminar pública.

Nota:

Para tener acceso a esta tabla, la región debe admitir la optimización predictiva. Consulte Regiones de Azure Databricks.

En este artículo, se describe el esquema de la tabla del historial de operaciones de optimización predictiva y se proporcionan consultas de ejemplo. La optimización predictiva optimiza el diseño de los datos para lograr un rendimiento máximo y una eficiencia de costos. La tabla del sistema realiza un seguimiento del historial de operaciones de esta característica. Para obtener información sobre la optimización predictiva, consulte Optimización predictiva para tablas administradas de Unity Catalog.

Ruta de acceso de la tabla: esta tabla del sistema se encuentra en system.storage.predictive_optimization_operations_history.

Consideraciones de entrega

  • La tabla del sistema de optimización predictiva se actualiza en dos horas. Sin embargo, la información de facturación puede tardar hasta 24 horas en rellenar los datos.
  • La optimización predictiva puede ejecutar varias operaciones en el mismo clúster. Si es así, se aproxima la parte de DBUs atribuida a cada una de las múltiples operaciones. Este es el motivo por el que usage_unit se establece en ESTIMATED_DBU. Sin embargo, el número total de DBU usados en el clúster será preciso.

Esquema de tabla de optimización predictiva

La tabla del sistema del historial de operaciones de optimización predictiva usa el esquema siguiente:

Nombre de la columna Tipo de datos Descripción Ejemplo
account_id cadena de caracteres Id. de la cuenta. 11e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id cadena de caracteres El id. del área de trabajo en la que la optimización predictiva ejecutó la operación. 1234567890123456
start_time marca de tiempo La hora a la que empezó la operación. La información de zona horaria se registra al final del valor con +00:00, que representa la hora UTC. 2023-01-09 10:00:00.000+00:00
end_time marca de tiempo La hora a la que finalizó la operación. La información de zona horaria se registra al final del valor con +00:00, que representa la hora UTC. 2023-01-09 11:00:00.000+00:00
metastore_name cadena de caracteres El nombre del metastore al que pertenece la tabla optimizada. metastore
metastore_id cadena de caracteres Id. del metastore a la que pertenece la tabla optimizada. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
catalog_name cadena de caracteres El nombre del catálogo al que pertenece la tabla optimizada. catalog
schema_name cadena de caracteres El nombre del esquema al que pertenece la tabla optimizada. schema
table_id cadena de caracteres El id. de la tabla optimizada. 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name cadena de caracteres El nombre de la tabla optimizada. table1
operation_type cadena de caracteres Operación de optimización realizada. Debe ser uno de los siguientes valores: COMPACTION, VACUUM, ANALYZE, CLUSTERING, AUTO_CLUSTERING_COLUMN_SELECTION, DATA_SKIPPING_COLUMN_SELECTION, COMPATIBILITY_MODE_REFRESH, DELETE, o PURGE. COMPACTION
operation_id cadena de caracteres El ID de la operación de optimización. 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status cadena de caracteres El estado de la operación de optimización. Debe ser uno de los siguientes valores: SUCCESSFUL, FAILED: INTERNAL_ERROR, FAILED: AUTO_TTL_COLUMN_DOES_NOT_EXIST_ERRORo FAILED: PRIVATE_LINK_SETUP_ERROR. SUCCESSFUL
operation_metrics map[string, string] Los detalles adicionales sobre la optimización específica que se realizó. Consulte Métricas de operación. {"number_of_output_files":"100","number_of_compacted_files":"1000","amount_of_output_data_bytes":"4000","amount_of_data_compacted_bytes":"10000"}
usage_unit cadena de caracteres La unidad de uso incurrida. Debe ser el siguiente valor: ESTIMATED_DBU. ESTIMATED_DBU
usage_quantity Decimal La cantidad de la unidad de uso utilizada. 2.12

Métricas de operación

Las métricas registradas en la operation_metrics columna varían en función del tipo de operación:

Nombre de la operación Descripción de la operación Métricas de operación Descripción
COMPACTION Mejora el rendimiento de las consultas porque optimiza el tamaño de los archivos. Consulte Optimización del diseño del archivo de datos. number_of_compacted_files Número de archivos eliminados.
amount_of_data_compacted_bytes Número de bytes quitados.
number_of_output_files El número de archivos nuevos añadidos.
amount_of_output_data_bytes El número de bytes añadidos.
VACUUM Reduce los costos de almacenamiento porque elimina los archivos de datos a los que ya no hace referencia la tabla. Consulte Eliminar archivos de datos sin usar con el comando vacuum. number_of_deleted_files El número de archivos recogidos.
amount_of_data_deleted_bytes El número de bytes recogidos como basura.
ANALYZE Desencadena la actualización incremental de las estadísticas para mejorar el rendimiento de las consultas. Ver ANALYZE TABLE ... ESTADÍSTICAS DE PROCESO. amount_of_scanned_bytes El número de bytes escaneados.
number_of_scanned_files El número de archivos escaneados.
staleness_percentage_reduced La reducción del porcentaje de estancamiento. Esta estadística puede variar de 0 a 100 según la frecuencia que ANALYZE se ejecute.
CLUSTERING Desencadena la agrupación en clústeres incrementales para tablas habilitadas. Consulte Uso de clústeres líquidos para tablas. number_of_removed_files Número de archivos eliminados.
number_of_clustered_files El número de archivos nuevos añadidos.
amount_of_data_removed_bytes Número de bytes quitados.
amount_of_clustered_data_bytes El número de bytes añadidos.
AUTO_CLUSTERING_COLUMN_SELECTION Evalúa si se van a evolucionar las columnas de agrupación en clústeres. Consulte Agrupación automática de líquidos. old_clustering_columns La disposición de datos anterior, que puede ser claves de clustering antiguas o "Ninguna" si no está particionada.
new_clustering_columns Las nuevas columnas agrupadas.
has_column_selection_changed El indicador de si las columnas de agrupamiento cambiaron.
additional_reason Las razones del cambio o no cambio en el agrupamiento de columnas.
DATA_SKIPPING_COLUMN_SELECTION Detecta columnas con datos ausentes, omitiendo las estadísticas de la carga de trabajo, y las completa retrospectivamente. Consulte Omisión de datos. amount_of_scanned_bytes El número de bytes escaneados.
number_of_scanned_files El número de archivos escaneados.
added_data_skipping_columns Se añadieron columnas de saltos de datos.
removed_data_skipping_columns Se eliminaron las columnas de saltos de datos.
old_data_skipping_columns La lista exhaustiva anterior de columnas de datos que se saltan.
new_data_skipping_columns La lista exhaustiva actual de columnas que saltan datos.
COMPATIBILITY_MODE_REFRESH Detecta si el modo de compatibilidad no está actualizado y actualiza la tabla. Consulte Modo de compatibilidad. N/A Las operaciones de refresco del Modo de Compatibilidad.
DELETE Elimina las filas que han pasado el periodo de caducidad automática de tiempo de activación. Consulte Eliminación automática de filas con tiempo de vida automático. number_of_deleted_rows Número de filas eliminadas. Esto ocurre 0 cuando ninguna fila era elegible para ser eliminada.
amount_of_data_deleted_bytes Número de bytes quitados.
PURGE Reescribe archivos de datos para eliminar físicamente filas ya eliminadas con vectores de borrado. Se ejecuta antes VACUUM en tablas con vectores de eliminación activados. Consulte Eliminación automática de filas con tiempo de vida automático. number_of_purged_rows El número de filas purgadas. Esto ocurría 0 cuando ninguna disputa era elegible para ser purgada. Consulte Eliminación automática de filas con tiempo de vida automático.

Consultas de ejemplo

En las secciones siguientes se incluyen consultas de ejemplo que puede usar para obtener información de la tabla del sistema de optimización predictiva. Para que estas consultas funcionen, debes reemplazar los valores del parámetro por tus propios valores.

En este artículo se incluyen las siguientes consultas de ejemplo:

¿Cuántas DBUs estimadas ha usado la optimización predictiva en los últimos 30 días?

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

Para buscar el mismo valor para una canalización de ETL específica, primero puede encontrar las tablas de esa canalización y, a continuación, buscar las DBU:

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

¿En qué tablas la optimización predictiva pasó más tiempo en los últimos 30 días (coste estimado)?

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;

¿En qué tablas la optimización predictiva realiza la mayoría de las operaciones?

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;

Para un catálogo determinado, ¿cuál es el total de bytes que se ha compactado?

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;

¿En qué tablas se quitaron la mayor cantidad de bytes?

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;

¿Cuál es la tasa de éxito de las operaciones ejecutadas por la optimización predictiva?

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;