<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Dbt | </title>
    <link>http://localhost:1313/tags/dbt/</link>
      <atom:link href="http://localhost:1313/tags/dbt/index.xml" rel="self" type="application/rss+xml" />
    <description>Dbt</description>
    <generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-FR</language><lastBuildDate>Thu, 02 Jul 2026 00:00:00 +0000</lastBuildDate>
    <image>
      <url>http://localhost:1313/media/logo.svg</url>
      <title>Dbt</title>
      <link>http://localhost:1313/tags/dbt/</link>
    </image>
    
    <item>
      <title>Migration ETL - de l&#39;ETL legacy vers dbt</title>
      <link>http://localhost:1313/ressources/migration-etl/migration-etl-vers-dbt/</link>
      <pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate>
      <guid>http://localhost:1313/ressources/migration-etl/migration-etl-vers-dbt/</guid>
      <description>&lt;p&gt;La migration vers dbt consiste à transformer des traitements ETL propriétaires en modèles SQL exécutés directement dans le moteur de données cible.&lt;/p&gt;
&lt;p&gt;















&lt;figure  &gt;
  &lt;div class=&#34;flex justify-center	&#34;&gt;
    &lt;div class=&#34;w-full&#34; &gt;
          &lt;img alt=&#34;img-big&#34; 
               srcset=&#34;http://localhost:1313/ressources/migration-etl/migration-etl-vers-dbt/etl_technologies_hu_570947d1352b81ab.webp 320w, http://localhost:1313/ressources/migration-etl/migration-etl-vers-dbt/etl_technologies_hu_cbc88a0f326e8926.webp 480w, http://localhost:1313/ressources/migration-etl/migration-etl-vers-dbt/etl_technologies_hu_194d6a576d2fd3eb.webp 760w&#34;
               sizes=&#34;(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px&#34;
               src=&#34;http://localhost:1313/ressources/migration-etl/migration-etl-vers-dbt/etl_technologies_hu_570947d1352b81ab.webp&#34;
               width=&#34;760&#34;
               height=&#34;197&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Avant toute conversion, &lt;strong style=&#34;color:#C00000;&#34;&gt;{openAudit}&lt;/strong&gt; analyse les flux, les dépendances et les usages afin d&amp;rsquo;identifier le périmètre réellement utile.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Point clé :&lt;/strong&gt; la migration commence par une phase de rationalisation du patrimoine existant.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;analyse-des-flux&#34;&gt;Analyse des flux&lt;/h2&gt;
