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.
Cada vez que se ejecuta una actualización programada para las vistas de lago materializadas, Fabric determina la mejor estrategia que se va a usar( sin actualización, incremental o completa) en función de lo que ha cambiado en los datos de origen. Este comportamiento se denomina actualización óptima y le ayuda a mantener actualizadas las vistas materializadas del lago al tiempo que minimiza los costos de proceso y el tiempo de actualización.
En este artículo se explica cómo funciona la actualización óptima, qué hace cada estrategia y cómo cambiar al modo de actualización completa cuando sea necesario.
Nota:
No se admite la actualización óptima en los escenarios siguientes:
- Definiciones de PySpark: la actualización óptima solo se aplica a los MLV definidos con Spark SQL. Los MLV definidos por PySpark siempre utilizan la actualización completa.
- Tablas de origen no Delta: las vistas materializadas de lago que usan tablas que no son Delta como origen siempre realizan una actualización completa. Las estrategias incrementales y sin actualización requieren orígenes de tabla Delta.
Ventajas de una actualización óptima
Al analizar los commits delta en tablas de origen, la actualización óptima puede tomar decisiones inteligentes sobre el procesamiento de los datos. Siempre que sea posible, esto puede dar lugar a:
- Menor costo: se usan menos procesos y almacenamiento cuando Fabric detecta que los datos de origen no cambiaron y omiten la actualización por completo. No se aplican cargos adicionales para una actualización óptima: se le factura según el uso de proceso durante las operaciones de actualización.
- Eficacia mejorada: ciclos de actualización más rápidos cuando solo se deben procesar los datos modificados, lo que le ayuda a ofrecer información más actualizada.
- Ahorro de tiempo: se reduce la duración de la actualización cuando se aplica el procesamiento incremental en lugar de volver a calcular el conjunto de datos completo.
Estrategias de actualización óptimas
En la tabla siguiente se describen las estrategias de actualización que la actualización óptima puede seleccionar:
| Actualizar directiva | Description |
|---|---|
| Sin actualización | Si no se detectan nuevos commits delta en las tablas de origen del sistema, Fabric salta completamente la actualización, evitando la computación innecesaria. |
| Actualización incremental | Procesa solo los datos modificados cuando se detectan nuevos commits delta en las tablas de origen. |
| Actualización completa | Vuelve a calcular toda la vista materializada del lago del conjunto de datos de origen completo. Esta estrategia se usa cuando se detectan expresiones no admitidas, cuando los cambios no se pueden procesar de forma incremental o cuando el conjunto de datos de origen es lo suficientemente pequeño como para que una recompute completa sea más rápida que el procesamiento incremental. |
Importante
La actualización incremental solo se aplica cuando se cumplen las dos condiciones siguientes:
- Los datos de origen solo permiten anexiones durante el ciclo de actualización. Si un ciclo de actualización detecta eliminaciones o actualizaciones en una tabla de origen, el motor vuelve a la actualización completa, incluso cuando CDF está habilitado y la consulta solo usa construcciones SQL admitidas. Para obtener más información, consulte Actualización incremental y datos de solo adición.
-
La fuente de datos de cambios de Delta (CDF) está habilitada (
delta.enableChangeDataFeed=true) en todas las tablas de origen referenciadas en la definición de la vista materializada de lago. Sin CDF, la actualización óptima solo puede elegir entre ninguna actualización y actualización completa. Para obtener más información, consulte Habilitación de la actualización incremental.
Configuración de una actualización óptima
El interruptor de actualización óptimo le ofrece estrategias de no actualización y actualización completa sin configuración adicional. Para desbloquear la estrategia de actualización incremental, también debe habilitar el flujo de datos de cambios en sus tablas de origen.
Activar el modo de actualización óptimo
De forma predeterminada, el modo de actualización óptimo está habilitado para un linaje materializado de la vista de lago. Si no está habilitado, siga estos pasos para activarlo:
Vaya a su lakehouse y seleccione vistas materializadas del lago.
Seleccione Administrar y, a continuación, active el interruptor Actualización óptima.
Actualización incremental y datos de solo anexión
En la actualidad, la actualización incremental solo se aplica cuando los datos de origen son de solo anexión entre las actualizaciones. Si alguna tabla de origen registra una eliminación o actualización, Fabric retrocede a la actualización completa, incluso con CDF habilitado y una consulta que solo usa construcciones SQL admitidas.
El motor necesita una manera confiable de identificar las filas eliminadas. Para mejorar la eficacia, los usuarios ahora pueden proporcionar sugerencias de actualización. Estamos pilotando esto con clientes seleccionados.
Habilitación de la actualización incremental
Para usar la actualización incremental, debe habilitar la propiedad de fuente de distribución de datos de cambios delta (CDF) en todas las tablas de origen o vistas de lago materializadas a las que se hace referencia en la definición de vista de lago materializada. CDF permite a Fabric leer solo las filas que han cambiado desde la última actualización, en lugar de volver a procesar el conjunto de datos completo.
Sin CDF habilitado, la actualización óptima solo puede elegir entre ninguna actualización y actualización completa.
Tip
Para ayudarte a identificar oportunidades para optimizar la actualización, Fabric muestra un banner en el que se enumeran las vistas de lago materializadas compatibles con la actualización incremental, pero bloqueadas porque no se ha habilitado CDF en una o más tablas de origen. El aviso aparece en la vista de linaje, en los detalles de las ejecuciones recientes y a nivel de nodo individual, para que pueda identificar la brecha desde cualquier punto de entrada que utilice.
Para habilitar CDF directamente desde el banner:
En el banner, seleccione Activar CDF.
En el cuadro de diálogo Habilitar fuente de distribución de datos modificados , revise la lista de vistas de lago materializadas y las tablas de origen donde se habilitará CDF.
Seleccione Habilitar. La próxima actualización refleja el estado actualizado de CDF.
Nota:
La habilitación de CDF en las tablas de origen no tiene ningún efecto medible de almacenamiento o rendimiento para cargas de trabajo de solo anexión, que es el escenario que admite la actualización incremental. CDF es una propiedad estándar de la tabla de Delta Lake de la que también pueden beneficiarse otras características de Fabric. Para obtener más información sobre cómo funciona CDF, consulte Uso de la fuente de distribución de datos de cambios de Delta Lake.
Puede habilitar CDF en tiempo de creación mediante las TBLPROPERTIES instrucciones CREATE .
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.cleaned_order_data
TBLPROPERTIES (delta.enableChangeDataFeed=true)
AS
SELECT
o.order_id,
o.order_date,
o.product_id,
p.product_name,
o.quantity,
p.price,
o.quantity * p.price AS revenue
FROM bronze.orders o
INNER JOIN bronze.products p
ON o.product_id = p.product_id
Para las tablas de origen existentes, use ALTER TABLE para habilitar CDF:
ALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Por ejemplo, para habilitar CDF en ambas tablas de origen desde la guía de introducción:
ALTER TABLE bronze.products SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
ALTER TABLE bronze.orders SET TBLPROPERTIES (delta.enableChangeDataFeed = true);
Construcciones SQL compatibles con la actualización incremental
La actualización incremental funciona cuando la definición de vista de lago materializada usa solo las construcciones SQL descritas aquí. Si la consulta incluye construcciones no admitidas, como funciones de ventana o funciones no deterministas, Fabric sigue actualizando los datos, pero vuelve a una actualización completa.
| Estructura de SQL | Comentario |
|---|---|
| SELECT expresión | Se admiten expresiones y funciones integradas deterministas. No se admiten funciones no deterministas como rand(), uuid()y current_timestamp() .
DISTINCT y las funciones de ventana no son compatibles. |
| FROM | Admite tablas delta y vistas al lago materializadas. Las subconsultas y las expresiones de tabla comunes (CTEs) funcionan correctamente si solo usan las cláusulas admitidas. |
| WHERE | Solo se admiten funciones integradas deterministas. |
| INNER JOIN (UNIÓN INTERNA) | Supported. |
| LEFT OUTER JOIN (UNIÓN EXTERNA IZQUIERDA) / LEFT SEMI JOIN (UNIÓN SEMI IZQUIERDA) | Supported. La actualización incremental solo funciona si la tabla del lado derecho permanece sin cambios durante el ciclo de actualización. Cualquier cambio en la tabla del lado derecho desencadena una actualización completa. |
| GROUP BY / agregados | Supported. El uso de Aggregates (AVG(), STDDEV(), y otros) requiere que cada tabla fuente esté particionada y que esa columna de partición se incluya en la GROUP BY cláusula de la consulta MLV; este requisito permite a Fabric recalcular incrementalmente solo las particiones afectadas. SUM(), MIN(), MAX(), y COUNT() (sin DISTINCT) son un caso especial: admiten la actualización incremental sin el requisito de partición. Mezclar otras funciones agregadas con SUM(), COUNT(), MIN(), y MAX() en la misma consulta (por ejemplo, SELECT SUM(amount), AVG(price) ...) requiere la condición de partición para toda la consulta; de lo contrario, Fabric vuelve a la actualización completa.
GROUP BY Las columnas deben aparecer en la SELECT lista. |
| UNION ALL (UNIÓN TODO) | Supported. |
| WITH | Expresiones de tabla comunes (CTEs) si solo usan las cláusulas admitidas. |
| Subconsultas en expresiones | Las subconsultas dentro de expresiones SELECT o WHERE (como subconsultas escalares o EXISTS) desencadenan una actualización completa si alguna tabla a la que se hace referencia cambia. |
| Restricciones de calidad de datos | Solo se admiten funciones integradas deterministas en restricciones. |
Nota:
El uso de construcciones no admitidas no impide crear una vista materializada del lago. Solo significa que Fabric usa una actualización completa en lugar de una actualización incremental.
Actualización completa
La actualización óptima se revierte automáticamente a la actualización completa cuando sea necesario, por lo que normalmente no es necesario forzarla. Sin embargo, hay casos en los que es posible que desee desencadenar una actualización completa manualmente, por ejemplo, para solucionar problemas de resultados inesperados o para volver a procesar los datos después de una corrección.
Ejecución de una actualización completa única con SQL
Para forzar una actualización completa de una vista de lago materializada específica, ejecute el siguiente comando:
REFRESH MATERIALIZED LAKE VIEW [workspace.lakehouse.schema].MLV_Identifier FULL
Nota:
Si el nombre del área de trabajo contiene espacios, escríbalo entre comillas invertidas: `My Workspace`.lakehouse.schema.view_name
Desactivar la actualización óptima
Si desea que cada ejecución programada realice una actualización completa, puede desactivar la función de actualización óptima. Esto deshabilita tanto las estrategias sin actualización como las incrementales: cada ejecución vuelve a calcular el conjunto de datos completo, incluso si no ha cambiado ningún dato de origen.
Vaya a su lakehouse y seleccione vistas materializadas del lago.
Haga clic en Administrar y desactive el interruptor Refresco óptimo.