<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Middlewares — {oa.tbx} et {oa-lake} | </title>
    <link>http://localhost:1313/ressources/middlewares/</link>
      <atom:link href="http://localhost:1313/ressources/middlewares/index.xml" rel="self" type="application/rss+xml" />
    <description>Middlewares — {oa.tbx} et {oa-lake}</description>
    <generator>HugoBlox Kit (https://hugoblox.com)</generator><language>fr-FR</language><lastBuildDate>Fri, 03 Jul 2026 00:00:00 +0000</lastBuildDate>
    <image>
      <url>http://localhost:1313/media/logo.svg</url>
      <title>Middlewares — {oa.tbx} et {oa-lake}</title>
      <link>http://localhost:1313/ressources/middlewares/</link>
    </image>
    
    <item>
      <title>Migration ETL - de l&#39;ETL legacy vers un ETL SQL ouvert - {oa.tbx}</title>
      <link>http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/</link>
      <pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate>
      <guid>http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/</guid>
      <description>&lt;p&gt;Une fois les traitements ETL convertis en SQL par &lt;strong style=&#34;color:#C00000;&#34;&gt;{openAudit}&lt;/strong&gt;, ils peuvent être exécutés dans le conteneur &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa.tbx}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong style=&#34;color:#C00000;&#34;&gt;{oa.tbx}&lt;/strong&gt; fournit un environnement d&amp;rsquo;exécution pour des traitements SQL, Python ou Java, pilotés par des référentiels de configuration et d&amp;rsquo;orchestration.&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 migrés deviennent des instructions SQL exécutables indépendamment de la plateforme ETL d&amp;rsquo;origine.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;principes&#34;&gt;Principes&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;encapsulation du SQL se fait dans des conteneurs ouverts, en mode ETL.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Des conteneurs :&lt;/strong&gt; les transformations s&amp;rsquo;exécutent dans un conteneur externe, &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa.tbx}&lt;/strong&gt;, détaché de la base de données cible. Les conteneurs temporaires servent de zones de stockage intermédiaires où les données sont chargées avant transformation. Les jobs sont testés pour vérifier leur fonctionnement, et possiblement les données, pour garantir leur intégrité.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Orchestration avec Airflow :&lt;/strong&gt; Airflow pilote l&amp;rsquo;exécution des conteneurs, étape par étape. Chaque transformation, au sein d&amp;rsquo;un conteneur, est définie comme un job.&lt;/li&gt;
&lt;/ol&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/middlewares/migration-etl-vers-oa-tbx/oa_tbx_airflow_scheduling_hu_3d51582657fd7652.webp 320w, http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/oa_tbx_airflow_scheduling_hu_e491566fb88257d1.webp 480w, http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/oa_tbx_airflow_scheduling_hu_94523c4431e46e11.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/middlewares/migration-etl-vers-oa-tbx/oa_tbx_airflow_scheduling_hu_3d51582657fd7652.webp&#34;
               width=&#34;760&#34;
               height=&#34;456&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Le scheduling d&amp;rsquo;un ETL migré vers Airflow reprend automatiquement l&amp;rsquo;ensemble des instructions et de l&amp;rsquo;ordonnancement d&amp;rsquo;origine.&lt;/p&gt;
&lt;h2 id=&#34;chaîne-dexécution&#34;&gt;Chaîne d&amp;rsquo;exécution&lt;/h2&gt;
&lt;p&gt;Les jobs ETL sont convertis en SQL par &lt;strong style=&#34;color:#C00000;&#34;&gt;{openAudit}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Les traitements produits sont intégrés dans un référentiel de configuration et un référentiel de pilotage utilisés par &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa.tbx}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Les workflows sont ensuite orchestrés par des outils tels qu&amp;rsquo;Airflow ou Dagster.&lt;/p&gt;
&lt;h2 id=&#34;conteneur-dexécution&#34;&gt;Conteneur d&amp;rsquo;exécution&lt;/h2&gt;
&lt;p&gt;&lt;strong style=&#34;color:#C00000;&#34;&gt;{oa.tbx}&lt;/strong&gt; exécute les traitements décrits dans les workflows.&lt;/p&gt;
&lt;p&gt;Les dataflows peuvent combiner :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL ;&lt;/li&gt;
&lt;li&gt;Python ;&lt;/li&gt;
&lt;li&gt;Java ;&lt;/li&gt;
&lt;li&gt;autres.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le moteur peut également s&amp;rsquo;appuyer sur des bases embarquées telles que DuckDB pour certains traitements intermédiaires.&lt;/p&gt;
&lt;h2 id=&#34;sources-et-cibles&#34;&gt;Sources et cibles&lt;/h2&gt;
&lt;p&gt;Les données d&amp;rsquo;entrée peuvent provenir de n&amp;rsquo;importe quelle technologie accessible en SQL ou JDBC.&lt;/p&gt;
&lt;p&gt;Les résultats peuvent être chargés vers tout système cible compatible avec les mécanismes d&amp;rsquo;écriture standards.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;architecture reste indépendante des technologies source et cible.&lt;/p&gt;
&lt;h2 id=&#34;orchestration&#34;&gt;Orchestration&lt;/h2&gt;
&lt;p&gt;L&amp;rsquo;orchestration reste séparée des traitements.&lt;/p&gt;
&lt;p&gt;Les dépendances, paramètres d&amp;rsquo;exécution, planifications et déclenchements sont gérés par la couche workflow.&lt;/p&gt;
&lt;p&gt;Les traitements métier restent contenus dans les scripts SQL et les dataflows exécutés par &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa.tbx}&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;bénéfices&#34;&gt;Bénéfices&lt;/h2&gt;
&lt;p&gt;&lt;strong style=&#34;color:#C00000;&#34;&gt;{oa.tbx}&lt;/strong&gt; exécute des pipelines SQL ouverts, orchestrés par Airflow et indépendants des runtimes propriétaires des plateformes Cloud.&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/middlewares/migration-etl-vers-oa-tbx/oa_tbx_benefices_hu_5564756e59bc4d9d.webp 320w, http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/oa_tbx_benefices_hu_bd62de57ae1ea1a3.webp 480w, http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/oa_tbx_benefices_hu_1190f45aaad4e051.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/middlewares/migration-etl-vers-oa-tbx/oa_tbx_benefices_hu_5564756e59bc4d9d.webp&#34;
               width=&#34;760&#34;
               height=&#34;343&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Sur l&amp;rsquo;ensemble des jobs migrés — des volumes allant de quelques milliers à plus de 50 millions de lignes — les temps d&amp;rsquo;exécution se comptent souvent en quelques secondes seulement, avec un statut OK quasi systématique.&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/middlewares/migration-etl-vers-oa-tbx/oa_tbx_stats_execution_hu_34d4fedcd8cecdf1.webp 320w, http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/oa_tbx_stats_execution_hu_3fb20d1c6eee6385.webp 480w, http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/oa_tbx_stats_execution_hu_497d09f9b8ba11e5.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/middlewares/migration-etl-vers-oa-tbx/oa_tbx_stats_execution_hu_34d4fedcd8cecdf1.webp&#34;
               width=&#34;760&#34;
               height=&#34;372&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&#34;gouvernance-et-data-lineage&#34;&gt;Gouvernance et data lineage&lt;/h2&gt;