&lt;p&gt;Les traitements ETL sont analysés pour reconstruire les dépendances, les transformations et les usages.&lt;/p&gt;
&lt;p&gt;Le data lineage est utilisé pour identifier les flux actifs, les branches mortes et les composants non consommés.&lt;/p&gt;
&lt;p&gt;Cette phase permet de réduire le volume de traitements à migrer.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Résultat :&lt;/strong&gt; un périmètre de migration recentré sur les traitements réellement utilisés.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;conversion-vers-sql&#34;&gt;Conversion vers SQL&lt;/h2&gt;
&lt;p&gt;Les jobs ETL sont décomposés en opérations élémentaires : filtres, jointures, agrégations, lookups, calculs métier et transformations.&lt;/p&gt;
&lt;p&gt;Ces composants sont convertis en SQL documenté et indépendant de la technologie source.&lt;/p&gt;
&lt;p&gt;Le SQL devient la représentation pivot des traitements.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Point clé :&lt;/strong&gt; la logique métier est reconstruite en SQL avant génération du projet dbt.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;génération-des-modèles-dbt&#34;&gt;Génération des modèles dbt&lt;/h2&gt;
&lt;p&gt;Les traitements SQL sont organisés sous forme de modèles dbt.&lt;/p&gt;
&lt;p&gt;Les dépendances entre modèles sont générées automatiquement à partir des flux identifiés pendant l&amp;rsquo;analyse.&lt;/p&gt;
&lt;p&gt;La structure du projet, les références entre modèles et la documentation peuvent être produites automatiquement.&lt;/p&gt;
&lt;h2 id=&#34;validation-progressive&#34;&gt;Validation progressive&lt;/h2&gt;
&lt;p&gt;La migration est réalisée par lots.&lt;/p&gt;
&lt;p&gt;Les modèles générés sont validés puis intégrés progressivement dans l&amp;rsquo;environnement cible.&lt;/p&gt;
&lt;p&gt;Les écarts peuvent être contrôlés traitement par traitement pendant la phase de transition.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Usage typique :&lt;/strong&gt; migration progressive de plusieurs centaines de jobs ETL vers dbt.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;architecture-cible&#34;&gt;Architecture cible&lt;/h2&gt;
&lt;p&gt;Les traitements deviennent des modèles SQL versionnables et maintenables.&lt;/p&gt;
&lt;p&gt;Les dépendances sont explicites, les transformations sont visibles et les traitements peuvent être exécutés directement par Snowflake, BigQuery, Databricks SQL, Redshift, PostgreSQL ou tout autre moteur compatible.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Point clé :&lt;/strong&gt; les traitements ne dépendent plus de la plateforme ETL historique mais d&amp;rsquo;un projet dbt basé sur du SQL ouvert.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;script&gt;
(function () {
  // Masque la date &#34;Last updated on&#34; et le bloc Auteur sur les pages
  // Ressources : ce ne sont pas des articles de blog (pas de date/signature).
  function hide() {
    document.querySelectorAll(&#34;time.mt-12.mb-8&#34;).forEach(function (el) {
      el.style.display = &#34;none&#34;;
    });
    document.querySelectorAll(&#34;div.flex.pt-12.pb-4&#34;).forEach(function (el) {
      if (el.querySelector(&#39;img[src*=&#34;/media/authors/&#34;]&#39;)) {
        el.style.display = &#34;none&#34;;
      }
    });
    // Filet de sécurité supplémentaire : masque aussi la ligne de partage
    // social et tout conteneur lié à la fiche auteur, par correspondance
    // sémantique plutôt que par nom de classe (plus robuste aux mises à jour
    // du thème).
    var shareHrefPatterns = [
      &#34;twitter.com/intent&#34;, &#34;x.com/intent&#34;, &#34;facebook.com/sharer&#34;,
      &#34;linkedin.com/sharing&#34;, &#34;wa.me/&#34;, &#34;api.whatsapp.com&#34;, &#34;mailto:?&#34;
    ];
    document.querySelectorAll(&#34;a[href]&#34;).forEach(function (a) {
      var href = a.getAttribute(&#34;href&#34;) || &#34;&#34;;
      if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
        a.style.display = &#34;none&#34;;
      }
    });
    document.querySelectorAll(&#39;a[href=&#34;http://localhost:1313/authors/me/&#34;]&#39;).forEach(function (a) {
      var el = a.closest(&#34;div.flex&#34;) || a.parentElement;
      if (el) el.style.display = &#34;none&#34;;
    });
  }
  document.addEventListener(&#34;DOMContentLoaded&#34;, hide);
})();
&lt;/script&gt;
</description>
    </item>
    
    <item>
      <title>Migration ETL - de l&#39;ETL legacy vers le SQL</title>
      <link>http://localhost:1313/ressources/migration-etl/migration-etl-vers-le-sql/</link>
      <pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate>
      <guid>http://localhost:1313/ressources/migration-etl/migration-etl-vers-le-sql/</guid>
      <description>&lt;p&gt;Les plateformes ETL historiques implémentent principalement des filtres, jointures, agrégations, mappings et transformations qui peuvent être exprimés en SQL.&lt;/p&gt;
