Compartir a través de


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 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 estima el recurso compartido de DBU que se atribuye a cada una de las varias 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 Id. de la cuenta. 11e22ba4-87b9-4cc2-9770-d10b894b7118
workspace_id cadena 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 El nombre del metastore al que pertenece la tabla optimizada. metastore
metastore_id cadena Id. del metastore a la que pertenece la tabla optimizada. 5a31ba44-bbf4-4174-bf33-e1fa078e6765
catalog_name cadena El nombre del catálogo al que pertenece la tabla optimizada. catalog
schema_name cadena El nombre del esquema al que pertenece la tabla optimizada. schema
table_id cadena El id. de la tabla optimizada. 138ebb4b-3757-41bb-9e18-52b38d3d2836
table_name cadena El nombre de la tabla optimizada. table1
operation_type cadena Operación de optimización realizada. Debe ser uno de los siguientes valores: COMPACTION, VACUUM, ANALYZE, CLUSTERING, AUTO_CLUSTERING_COLUMN_SELECTION, DATA_SKIPPING_COLUMN_SELECTIONo COMPATIBILITY_MODE_REFRESH. COMPACTION
operation_id cadena El id. de la operación de optimización. 4dad1136-6a8f-418f-8234-6855cfaff18f
operation_status cadena El estado de la operación de optimización. Debe ser uno de los siguientes valores: SUCCESSFUL o FAILED: INTERNAL_ERROR. SUCCESSFUL
operation_metrics map[string, string] 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 La unidad de uso que usó esta operación. Debe ser el siguiente valor: ESTIMATED_DBU. ESTIMATED_DBU
usage_quantity Decimal La cantidad de unidades de uso que usó esta operación. 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 por esta operación.
amount_of_data_compacted_bytes Cantidad de bytes quitados por esta operación.
number_of_output_files Número de archivos nuevos agregados por esta operación.
amount_of_output_data_bytes Cantidad de bytes agregados por esta operación.
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 Número de archivos no utilizados recopilados por esta operación.
amount_of_data_deleted_bytes Cantidad de bytes no utilizados recopilados por esta operación.
ANALYZE Desencadena la actualización incremental de las estadísticas para mejorar el rendimiento de las consultas. Consulte ANALYZE TABLE. amount_of_scanned_bytes Cantidad de bytes examinados por esta operación.
number_of_scanned_files Número de archivos examinados por esta operación.
staleness_percentage_reduced Reducción del porcentaje de obsolescencia después de esta operación. Esta estadística puede oscilar entre 0 y 100 en función de la frecuencia que ANALYZE se ejecuta.
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 por esta operación.
number_of_clustered_files Número de archivos nuevos agregados por esta operación.
amount_of_data_removed_bytes Cantidad de bytes quitados por esta operación.
amount_of_clustered_data_bytes Cantidad de bytes agregados por esta operación.
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 Diseño de datos anterior, que puede estar compuesto por claves de agrupación antiguas o "Ninguno" si no está particionado.
new_clustering_columns Nuevas columnas de agrupación en clústeres aplicadas por esta operación.
has_column_selection_changed Si esta operación ha modificado las columnas de agrupamiento.
additional_reason Motivos del cambio o inmutabilidad en las columnas de agrupamiento.
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 Cantidad de bytes examinados por esta operación.
number_of_scanned_files Número de archivos examinados por esta operación.
added_data_skipping_columns Se han agregado recientemente columnas de omisión de datos aplicadas por esta operación.
removed_data_skipping_columns Columnas de salto de datos eliminadas por esta operación.
old_data_skipping_columns Lista exhaustiva anterior de columnas de omisión de datos.
new_data_skipping_columns Lista exhaustiva actual de columnas de omisión de datos.
COMPATIBILITY_MODE_REFRESH Detecta si el modo de compatibilidad no está actualizado y actualiza la tabla. Consulte Modo de compatibilidad. N/A Operaciones de actualización del modo de compatibilidad.

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 DBU estimadas tiene la optimización predictiva usada 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;