&lt;p&gt;Une fois les traitements ETL convertis en SQL, &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa.tbx}&lt;/strong&gt; conserve la trace complète entre la logique d&amp;rsquo;origine et le SQL exécuté. Ce data lineage est exposé à deux niveaux de lecture, adaptés à des besoins différents.&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; une vue synthétique pour la gouvernance, un détail exhaustif pour la maintenance.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Vue high level du pipeline :&lt;/strong&gt; seules les tables source et cible sont visibles ; les stages ETL intermédiaires sont regroupés en un bloc SQL unique. Une vue lisible, même sur des pipelines complexes.&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/middlewares/migration-etl-vers-oa-tbx/oa-tbx-lineage-high-level_hu_d24e651ccc9c22da.webp 320w, http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/oa-tbx-lineage-high-level_hu_224214e77cdcf373.webp 480w, http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/oa-tbx-lineage-high-level_hu_8b96fa8e67a1d56c.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/middlewares/migration-etl-vers-oa-tbx/oa-tbx-lineage-high-level_hu_d24e651ccc9c22da.webp&#34;
               width=&#34;760&#34;
               height=&#34;351&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Détail au clic sur une transformation :&lt;/strong&gt; au clic sur un stage (par exemple un Transformer), son équivalent SQL généré s&amp;rsquo;affiche, avec ses inputs/outputs et ses métadonnées d&amp;rsquo;origine (type, stage ID). Le mapping est immédiat entre la logique ETL d&amp;rsquo;origine et le SQL exécuté.&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/middlewares/migration-etl-vers-oa-tbx/oa-tbx-lineage-detail-sql_hu_d42fe9268d15acff.webp 320w, http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/oa-tbx-lineage-detail-sql_hu_f03a4ff2d16cc351.webp 480w, http://localhost:1313/ressources/middlewares/migration-etl-vers-oa-tbx/oa-tbx-lineage-detail-sql_hu_ee1a91f7e8d48e8f.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/middlewares/migration-etl-vers-oa-tbx/oa-tbx-lineage-detail-sql_hu_d42fe9268d15acff.webp&#34;
               width=&#34;760&#34;
               height=&#34;357&#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 :&lt;/strong&gt; une gouvernance complète du pipeline migré, de la vue d&amp;rsquo;ensemble jusqu&amp;rsquo;au SQL exécuté, quelle que soit la plateforme ETL d&amp;rsquo;origine.&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 produit par &lt;strong style=&#34;color:#C00000;&#34;&gt;{openAudit}&lt;/strong&gt; devient le support principal des transformations.&lt;/p&gt;