&lt;p&gt;&lt;strong style=&#34;color:#C00000;&#34;&gt;{openAudit}&lt;/strong&gt; analyse les jobs ETL, reconstruit les flux et génère un équivalent SQL indépendant de la technologie source.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Point clé :&lt;/strong&gt; les traitements sont reconstruits sous forme de SQL documenté et versionnable.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;analyse-des-traitements&#34;&gt;Analyse des traitements&lt;/h2&gt;
&lt;p&gt;Les référentiels ETL sont analysés pour reconstruire les sources, les cibles, les transformations, les paramètres et les dépendances entre traitements.&lt;/p&gt;
&lt;p&gt;Les métadonnées collectées permettent de reconstituer le fonctionnement réel des flux.&lt;/p&gt;
&lt;p&gt;Les composants inutilisés ou non consommés peuvent être identifiés avant migration.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Résultat :&lt;/strong&gt; un périmètre de migration réduit aux traitements réellement utilisés.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;reconstruction-des-flux&#34;&gt;Reconstruction des flux&lt;/h2&gt;
&lt;p&gt;Les chaînes de traitement sont reconstruites à partir des jobs ETL.&lt;/p&gt;
&lt;p&gt;Les dépendances entre traitements, les flux intermédiaires, les variables et les paramètres sont intégrés dans le modèle cible.&lt;/p&gt;
&lt;p&gt;Cette cartographie constitue le point d&amp;rsquo;entrée de la conversion.&lt;/p&gt;
&lt;h2 id=&#34;rationalisation&#34;&gt;Rationalisation&lt;/h2&gt;
&lt;p&gt;Le croisement du data lineage (jusqu&amp;rsquo;au champ) avec les usages réellement observés permet d&amp;rsquo;identifier les données effectivement consommées et d&amp;rsquo;écarter celles qui ne le sont pas.&lt;/p&gt;
&lt;p&gt;Chaque job est également analysé pour en évaluer la complexité : nombre d&amp;rsquo;étapes, profondeur des sous-traitements, types de transformations et dépendances externes. Ces métriques sont agrégées en un score de complexité, utilisé pour prioriser et planifier la migration.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Résultat :&lt;/strong&gt; un périmètre de migration réduit aux traitements réellement utilisés, priorisé selon leur complexité réelle.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;génération-sql&#34;&gt;Génération SQL&lt;/h2&gt;
&lt;p&gt;Les transformations détectées sont converties en SQL.&lt;/p&gt;
&lt;p&gt;Filtres, jointures, agrégations, lookups, mappings et calculs sont traduits en instructions SQL successives, à plat.&lt;/p&gt;
&lt;p&gt;Le SQL produit conserve le découpage logique des traitements d&amp;rsquo;origine.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Point clé :&lt;/strong&gt; chaque étape du traitement reste identifiable dans le SQL généré.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;exemple--jobs-ibm-datastage&#34;&gt;Exemple : jobs IBM DataStage&lt;/h2&gt;
&lt;p&gt;Sur un patrimoine DataStage, chaque type de stage est traduit selon sa logique propre :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Runtime Column Propagation (RCP)&lt;/strong&gt; : la liste des colonnes n&amp;rsquo;est pas figée dans le job ; elle est générée dynamiquement dans le SQL, pilotée par les variables passées au job.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Connecteurs Oracle&lt;/strong&gt; (lecture / écriture) : SELECT, UPDATE, MERGE ou INSERT générés à partir des options du stage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Change Capture (CDC)&lt;/strong&gt; : comparaison Before/After sur clés primaires, détection des lignes nouvelles, modifiées et supprimées.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transformer CDC&lt;/strong&gt; : routage conditionnel vers un flux dédié selon le code de changement détecté.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shared Container&lt;/strong&gt; : bloc logique factorisé, rendu comme un bloc SQL standardisé et réutilisé dans plusieurs jobs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Column Generator&lt;/strong&gt; : colonnes calculées traduites en expressions SQL typées.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modify&lt;/strong&gt; : conversions de types traduites en CAST SQL (ex. string vers timestamp).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funnel&lt;/strong&gt; : fusion de plusieurs flux via UNION SQL, avec homogénéisation du schéma de sortie.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;















&lt;figure  &gt;
  &lt;div class=&#34;flex justify-center	&#34;&gt;
    &lt;div class=&#34;w-full&#34; &gt;
          &lt;img alt=&#34;img-big&#34; 
               srcset=&#34;http://localhost:1313/ressources/migration-etl/migration-etl-vers-le-sql/datastage_screenshot_exemple_hu_1816a65e5026b334.webp 320w, http://localhost:1313/ressources/migration-etl/migration-etl-vers-le-sql/datastage_screenshot_exemple_hu_a51a8ad6f4ff8541.webp 480w, http://localhost:1313/ressources/migration-etl/migration-etl-vers-le-sql/datastage_screenshot_exemple_hu_c0539ef9bc40bb3e.webp 760w&#34;
               sizes=&#34;(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px&#34;
               src=&#34;http://localhost:1313/ressources/migration-etl/migration-etl-vers-le-sql/datastage_screenshot_exemple_hu_1816a65e5026b334.webp&#34;
               width=&#34;760&#34;
               height=&#34;320&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Résultat observé :&lt;/strong&gt; sur un patrimoine de plusieurs centaines de jobs DataStage, plus de 95 % des traductions SQL aboutissent dès la première exécution.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;adaptation-aux-plateformes-cibles&#34;&gt;Adaptation aux plateformes cibles&lt;/h2&gt;
