Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les flux REPLACE WHERE et les vues matérialisées autonomes permettent de maintenir des tables dérivées qui restent à jour au fur et à mesure que les données sources changent, mais elles résolvent des problèmes différents. Pour la plupart des charges de travail d’extraction, de transformation et de chargement (ETL) par lots qui écrasent périodiquement une fenêtre temporelle ou une partition, utilisez un flux REPLACE WHERE incrémental. Utilisez des vues matérialisées pour une couche d’accélération de requêtes qui fournit des résultats précalculés aux tableaux de bord et aux rapports.
Cette page couvre les tables de streaming indépendantes et les vues matérialisées. Pour les flux REPLACE WHERE dans un pipeline Lakeflow, voir Traitement par lots avec flux REPLACE WHERE.
Utilisez REPLACE WHERE pour les écrasements par lots
Un flux REPLACE WHERE recalcule et écrase uniquement les lignes correspondant à un prédicat, comme une fenêtre temporelle ou une partition. Toutes les autres lignes restent inchangées. Parce que le flux réévalue la requête source uniquement pour cette plage de prédicats, le coût de chaque rafraîchissement dépend de la taille de la plage, pas de celle de la table.
Une vue matérialisée conserve le résultat complet de sa requête définissante. Azure Databricks actualise progressivement une vue matérialisée lorsque la requête et les données source s’y prêtent, et effectue sinon un rafraîchissement complet. Le fait qu’un rafraîchissement soit incrémental dépend de la structure de requête et des tables sources, ce qui rend le coût de chaque rafraîchissement plus difficile à prévoir. Voir Comment les vues matérialisées autonomes sont-elles actualisées ?.
Pour un modèle de données ETL batch qui évolue dans des plages limitées, un flux REPLACE WHERE vous permet de contrôler exactement quelles lignes chaque rafraîchissement réécrit. Une vue matérialisée convient mieux lorsque les lecteurs ont besoin d’un accès rapide à un résultat précalculé.
Associer les éléments aux couches Medallion
Le tableau suivant associe chaque couche d’une architecture médaillon au concept recommandé par Databricks :
| Couche | Construction | Pourquoi |
|---|---|---|
| Bronze (ingestion à l’état brut) | Ingestion avec Lakeflow Connect ou Auto Loader | Il dépose les enregistrements bruts progressivement à leur arrivée, sans retraiter l’historique. |
| Silver (faits) | Flux incrémental REPLACE WHERE flow | Écrase uniquement les fenêtres temporelles ou partitions concernées pour les mises à jour de faits, les données arrivant en retard et les corrections. |
| Argent (dimensions) |
AUTO CDC flux |
Applique automatiquement la sémantique d’insertion, de mise à jour et de suppression et préserve l’historique avec la dimension à changement lent (SCD) Type 1 ou Type 2. |
| Or (agrégations et modèles de données) | Flux incrémental REPLACE WHERE | Recalcule uniquement la plage de prédicats pour les agrégats et les modèles, évitant les recalculs complets de table. |
| Accélération des requêtes et mise à disposition | vue matérialisée | Fournit les résultats précalculés aux tableaux de bord et rapports et maintient les résultats des requêtes à jour. |
Guide de décision
Utilisez le guide suivant pour choisir entre les deux structures.
Utilisez un flux REPLACE WHERE lorsque vous :
- Exécutez périodiquement des écrasements par lot d’une fenêtre temporelle ou d’une partition.
- Corrigez les données arrivant tardivement.
- Appliquez des suppressions de conformité à une plage bornée.
- Rafraîchir les données au niveau de la partition.
Utilisez une vue matérialisée lorsque vous :
- Accélérez les requêtes sur les dashboards.
- Servez des agrégations précalculées aux lecteurs.
- Gardez les résultats des requêtes à jour pour une couche de diffusion.
Exemple : écrasement incrémental avec REPLACE WHERE
L’exemple suivant définit une table cible qui ne remplace que les 7 derniers jours de données à chaque rafraîchissement. Lors du rafraîchissement, le flux supprime les lignes correspondant au prédicat, recalcule la requête source pour cette même plage, puis insère les résultats. Les rangées à l’extérieur de la fenêtre restent intactes :
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 est nécessaire pour que les colonnes correspondent par nom plutôt que par position. Pour la syntaxe complète, les dérogations de prédicats, les rechargements historiques et le comportement de rafraîchissement incrémental, voir REPLACE WHERE flows pour les tables de streaming autonomes.