&lt;p&gt;Les règles métier, jointures, agrégations et calculs sont exprimés dans un format ouvert, versionnable et indépendant des outils ETL historiques.&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; une chaîne ETL/ELT basée sur SQL, orchestrée par workflows et exécutée dans un environnement 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 DataViz - une couche d’interopérabilité SQL amont-aval - {oa-lake}</title>
      <link>http://localhost:1313/ressources/middlewares/oa-lake-couche-interoperabilite/</link>
      <pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate>
      <guid>http://localhost:1313/ressources/middlewares/oa-lake-couche-interoperabilite/</guid>
      <description>&lt;p&gt;Les plateformes décisionnelles reposent souvent sur plusieurs bases de données, plusieurs data warehouses / data lakes et plusieurs outils de restitution.&lt;/p&gt;
&lt;p&gt;&lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake}&lt;/strong&gt; introduit une couche SQL intermédiaire entre les sources de données et les outils de datavisualisation.&lt;/p&gt;
&lt;p&gt;Les règles de gestion, objets métier, dimensions, mesures et calculs sont centralisés dans cette couche puis exposés aux outils consommateurs.&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 sources de données et les outils de restitution deviennent indépendants les uns des autres.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;
&lt;p&gt;&lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake}&lt;/strong&gt; se connecte simultanément à plusieurs systèmes de données : bases relationnelles, data warehouses, lakehouses, fichiers ou APIs.&lt;/p&gt;
&lt;p&gt;Les requêtes sont fédérées par un moteur SQL distribué qui exécute les jointures, calculs et transformations nécessaires.&lt;/p&gt;
&lt;p&gt;Le SQL produit reste standard et exécutable sur différents moteurs, ce qui limite le lock-in technologique.&lt;/p&gt;
&lt;p&gt;Les objets métier sont définis une seule fois puis exposés aux outils consommateurs.&lt;/p&gt;
&lt;h2 id=&#34;sources-de-données&#34;&gt;Sources de données&lt;/h2&gt;
&lt;p&gt;Les données restent dans leurs systèmes d&amp;rsquo;origine.&lt;/p&gt;
&lt;p&gt;Oracle, SQL Server, PostgreSQL, DB2, BigQuery, Snowflake, Redshift, Azure SQL (et autres) ou des fichiers peuvent être interrogés dans une même requête.&lt;/p&gt;
&lt;p&gt;Le mécanisme de &lt;strong&gt;Push-Down SQL&lt;/strong&gt; évite toute copie systématique des données : les requêtes s&amp;rsquo;exécutent directement sur les systèmes existants, dans le respect des architectures en place.&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; construire un dashboard à partir de données réparties sur plusieurs plateformes sans migration préalable.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;couche-métier-sql&#34;&gt;Couche métier SQL&lt;/h2&gt;
&lt;p&gt;Les dimensions, mesures, hiérarchies et règles de calcul sont centralisées dans &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Cette couche devient le point d&amp;rsquo;entrée unique pour les outils de restitution.&lt;/p&gt;
&lt;p&gt;Les règles de gestion ne sont plus dupliquées dans chaque plateforme de datavisualisation.&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; une seule définition des indicateurs pour l&amp;rsquo;ensemble du système décisionnel.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;cache-parquet&#34;&gt;Cache Parquet&lt;/h2&gt;
&lt;p&gt;Les données peuvent être matérialisées au format Parquet.&lt;/p&gt;
&lt;p&gt;Cette couche de cache réduit les temps de réponse et limite les sollicitations des systèmes sources. Elle est gérée automatiquement selon les usages observés, sans intervention manuelle.&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; accélérer les traitements analytiques les plus coûteux.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;data-visualisation&#34;&gt;Data visualisation&lt;/h2&gt;
&lt;p&gt;Les outils de restitution se connectent au modèle exposé par &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Power BI, Looker, Spotfire, Tableau, Qlik, SAP BusinessObjects ou tout outil compatible SQL peuvent exploiter les mêmes objets métier.&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/middlewares/oa-lake-couche-interoperabilite/dataviz_to_sql5_hu_cc40a0b6ed53e8a4.webp 320w, http://localhost:1313/ressources/middlewares/oa-lake-couche-interoperabilite/dataviz_to_sql5_hu_a0c38dc1450ec025.webp 480w, http://localhost:1313/ressources/middlewares/oa-lake-couche-interoperabilite/dataviz_to_sql5_hu_ef5b054544195ca9.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/middlewares/oa-lake-couche-interoperabilite/dataviz_to_sql5_hu_cc40a0b6ed53e8a4.webp&#34;
               width=&#34;760&#34;
               height=&#34;410&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Les changements d&amp;rsquo;outils de data visualisation n&amp;rsquo;impliquent plus de reconstruire les dimensions, mesures et règles de calcul.&lt;/p&gt;
