<?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} and {oa-lake} |</title><link>https://ellipsys-bi.com/en/ressources/middlewares/</link><atom:link href="https://ellipsys-bi.com/en/ressources/middlewares/index.xml" rel="self" type="application/rss+xml"/><description>Middlewares — {oa.tbx} and {oa-lake}</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>Middlewares — {oa.tbx} and {oa-lake}</title><link>https://ellipsys-bi.com/en/ressources/middlewares/</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></channel></rss>