<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SQL |</title><link>https://ellipsys-bi.com/en/tags/sql/</link><atom:link href="https://ellipsys-bi.com/en/tags/sql/index.xml" rel="self" type="application/rss+xml"/><description>SQL</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-US</language><lastBuildDate>Fri, 03 Jul 2026 00:00:00 +0000</lastBuildDate><image><url>https://ellipsys-bi.com/media/logo.svg</url><title>SQL</title><link>https://ellipsys-bi.com/en/tags/sql/</link></image><item><title>ETL Migration - from legacy ETL to an open SQL ETL - {oa.tbx}</title><link>https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/</guid><description>&lt;p&gt;Once ETL processes have been converted to SQL by &lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt;, they can be run inside the &lt;strong style="color:#C00000;"&gt;{oa.tbx}&lt;/strong&gt; container.&lt;/p&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{oa.tbx}&lt;/strong&gt; provides an execution environment for SQL, Python, or Java processes, driven by configuration and orchestration repositories.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; the migrated processes become SQL instructions that can be executed independently of the original ETL platform.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="principles"&gt;Principles&lt;/h2&gt;
&lt;p&gt;SQL is encapsulated in open containers, in ETL mode.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Containers:&lt;/strong&gt; transformations run inside an external container, &lt;strong style="color:#C00000;"&gt;{oa.tbx}&lt;/strong&gt;, detached from the target database. Temporary containers act as intermediate storage areas where data is loaded before transformation. Jobs are tested to verify correct behavior, and possibly the data itself, to guarantee its integrity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Orchestration with Airflow:&lt;/strong&gt; Airflow drives the execution of the containers, step by step. Each transformation, within a container, is defined as a job.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-1-fr-en_hu_3d51582657fd7652.webp 320w, https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-1-fr-en_hu_e491566fb88257d1.webp 480w, https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-1-fr-en_hu_94523c4431e46e11.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-1-fr-en_hu_3d51582657fd7652.webp"
width="760"
height="456"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The scheduling of an ETL migrated to Airflow automatically picks up all of the original instructions and scheduling logic.&lt;/p&gt;
&lt;h2 id="execution-chain"&gt;Execution chain&lt;/h2&gt;
&lt;p&gt;ETL jobs are converted to SQL by &lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The generated processes are integrated into a configuration repository and a control repository used by &lt;strong style="color:#C00000;"&gt;{oa.tbx}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The workflows are then orchestrated by tools such as Airflow or Dagster.&lt;/p&gt;
&lt;h2 id="execution-container"&gt;Execution container&lt;/h2&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{oa.tbx}&lt;/strong&gt; runs the processes described in the workflows.&lt;/p&gt;
&lt;p&gt;Dataflows can combine:&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;others.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The engine can also rely on embedded databases such as DuckDB for certain intermediate processing steps.&lt;/p&gt;
&lt;h2 id="sources-and-targets"&gt;Sources and targets&lt;/h2&gt;
&lt;p&gt;Input data can come from any technology accessible via SQL or JDBC.&lt;/p&gt;
&lt;p&gt;Results can be loaded into any target system compatible with standard write mechanisms.&lt;/p&gt;
&lt;p&gt;The architecture remains independent of source and target technologies.&lt;/p&gt;
&lt;h2 id="orchestration"&gt;Orchestration&lt;/h2&gt;
&lt;p&gt;Orchestration remains separate from the processes themselves.&lt;/p&gt;
&lt;p&gt;Dependencies, execution parameters, schedules, and triggers are handled by the workflow layer.&lt;/p&gt;
&lt;p&gt;Business logic stays contained within the SQL scripts and dataflows executed by &lt;strong style="color:#C00000;"&gt;{oa.tbx}&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="benefits"&gt;Benefits&lt;/h2&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{oa.tbx}&lt;/strong&gt; runs open SQL pipelines, orchestrated by Airflow and independent of proprietary Cloud platform runtimes.&lt;/p&gt;
&lt;p&gt;Across all migrated jobs — with volumes ranging from a few thousand to more than 50 million rows — execution times are often just a few seconds, with an almost systematic OK status.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-3-fr-en_hu_34d4fedcd8cecdf1.webp 320w, https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-3-fr-en_hu_3fb20d1c6eee6385.webp 480w, https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-3-fr-en_hu_497d09f9b8ba11e5.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-3-fr-en_hu_34d4fedcd8cecdf1.webp"
width="760"
height="372"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="governance-and-data-lineage"&gt;Governance and data lineage&lt;/h2&gt;
&lt;p&gt;Once ETL processes have been converted to SQL, &lt;strong style="color:#C00000;"&gt;{oa.tbx}&lt;/strong&gt; keeps the complete trace between the original logic and the executed SQL. This data lineage is exposed at two levels of detail, suited to different needs.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; a synthetic view for governance, an exhaustive detail view for maintenance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;High-level pipeline view:&lt;/strong&gt; only source and target tables are visible; intermediate ETL stages are grouped into a single SQL block. A readable view, even for complex pipelines.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-4-fr-en_hu_d24e651ccc9c22da.webp 320w, https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-4-fr-en_hu_224214e77cdcf373.webp 480w, https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-4-fr-en_hu_8b96fa8e67a1d56c.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-4-fr-en_hu_d24e651ccc9c22da.webp"
width="760"
height="351"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Detail on click for a transformation:&lt;/strong&gt; clicking a stage (a Transformer, for example) displays its generated SQL equivalent, along with its inputs/outputs and its original metadata (type, stage ID). The mapping between the original ETL logic and the executed SQL is immediate.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-5-fr-en_hu_d42fe9268d15acff.webp 320w, https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-5-fr-en_hu_f03a4ff2d16cc351.webp 480w, https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-5-fr-en_hu_ee1a91f7e8d48e8f.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/middlewares/migration-etl-vers-oa-tbx/migration-etl-vers-oa-tbx-5-fr-en_hu_d42fe9268d15acff.webp"
width="760"
height="357"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; complete governance of the migrated pipeline, from the overview down to the executed SQL, regardless of the original ETL platform.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="sql-as-the-pivot-format"&gt;SQL as the pivot format&lt;/h2&gt;
&lt;p&gt;The SQL produced by &lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt; becomes the primary vehicle for the transformations.&lt;/p&gt;
&lt;p&gt;Business rules, joins, aggregations, and calculations are expressed in an open, version-controllable format, independent of legacy ETL tools.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; a SQL-based ETL/ELT chain, orchestrated by workflows and run in an open environment.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script&gt;
(function () {
// Hide the "Last updated on" date and the Author block on Resources
// pages: these aren't blog posts (no date/byline).
function hide() {
document.querySelectorAll("time.mt-12.mb-8").forEach(function (el) {
el.style.display = "none";
});
document.querySelectorAll("div.flex.pt-12.pb-4").forEach(function (el) {
if (el.querySelector('img[src*="/media/authors/"]')) {
el.style.display = "none";
}
});
// Extra safety net: also hide the social sharing row and any container
// linked to the author card, matched semantically rather than by class
// name (more robust to theme updates).
var shareHrefPatterns = [
"twitter.com/intent", "x.com/intent", "facebook.com/sharer",
"linkedin.com/sharing", "wa.me/", "api.whatsapp.com", "mailto:?"
];
document.querySelectorAll("a[href]").forEach(function (a) {
var href = a.getAttribute("href") || "";
if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
a.style.display = "none";
}
});
document.querySelectorAll('a[href="https://ellipsys-bi.com/authors/me/"]').forEach(function (a) {
var el = a.closest("div.flex") || a.parentElement;
if (el) el.style.display = "none";
});
}
document.addEventListener("DOMContentLoaded", hide);
})();
&lt;/script&gt;</description></item><item><title>DataViz Migration - an upstream/downstream SQL interoperability layer - {oa-lake}</title><link>https://ellipsys-bi.com/en/ressources/middlewares/oa-lake-couche-interoperabilite/</link><pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate><guid>https://ellipsys-bi.com/en/ressources/middlewares/oa-lake-couche-interoperabilite/</guid><description>&lt;p&gt;Decision-support platforms often rely on several databases, several data warehouses / data lakes, and several reporting tools.&lt;/p&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{oa-lake}&lt;/strong&gt; introduces an intermediate SQL layer between data sources and dataviz tools.&lt;/p&gt;
&lt;p&gt;Business rules, business objects, dimensions, measures, and calculations are centralized in this layer and then exposed to consuming tools.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; data sources and reporting tools become independent of one another.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="architecture"&gt;Architecture&lt;/h2&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{oa-lake}&lt;/strong&gt; connects simultaneously to multiple data systems: relational databases, data warehouses, lakehouses, files, or APIs.&lt;/p&gt;
&lt;p&gt;Queries are federated by a distributed SQL engine that performs the necessary joins, calculations, and transformations.&lt;/p&gt;
&lt;p&gt;The resulting SQL remains standard and executable across different engines, which limits technology lock-in.&lt;/p&gt;
&lt;p&gt;Business objects are defined once and then exposed to consuming tools.&lt;/p&gt;
&lt;h2 id="data-sources"&gt;Data sources&lt;/h2&gt;
&lt;p&gt;The data stays in its original systems.&lt;/p&gt;
&lt;p&gt;Oracle, SQL Server, PostgreSQL, DB2, BigQuery, Snowflake, Redshift, Azure SQL (and others), or files can be queried within a single request.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;SQL Push-Down&lt;/strong&gt; mechanism avoids any systematic copying of data: queries run directly against the existing systems, respecting the architectures already in place.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Typical use case:&lt;/strong&gt; build a dashboard from data spread across several platforms with no prior migration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="sql-business-layer"&gt;SQL business layer&lt;/h2&gt;
&lt;p&gt;Dimensions, measures, hierarchies, and calculation rules are centralized in &lt;strong style="color:#C00000;"&gt;{oa-lake}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This layer becomes the single entry point for reporting tools.&lt;/p&gt;
&lt;p&gt;Business rules are no longer duplicated across every dataviz platform.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; a single definition of indicators for the entire decision-support system.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="parquet-cache"&gt;Parquet cache&lt;/h2&gt;
&lt;p&gt;Data can be materialized in Parquet format.&lt;/p&gt;
&lt;p&gt;This caching layer reduces response times and limits load on source systems. It&amp;rsquo;s managed automatically based on observed usage, with no manual intervention.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Typical use case:&lt;/strong&gt; speed up the most expensive analytical processing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="data-visualization"&gt;Data visualization&lt;/h2&gt;
&lt;p&gt;Reporting tools connect to the model exposed by &lt;strong style="color:#C00000;"&gt;{oa-lake}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Power BI, Looker, Spotfire, Tableau, Qlik, SAP BusinessObjects, or any SQL-compatible tool can use the same business objects.&lt;/p&gt;
&lt;p&gt;Switching dataviz tools no longer requires rebuilding dimensions, measures, and calculation rules.&lt;/p&gt;
&lt;h2 id="progressive-migration"&gt;Progressive migration&lt;/h2&gt;
&lt;p&gt;Several tools can coexist during a transition phase.&lt;/p&gt;
&lt;p&gt;The same business model can be exposed simultaneously to several reporting platforms.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; progressive migration of usage with no change to the data systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="data-lineage"&gt;Data Lineage&lt;/h2&gt;
&lt;p&gt;The data lineage reconstructed by &lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt; remains available across the whole chain.&lt;/p&gt;
&lt;p&gt;Dependencies are documented from the source systems all the way to the indicators exposed in the dashboards.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; transformations, calculations, and usage remain traceable across the entire architecture.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script&gt;
(function () {
// Hide the "Last updated on" date and the Author block on Resources
// pages: these aren't blog posts (no date/byline).
function hide() {
document.querySelectorAll("time.mt-12.mb-8").forEach(function (el) {
el.style.display = "none";
});
document.querySelectorAll("div.flex.pt-12.pb-4").forEach(function (el) {
if (el.querySelector('img[src*="/media/authors/"]')) {
el.style.display = "none";
}
});
// Extra safety net: also hide the social sharing row and any container
// linked to the author card, matched semantically rather than by class
// name (more robust to theme updates).
var shareHrefPatterns = [
"twitter.com/intent", "x.com/intent", "facebook.com/sharer",
"linkedin.com/sharing", "wa.me/", "api.whatsapp.com", "mailto:?"
];
document.querySelectorAll("a[href]").forEach(function (a) {
var href = a.getAttribute("href") || "";
if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
a.style.display = "none";
}
});
document.querySelectorAll('a[href="https://ellipsys-bi.com/authors/me/"]').forEach(function (a) {
var el = a.closest("div.flex") || a.parentElement;
if (el) el.style.display = "none";
});
}
document.addEventListener("DOMContentLoaded", hide);
})();
&lt;/script&gt;</description></item><item><title>DataViz Migration - an interoperable semantic layer - {oa-lake-ctx}</title><link>https://ellipsys-bi.com/en/ressources/middlewares/oa-lake-ctx-couche-semantique/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://ellipsys-bi.com/en/ressources/middlewares/oa-lake-ctx-couche-semantique/</guid><description>&lt;p&gt;Legacy decision-support platforms typically relied on a semantic layer that let users work with business objects rather than tables or SQL queries.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Customers&amp;rdquo;, &amp;ldquo;contracts&amp;rdquo;, &amp;ldquo;products&amp;rdquo;, or &amp;ldquo;revenue&amp;rdquo; were exposed in a functional form, independent of the underlying physical storage structures.&lt;/p&gt;
&lt;p&gt;To address this need, we designed &lt;strong style="color:#C00000;"&gt;{oa-lake-ctx}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{oa-lake-ctx}&lt;/strong&gt; is the semantic layer of the &lt;strong style="color:#C00000;"&gt;{oa-lake}&lt;/strong&gt; architecture. It centralizes business objects, dimensions, measures, KPIs, calculation rules, and security mechanisms.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; consuming tools work with business objects. The physical structures stay hidden.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="architecture"&gt;Architecture&lt;/h2&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{oa-lake-ctx}&lt;/strong&gt; centralizes dimensions, measures, hierarchies, KPIs, and calculation rules.&lt;/p&gt;
&lt;p&gt;These components are defined once and then exposed to consuming tools.&lt;/p&gt;
&lt;p&gt;Unlike some semantic layers on the market, &lt;strong style="color:#C00000;"&gt;{oa-lake-ctx}&lt;/strong&gt; requires no specific physical model, no pivot table, and no imposed navigation path.&lt;/p&gt;
&lt;p&gt;Relationships are calculated dynamically from the existing model.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; a single business model for all data and all consuming tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="data-sources"&gt;Data sources&lt;/h2&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{oa-lake-ctx}&lt;/strong&gt; can use several data systems simultaneously.&lt;/p&gt;
&lt;p&gt;Data can come from Oracle, SQL Server, PostgreSQL, DB2, Snowflake, BigQuery, Redshift databases, files, or other SQL-compatible sources.&lt;/p&gt;
&lt;p&gt;Business objects can combine several sources within a single functional definition.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Typical use case:&lt;/strong&gt; build a KPI from data spread across several platforms.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="business-objects"&gt;Business objects&lt;/h2&gt;
&lt;p&gt;The catalogs exposed by &lt;strong style="color:#C00000;"&gt;{oa-lake-ctx}&lt;/strong&gt; group together dimensions, measures, KPIs, hierarchies, and business nomenclature.&lt;/p&gt;
&lt;p&gt;Relationships between objects are defined in the semantic layer, not in the reporting tools.&lt;/p&gt;
&lt;p&gt;Catalogs can be organized independently of the databases&amp;rsquo; physical structures.&lt;/p&gt;
&lt;h2 id="sql-generation"&gt;SQL generation&lt;/h2&gt;
&lt;p&gt;SQL queries are generated dynamically from the selected business objects, dimensions, measures, and filters.&lt;/p&gt;
&lt;p&gt;Joins, aggregations, and calculation rules are applied by the engine.&lt;/p&gt;
&lt;p&gt;User filters are propagated all the way to the source systems via the &lt;strong&gt;SQL Push-Down&lt;/strong&gt; mechanism: no systematic copying of data — queries run against the existing systems, respecting the architectures already in place.&lt;/p&gt;
&lt;p&gt;The generated SQL can be executed by &lt;strong style="color:#C00000;"&gt;{oa-lake}&lt;/strong&gt; or by any compatible SQL engine.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; users work with business objects; the SQL is generated automatically.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="smart-cache"&gt;Smart Cache&lt;/h2&gt;
&lt;p&gt;Data stays in the source systems whenever possible.&lt;/p&gt;
&lt;p&gt;The most heavily used datasets can be materialized in Parquet format.&lt;/p&gt;
&lt;p&gt;The cache is driven by &lt;strong style="color:#C00000;"&gt;{oa-lake}&lt;/strong&gt;&amp;rsquo;s &lt;strong&gt;Cache Manager&lt;/strong&gt;, managed automatically based on observed usage.&lt;/p&gt;
&lt;p&gt;Cache management remains independent of consuming tools.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; the most expensive queries can be accelerated without modifying the source systems.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="sql-engine"&gt;SQL Engine&lt;/h2&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{oa-lake}&lt;/strong&gt; relies on a columnar, in-memory SQL engine.&lt;/p&gt;
&lt;p&gt;The queries generated by &lt;strong style="color:#C00000;"&gt;{oa-lake-ctx}&lt;/strong&gt; are executed by this engine or propagated to the source systems depending on the context.&lt;/p&gt;
&lt;p&gt;The SQL remains portable, standard, and executable on different engines, independent of the storage technologies in use — which limits technology lock-in.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; the SQL engine forms the execution layer of the architecture.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="security"&gt;Security&lt;/h2&gt;
&lt;p&gt;Security is managed at the semantic layer level.&lt;/p&gt;
&lt;p&gt;Access restrictions, user profiles, business catalogs, and security filters are applied before queries are generated.&lt;/p&gt;
&lt;p&gt;This approach makes it possible to reproduce the security mechanisms found in platforms such as SAP BusinessObjects or IBM Cognos.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; security rules are defined once and then applied to all connected tools.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="reporting"&gt;Reporting&lt;/h2&gt;
&lt;p&gt;The catalogs exposed by &lt;strong style="color:#C00000;"&gt;{oa-lake-ctx}&lt;/strong&gt; can be consumed by any tool capable of querying a PostgreSQL source.&lt;/p&gt;
&lt;p&gt;Power BI, Looker, Spotfire, Tableau, Qlik, or other platforms access the same business objects, dimensions, measures, and KPIs.&lt;/p&gt;
&lt;p&gt;The functional definitions remain identical regardless of the tool being used.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; several platforms can share the same business catalog with no duplication of calculation rules.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="governance"&gt;Governance&lt;/h2&gt;
&lt;p&gt;Business objects, KPIs, dimensions, measures, and calculation rules are centralized in a single repository.&lt;/p&gt;
&lt;p&gt;Functional changes are made in &lt;strong style="color:#C00000;"&gt;{oa-lake-ctx}&lt;/strong&gt; and are then immediately available to all connected tools.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; &lt;strong style="color:#C00000;"&gt;{oa-lake-ctx}&lt;/strong&gt; is the central point for defining business objects and KPIs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script&gt;
(function () {
// Hide the "Last updated on" date and the Author block on Resources
// pages: these aren't blog posts (no date/byline).
function hide() {
document.querySelectorAll("time.mt-12.mb-8").forEach(function (el) {
el.style.display = "none";
});
document.querySelectorAll("div.flex.pt-12.pb-4").forEach(function (el) {
if (el.querySelector('img[src*="/media/authors/"]')) {
el.style.display = "none";
}
});
// Extra safety net: also hide the social sharing row and any container
// linked to the author card, matched semantically rather than by class
// name (more robust to theme updates).
var shareHrefPatterns = [
"twitter.com/intent", "x.com/intent", "facebook.com/sharer",
"linkedin.com/sharing", "wa.me/", "api.whatsapp.com", "mailto:?"
];
document.querySelectorAll("a[href]").forEach(function (a) {
var href = a.getAttribute("href") || "";
if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
a.style.display = "none";
}
});
document.querySelectorAll('a[href="https://ellipsys-bi.com/authors/me/"]').forEach(function (a) {
var el = a.closest("div.flex") || a.parentElement;
if (el) el.style.display = "none";
});
}
document.addEventListener("DOMContentLoaded", hide);
})();
&lt;/script&gt;</description></item><item><title>DataViz Migration - SAP BO, Power BI, Spotfire, or Cognos to an open, interoperable architecture</title><link>https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/</guid><description>&lt;p&gt;Data visualization platforms evolve regularly.&lt;/p&gt;
&lt;p&gt;SAP BusinessObjects, IBM Cognos, Power BI, or Spotfire may succeed one another within the same Information System. Business objects, calculations, indicators, and business rules generally remain identical from one platform to the next.&lt;/p&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt; analyzes technical repositories, semantic layers, and reports to reconstruct the dependencies between data sources, intermediate processes, and the objects exposed in dashboards.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; the functional components of reporting platforms are extracted and then rebuilt in a format independent of the target technology.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="analysis-of-the-decision-support-estate"&gt;Analysis of the decision-support estate&lt;/h2&gt;
&lt;p&gt;The parser-based analysis mechanisms cover SAP BusinessObjects universes, Cognos Frameworks, Power BI models, Spotfire Information Links, as well as the associated reports, dashboards, calculations, filters, and business objects.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-1-en_hu_1578fd2c26d4451e.webp 320w, https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-1-en_hu_5ba210f16380ed5c.webp 480w, https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-1-en_hu_a2327f5a3876a014.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-1-en_hu_1578fd2c26d4451e.webp"
width="760"
height="351"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The collected metadata makes it possible to reconstruct technical dependencies, semantic layers, and business rules.&lt;/p&gt;
&lt;h2 id="rationalization"&gt;Rationalization&lt;/h2&gt;
&lt;p&gt;Technical repositories are cross-referenced with usage logs. Unused reports, duplicates, and obsolete components are identified before the migration phase.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-2-en_hu_bb9b122aaf23d094.webp 320w, https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-2-en_hu_2f1e7bd6d2cf68b5.webp 480w, https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-2-en_hu_9d8aeaf9a16d0a5c.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-2-en_hu_bb9b122aaf23d094.webp"
width="760"
height="368"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; a reduced scope for the actual migration.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="sql-transcription"&gt;SQL transcription&lt;/h2&gt;
&lt;p&gt;Queries, calculations, filters, aggregations, joins, variables, and business rules are reconstructed in the form of SQL.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-3-en_hu_806706372a70baa0.webp 320w, https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-3-en_hu_aef89169d9004542.webp 480w, https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-3-en_hu_d19c67bb9cf7e797.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-3-en_hu_806706372a70baa0.webp"
width="760"
height="391"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The resulting SQL forms an open representation of the functional logic originally carried by the data visualization platform.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; SQL becomes the pivot format for representing business objects.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="oa-lake"&gt;&lt;strong style="color:#C00000;"&gt;{oa-lake}&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The SQL processes are integrated into &lt;strong style="color:#C00000;"&gt;{oa-lake}&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-4-en_hu_8c31bb169a8e7f8c.webp 320w, https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-4-en_hu_ae49fe3603c10283.webp 480w, https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-4-en_hu_edc4b854fdcf72a5.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/migration-dataviz/migration-dataviz-architecture-ouverte/migration-dataviz-architecture-ouverte-4-en_hu_8c31bb169a8e7f8c.webp"
width="760"
height="408"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{oa-lake}&lt;/strong&gt; centralizes business objects, indicators, dimensions, business rules, and SQL transformations. The engine federates several data systems and exposes a single model to reporting tools.&lt;/p&gt;
&lt;p&gt;Data can be materialized in Parquet format. Queries are generated against the physical systems or executed from the cache when needed.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; business logic is defined once and then exposed to several data visualization platforms.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script&gt;
(function () {
// Hide the "Last updated on" date and the Author block on Resources
// pages: these aren't blog posts (no date/byline).
function hide() {
document.querySelectorAll("time.mt-12.mb-8").forEach(function (el) {
el.style.display = "none";
});
document.querySelectorAll("div.flex.pt-12.pb-4").forEach(function (el) {
if (el.querySelector('img[src*="/media/authors/"]')) {
el.style.display = "none";
}
});
// Extra safety net: also hide the social sharing row and any container
// linked to the author card, matched semantically rather than by class
// name (more robust to theme updates).
var shareHrefPatterns = [
"twitter.com/intent", "x.com/intent", "facebook.com/sharer",
"linkedin.com/sharing", "wa.me/", "api.whatsapp.com", "mailto:?"
];
document.querySelectorAll("a[href]").forEach(function (a) {
var href = a.getAttribute("href") || "";
if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
a.style.display = "none";
}
});
document.querySelectorAll('a[href="https://ellipsys-bi.com/authors/me/"]').forEach(function (a) {
var el = a.closest("div.flex") || a.parentElement;
if (el) el.style.display = "none";
});
}
document.addEventListener("DOMContentLoaded", hide);
})();
&lt;/script&gt;</description></item><item><title>ETL Migration - from legacy ETL to dbt</title><link>https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-vers-dbt/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-vers-dbt/</guid><description>&lt;p&gt;Migrating to dbt means transforming proprietary ETL processes into SQL models run directly in the target data engine.&lt;/p&gt;
&lt;p&gt;Before any conversion, &lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt; analyzes flows, dependencies, and usage to identify the scope that is actually worth migrating.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; the migration starts with a rationalization phase of the existing estate.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="flow-analysis"&gt;Flow analysis&lt;/h2&gt;
&lt;p&gt;ETL processes are analyzed to reconstruct dependencies, transformations, and usage.&lt;/p&gt;
&lt;p&gt;Data lineage is used to identify active flows, dead branches, and unconsumed components.&lt;/p&gt;
&lt;p&gt;This phase reduces the volume of processes to be migrated.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; a migration scope refocused on the processes that are actually used.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="conversion-to-sql"&gt;Conversion to SQL&lt;/h2&gt;
&lt;p&gt;ETL jobs are broken down into elementary operations: filters, joins, aggregations, lookups, business calculations, and transformations.&lt;/p&gt;
&lt;p&gt;These components are converted into documented SQL, independent of the source technology.&lt;/p&gt;
&lt;p&gt;SQL becomes the pivot representation of the processes.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; business logic is rebuilt in SQL before the dbt project is generated.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="generating-dbt-models"&gt;Generating dbt models&lt;/h2&gt;
&lt;p&gt;The SQL processes are organized into dbt models.&lt;/p&gt;
&lt;p&gt;Dependencies between models are automatically generated from the flows identified during the analysis.&lt;/p&gt;
&lt;p&gt;The project structure, references between models, and documentation can be produced automatically.&lt;/p&gt;
&lt;h2 id="progressive-validation"&gt;Progressive validation&lt;/h2&gt;
&lt;p&gt;Migration is carried out in batches.&lt;/p&gt;
&lt;p&gt;The generated models are validated and then progressively integrated into the target environment.&lt;/p&gt;
&lt;p&gt;Discrepancies can be checked process by process during the transition phase.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Typical use case:&lt;/strong&gt; progressive migration of several hundred ETL jobs to dbt.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="target-architecture"&gt;Target architecture&lt;/h2&gt;
&lt;p&gt;The processes become version-controllable, maintainable SQL models.&lt;/p&gt;
&lt;p&gt;Dependencies are explicit, transformations are visible, and processes can be run directly by Snowflake, BigQuery, Databricks SQL, Redshift, PostgreSQL, or any other compatible engine.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; the processes no longer depend on the legacy ETL platform but on a dbt project built on open SQL.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script&gt;
(function () {
// Hide the "Last updated on" date and the Author block on Resources
// pages: these aren't blog posts (no date/byline).
function hide() {
document.querySelectorAll("time.mt-12.mb-8").forEach(function (el) {
el.style.display = "none";
});
document.querySelectorAll("div.flex.pt-12.pb-4").forEach(function (el) {
if (el.querySelector('img[src*="/media/authors/"]')) {
el.style.display = "none";
}
});
// Extra safety net: also hide the social sharing row and any container
// linked to the author card, matched semantically rather than by class
// name (more robust to theme updates).
var shareHrefPatterns = [
"twitter.com/intent", "x.com/intent", "facebook.com/sharer",
"linkedin.com/sharing", "wa.me/", "api.whatsapp.com", "mailto:?"
];
document.querySelectorAll("a[href]").forEach(function (a) {
var href = a.getAttribute("href") || "";
if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
a.style.display = "none";
}
});
document.querySelectorAll('a[href="https://ellipsys-bi.com/authors/me/"]').forEach(function (a) {
var el = a.closest("div.flex") || a.parentElement;
if (el) el.style.display = "none";
});
}
document.addEventListener("DOMContentLoaded", hide);
})();
&lt;/script&gt;</description></item><item><title>ETL Migration - from legacy ETL to SQL</title><link>https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-vers-le-sql/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-vers-le-sql/</guid><description>&lt;p&gt;Legacy ETL platforms mainly implement filters, joins, aggregations, mappings, and transformations that can be expressed in SQL.&lt;/p&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt; analyzes ETL jobs, reconstructs the flows, and generates a SQL equivalent independent of the source technology.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; the processes are rebuilt as documented, version-controllable SQL.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="process-analysis"&gt;Process analysis&lt;/h2&gt;
&lt;p&gt;ETL repositories are analyzed to reconstruct sources, targets, transformations, parameters, and dependencies between processes.&lt;/p&gt;
&lt;p&gt;The collected metadata makes it possible to reconstruct how the flows actually work.&lt;/p&gt;
&lt;p&gt;Unused or unconsumed components can be identified before migration.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; a migration scope reduced to the processes that are actually used.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="flow-reconstruction"&gt;Flow reconstruction&lt;/h2&gt;
&lt;p&gt;Processing chains are reconstructed from the ETL jobs.&lt;/p&gt;
&lt;p&gt;Dependencies between processes, intermediate flows, variables, and parameters are integrated into the target model.&lt;/p&gt;
&lt;p&gt;This mapping is the entry point for the conversion.&lt;/p&gt;
&lt;h2 id="rationalization"&gt;Rationalization&lt;/h2&gt;
&lt;p&gt;Cross-referencing data lineage (down to field level) with actually observed usage makes it possible to identify the data that is genuinely consumed and set aside what isn&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;Each job is also analyzed to assess its complexity: number of steps, depth of sub-processes, types of transformations, and external dependencies. These metrics are aggregated into a complexity score, used to prioritize and plan the migration.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; a migration scope reduced to the processes that are actually used, prioritized according to their real complexity.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="sql-generation"&gt;SQL generation&lt;/h2&gt;
&lt;p&gt;The detected transformations are converted into SQL.&lt;/p&gt;
&lt;p&gt;Filters, joins, aggregations, lookups, mappings, and calculations are translated into successive, flat SQL statements.&lt;/p&gt;
&lt;p&gt;The resulting SQL preserves the logical structure of the original processes.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; each processing step remains identifiable in the generated SQL.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="example-ibm-datastage-jobs"&gt;Example: IBM DataStage jobs&lt;/h2&gt;
&lt;p&gt;For a DataStage estate, each stage type is translated according to its own logic:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Runtime Column Propagation (RCP):&lt;/strong&gt; the column list isn&amp;rsquo;t fixed in the job; it&amp;rsquo;s generated dynamically in the SQL, driven by the variables passed to the job.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Oracle connectors&lt;/strong&gt; (read / write): SELECT, UPDATE, MERGE, or INSERT generated from the stage&amp;rsquo;s options.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Change Capture (CDC):&lt;/strong&gt; Before/After comparison on primary keys, detecting new, modified, and deleted rows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDC Transformer:&lt;/strong&gt; conditional routing to a dedicated flow based on the detected change code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shared Container:&lt;/strong&gt; a factored logical block, rendered as a standardized SQL block reused across several jobs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Column Generator:&lt;/strong&gt; calculated columns translated into typed SQL expressions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Modify:&lt;/strong&gt; type conversions translated into SQL CAST (e.g. string to timestamp).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funnel:&lt;/strong&gt; merging several flows via SQL UNION, with output schema harmonization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-vers-le-sql/migration-etl-vers-le-sql-1-fr-en_hu_8d7b2c24bf08f04e.webp 320w, https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-vers-le-sql/migration-etl-vers-le-sql-1-fr-en_hu_cf20a81a93b79bb8.webp 480w, https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-vers-le-sql/migration-etl-vers-le-sql-1-fr-en_hu_d50db8a971693485.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-vers-le-sql/migration-etl-vers-le-sql-1-fr-en_hu_8d7b2c24bf08f04e.webp"
width="760"
height="471"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Observed result:&lt;/strong&gt; across an estate of several hundred DataStage jobs, more than 95% of the SQL translations succeed on the very first run.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="adapting-to-target-platforms"&gt;Adapting to target platforms&lt;/h2&gt;
&lt;p&gt;The generated SQL can be adapted to the dialects of the target platforms.&lt;/p&gt;
&lt;p&gt;Functions, data types, and specific mechanisms are taken into account during generation.&lt;/p&gt;
&lt;p&gt;The same processes can be produced for Snowflake, BigQuery, Databricks SQL, Redshift, PostgreSQL, SQL Server, or other SQL-compatible engines.&lt;/p&gt;
&lt;h2 id="orchestration"&gt;Orchestration&lt;/h2&gt;
&lt;p&gt;Dependencies and process scheduling are preserved.&lt;/p&gt;
&lt;p&gt;The generated processes can be integrated into the orchestration tools already present in the Information System.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Typical use case:&lt;/strong&gt; integration into Airflow, Control-M, or any other existing scheduler.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="sql-as-the-pivot-format"&gt;SQL as the pivot format&lt;/h2&gt;
&lt;p&gt;SQL becomes the common representation of the processes.&lt;/p&gt;
&lt;p&gt;Transformations no longer depend on the proprietary components of the original ETL platform.&lt;/p&gt;
&lt;p&gt;Processes can be versioned, reviewed, tested, and deployed independently of the source technology.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; the transformation logic stays under the company&amp;rsquo;s control and no longer depends on a specific ETL engine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script&gt;
(function () {
// Hide the "Last updated on" date and the Author block on Resources
// pages: these aren't blog posts (no date/byline).
function hide() {
document.querySelectorAll("time.mt-12.mb-8").forEach(function (el) {
el.style.display = "none";
});
document.querySelectorAll("div.flex.pt-12.pb-4").forEach(function (el) {
if (el.querySelector('img[src*="/media/authors/"]')) {
el.style.display = "none";
}
});
// Extra safety net: also hide the social sharing row and any container
// linked to the author card, matched semantically rather than by class
// name (more robust to theme updates).
var shareHrefPatterns = [
"twitter.com/intent", "x.com/intent", "facebook.com/sharer",
"linkedin.com/sharing", "wa.me/", "api.whatsapp.com", "mailto:?"
];
document.querySelectorAll("a[href]").forEach(function (a) {
var href = a.getAttribute("href") || "";
if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
a.style.display = "none";
}
});
document.querySelectorAll('a[href="https://ellipsys-bi.com/authors/me/"]').forEach(function (a) {
var el = a.closest("div.flex") || a.parentElement;
if (el) el.style.display = "none";
});
}
document.addEventListener("DOMContentLoaded", hide);
})();
&lt;/script&gt;</description></item><item><title>ETL Migration - legacy ETL connectors for SQL migration</title><link>https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-connecteurs-legacy/</link><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid>https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-connecteurs-legacy/</guid><description>&lt;p&gt;ETL platforms rely on connectors, transformation components, parameterization mechanisms, and execution strategies specific to each vendor.&lt;/p&gt;
&lt;p&gt;&lt;strong style="color:#C00000;"&gt;{openAudit}&lt;/strong&gt; analyzes these components, reconstructs their behavior, and then generates a SQL representation independent of the source technology.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; the conversion is based on analyzing the ETL components, not on a simple syntactic translation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="component-analysis"&gt;Component analysis&lt;/h2&gt;
&lt;p&gt;Technical repositories are analyzed to identify connectors, transformations, parameters, dependencies, and execution mechanisms.&lt;/p&gt;
&lt;p&gt;The components are converted into a common intermediate model before SQL generation.&lt;/p&gt;
&lt;p&gt;This approach is identical regardless of the source technology.&lt;/p&gt;
&lt;h2 id="connectors"&gt;Connectors&lt;/h2&gt;
&lt;p&gt;Read and write connectors are analyzed to reconstruct the flows between systems.&lt;/p&gt;
&lt;p&gt;Connection parameters, queries, data formats, and mappings are integrated into the migration model.&lt;/p&gt;
&lt;p&gt;Flows can originate from relational databases, files, APIs, or Cloud platforms.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Typical use case:&lt;/strong&gt; reconstructing exchanges between Oracle, SQL Server, PostgreSQL, flat files, or Cloud storage.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="transformations"&gt;Transformations&lt;/h2&gt;
&lt;p&gt;Transformation components are converted into SQL instructions.&lt;/p&gt;
&lt;p&gt;Filters, joins, aggregations, lookups, mappings, type conversions, column calculations, and conditional expressions are reconstructed in the target SQL model.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-connecteurs-legacy/migration-etl-connecteurs-legacy-1-fr-en_hu_fced570183f618b.webp 320w, https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-connecteurs-legacy/migration-etl-connecteurs-legacy-1-fr-en_hu_dd98b23a236d010.webp 480w, https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-connecteurs-legacy/migration-etl-connecteurs-legacy-1-fr-en_hu_51d9bda1300879c3.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-connecteurs-legacy/migration-etl-connecteurs-legacy-1-fr-en_hu_fced570183f618b.webp"
width="760"
height="324"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; each transformation becomes an explicit SQL operation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="parameterization"&gt;Parameterization&lt;/h2&gt;
&lt;p&gt;Environment variables, job parameters, shared libraries, and reusable components are analyzed during the conversion.&lt;/p&gt;
&lt;p&gt;Dependencies between processes and parameterization mechanisms are preserved in the generated model.&lt;/p&gt;
&lt;h2 id="supported-technologies"&gt;Supported technologies&lt;/h2&gt;
&lt;p&gt;The migration engines cover in particular IBM DataStage, Talend, SAP BODS, SSIS, ODI, Informatica PowerCenter, Stambia, Semarchy xDI, and Ab Initio.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="img-big"
srcset="https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-connecteurs-legacy/migration-etl-connecteurs-legacy-2-fr-en_hu_b2089859f56a5d05.webp 320w, https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-connecteurs-legacy/migration-etl-connecteurs-legacy-2-fr-en_hu_543af4a1a34656c7.webp 480w, https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-connecteurs-legacy/migration-etl-connecteurs-legacy-2-fr-en_hu_16ada158ec22bd89.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://ellipsys-bi.com/en/ressources/migration-etl/migration-etl-connecteurs-legacy/migration-etl-connecteurs-legacy-2-fr-en_hu_b2089859f56a5d05.webp"
width="760"
height="313"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The methodology stays the same: component analysis, flow reconstruction, then SQL generation.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; a consistent approach applied to different ETL technologies.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="sql-as-the-pivot-format"&gt;SQL as the pivot format&lt;/h2&gt;
&lt;p&gt;Once the components have been reconstructed, the processes are converted into a SQL model independent of the source platform.&lt;/p&gt;
&lt;p&gt;The generated SQL can then be adapted to Snowflake, BigQuery, Databricks SQL, Redshift, PostgreSQL, SQL Server, or any other compatible engine.&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Key point:&lt;/strong&gt; SQL becomes the common format for representing the processes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script&gt;
(function () {
// Hide the "Last updated on" date and the Author block on Resources
// pages: these aren't blog posts (no date/byline).
function hide() {
document.querySelectorAll("time.mt-12.mb-8").forEach(function (el) {
el.style.display = "none";
});
document.querySelectorAll("div.flex.pt-12.pb-4").forEach(function (el) {
if (el.querySelector('img[src*="/media/authors/"]')) {
el.style.display = "none";
}
});
// Extra safety net: also hide the social sharing row and any container
// linked to the author card, matched semantically rather than by class
// name (more robust to theme updates).
var shareHrefPatterns = [
"twitter.com/intent", "x.com/intent", "facebook.com/sharer",
"linkedin.com/sharing", "wa.me/", "api.whatsapp.com", "mailto:?"
];
document.querySelectorAll("a[href]").forEach(function (a) {
var href = a.getAttribute("href") || "";
if (shareHrefPatterns.some(function (p) { return href.indexOf(p) !== -1; })) {
a.style.display = "none";
}
});
document.querySelectorAll('a[href="https://ellipsys-bi.com/authors/me/"]').forEach(function (a) {
var el = a.closest("div.flex") || a.parentElement;
if (el) el.style.display = "none";
});
}
document.addEventListener("DOMContentLoaded", hide);
})();
&lt;/script&gt;</description></item></channel></rss>