&lt;h2 id=&#34;migration-progressive&#34;&gt;Migration progressive&lt;/h2&gt;
&lt;p&gt;Plusieurs outils peuvent coexister pendant une phase de transition.&lt;/p&gt;
&lt;p&gt;Un même modèle métier peut être exposé simultanément vers plusieurs plateformes de restitution.&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; migration progressive des usages sans modification des systèmes de données.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;data-lineage&#34;&gt;Data Lineage&lt;/h2&gt;
&lt;p&gt;Le data lineage reconstruit par &lt;strong style=&#34;color:#C00000;&#34;&gt;{openAudit}&lt;/strong&gt; reste disponible sur l&amp;rsquo;ensemble de la chaîne.&lt;/p&gt;
&lt;p&gt;Les dépendances sont documentées depuis les systèmes sources jusqu&amp;rsquo;aux indicateurs exposés dans les dashboards.&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 transformations, calculs et usages restent traçables sur l&amp;rsquo;ensemble de l&amp;rsquo;architecture.&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 DataViz - une couche sémantique interopérable - {oa-lake-ctx}</title>
      <link>http://localhost:1313/ressources/middlewares/oa-lake-ctx-couche-semantique/</link>
      <pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate>
      <guid>http://localhost:1313/ressources/middlewares/oa-lake-ctx-couche-semantique/</guid>
      <description>&lt;p&gt;Les plateformes décisionnelles historiques reposaient généralement sur une couche sémantique permettant aux utilisateurs de manipuler des objets métier plutôt que des tables ou des requêtes SQL.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Clients&amp;rdquo;, &amp;ldquo;contrats&amp;rdquo;, &amp;ldquo;produits&amp;rdquo; ou &amp;ldquo;chiffre d&amp;rsquo;affaires&amp;rdquo; étaient exposés sous une forme fonctionnelle indépendante des structures physiques de stockage.&lt;/p&gt;
