Vos exécutions dbt font-elles discrètement grimper les coûts de calcul de l'entrepôt ?

dbt exécute tout dans l'entrepôt, donc un full refresh là où un chargement incrémental suffirait, ou une matérialisation en table qui se reconstruit chaque nuit, se traduit par des coûts de calcul, pas par une erreur. La logique incrémentale est optionnelle dans dbt. Dans un Data Vault généré, c'est la seule façon dont les chargements sont écrits.

Vos exécutions dbt font-elles discrètement grimper les coûts de calcul de l'entrepôt ?

La plateforme d'automatisation de data warehouse à laquelle les équipes data font confiance

Cela vous semble familier ?

  • L'exécution nocturne réussit, et la facture Snowflake ou BigQuery qu'elle génère grossit chaque trimestre sans qu'aucun nouveau modèle ait été ajouté.
  • La moitié du projet est matérialisée en tables qui se reconstruisent en entier parce que la logique incrémentale n'a jamais été écrite pour elles.
  • Un petit changement en amont déclenche une exécution sur tout le DAG, et personne ne sait quelle partie avait réellement besoin de tourner.
  • Le service financier demande pourquoi les coûts de calcul ont augmenté, et la réponse honnête est une liste de modèles que personne n'a profilés.

dbt, désormais une seule entreprise avec Fivetran, exécute chaque modèle dans l’entrepôt. C’est la bonne architecture. Cela signifie aussi que l’inefficacité n’a pas d’état d’erreur : un modèle qui reconstruit un an d’historique chaque nuit réussit, et le coût apparaît ailleurs.

Pourquoi les coûts de calcul dérivent

  • Les reconstructions complètes sont le comportement par défaut. Une matérialisation table supprime et recrée la table à chaque exécution. La rendre incrémentale est un travail supplémentaire par modèle, et ce travail est facile à repousser.
  • La logique incrémentale est sur mesure. Les clés uniques, les fenêtres de rattrapage et les stratégies de merge sont décidées modèle par modèle, par celui qui l’a écrit, et elles divergent d’un développeur à l’autre.
  • Le DAG s’exécute sur un périmètre plus large que le changement. Une seule entrée modifiée peut déclencher une exécution sur de nombreux modèles en aval, dont la plupart produisent le même résultat qu’hier.
  • Personne ne profile ce qui fonctionne. Tant qu’une exécution se termine en vert, personne ne regarde plus loin. Le coût de calcul par modèle est visible dans la console de l’entrepôt, pas dans le pipeline.

Rien de tout cela n’est la faute de dbt. Une logique de transformation écrite à la main est aussi efficace que le temps dont son auteur disposait pour l’optimiser.

Où l’efficacité devrait se situer

  • Le delta devrait être le seul mode de chargement. Si le pattern de chargement est généré, l’incrémental n’est pas un choix qu’un développeur fait sous pression. C’est la façon dont chaque chargement est écrit.
  • L’historique devrait être isolé en un seul endroit. Les satellites conservent les changements au fil du temps, donc la couche des marts n’a jamais à recalculer l’historique pour répondre à une question sur le présent.
  • Du SQL ensembliste pour le moteur que vous exploitez. Le code généré peut être optimisé par plateforme une seule fois, plutôt que modèle par modèle, par celui qui l’a écrit.

Ce qui change avec Datavault Builder

Datavault Builder génère des chargements delta ensemblistes pour les hubs, links et satellites, optimisés pour le moteur cible, donc la partie chère du pipeline ne touche jamais que ce qui a changé.

  • Chaque chargement est un delta par construction. Les lignes nouvelles et modifiées sont détectées par rapport à ce qui est déjà historisé. Rien n’est supprimé et recréé.
  • L’historique est conservé dans les satellites. Les questions sur l’état passé trouvent leur réponse dans les changements déjà stockés, et non en reconstruisant le passé à chaque exécution. Les chargements bi-temporels et les tables point-in-time sont des patterns que la plateforme propose nativement, pas quelque chose à construire à partir de macros.
  • Le périmètre d’exécution suit le modèle. Les dépendances sont dérivées, donc un changement charge ce qu’il touche et rien au-delà.
  • dbt State et Fusion aident toujours si dbt reste. Datavault Builder peut générer les modèles dbt pour les équipes qui y gardent l’exploitation, et celles-ci profitent du fait que les modèles inchangés sont sautés. Les couches générées en dessous n’ont jamais eu besoin d’être sautées, parce qu’elles ne faisaient jamais le travail complet.
  • Les coûts de calcul deviennent prévisibles. Le coût de chargement suit l’ampleur des changements dans les sources, pas la taille totale de l’entrepôt, et c’est un chiffre que vous pouvez surveiller.

