<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ELT |</title><link>https://ellipsys-bi.com/en/tags/elt/</link><atom:link href="https://ellipsys-bi.com/en/tags/elt/index.xml" rel="self" type="application/rss+xml"/><description>ELT</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>ELT</title><link>https://ellipsys-bi.com/en/tags/elt/</link></image><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></channel></rss>