&lt;p&gt;Pour répondre à ce besoin, nous avons conçu &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake-ctx}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake-ctx}&lt;/strong&gt; constitue la couche sémantique de l&amp;rsquo;architecture &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake}&lt;/strong&gt;. Elle centralise les objets métier, les dimensions, les mesures, les KPIs, les règles de calcul et les mécanismes de sécurité.&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 outils consommateurs manipulent des objets métier. Les structures physiques restent masquées.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;architecture&#34;&gt;Architecture&lt;/h2&gt;
&lt;p&gt;&lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake-ctx}&lt;/strong&gt; centralise les dimensions, mesures, hiérarchies, KPI et règles de calcul.&lt;/p&gt;
&lt;p&gt;Ces composants sont définis une seule fois puis exposés aux outils consommateurs.&lt;/p&gt;
&lt;p&gt;Contrairement à certaines couches sémantiques du marché, &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake-ctx}&lt;/strong&gt; ne nécessite ni modèle physique spécifique, ni table pivot, ni chemin de navigation imposé.&lt;/p&gt;
&lt;p&gt;Les relations sont calculées dynamiquement à partir du modèle existant.&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; un modèle métier unique pour toutes les données et tous les outils consommateurs.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;sources-de-données&#34;&gt;Sources de données&lt;/h2&gt;
&lt;p&gt;&lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake-ctx}&lt;/strong&gt; peut exploiter simultanément plusieurs systèmes de données.&lt;/p&gt;
&lt;p&gt;Les données peuvent provenir de bases Oracle, SQL Server, PostgreSQL, DB2, Snowflake, BigQuery, Redshift, fichiers ou autres sources compatibles SQL.&lt;/p&gt;
&lt;p&gt;Les objets métier peuvent combiner plusieurs sources dans une même définition fonctionnelle.&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; construire un KPI à partir de données réparties sur plusieurs plateformes.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;objets-métier&#34;&gt;Objets métier&lt;/h2&gt;
&lt;p&gt;Les catalogues exposés par &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake-ctx}&lt;/strong&gt; regroupent les dimensions, mesures, KPI, hiérarchies et nomenclatures métier.&lt;/p&gt;
&lt;p&gt;Les relations entre objets sont définies dans la couche sémantique et non dans les outils de restitution.&lt;/p&gt;
&lt;p&gt;Les catalogues peuvent être organisés indépendamment des structures physiques des bases de données.&lt;/p&gt;
&lt;h2 id=&#34;génération-sql&#34;&gt;Génération SQL&lt;/h2&gt;
&lt;p&gt;Les requêtes SQL sont générées dynamiquement à partir des objets métier, dimensions, mesures et filtres sélectionnés.&lt;/p&gt;
&lt;p&gt;Les jointures, agrégations et règles de calcul sont appliquées par le moteur.&lt;/p&gt;
&lt;p&gt;Les filtres utilisateurs sont propagés jusqu&amp;rsquo;aux systèmes sources via le mécanisme de &lt;strong&gt;Push-Down SQL&lt;/strong&gt; : pas de copie systématique des données, les requêtes sont exécutées sur les systèmes existants, dans le respect des architectures en place.&lt;/p&gt;
&lt;p&gt;Le SQL généré peut être exécuté par &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake}&lt;/strong&gt; ou par tout moteur SQL 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 utilisateurs manipulent des objets métier ; le SQL est généré automatiquement.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;smart-cache&#34;&gt;Smart Cache&lt;/h2&gt;
&lt;p&gt;Les données restent dans les systèmes sources lorsque cela est possible.&lt;/p&gt;
&lt;p&gt;Les jeux de données les plus sollicités peuvent être matérialisés au format Parquet.&lt;/p&gt;
&lt;p&gt;Le cache est piloté par le &lt;strong&gt;Cache Manager&lt;/strong&gt; de &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake}&lt;/strong&gt;, géré automatiquement selon les usages observés.&lt;/p&gt;
&lt;p&gt;La gestion du cache reste indépendante des outils consommateurs.&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 requêtes les plus coûteuses peuvent être accélérées sans modifier les systèmes sources.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;sql-engine&#34;&gt;SQL Engine&lt;/h2&gt;
&lt;p&gt;&lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake}&lt;/strong&gt; s&amp;rsquo;appuie sur un moteur SQL columnar et in-memory.&lt;/p&gt;
&lt;p&gt;Les requêtes générées par &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake-ctx}&lt;/strong&gt; sont exécutées par ce moteur ou propagées vers les systèmes sources selon le contexte.&lt;/p&gt;
&lt;p&gt;Le SQL reste portable, standard et exécutable sur différents moteurs, indépendant des technologies de stockage utilisées — ce qui limite le lock-in technologique.&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; le moteur SQL constitue la couche d&amp;rsquo;exécution de l&amp;rsquo;architecture.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;sécurité&#34;&gt;Sécurité&lt;/h2&gt;
&lt;p&gt;La sécurité est gérée au niveau de la couche sémantique.&lt;/p&gt;
&lt;p&gt;Les restrictions d&amp;rsquo;accès, profils utilisateurs, catalogues métier et filtres de sécurité sont appliqués avant génération des requêtes.&lt;/p&gt;
&lt;p&gt;Cette approche permet de reproduire les mécanismes de sécurité rencontrés dans des plateformes telles que SAP BusinessObjects ou IBM Cognos.&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 règles de sécurité sont définies une seule fois puis appliquées à tous les outils connectés.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;restitution&#34;&gt;Restitution&lt;/h2&gt;
&lt;p&gt;Les catalogues exposés par &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake-ctx}&lt;/strong&gt; peuvent être consommés par tout outil capable d&amp;rsquo;interroger une source PostgreSQL.&lt;/p&gt;
&lt;p&gt;Power BI, Looker, Spotfire, Tableau, Qlik ou d&amp;rsquo;autres plateformes accèdent aux mêmes objets métier, dimensions, mesures et KPI.&lt;/p&gt;
&lt;p&gt;Les définitions fonctionnelles restent identiques quel que soit l&amp;rsquo;outil utilisé.&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; plusieurs plateformes peuvent partager le même catalogue métier sans duplication des règles de calcul.&lt;/p&gt;

  &lt;/blockquote&gt;

&lt;h2 id=&#34;gouvernance&#34;&gt;Gouvernance&lt;/h2&gt;
&lt;p&gt;Les objets métier, KPI, dimensions, mesures et règles de calcul sont centralisés dans un référentiel unique.&lt;/p&gt;
&lt;p&gt;Les évolutions fonctionnelles sont réalisées dans &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake-ctx}&lt;/strong&gt; puis immédiatement disponibles pour les outils connectés.&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; &lt;strong style=&#34;color:#C00000;&#34;&gt;{oa-lake-ctx}&lt;/strong&gt; constitue le point central de définition des objets métier et des KPI.&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>