Ce qu’il faut décider

Prenez les dix modèles les plus chers dans l’historique des requêtes de l’entrepôt du dernier mois. Si la plupart sont des modèles de staging ou d’historique reconstruits en entier, c’est exactement la couche qui devrait être générée.

Voyez-le fonctionner sur l'une de vos sources

Réservez une démo gratuite et apportez le connecteur qui vous coûte le plus cher, en argent ou en temps.

Trois étapes vers un pipeline que vous maîtrisez

  1. Trouver les reconstructions complètes

    Triez les modèles selon le calcul consommé par exécution. Les matérialisations en table de grandes sources sont généralement en tête de liste.

  2. Générer les chargements delta

    Dans Datavault Builder, les hubs, les links et les satellites se chargent en comparant les données à ce qui est déjà historisé. Seuls les changements circulent.

  3. Exécuter le reste par-dessus

    Les marts et les métriques se calculent à partir d’un vault qui n’a changé que là où la source a changé.

Comment Datavault Builder supprime les frictions de l'ingestion

  • L'ingestion est intégrée

    Chargements batch, delta et CDC depuis les bases de données, les fichiers, les API REST, les sources NoSQL et Python, les flux comme Kafka arrivant en micro-batches. La même plateforme qui génère le warehouse, sans seconde facture.

  • Votre schéma, pas celui du fournisseur

    Les tables source sont mappées vers un modèle Data Vault 2.0 que vous avez conçu. Une nouvelle colonne ou une table renommée change un mapping, pas une chaîne de scripts post-chargement.

  • Seuls les deltas circulent

    Les Hubs, Links et Satellites chargent ce qui a changé. Les rechargements complets restent en staging au lieu d’être retraités en aval chaque nuit.

  • L'historique est conservé par conception

    Chaque changement est conservé tel qu’il arrive, donc le reporting historique fonctionne même là où la source écrase ses propres lignes.

  • Du code que vous n'écrivez jamais

    Le chargement, l’historisation et la traçabilité sont générés depuis le modèle en temps réel et s’exécutent nativement sur Snowflake, Databricks, BigQuery, SQL Server, Fabric, Oracle ou PostgreSQL.

  • Une plateforme, jusqu'à neuf outils en moins

    Modélisation, ETL, CI/CD, documentation et traçabilité au même endroit. C’est ce qui rend possible les 14,7 minutes entre le besoin et la production.

Reconnu par BARC dans The Data Fabric Survey 26

Rencontrez notre expert

Vingt minutes avec notre Sales Director et une réponse honnête sur l’adéquation avec votre stack.

Matt Collett

Matt Collett

Sales Director

Que recherchez-vous ?

En soumettant, vous acceptez notre Politique de confidentialité.

Les autres problèmes traités par cette série

  • Le compromis dbt

    Le compromis dbt : prolifération du code, TCO caché et les arguments en faveur de la modélisation automatisée

    dbt a apporté le génie logiciel au SQL, et les équipes ont raison de le vouloir. Le compromis est une couche de transformation qui s’alourdit en code, en coût et en calcul, au-dessus d’un outil d’ingestion qui reste un produit séparé. Un Data Vault généré retire toute cette couche de la base de code. Il n’a pas besoin de dbt, mais il peut se combiner avec lui.

  • Lacune d'ingestion

    dbt vous laisse-t-il encore charger les données vous-même ?

    dbt est un outil de transformation par conception. Il suppose que les données brutes sont déjà dans l’entrepôt, donc l’étape de chargement est un second produit avec une seconde facture, même maintenant que Fivetran et dbt Labs sont une seule entreprise. Une plateforme d’entrepôt qui ingère et modélise au même endroit comble la lacune sans second contrat.

  • Prolifération des modèles

    Votre projet dbt compte-t-il plus de modèles que quiconque ne peut expliquer ?

    ref() fait d’un nouveau modèle une décision d’une ligne, et un projet de centaines de fichiers SQL sans gouvernance claire en est le résultat. Changer une clé métier en amont revient alors à retrouver chaque modèle qui en a hérité. La solution ne consiste pas à ajouter des tests. C’est un modèle qui génère la structure au lieu de l’accumuler.

Questions et réponses