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.
Tanto los flows REPLACE WHERE como las vistas materializadas independientes permiten mantener tablas derivadas que se mantienen actualizadas a medida que cambian los datos fuente, pero resuelven problemas diferentes. Para la mayoría de las cargas de trabajo de extracción, transformación y carga por lotes (ETL) que periódicamente sobrescriben una ventana temporal o una partición, se utiliza un flujo incremental de REPLACE WHERE . Utiliza vistas materializadas como capa de aceleración de consultas que sirve resultados precomputados a paneles de control e informes.
Esta página cubre tablas de streaming independientes y vistas materializadas. Para flujos REPLACE WHERE en una tubería Lakeflow, véase procesamiento por lotes con flujos REPLACE WHERE.
Usa REPLACE WHERE para sobrescribir por lotes
Un flujo REPLACE WHERE flow recalcula y sobrescribe solo las filas que coinciden con un predicado, como una ventana temporal o una partición. Todas las demás filas permanecen intactas. Como el flujo reevalúa la consulta fuente solo para ese rango de predicados, el coste de cada actualización depende del tamaño del rango, no del tamaño de la tabla.
Una vista materializada mantiene el resultado completo de su consulta definitoria. Azure Databricks actualiza una vista materializada de forma incremental cuando la consulta y los datos fuente la soportan, y en caso contrario ejecuta una actualización completa. Si una actualización es incremental depende de la estructura de consulta y de las tablas fuente, por lo que el coste de cada actualización es más difícil de predecir. Consulte ¿Cómo se actualizan las vistas materializadas independientes?.
Para un modelo de datos ETL por lotes que cambia en rangos acotados, un flujo REPLACE WHERE te permite controlar exactamente qué filas reescribe cada refresco. Una vista materializada es la mejor opción cuando los lectores necesitan acceso rápido a un resultado precomputado.
Asignar constructos a capas medallion
La siguiente tabla asigna cada capa de una arquitectura de medallón al elemento que recomienda Databricks:
| Nivel | Construir | Por qué |
|---|---|---|
| Bronce (ingesta sin procesar) | Ingestión con Lakeflow Connect o Auto Loader | Ingiere los registros en bruto de forma incremental a medida que llegan, sin reprocesar el histórico. |
| Plata (datos) | Flujo REPLACE incremental WHERE | Sobrescribe solo las ventanas temporales o particiones afectadas para actualizaciones de hechos, datos que llegan tarde y correcciones. |
| Plata (dimensiones) |
AUTO CDC Flujo |
Aplica semántica de insertar, actualizar y eliminar automáticamente y preserva el historial con dimensión que cambia lentamente (SCD) Tipo 1 o Tipo 2. |
| Oro (agregaciones y modelos de datos) | Incremental flujo REPLACE WHERE | Recalcula solo el rango del predicado para agregados y modelos, evitando los recálculos de tabla completa. |
| Aceleración de consultas y provisión | vista materializada | Sirve resultados precomputados a paneles e informes y mantiene actualizados los resultados de las consultas. |
Guía para la toma de decisiones
Utiliza la siguiente guía para elegir entre las dos estructuras.
Utiliza un flujo REPLACE WHERE cuando##
- Ejecuta sobrescrituras periódicas por lotes de una ventana temporal o partición.
- Corrija los datos recibidos con retraso.
- Aplica eliminaciones de cumplimiento a un rango delimitado.
- Actualizar datos a nivel de partición.
Utiliza una vista materializada para:
- Acelera las consultas en el panel de control.
- Sirve agregaciones precomputadas a los lectores.
- Mantén los resultados de las consultas actualizados para una capa de servicio.
Ejemplo: sobrescritura incremental con REPLACE WHERE
El siguiente ejemplo define una tabla objetivo que sobrescribe solo los últimos 7 días de datos en cada actualización. Durante la actualización, el flujo elimina las filas que coinciden con el predicado, recalcula la consulta de origen para ese mismo rango e inserta los resultados. Las filas fuera de la ventana permanecen intactas:
CREATE OR REFRESH STREAMING TABLE payments_latest
FLOW REPLACE WHERE payment_date >= date_add(current_date(), -7) BY NAME
SELECT payment_id, booking_id, status, payment_date
FROM samples.wanderbricks.payments;
BY NAME es necesario para que las columnas coincidan por nombre y no por posición. Para la sintaxis completa, las sobrescrituras de predicados, las recargas históricas y el comportamiento de actualización incremental, véase flujos REPLACE WHERE para tablas de streaming independientes.