<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ETL |</title><link>https://ellipsys-bi.com/en/tags/etl/</link><atom:link href="https://ellipsys-bi.com/en/tags/etl/index.xml" rel="self" type="application/rss+xml"/><description>ETL</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-US</language><lastBuildDate>Thu, 02 Jul 2026 00:00:00 +0000</lastBuildDate><image><url>https://ellipsys-bi.com/media/logo.svg</url><title>ETL</title><link>https://ellipsys-bi.com/en/tags/etl/</link></image><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></channel></rss>