Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:✅ Ingeniería de datos y ciencia de datos en Microsoft Fabric
Las estadísticas de tablas automatizadas de Microsoft Fabric ayudan a Spark a optimizar la ejecución de consultas mediante la recopilación automática de métricas detalladas de nivel de tabla. Estas estadísticas incluyen:
- Recuentos totales de filas
- Recuentos de nulos por columna
- Valores mínimos y máximos por columna
- Recuentos de valores distintos por columna
- Longitudes medias y máximas de columna
De forma predeterminada, estas estadísticas extendidas se recopilan para las primeras 32 columnas (incluidas las columnas anidadas) de cada tabla Delta creada en Fabric. Los datos recopilados ayudan al optimizador basado en costos (CBO) de Spark a mejorar el planeamiento de consultas para combinaciones, filtros, agregaciones y eliminación de particiones.
Como resultado, las cargas de trabajo pueden ver mejoras de rendimiento mayores y un menor uso de recursos de proceso, todo ello sin necesidad de ejecutar manualmente ANALYZE TABLE
o una configuración compleja.
Ventajas clave
En esta sección se resume el motivo por el que las estadísticas de tablas automatizadas son importantes para las cargas de trabajo.
- ~45% rendimiento más rápido en consultas complejas
- Habilitado automáticamente en las nuevas tablas Delta
- Mejora el planeamiento de consultas y reduce los costos de proceso
- Admite recuentos de valores distintos, recuentos mínimo/máximo, recuentos null y métricas de longitud de columna.
- Almacenado en formato Parquet para evitar el sobredimensionamiento de archivos de datos
Funcionamiento
Esto es lo que sucede en segundo plano cuando Fabric Spark recopila estadísticas:
- Recuentos de filas
- Recuentos de nulos por columna
- Valores mínimos y máximos por columna
- Recuentos de valores distintos por columna
- Longitudes medias y máximas de columna
Estas métricas ayudan a Spark a tomar decisiones más inteligentes sobre cómo ejecutar consultas, lo que mejora las estrategias de combinación, la eliminación de particiones y el rendimiento de la agregación.
Cómo habilitar o deshabilitar
Obtenga información sobre cómo controlar la recopilación automatizada de estadísticas mediante configuraciones de sesión de Spark o propiedades de tabla.
Configuración de sesión
Puede habilitar o deshabilitar la recopilación de estadísticas extendidas y la inserción del optimizador en el nivel de sesión.
Habilite la recopilación de estadísticas extendidas:
spark.conf.set("spark.microsoft.delta.stats.collect.extended", "true")
Deshabilitar la recopilación de estadísticas extendidas:
spark.conf.set("spark.microsoft.delta.stats.collect.extended", "false")
Habilite la inserción de estadísticas en el optimizador de consultas:
spark.conf.set("spark.microsoft.delta.stats.injection.enabled", "true")
Deshabilitar la inserción de estadísticas:
spark.conf.set("spark.microsoft.delta.stats.injection.enabled", "false")
Nota:
La recopilación de estadísticas de registro delta () también debe estar habilitada (spark.databricks.delta.stats.collect
valor predeterminado: true).
Propiedades de tabla (invalida las configuraciones de sesión)
Las propiedades de tabla permiten controlar la recopilación de estadísticas en tablas individuales, invalidando la configuración de sesión.
Habilitar en una tabla:
ALTER TABLE tableName SET TBLPROPERTIES('delta.stats.extended.collect' = true, 'delta.stats.extended.inject' = true)
Desactivar en una tabla:
ALTER TABLE tableName SET TBLPROPERTIES('delta.stats.extended.collect' = false, 'delta.stats.extended.inject' = false)
Deshabilite la configuración automática de las propiedades de la tabla al crear:
spark.conf.set("spark.microsoft.delta.stats.collect.extended.property.setAtTableCreation", "false")
Cómo comprobar estadísticas
Puede inspeccionar las estadísticas de columnas y tablas recopiladas mediante las API de Spark, útiles para la depuración o validación.
Comprobar el número de filas y el tamaño de la tabla (ejemplo de Scala):
println(spark.read.table("tableName").queryExecution.optimizedPlan.stats)
Compruebe las estadísticas de columna detalladas:
spark.read.table("tableName").queryExecution.optimizedPlan.stats.attributeStats.foreach { case (attrName, colStat) =>
println(s"colName: $attrName distinctCount: ${colStat.distinctCount} min: ${colStat.min} max: ${colStat.max} nullCount: ${colStat.nullCount} avgLen: ${colStat.avgLen} maxLen: ${colStat.maxLen}")
}
Volver a calcular estadísticas
A veces, las estadísticas pueden quedar obsoletas o parciales, por ejemplo, después de cambios de esquema o actualizaciones parciales. Puede volver a calcular las estadísticas mediante estos métodos.
Vuelva a escribir la tabla (nota: esto restablece el historial):
spark.read.table("targetTable").write.partitionBy("partCol").mode("overwrite").saveAsTable("targetTable")
Enfoque recomendado (Fabric Spark >= 3.2.0.19):
StatisticsStore.recomputeStatisticsWithCompaction(spark, "testTable1")
Si el esquema cambia (por ejemplo, agrega o quita columnas), debe quitar las estadísticas antiguas antes de volver a calcular:
StatisticsStore.removeStatisticsData(spark, "testTable1")
StatisticsStore.recomputeStatisticsWithCompaction(spark, "testTable1")
Uso del COMANDO ANALYZE
El ANALYZE TABLE
comando proporciona una manera manual de recopilar estadísticas en todas las columnas, de forma similar a Spark de código abierto.
Ejecuta el comando:
ANALYZE TABLE tableName COMPUTE STATISTICS FOR ALL COLUMNS
Habilite la inserción de estadísticas de catálogo:
spark.conf.set("spark.microsoft.delta.stats.injection.catalog.enabled", "true")
Deshabilitar la inserción de estadísticas de catálogo:
spark.conf.unset("spark.microsoft.delta.stats.injection.catalog.enabled")
Limitaciones
Es importante comprender las limitaciones actuales de las estadísticas automatizadas de Fabric para que pueda planear en consecuencia.
- Estadísticas recopiladas solo en momento de escritura
- Las actualizaciones o los cambios de otros motores no se agregan
- Solo se incluyen las primeras 32 columnas (incluidas las columnas anidadas).
- Las eliminaciones o actualizaciones pueden hacer que las estadísticas no sean actualizadas
- No recompute sin volver a escribir la tabla ni usar la API
- Sin inserción de estadísticas para columnas anidadas
- No hay estadísticas de reserva de rendimiento → puede conducir ocasionalmente a regresiones
-
ANALYZE TABLE
solo funciona conFOR ALL COLUMNS
- Los cambios de configuración o ordenación de columnas requieren reescritura completa para actualizar las estadísticas