&lt;p&gt;Le SQL généré peut être adapté aux dialectes des plateformes cibles.&lt;/p&gt;
&lt;p&gt;Les fonctions, types de données et mécanismes spécifiques sont pris en compte lors de la génération.&lt;/p&gt;
&lt;p&gt;Les mêmes traitements peuvent être produits pour Snowflake, BigQuery, Databricks SQL, Redshift, PostgreSQL, SQL Server ou d&amp;rsquo;autres moteurs compatibles SQL.&lt;/p&gt;
&lt;h2 id=&#34;orchestration&#34;&gt;Orchestration&lt;/h2&gt;
&lt;p&gt;Les dépendances et l&amp;rsquo;ordonnancement des traitements sont conservés.&lt;/p&gt;
&lt;p&gt;Les traitements générés peuvent être intégrés dans les outils d&amp;rsquo;orchestration déjà présents dans le Système d&amp;rsquo;Information.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Usage typique :&lt;/strong&gt; intégration dans Airflow, Control-M ou tout autre ordonnanceur existant.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;sql-comme-format-pivot&#34;&gt;SQL comme format pivot&lt;/h2&gt;
&lt;p&gt;Le SQL devient la représentation commune des traitements.&lt;/p&gt;
&lt;p&gt;Les transformations ne dépendent plus des composants propriétaires de la plateforme ETL d&amp;rsquo;origine.&lt;/p&gt;
&lt;p&gt;Les traitements peuvent être versionnés, relus, testés et déployés indépendamment de la technologie source.&lt;/p&gt;



  
  &lt;blockquote class=&#34;border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6&#34;&gt;
    &lt;p&gt;&lt;strong&gt;Point clé :&lt;/strong&gt; la logique de transformation reste maîtrisée par l&amp;rsquo;entreprise et ne dépend plus d&amp;rsquo;un moteur ETL spécifique.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;script&gt;
(function () {
  // Masque la date &#34;Last updated on&#34; et le bloc Auteur sur les pages
  // Ressources : ce ne sont pas des articles de blog (pas de date/signature).
  function hide() {
    document.querySelectorAll(&#34;time.mt-12.mb-8&#34;).forEach(function (el) {
      el.style.display = &#34;none&#34;;
    });
    document.querySelectorAll(&#34;div.flex.pt-12.pb-4&#34;).forEach(function (el) {
      if (el.querySelector(&#39;img[src*=&#34;/media/authors/&#34;]&#39;)) {
        el.style.display = &#34;none&#34;;
      }
    });
    // Filet de sécurité supplémentaire : masque aussi la ligne de partage
    // social et tout conteneur lié à la fiche auteur, par correspondance
    // sémantique plutôt que par nom de classe (plus robuste aux mises à jour
    // du thème).
    var shareHrefPatterns = [
      &#34;twitter.com/intent&#34;, &#34;x.com/intent&#34;, &#34;facebook.com/sharer&#34;,
      &#34;linkedin.com/sharing&#34;, &#34;wa.me/&#34;, &#34;api.whatsapp.com&#34;, &#34;mailto:?&#34;
    ];
    document.querySelectorAll(&#34;a[href]&#34;).forEach(function (a) {
      var href = a.getAttribute(&#34;href&#34;) || &#34;&#34;;
      if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
        a.style.display = &#34;none&#34;;
      }
    });
    document.querySelectorAll(&#39;a[href=&#34;http://localhost:1313/authors/me/&#34;]&#39;).forEach(function (a) {
      var el = a.closest(&#34;div.flex&#34;) || a.parentElement;
      if (el) el.style.display = &#34;none&#34;;
    });
  }
  document.addEventListener(&#34;DOMContentLoaded&#34;, hide);
})();
&lt;/script&gt;
</description>
    </item>
    
  </channel>
</rss>
