<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="/static/feed.xsl" type="text/xsl" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:quartz="https://quartz.jzhao.xyz/ns">
  <script xmlns="http://www.w3.org/1999/xhtml" src="/static/scripts/xslt-polyfill-214fd525.js"></script>
  <title>/wiki / data-warehouse</title>
  <subtitle>Recent notes in /wiki / data-warehouse on Animesh Mishra</subtitle>
  <link href="https://animishraa05.github.io/wiki/data-warehouse" />
  <link rel="alternate" type="text/html" href="https://animishraa05.github.io/wiki/data-warehouse" />
  <category term="wiki/data-warehouse" />
  <id>https://animishraa05.github.io/wiki/data-warehouse</id>
  <updated>2026-09-19T00:00:00.000Z</updated>
  <contributor>
    <name>Animesh Mishra</name>
    <email>animesh.mishra818@gmail.com</email>
  </contributor>
  <logo>https://animishraa05.github.io/icon.png</logo>
  <icon>https://animishraa05.github.io/icon.png</icon>
  <generator>Quartz v4.6.0 -- quartz.jzhao.xyz</generator>
  <rights type="html">&amp;amp;copy; 2026 Animesh Mishra</rights>
  
  <entry>
    <title>data-mining-tools</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/data-mining-tools" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/data-mining-tools.md" />
    <summary>The Problem Auto-created stub for singleton broken link [[data-mining-tools]] — referenced once and was missing.</summary>
    <published>2026-09-19T00:00:00.000Z</published>
    <updated>2026-09-19T00:00:00.000Z</updated>
    <publishedTime>Sep 19, 2026</publishedTime>
    <updatedTime>Sep 19, 2026</updatedTime>
    <category term="database" label="database" />
<category term="stub" label="stub" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Auto-created stub for singleton broken link &lt;code class=&quot;notranslate&quot;&gt;[[data-mining-tools]]&lt;/code&gt; — referenced once and was missing. Keeps graph connected per &lt;code class=&quot;notranslate&quot;&gt;AGENTS.md:199&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;formal-definition&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Formal Definition&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#formal-definition&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Per Wikipedia: “To be written.”&lt;/p&gt;
&lt;h2 id=&quot;explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Stub — fill with plain language explanation of data mining tools.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;To be written.&lt;/li&gt;
&lt;li&gt;To be written.&lt;/li&gt;
&lt;li&gt;To be written.&lt;/li&gt;
&lt;li&gt;To be written.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: data_mining_tools Pages: 1 --&gt;
&lt;svg width=&quot;383pt&quot; height=&quot;44pt&quot; viewBox=&quot;0.00 0.00 383.00 44.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 40)&quot;&gt;
&lt;title&gt;data_mining_tools&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-40 378.91,-40 378.91,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- A --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;A&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;165.41,-36 0,-36 0,0 165.41,0 165.41,-36&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;82.7&quot; y=&quot;-13.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Stub: Data Mining Tools&lt;/text&gt;
&lt;/g&gt;
&lt;!-- B --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;B&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;374.91,-36 277.99,-36 277.99,0 374.91,0 374.91,-36&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;326.45&quot; y=&quot;-13.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;To be written&lt;/text&gt;
&lt;/g&gt;
&lt;!-- A&amp;#45;&amp;gt;B --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;A-&gt;B&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M165.89,-18C198.9,-18 236.22,-18 266.46,-18&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;266.17,-21.5 276.17,-18 266.17,-14.5 266.17,-21.5&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;221.7&quot; y=&quot;-22.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;needs content&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_data_mining_tools Pages: 1 --&gt;
&lt;svg width=&quot;193pt&quot; height=&quot;55pt&quot; viewBox=&quot;0.00 0.00 193.00 55.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 50.64)&quot;&gt;
&lt;title&gt;semantic_data_mining_tools&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-50.64 188.53,-50.64 188.53,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;79.96&quot; cy=&quot;-28.64&quot; rx=&quot;79.96&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;79.96&quot; y=&quot;-24.74&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Data Mining Tools&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REL1 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REL1&lt;/title&gt;
&lt;ellipse fill=&quot;#f0f0f0&quot; stroke=&quot;black&quot; cx=&quot;151.17&quot; cy=&quot;-18&quot; rx=&quot;33.35&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;151.17&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REL1 --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REL1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M147.34,-18.57C147.5,-18.55 147.64,-18.53 147.79,-18.51&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;128.52&quot; y=&quot;-5.94&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;To be written.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;real-world-example&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Real-World Example&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#real-world-example&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;figure data-rehype-pretty-code-figure=&quot;&quot;&gt;&lt;pre style=&quot;--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e&quot; tabindex=&quot;0&quot; data-language=&quot;python&quot; data-theme=&quot;github-light github-dark&quot; class=&quot;notranslate&quot;&gt;&lt;span class=&quot;clipboard-button&quot; type=&quot;button&quot; aria-label=&quot;copy source&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 -8 24 24&quot; fill=&quot;currentColor&quot; stroke=&quot;none&quot; stroke-width=&quot;0&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;copy-icon&quot;&gt;&lt;use href=&quot;#github-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 -8 24 24&quot; fill=&quot;currentColor&quot; stroke=&quot;none&quot; stroke-width=&quot;0&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;check-icon&quot;&gt;&lt;use href=&quot;#github-check&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code data-language=&quot;python&quot; data-theme=&quot;github-light github-dark&quot; style=&quot;display: grid;&quot; class=&quot;notranslate&quot;&gt;&lt;span data-line=&quot;&quot;&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;# &lt;/span&gt;&lt;span style=&quot;--shiki-light:#D73A49;--shiki-dark:#F97583&quot;&gt;TODO&lt;/span&gt;&lt;span style=&quot;--shiki-light:#6A737D;--shiki-dark:#6A737D&quot;&gt;: add example for Data Mining Tools&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../&quot; class=&quot;internal alias&quot; data-slug=&quot;index&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Index&lt;/a&gt; — auto stub for singleton &lt;code class=&quot;notranslate&quot;&gt;[[data-mining-tools]]&lt;/code&gt; from &lt;code class=&quot;notranslate&quot;&gt;wiki/data-warehouse/scoring-dwh.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;To be written.&lt;/li&gt;
&lt;li&gt;To be written.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>Data Warehouse -- Map of Content</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/.md" />
    <summary> Map of Content for Data Warehouse — 40 concepts. Start here to navigate data-warehouse.</summary>
    <published>2026-09-02T00:00:00.000Z</published>
    <updated>2026-09-02T00:00:00.000Z</updated>
    <publishedTime>Sep 02, 2026</publishedTime>
    <updatedTime>Sep 02, 2026</updatedTime>
    <category term="meta" label="meta" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p dir=&quot;auto&quot;&gt;Map of Content for &lt;strong&gt;Data Warehouse&lt;/strong&gt; — 40 concepts. Start here to navigate data-warehouse.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;core-concepts&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Concepts&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-concepts&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;a href=&quot;../../conditioning-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;conditioning-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Conditioning DWH&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../data-extraction&quot; class=&quot;internal alias&quot; data-slug=&quot;data-extraction&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Extraction DWH&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../data-mart-types&quot; class=&quot;internal alias&quot; data-slug=&quot;data-mart-types&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Mart Types&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../data-scrubbing&quot; class=&quot;internal alias&quot; data-slug=&quot;data-scrubbing&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Scrubbing&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../dimension-table&quot; class=&quot;internal alias&quot; data-slug=&quot;dimension-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Dimension Table&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../dwh-application-areas&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-application-areas&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Application Areas&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../dwh-benefits&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-benefits&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Benefits&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../dwh-evolution&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-evolution&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Evolution&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../dwh-gateway&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-gateway&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Gateway&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../dwh-refresh&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-refresh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Refresh&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../dwh-scale&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-scale&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Scale&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../dwh-server-models&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-server-models&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Server Models&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../enrichment-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;enrichment-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Enrichment DWH&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline DWH&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../fact-constellation-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;fact-constellation-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Constellation Schema&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../fact-table&quot; class=&quot;internal alias&quot; data-slug=&quot;fact-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Table&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../holap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;holap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;HOLAP Server&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../householding-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;householding-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Householding DWH&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../inmon-vs-kimball&quot; class=&quot;internal&quot; data-slug=&quot;inmon-vs-kimball&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;inmon-vs-kimball&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated Data Warehouse&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../loading-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;loading-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Loading DWH&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../metadata-management-challenges&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-management-challenges&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata Management Challenges&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../metadata-repository&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-repository&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata Repository&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../molap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;molap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;MOLAP Server&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../nonvolatile-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;nonvolatile-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Nonvolatile Data Warehouse&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../olap-operations&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-operations&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Operations&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../olap-server-comparison&quot; class=&quot;internal&quot; data-slug=&quot;olap-server-comparison&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;olap-server-comparison&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../olap-servers&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-servers&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Servers&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../rolap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;rolap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ROLAP Server&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../schema-comparison&quot; class=&quot;internal&quot; data-slug=&quot;schema-comparison&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;schema-comparison&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../scoring-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;scoring-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Scoring DWH&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../snowflake-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;snowflake-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Snowflake Schema&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../subject-oriented-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;subject-oriented-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Subject-Oriented Data Warehouse&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier Data Warehouse Architecture&lt;/a&gt; — concept&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../time-variant-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;time-variant-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Time-Variant Data Warehouse&lt;/a&gt; — concept&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;mechanisms--how-things-work&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Mechanisms &amp;#x26; How Things Work&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#mechanisms--how-things-work&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;em&gt;Pages that explain processes/flows.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;comparisons--tradeoffs&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Comparisons &amp;#x26; Tradeoffs&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#comparisons--tradeoffs&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;em&gt;(No synthesis yet — create via ingest or query —save)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;suggested-reading-order&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Suggested Reading Order&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#suggested-reading-order&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;Browse Core Concepts above — start with most-linked page&lt;/li&gt;
&lt;li&gt;Follow Connections sections for dense graph traversal&lt;/li&gt;
&lt;/ol&gt;</content>
  </entry><entry>
    <title>conditioning-dwh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/conditioning-dwh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/conditioning-dwh.md" />
    <summary>The Problem Different source systems use different data types to represent the same concept.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Different source systems use different data types to represent the same concept. One system stores a date as a VARCHAR string “2024-03-15”, another as an integer &lt;a href=&quot;https://github.com/animishraa05/animishraa05.github.io/commit/20240315&quot; data-link-vendor=&quot;github&quot; class=&quot;github-link external&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;code class=&quot;notranslate&quot;&gt;2024031&lt;/code&gt;&lt;svg data-icon=&quot;github&quot; role=&quot;img&quot; width=&quot;1em&quot; height=&quot;1em&quot; focusable=&quot;false&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; aria-label=&quot;true&quot; viewBox=&quot;64 64 896 896&quot;&gt;&lt;path d=&quot;M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0138.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;svg data-icon=&quot;github-white&quot; role=&quot;img&quot; width=&quot;1em&quot; height=&quot;1em&quot; focusable=&quot;false&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; aria-label=&quot;true&quot; viewBox=&quot;64 64 896 896&quot;&gt;&lt;path fill=&quot;#fff&quot; d=&quot;M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0138.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;, and another as a DATE object. One system stores monetary values as DECIMAL(10,2), another as FLOAT (losing precision), and another as VARCHAR with currency symbols. When these values are loaded into the warehouse without type conversion, queries fail or produce incorrect results.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Conditioning&lt;/strong&gt; is the process of converting data types from the source system’s representation to the target data warehouse’s expected types. It ensures that every column in the warehouse has a consistent, well-defined data type, enabling correct comparisons, aggregations, and joins.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Conditioning operates on individual columns during the ETL transformation phase:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Identify type mismatches:&lt;/strong&gt; Compare source column types against the warehouse schema definition.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apply type conversions:&lt;/strong&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;String to date: “2024-03-15” (VARCHAR) → 2024-03-15 (DATE)&lt;/li&gt;
&lt;li&gt;String to integer: “42” (VARCHAR) → 42 (INT)&lt;/li&gt;
&lt;li&gt;Float to decimal: 99.9 (FLOAT, imprecise) → 99.90 (DECIMAL(10,2), precise)&lt;/li&gt;
&lt;li&gt;String to boolean: “Y/N”, “1/0”, “True/False” → BOOLEAN&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Handle conversion failures:&lt;/strong&gt; Records that cannot be converted (e.g., “abc” to integer) are flagged as errors and routed to an exception table.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apply default values:&lt;/strong&gt; For nullable columns with missing data, apply warehouse-defined defaults (e.g., NULL → 0 for numeric, NULL → empty string for text).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validate constraints:&lt;/strong&gt; After conversion, check that values fall within expected ranges (e.g., age between 0 and 150, date not in the future).&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;Conditioning is distinct from scrubbing: scrubbing standardizes &lt;strong&gt;values&lt;/strong&gt; (e.g., “M” vs “Male”), while conditioning standardizes &lt;strong&gt;types&lt;/strong&gt; (e.g., VARCHAR → DATE).&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: conditioning Pages: 1 --&gt;
&lt;svg width=&quot;527pt&quot; height=&quot;239pt&quot; viewBox=&quot;0.00 0.00 527.00 239.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 235)&quot;&gt;
&lt;title&gt;conditioning&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-235 523.07,-235 523.07,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_source&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-193 129.85,-193 129.85,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.93&quot; y=&quot;-176.4&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Source Types&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_target&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;386.15,-38 386.15,-223 511.07,-223 511.07,-38 386.15,-38&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;448.61&quot; y=&quot;-206.4&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Warehouse Types&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s1 --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;s1&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;118.49,-160 19.36,-160 19.36,-124 118.49,-124 118.49,-160&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.93&quot; y=&quot;-145.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Date: VARCHAR&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.93&quot; y=&quot;-132.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;&quot;2024-03-15&quot;&lt;/text&gt;
&lt;/g&gt;
&lt;!-- convert --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;convert&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;258,-186.6 158.85,-139 258,-91.4 357.15,-139 258,-186.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;258&quot; y=&quot;-148.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Conditioning&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;258&quot; y=&quot;-135.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Type Conversion&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;258&quot; y=&quot;-122.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Validation&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s1&amp;#45;&amp;gt;convert --&gt;
&lt;!-- t1 --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;t1&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;485.96,-190 411.27,-190 411.27,-154 485.96,-154 485.96,-190&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;448.61&quot; y=&quot;-175.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Date: DATE&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;448.61&quot; y=&quot;-162.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;2024-03-15&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s1&amp;#45;&amp;gt;t1 --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;s1-&gt;t1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M92.43,-160.48C109.49,-173.23 134.15,-189.09 158.85,-196 243.73,-219.75 269.76,-207.4 357.15,-196 371.39,-194.14 386.58,-190.71 400.37,-187.01&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;400.93,-190.48 409.62,-184.41 399.04,-183.74 400.93,-190.48&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;258&quot; y=&quot;-212.56&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;via&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s2 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;s2&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;116.66,-106 21.19,-106 21.19,-70 116.66,-70 116.66,-106&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.93&quot; y=&quot;-91.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Amount: FLOAT&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.93&quot; y=&quot;-78.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;99.9&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s2&amp;#45;&amp;gt;convert --&gt;
&lt;!-- t2 --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;t2&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;503.07,-136 394.15,-136 394.15,-100 503.07,-100 503.07,-136&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;448.61&quot; y=&quot;-121.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Amount: DECIMAL&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;448.61&quot; y=&quot;-108.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;99.90&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s2&amp;#45;&amp;gt;t2 --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;s2-&gt;t2&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M117.01,-74.65C175.02,-60.54 275.88,-43.66 357.15,-70 372.29,-74.91 372.35,-83.09 386.15,-91 388.21,-92.18 390.32,-93.34 392.48,-94.48&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;390.89,-97.59 401.39,-98.95 394.03,-91.34 390.89,-97.59&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;258&quot; y=&quot;-73&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;via&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s3 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;s3&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;121.85,-52 16,-52 16,-16 121.85,-16 121.85,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.93&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Active: VARCHAR&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.93&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;&quot;Y/N&quot;&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s3&amp;#45;&amp;gt;convert --&gt;
&lt;!-- t3 --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;t3&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;501.24,-82 395.99,-82 395.99,-46 501.24,-46 501.24,-82&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;448.61&quot; y=&quot;-67.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Active: BOOLEAN&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;448.61&quot; y=&quot;-54.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;true/false&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s3&amp;#45;&amp;gt;t3 --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;s3-&gt;t3&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M122.11,-31.38C179.9,-29.34 275.66,-28.51 357.15,-40 366.19,-41.27 375.61,-43.14 384.82,-45.29&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;383.89,-48.66 394.44,-47.66 385.56,-41.87 383.89,-48.66&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;258&quot; y=&quot;-43&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;via&lt;/text&gt;
&lt;/g&gt;
&lt;!-- convert&amp;#45;&amp;gt;t1 --&gt;
&lt;!-- convert&amp;#45;&amp;gt;t2 --&gt;
&lt;!-- convert&amp;#45;&amp;gt;t3 --&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_conditioning Pages: 1 --&gt;
&lt;svg width=&quot;278pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 278.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_conditioning&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 273.61,-190.06 273.61,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;137.03&quot; cy=&quot;-86.87&quot; rx=&quot;62.42&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;137.03&quot; y=&quot;-90.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Conditioning&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;137.03&quot; y=&quot;-75.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;188.89&quot; cy=&quot;-24.32&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188.89&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188.89&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M158.72,-60.71C162.38,-56.29 166.16,-51.73 169.76,-47.4&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;145.73&quot; y=&quot;-45.95&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SCRUB --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SCRUB&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;93.27&quot; cy=&quot;-18.49&quot; rx=&quot;56.81&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.27&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Scrubbing&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SCRUB --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SCRUB&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M119.73,-59.85C114.67,-51.93 109.26,-43.48 104.66,-36.3&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;98.44&quot; y=&quot;-50.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INTEGRATED --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INTEGRATED&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;58.69&quot; cy=&quot;-108.22&quot; rx=&quot;58.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;58.69&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrated DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INTEGRATED --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INTEGRATED&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M83.47,-101.46C83.37,-101.49 83.26,-101.52 83.15,-101.55&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;64.81&quot; y=&quot;-104.21&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- LOAD --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;LOAD&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;212.82&quot; cy=&quot;-116.33&quot; rx=&quot;56.79&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;212.82&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Loading (DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;LOAD --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--LOAD&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M184.16,-105.19C184.28,-105.24 184.4,-105.29 184.52,-105.33&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;204.61&quot; y=&quot;-97.16&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;133.2&quot; cy=&quot;-168.06&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;133.2&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M135.71,-114.81C135.16,-126.37 134.55,-139.45 134.06,-149.75&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;121.12&quot; y=&quot;-134.98&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Type conversion:&lt;/strong&gt; Maps source data types to warehouse target types&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Precision preservation:&lt;/strong&gt; Converts imprecise types (FLOAT) to precise types (DECIMAL) for monetary values&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error handling:&lt;/strong&gt; Failed conversions are flagged, not silently ignored&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Constraint validation:&lt;/strong&gt; Post-conversion checks ensure data integrity&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Distinct from scrubbing:&lt;/strong&gt; Conditioning handles types; scrubbing handles values&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — conditioning is part of the Transform phase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated DWH&lt;/a&gt; — type consistency is required for integration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../data-scrubbing&quot; class=&quot;internal alias&quot; data-slug=&quot;data-scrubbing&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Scrubbing&lt;/a&gt; — conditioning complements scrubbing (types vs. values)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../loading-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;loading-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Loading (DWH)&lt;/a&gt; — conditioned data is ready for loading&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — warehouse schema (target types) is defined in metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Precision loss:&lt;/strong&gt; Converting DECIMAL to FLOAT loses precision. Always convert toward more precise types.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Date format ambiguity:&lt;/strong&gt; “03/04/2024” could be March 4 or April 3. The warehouse must enforce a canonical date format.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Overflow:&lt;/strong&gt; Converting a large integer to a smaller type (e.g., BIGINT to INT) can cause overflow errors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Null handling:&lt;/strong&gt; Some source types have no equivalent null value (e.g., primitive types). The warehouse must decide on sentinel values.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>data-extraction</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/data-extraction" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/data-extraction.md" />
    <summary>The Problem A company’s data is scattered across production databases, legacy mainframe systems, internal office tools, external consultant reports, and metadata repositories.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A company’s data is scattered across production databases, legacy mainframe systems, internal office tools, external consultant reports, and metadata repositories. Each source has its own format, access protocol, and data model. Before any analysis can happen, this scattered data must be gathered and brought into a single pipeline for processing.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Data extraction&lt;/strong&gt; is the first phase of the ETL pipeline. It involves gathering raw data from multiple heterogeneous sources — production databases, legacy systems, internal office systems, external systems, and metadata — and capturing it in its &lt;strong&gt;“as is”&lt;/strong&gt; state without any modification. Extraction is the foundation upon which all subsequent cleaning, transformation, and loading depend.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The extraction process targets five categories of data sources:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Production databases:&lt;/strong&gt; The live operational systems (OLTP) where daily business transactions are recorded — sales records, customer registrations, inventory updates.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Legacy data:&lt;/strong&gt; Older systems that may use outdated formats or protocols but still contain valuable historical data. These often require specialized gateways or adapters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Internal office systems:&lt;/strong&gt; Department-level systems like HR databases, project management tools, and internal reporting systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;External systems:&lt;/strong&gt; Data from outside the organization — market research reports, demographic data, partner data, consultant-provided profiles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata:&lt;/strong&gt; Data about the structure, origin, and meaning of the other data sources — schema definitions, data dictionaries, and transformation rules.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;Extraction uses &lt;strong&gt;gateways&lt;/strong&gt; (ODBC, JDBC, OLE-DB) to establish connections to each source and pull data through standardized API calls. The extracted data is captured without modification — it is the raw input that will be cleaned and transformed in the next ETL phase.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: data_extraction Pages: 1 --&gt;
&lt;svg width=&quot;458pt&quot; height=&quot;301pt&quot; viewBox=&quot;0.00 0.00 458.00 301.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 296.8)&quot;&gt;
&lt;title&gt;data_extraction&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-296.8 454,-296.8 454,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_sources&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-208 8,-284.8 442,-284.8 442,-208 8,-208&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;225&quot; y=&quot;-268.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Heterogeneous Sources&lt;/text&gt;
&lt;/g&gt;
&lt;!-- prod --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;prod&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;84.29,-252 15.71,-252 15.71,-216 84.29,-216 84.29,-252&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;50&quot; y=&quot;-237.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Production&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;50&quot; y=&quot;-224.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Databases&lt;/text&gt;
&lt;/g&gt;
&lt;!-- gateway --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;gateway&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;288.51,-180 151.49,-180 151.49,-144 288.51,-144 288.51,-180&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;220&quot; y=&quot;-165.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Gateway APIs&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;220&quot; y=&quot;-152.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(ODBC, JDBC, OLE-DB)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- prod&amp;#45;&amp;gt;gateway --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;prod-&gt;gateway&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M78.28,-215.56C83.11,-212.88 88.14,-210.25 93,-208 112.07,-199.17 133.41,-190.99 153.06,-184.1&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;154.04,-187.47 162.35,-180.9 151.76,-180.85 154.04,-187.47&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- legacy --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;legacy&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;160.09,-252 101.91,-252 101.91,-216 160.09,-216 160.09,-252&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131&quot; y=&quot;-237.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Legacy&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131&quot; y=&quot;-224.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Systems&lt;/text&gt;
&lt;/g&gt;
&lt;!-- legacy&amp;#45;&amp;gt;gateway --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;legacy-&gt;gateway&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M153,-215.7C163.91,-207.11 177.27,-196.61 189.18,-187.24&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;191.06,-190.22 196.75,-181.28 186.73,-184.71 191.06,-190.22&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- office --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;office&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;262.24,-252 177.76,-252 177.76,-216 262.24,-216 262.24,-252&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;220&quot; y=&quot;-237.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Internal Office&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;220&quot; y=&quot;-224.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Systems&lt;/text&gt;
&lt;/g&gt;
&lt;!-- office&amp;#45;&amp;gt;gateway --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;office-&gt;gateway&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M220,-215.7C220,-208.41 220,-199.73 220,-191.54&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;223.5,-191.62 220,-181.62 216.5,-191.62 223.5,-191.62&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- external --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;external&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;338.09,-252 279.91,-252 279.91,-216 338.09,-216 338.09,-252&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;309&quot; y=&quot;-237.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;External&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;309&quot; y=&quot;-224.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Systems&lt;/text&gt;
&lt;/g&gt;
&lt;!-- external&amp;#45;&amp;gt;gateway --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;external-&gt;gateway&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M287,-215.7C276.09,-207.11 262.73,-196.61 250.82,-187.24&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;253.27,-184.71 243.25,-181.28 248.94,-190.22 253.27,-184.71&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- meta --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;meta&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;433.57,-252 356.43,-252 356.43,-216 433.57,-216 433.57,-252&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;395&quot; y=&quot;-237.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;395&quot; y=&quot;-224.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Repositories&lt;/text&gt;
&lt;/g&gt;
&lt;!-- meta&amp;#45;&amp;gt;gateway --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;meta-&gt;gateway&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M363.03,-215.56C357.73,-212.9 352.26,-210.29 347,-208 327.18,-199.38 305.13,-191.12 285.03,-184.08&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;286.43,-180.86 275.84,-180.91 284.15,-187.48 286.43,-180.86&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- extracted --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;extracted&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;264.38,-108 175.62,-108 175.62,-72 264.38,-72 264.38,-108&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;220&quot; y=&quot;-93.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Extracted Data&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;220&quot; y=&quot;-80.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(&quot;As Is&quot; State)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- gateway&amp;#45;&amp;gt;extracted --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;gateway-&gt;extracted&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M220,-143.7C220,-136.41 220,-127.73 220,-119.54&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;223.5,-119.62 220,-109.62 216.5,-119.62 223.5,-119.62&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- next --&gt;
&lt;g id=&quot;node8&quot; class=&quot;node&quot;&gt;
&lt;title&gt;next&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;270.18,-36 169.82,-36 169.82,0 270.18,0 270.18,-36&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;220&quot; y=&quot;-21.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;→ Data Cleaning&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;220&quot; y=&quot;-8.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;&amp;#x26; Transformation&lt;/text&gt;
&lt;/g&gt;
&lt;!-- extracted&amp;#45;&amp;gt;next --&gt;
&lt;g id=&quot;edge7&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;extracted-&gt;next&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M220,-71.7C220,-64.41 220,-55.73 220,-47.54&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;223.5,-47.62 220,-37.62 216.5,-47.62 223.5,-47.62&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_extraction Pages: 1 --&gt;
&lt;svg width=&quot;278pt&quot; height=&quot;200pt&quot; viewBox=&quot;0.00 0.00 278.00 200.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 196.38)&quot;&gt;
&lt;title&gt;semantic_extraction&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-196.38 273.62,-196.38 273.62,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;135.15&quot; cy=&quot;-86.87&quot; rx=&quot;74.16&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.15&quot; y=&quot;-90.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Data Extraction&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.15&quot; y=&quot;-75.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;187.01&quot; cy=&quot;-24.32&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;187.01&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;187.01&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M157.44,-59.98C160.96,-55.74 164.56,-51.4 167.99,-47.26&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;144.21&quot; y=&quot;-56.32&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- GATEWAY --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;GATEWAY&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;91.39&quot; cy=&quot;-18.49&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;91.39&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Gateway&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;GATEWAY --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--GATEWAY&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M117.6,-59.45C112.66,-51.72 107.4,-43.52 102.91,-36.49&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;91.75&quot; y=&quot;-50.67&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SCRUB --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SCRUB&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;56.81&quot; cy=&quot;-108.22&quot; rx=&quot;56.81&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.81&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Scrubbing&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SCRUB --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SCRUB&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M74.98,-103.26C74.81,-103.31 74.65,-103.35 74.49,-103.4&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;54.47&quot; y=&quot;-106.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INTEGRATED --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INTEGRATED&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;210.94&quot; cy=&quot;-116.33&quot; rx=&quot;58.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;210.94&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrated DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INTEGRATED --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INTEGRATED&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M186.96,-107.01C187.06,-107.05 187.16,-107.09 187.27,-107.13&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;200.87&quot; y=&quot;-109.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THREE_TIER --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THREE_TIER&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;131.32&quot; cy=&quot;-168.06&quot; rx=&quot;68.35&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131.32&quot; y=&quot;-171.36&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Three-Tier DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131.32&quot; y=&quot;-158.16&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;THREE_TIER --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--THREE_TIER&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M133.83,-114.81C133.39,-124.08 132.91,-134.32 132.48,-143.32&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;112.89&quot; y=&quot;-131.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;“As is” capture:&lt;/strong&gt; Data is extracted without modification — cleaning happens in the next phase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Five source categories:&lt;/strong&gt; Production, legacy, office, external, metadata&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gateway-dependent:&lt;/strong&gt; Uses ODBC, JDBC, OLE-DB for uniform access to heterogeneous sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;First ETL phase:&lt;/strong&gt; Foundation of the entire pipeline — garbage extraction produces garbage analysis&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Volume awareness:&lt;/strong&gt; Must handle large data volumes efficiently to avoid impacting source systems&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — extraction is the first phase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../dwh-gateway&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-gateway&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Gateway&lt;/a&gt; — gateways provide the technical extraction mechanism&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../data-scrubbing&quot; class=&quot;internal alias&quot; data-slug=&quot;data-scrubbing&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Scrubbing&lt;/a&gt; — extracted data flows into scrubbing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated DWH&lt;/a&gt; — extraction gathers the heterogeneous data that integration unifies&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — extraction feeds data into Tier 1&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Extraction impact on source systems:&lt;/strong&gt; Heavy extraction queries can slow down live production systems. Extraction should be scheduled during off-peak hours or use read replicas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incremental vs. full extraction:&lt;/strong&gt; Full extraction pulls everything each time (slow, safe); incremental extraction only pulls changes since last run (fast, complex to implement).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Legacy system access:&lt;/strong&gt; Old systems may lack modern APIs, requiring custom connectors or screen-scraping techniques.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partial extraction:&lt;/strong&gt; If a source is unavailable during extraction, the warehouse will have incomplete data for that cycle.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>data-mart-types</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/data-mart-types" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/data-mart-types.md" />
    <summary>The Problem An enterprise data warehouse stores the entire company’s data, but individual departments (Finance, Marketing, HR) only need their specific subset.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;An enterprise data warehouse stores the entire company’s data, but individual departments (Finance, Marketing, HR) only need their specific subset. Querying the full warehouse for departmental reports is slow and wasteful. On the other hand, building separate mini-warehouses for each department without coordination leads to inconsistent data definitions and contradictory reports.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A &lt;strong&gt;data mart&lt;/strong&gt; is a department-specific subset of a data warehouse, focused on a particular business function (e.g., Finance, Marketing). There are three types: &lt;strong&gt;Dependent&lt;/strong&gt; (fed from the central warehouse, top-down), &lt;strong&gt;Independent&lt;/strong&gt; (built directly from sources, bottom-up), and &lt;strong&gt;Hybrid&lt;/strong&gt; (fed from both central warehouse and sources).&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;1-dependent-data-mart-top-down-approach&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;1. Dependent Data Mart (Top-Down Approach)&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#1-dependent-data-mart-top-down-approach&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Flow:&lt;/strong&gt; External sources → ETL → &lt;strong&gt;Central Data Warehouse&lt;/strong&gt; → Data Mart → Users&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mechanism:&lt;/strong&gt; The central warehouse is built first. Data marts are then created by extracting subsets from the central warehouse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advantages:&lt;/strong&gt; Single source of truth; consistent data across all marts; enterprise-wide integration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Used by:&lt;/strong&gt; Large organizations (MNCs) that can afford the upfront investment in a central warehouse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Approach:&lt;/strong&gt; Inmon’s top-down methodology.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-independent-data-mart-bottom-up-approach&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;2. Independent Data Mart (Bottom-Up Approach)&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#2-independent-data-mart-bottom-up-approach&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Flow:&lt;/strong&gt; External sources → ETL → &lt;strong&gt;Data Mart&lt;/strong&gt; → Users (central warehouse built later, if ever)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mechanism:&lt;/strong&gt; Data marts are created directly from external sources without a central warehouse. The central warehouse is assembled later by integrating existing data marts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advantages:&lt;/strong&gt; Cost-effective; fast to implement; departments get analytical capability quickly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Used by:&lt;/strong&gt; Small organizations and startups that cannot afford a full enterprise warehouse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Approach:&lt;/strong&gt; Kimball’s bottom-up methodology.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-hybrid-data-mart&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;3. Hybrid Data Mart&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#3-hybrid-data-mart&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Flow:&lt;/strong&gt; Two paths:
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Path 1: External sources → ETL → Data Mart (direct)&lt;/li&gt;
&lt;li&gt;Path 2: External sources → ETL → Central Data Warehouse → Data Mart (dependent)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mechanism:&lt;/strong&gt; Data marts can receive data from both operational sources directly and the central warehouse. Provides flexibility.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;data-mart-characteristics&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Data Mart Characteristics&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#data-mart-characteristics&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Small and focused:&lt;/strong&gt; Designed for a particular department or function.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexible:&lt;/strong&gt; Easier to modify and adapt than a full enterprise warehouse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fast access:&lt;/strong&gt; Contains frequently accessed queries, enabling rapid business trend analysis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Not comprehensive:&lt;/strong&gt; Does not store the huge volume of data across all departments.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: data_mart_types Pages: 1 --&gt;
&lt;svg width=&quot;192pt&quot; height=&quot;332pt&quot; viewBox=&quot;0.00 0.00 192.00 332.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 327.6)&quot;&gt;
&lt;title&gt;data_mart_types&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-327.6 188,-327.6 188,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_dependent&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;19,-227.2 19,-315.6 170,-315.6 170,-227.2 19,-227.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.5&quot; y=&quot;-299&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Dependent (Top-Down)&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_independent&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;14,-130.8 14,-219.2 176,-219.2 176,-130.8 14,-130.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;95&quot; y=&quot;-202.6&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Independent (Bottom-Up)&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust3&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_hybrid&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-122.8 160,-122.8 160,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-106.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Hybrid&lt;/text&gt;
&lt;/g&gt;
&lt;!-- d1 --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;d1&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;130.51,-282.8 37.49,-282.8 37.49,-235.2 130.51,-235.2 130.51,-282.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-268.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sources →&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-255.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Central DWH →&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-242.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Marts&lt;/text&gt;
&lt;/g&gt;
&lt;!-- i1 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;i1&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;140.28,-186.4 27.72,-186.4 27.72,-138.8 140.28,-138.8 140.28,-186.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-172.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sources →&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-159.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Marts →&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-146.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Central DWH later)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- d1&amp;#45;&amp;gt;i1 --&gt;
&lt;!-- h1 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;h1&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;152.21,-90 15.79,-90 15.79,-16 152.21,-16 152.21,-90&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-76.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sources →&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-62.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Marts&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;AND&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sources → Central DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;→ Data Marts&lt;/text&gt;
&lt;/g&gt;
&lt;!-- i1&amp;#45;&amp;gt;h1 --&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_data_mart Pages: 1 --&gt;
&lt;svg width=&quot;270pt&quot; height=&quot;206pt&quot; viewBox=&quot;0.00 0.00 270.00 206.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 202.21)&quot;&gt;
&lt;title&gt;semantic_data_mart&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-202.21 266.05,-202.21 266.05,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;127.57&quot; cy=&quot;-92.7&quot; rx=&quot;51.67&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;127.57&quot; y=&quot;-96.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Data Mart&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;127.57&quot; y=&quot;-81&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Types&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SERVERS --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SERVERS&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;179.44&quot; cy=&quot;-30.16&quot; rx=&quot;54.96&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;179.44&quot; y=&quot;-33.46&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Server&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;179.44&quot; y=&quot;-20.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Models&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SERVERS --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SERVERS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M148.67,-67.26C152.48,-62.66 156.44,-57.89 160.2,-53.36&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.93&quot; y=&quot;-52.21&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;83.82&quot; cy=&quot;-24.32&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;83.82&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;83.82&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M110.53,-66.07C106.69,-60.07 102.64,-53.74 98.89,-47.88&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;86.21&quot; y=&quot;-59.68&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- STAR --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;STAR&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;49.23&quot; cy=&quot;-114.05&quot; rx=&quot;49.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;49.23&quot; y=&quot;-110.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;STAR --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--STAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M81.1,-105.37C80.97,-105.4 80.83,-105.44 80.7,-105.47&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.64&quot; y=&quot;-108.12&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INTEGRATED --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INTEGRATED&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;203.36&quot; cy=&quot;-122.16&quot; rx=&quot;58.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;203.36&quot; y=&quot;-118.86&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrated DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INTEGRATED --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INTEGRATED&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M169.9,-109.15C170.04,-109.21 170.17,-109.26 170.31,-109.31&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;183.86&quot; y=&quot;-101.13&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THREE_TIER --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THREE_TIER&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;123.74&quot; cy=&quot;-173.89&quot; rx=&quot;68.35&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;123.74&quot; y=&quot;-177.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Three-Tier DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;123.74&quot; y=&quot;-163.99&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;THREE_TIER --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--THREE_TIER&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M126.25,-120.64C125.82,-129.91 125.33,-140.15 124.91,-149.16&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;105.32&quot; y=&quot;-137.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Three types:&lt;/strong&gt; Dependent (top-down), Independent (bottom-up), Hybrid (both paths)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Department-specific:&lt;/strong&gt; Each data mart focuses on one business function&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Size advantage:&lt;/strong&gt; Small, fast, and flexible compared to enterprise warehouses&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementation speed:&lt;/strong&gt; Faster than building a full enterprise warehouse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistency trade-off:&lt;/strong&gt; Independent marts risk data silos; dependent marts ensure consistency&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../dwh-server-models&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-server-models&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Server Models&lt;/a&gt; — data marts are part of the Tiered model&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — data marts are populated by ETL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — data marts typically use star schema design&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated DWH&lt;/a&gt; — dependent marts inherit integration from central warehouse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — data marts are a Tier 1 variant&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — data marts are OLAP constructs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Data silo risk:&lt;/strong&gt; Independent data marts can develop inconsistent definitions (e.g., different “revenue” calculations in Finance vs. Sales marts).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integration cost:&lt;/strong&gt; Integrating independent data marts into a central warehouse later is complex and expensive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Too many marts:&lt;/strong&gt; Creating too many data marts becomes a maintenance nightmare — each needs its own ETL pipeline.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dependent mart latency:&lt;/strong&gt; Dependent marts are one ETL cycle behind the central warehouse, adding latency.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>data-scrubbing</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/data-scrubbing" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/data-scrubbing.md" />
    <summary>The Problem When data comes from multiple heterogeneous sources, the same real-world value is represented in dozens of different ways.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;When data comes from multiple heterogeneous sources, the same real-world value is represented in dozens of different ways. One application stores gender as “M/F,” another as “1/0,” another as “Male/Female.” Pipeline length is recorded in centimeters in one system, inches in another, and yards in a third. The same customer name appears as “Agrawal,” “Agarwal,” and “Aggarwal.” Without standardizing these values, analytical queries produce inconsistent and unreliable results.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Data scrubbing&lt;/strong&gt; is the process of finding and correcting data inconsistencies by mapping disparate representations to a single, uniform standard. It handles value encoding, unit mapping, attribute name mapping, name resolution, and entity deduplication — transforming raw, inconsistent source data into clean, warehouse-ready data.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Data scrubbing applies multiple standardization techniques:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Value Encoding:&lt;/strong&gt; Free-form values mapped to canonical codes.&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;“Male”, “M”, “1”, “x”, “male” → standard “M”&lt;/li&gt;
&lt;li&gt;Different applications each use their own encoding; scrubbing creates a single mapping table.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Unit Mapping:&lt;/strong&gt; Different units of measure converted to a single standard unit.&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Pipeline lengths: cm, inches, feet, yards → single standard unit (e.g., meters)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Attribute Name Mapping:&lt;/strong&gt; Different column names for the same concept unified.&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;“balance”, “bal”, “currbal”, “balcurr” → “balance”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Name Resolution:&lt;/strong&gt; Same entity spelled differently across sources reconciled.&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;“Agrawal”, “Agarwal”, “Aggarwal” → canonical spelling&lt;/li&gt;
&lt;li&gt;Company names: “Persistent Systems”, “PSPL”, “Persistent Pvt. LTD.” → one canonical name&lt;/li&gt;
&lt;li&gt;City names: “Mumbai”, “Bombay” → one canonical name&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Entity Resolution:&lt;/strong&gt; Different account numbers for the same customer mapped to a single ID.&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Savings account number, loan account number, credit card number → single customer identification number&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Handling Invalid Data:&lt;/strong&gt; Blank entries in required fields and invalid product codes (e.g., manual entry errors like “9999999”) are detected and handled.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Invalid Code Detection:&lt;/strong&gt; Point-of-sale manual entry errors identified and corrected.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: data_scrubbing Pages: 1 --&gt;
&lt;svg width=&quot;408pt&quot; height=&quot;309pt&quot; viewBox=&quot;0.00 0.00 408.00 309.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 304.8)&quot;&gt;
&lt;title&gt;data_scrubbing&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-304.8 404,-304.8 404,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_raw&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-216 8,-292.8 392,-292.8 392,-216 8,-216&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;200&quot; y=&quot;-276.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Before Scrubbing (Raw)&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_clean&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;101,-8 101,-84.8 253,-84.8 253,-8 101,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;177&quot; y=&quot;-68.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;After Scrubbing (Clean)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- a1 --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;a1&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;83.68,-260 16.32,-260 16.32,-224 83.68,-224 83.68,-260&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;50&quot; y=&quot;-238.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;App A: m,f&lt;/text&gt;
&lt;/g&gt;
&lt;!-- scrub --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;scrub&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;177,-188 84.56,-140.4 177,-92.8 269.44,-140.4 177,-188&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;177&quot; y=&quot;-150.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Scrubbing&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;177&quot; y=&quot;-137.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Standardization&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;177&quot; y=&quot;-123.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Mapping Rules&lt;/text&gt;
&lt;/g&gt;
&lt;!-- a1&amp;#45;&amp;gt;scrub --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;a1-&gt;scrub&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M72.12,-223.65C88.59,-210.74 111.63,-192.67 131.93,-176.75&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;133.82,-179.71 139.53,-170.78 129.5,-174.2 133.82,-179.71&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- a2 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;a2&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;168.68,-260 101.32,-260 101.32,-224 168.68,-224 168.68,-260&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135&quot; y=&quot;-238.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;App B: 1,0&lt;/text&gt;
&lt;/g&gt;
&lt;!-- a2&amp;#45;&amp;gt;scrub --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;a2-&gt;scrub&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M142.32,-223.65C146.24,-214.34 151.3,-202.35 156.33,-190.42&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;159.47,-191.98 160.13,-181.41 153.02,-189.26 159.47,-191.98&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- a3 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;a3&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;253.37,-260 186.63,-260 186.63,-224 253.37,-224 253.37,-260&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;220&quot; y=&quot;-238.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;App C: x,y&lt;/text&gt;
&lt;/g&gt;
&lt;!-- a3&amp;#45;&amp;gt;scrub --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;a3-&gt;scrub&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M212.51,-223.65C208.45,-214.25 203.22,-202.13 198.02,-190.08&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;201.27,-188.78 194.09,-180.99 194.84,-191.55 201.27,-188.78&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- a4 --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;a4&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;384.3,-260 271.7,-260 271.7,-224 384.3,-224 384.3,-260&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;328&quot; y=&quot;-238.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;App D: male,female&lt;/text&gt;
&lt;/g&gt;
&lt;!-- a4&amp;#45;&amp;gt;scrub --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;a4-&gt;scrub&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M301.7,-223.65C280.94,-209.96 251.4,-190.48 226.29,-173.91&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;228.44,-171.14 218.17,-168.55 224.59,-176.98 228.44,-171.14&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- clean --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;clean&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;229.93,-52 124.07,-52 124.07,-16 229.93,-16 229.93,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;177&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH: M, F&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;177&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Standard Format)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- scrub&amp;#45;&amp;gt;clean --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;scrub-&gt;clean&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M177,-92.39C177,-82.57 177,-72.5 177,-63.59&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;180.5,-63.81 177,-53.81 173.5,-63.81 180.5,-63.81&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_scrubbing Pages: 1 --&gt;
&lt;svg width=&quot;270pt&quot; height=&quot;209pt&quot; viewBox=&quot;0.00 0.00 270.00 209.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 205.07)&quot;&gt;
&lt;title&gt;semantic_scrubbing&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-205.07 266.19,-205.07 266.19,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;135.38&quot; cy=&quot;-100.51&quot; rx=&quot;69.93&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.38&quot; y=&quot;-96.61&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Data Scrubbing&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;206.78&quot; cy=&quot;-59.01&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;206.78&quot; y=&quot;-62.31&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;206.78&quot; y=&quot;-49.11&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M164.01,-83.87C166.96,-82.16 169.98,-80.4 172.97,-78.66&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;149.99&quot; y=&quot;-73.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INTEGRATED --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INTEGRATED&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;135.22&quot; cy=&quot;-18&quot; rx=&quot;58.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.22&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrated DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INTEGRATED --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INTEGRATED&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M135.35,-82.2C135.32,-68.53 135.28,-49.92 135.26,-36.26&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.3&quot; y=&quot;-51.13&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ENRICH --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ENRICH&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;64.64&quot; cy=&quot;-142.96&quot; rx=&quot;44.32&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;64.64&quot; y=&quot;-139.66&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Enrichment&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ENRICH --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ENRICH&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M107.42,-117.29C101.55,-120.81 95.4,-124.51 89.64,-127.96&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;112.29&quot; y=&quot;-125.32&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CONDITION --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CONDITION&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;207.36&quot; cy=&quot;-141.05&quot; rx=&quot;47.73&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;207.36&quot; y=&quot;-137.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Conditioning&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CONDITION --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CONDITION&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M165.08,-117.24C170.19,-120.11 175.47,-123.09 180.51,-125.93&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;159.03&quot; y=&quot;-124.28&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- LOAD --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;LOAD&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;136.82&quot; cy=&quot;-183.07&quot; rx=&quot;56.79&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;136.82&quot; y=&quot;-179.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Loading (DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;LOAD --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--LOAD&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M135.7,-118.83C135.94,-132.52 136.27,-151.13 136.5,-164.8&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;136.1&quot; y=&quot;-133.72&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;63.6&quot; cy=&quot;-59.9&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;63.6&quot; y=&quot;-56.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M105.77,-83.76C101.45,-81.31 97,-78.79 92.68,-76.35&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;85.47&quot; y=&quot;-82.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Multiple techniques:&lt;/strong&gt; Value encoding, unit mapping, attribute mapping, name resolution, entity resolution&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mapping-driven:&lt;/strong&gt; Uses predefined mapping tables to translate source values to standards&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error detection:&lt;/strong&gt; Identifies blank entries, invalid codes, and manual entry mistakes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Critical for quality:&lt;/strong&gt; Scrubbing quality directly determines the accuracy of warehouse analysis&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source-specific rules:&lt;/strong&gt; Each source system may need its own scrubbing rules&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — scrubbing is part of the Transform phase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated DWH&lt;/a&gt; — scrubbing implements the integration characteristic&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../enrichment-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;enrichment-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Enrichment&lt;/a&gt; — another transformation sub-process alongside scrubbing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../conditioning-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;conditioning-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Conditioning&lt;/a&gt; — data type conversion complements value standardization&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../loading-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;loading-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Loading (DWH)&lt;/a&gt; — scrubbed data is loaded into the warehouse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — scrubbing rules are stored as metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Mapping table maintenance:&lt;/strong&gt; As new source values appear, mapping tables must be updated. Stale mappings produce incorrect scrubbing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Over-standardization:&lt;/strong&gt; Aggressively mapping similar-but-different values to the same code can lose important distinctions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Name resolution ambiguity:&lt;/strong&gt; “John Smith” in one system may not be the same as “J. Smith” in another — automated resolution can create false matches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance cost:&lt;/strong&gt; Scrubbing millions of records through multiple mapping rules is computationally expensive.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>data-warehouse-definition</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/data-warehouse-definition" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/data-warehouse-definition.md" />
    <summary>The Problem Transactional databases (OLTP) are optimized for fast row-level operations — inserts, updates, deletes — on current data.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Transactional databases (&lt;strong&gt;OLTP&lt;/strong&gt;) are optimized for fast row-level operations — inserts, updates, deletes — on current data. When management needs to analyze 5-10 years of historical data across multiple departments, running complex aggregation queries directly on production databases degrades performance and competes with live customer traffic.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A data warehouse is a &lt;strong&gt;subject-oriented, integrated, time-variant, and nonvolatile&lt;/strong&gt; collection of data designed to support management’s decision-making process. Coined by W.H. Inmon (1993), this definition establishes the four pillars that distinguish a warehouse from any ordinary database. It centralizes data from heterogeneous sources into a single, consistent store optimized for analytical queries rather than transaction processing.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The four characteristics defined by Inmon work together as a system:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Subject-Oriented:&lt;/strong&gt; Data is organized around major business subjects (Customer, Product, Sales) rather than around specific applications (Invoicing app, Shipping app). The focus shifts from “how data is processed” to “what data means for decision makers.”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrated:&lt;/strong&gt; Data from multiple heterogeneous sources (relational databases, flat files, ERP systems, external APIs) is extracted, cleaned, and converted into a consistent format before entering the warehouse. Date formats, naming conventions, and units of measure are standardized.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time-Variant:&lt;/strong&gt; Every record in the warehouse carries an explicit or implicit time element. The warehouse stores historical snapshots (typically 5-10 years), enabling trend analysis, year-over-year comparisons, and temporal pattern recognition.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nonvolatile:&lt;/strong&gt; Once data enters the warehouse, it is never updated or deleted in place. The only operations are &lt;strong&gt;initial loading&lt;/strong&gt; and &lt;strong&gt;querying (read access)&lt;/strong&gt;. This physical separation from the operational environment eliminates the need for transaction processing, recovery, and concurrency control mechanisms.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;Barry Devin’s complementary definition emphasizes that a warehouse is a “single, complete and consistent store of data obtained from a variety of different sources made available to end users in a way they can understand and use in business context.”&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: data_warehouse_definition Pages: 1 --&gt;
&lt;svg width=&quot;151pt&quot; height=&quot;349pt&quot; viewBox=&quot;0.00 0.00 151.00 349.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 344.8)&quot;&gt;
&lt;title&gt;data_warehouse_definition&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-344.8 147.37,-344.8 147.37,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- sources --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;sources&lt;/title&gt;
&lt;polygon fill=&quot;#e8e8e8&quot; stroke=&quot;black&quot; points=&quot;121.12,-340.8 0,-340.8 0,-293.2 121.12,-293.2 121.12,-340.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-326.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Heterogeneous&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-313.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sources&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-300.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(RDBMS, Files, ERP)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- integrate --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;integrate&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;119.01,-245.2 2.11,-245.2 2.11,-209.2 119.01,-209.2 119.01,-245.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-230.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integration&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-217.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Clean &amp;#x26; Standardize&lt;/text&gt;
&lt;/g&gt;
&lt;!-- sources&amp;#45;&amp;gt;integrate --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;sources-&gt;integrate&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M60.56,-292.93C60.56,-281.92 60.56,-268.63 60.56,-256.97&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;64.06,-257.08 60.56,-247.08 57.06,-257.08 64.06,-257.08&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;76.12&quot; y=&quot;-266.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;Extract&lt;/text&gt;
&lt;/g&gt;
&lt;!-- warehouse --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;warehouse&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;113.58,-161.2 11.54,-161.2 7.54,-157.2 7.54,-95.6 109.58,-95.6 113.58,-99.6 113.58,-161.2&quot;&gt;&lt;/polygon&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;109.58,-157.2 7.54,-157.2&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;109.58,-157.2 109.58,-95.6&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;109.58,-157.2 113.58,-161.2&quot;&gt;&lt;/polyline&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-146.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;12.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-132&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;12.00&quot;&gt;Subject-Oriented&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-117.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;12.00&quot;&gt;Time-Variant&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-103.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;12.00&quot;&gt;Nonvolatile&lt;/text&gt;
&lt;/g&gt;
&lt;!-- integrate&amp;#45;&amp;gt;warehouse --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;integrate-&gt;warehouse&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M60.56,-208.89C60.56,-198.82 60.56,-185.62 60.56,-172.89&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;64.06,-172.94 60.56,-162.94 57.06,-172.94 64.06,-172.94&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;100.58&quot; y=&quot;-182.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;Transform &amp;#x26; Load&lt;/text&gt;
&lt;/g&gt;
&lt;!-- users --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;users&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;116.86,-47.6 4.26,-47.6 4.26,0 116.86,0 116.86,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Decision Makers&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Managers, Analysts&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.56&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Query Only)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- warehouse&amp;#45;&amp;gt;users --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;warehouse-&gt;users&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M60.56,-95.22C60.56,-83.88 60.56,-71.08 60.56,-59.54&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;64.06,-59.59 60.56,-49.59 57.06,-59.59 64.06,-59.59&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101.96&quot; y=&quot;-68.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;Read-Only Access&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_data_warehouse_definition Pages: 1 --&gt;
&lt;svg width=&quot;264pt&quot; height=&quot;209pt&quot; viewBox=&quot;0.00 0.00 264.00 209.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 205.07)&quot;&gt;
&lt;title&gt;semantic_data_warehouse_definition&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-205.07 260.2,-205.07 260.2,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;128.19&quot; cy=&quot;-100.51&quot; rx=&quot;80.29&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;128.19&quot; y=&quot;-104.41&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;128.19&quot; y=&quot;-88.81&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLTP --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLTP&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;199.58&quot; cy=&quot;-59.01&quot; rx=&quot;55.65&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;199.58&quot; y=&quot;-55.71&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLTP Systems&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLTP --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLTP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M169.72,-76.37C170.46,-75.94 171.19,-75.52 171.92,-75.09&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;143.31&quot; y=&quot;-67.63&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;contrasts with&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INMON --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INMON&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;128.03&quot; cy=&quot;-18&quot; rx=&quot;81.38&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;128.03&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Inmon 4 Characteristics&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INMON --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INMON&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M128.13,-72.58C128.11,-60.61 128.08,-46.96 128.06,-36.31&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;128.1&quot; y=&quot;-46.35&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;57.44&quot; cy=&quot;-142.96&quot; rx=&quot;48.48&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;57.44&quot; y=&quot;-139.66&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M87.86,-124.71C86.37,-125.61 84.89,-126.49 83.44,-127.37&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;104.15&quot; y=&quot;-117.94&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;200.17&quot; cy=&quot;-141.05&quot; rx=&quot;56.04&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;200.17&quot; y=&quot;-137.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Systems&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M170.48,-124.33C170.97,-124.6 171.45,-124.88 171.94,-125.15&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;191.47&quot; y=&quot;-116.64&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_ARCH --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_ARCH&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;129.63&quot; cy=&quot;-183.07&quot; rx=&quot;64.35&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;129.63&quot; y=&quot;-179.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_ARCH --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_ARCH&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M128.68,-128.46C128.89,-140.44 129.12,-154.09 129.31,-164.75&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;128.99&quot; y=&quot;-138.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SCHEMA --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SCHEMA&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;56.41&quot; cy=&quot;-59.9&quot; rx=&quot;56.41&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.41&quot; y=&quot;-56.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Schemas&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SCHEMA --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SCHEMA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M86.02,-76.65C85.53,-76.37 85.04,-76.1 84.56,-75.83&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;65.03&quot; y=&quot;-68.14&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Decision support focus:&lt;/strong&gt; Built for analysis and business intelligence, not daily operations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Single source of truth:&lt;/strong&gt; Integrates scattered data into one consistent repository&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Historical depth:&lt;/strong&gt; Stores 5-10 years of data vs. OLTP’s current-state focus&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Read-optimized:&lt;/strong&gt; No UPDATE/DELETE after loading; only SELECT queries&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scale:&lt;/strong&gt; Ranges from terabytes (&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mn&gt;12&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;10^{12}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;12&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; bytes) to zettabytes (&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mn&gt;21&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;10^{21}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;21&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; bytes)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No concurrency control:&lt;/strong&gt; Nonvolatility removes need for locking/rollback mechanisms&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../subject-oriented-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;subject-oriented-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Subject-Oriented&lt;/a&gt; — first pillar of Inmon’s definition&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated&lt;/a&gt; — second pillar of Inmon’s definition&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../time-variant-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;time-variant-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Time-Variant&lt;/a&gt; — third pillar of Inmon’s definition&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../nonvolatile-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;nonvolatile-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Nonvolatile&lt;/a&gt; — fourth pillar of Inmon’s definition&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — warehouse is OLAP, not OLTP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — physical implementation of the definition&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../dwh-scale&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-scale&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Scale&lt;/a&gt; — the massive size ranges warehouses operate at&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Inmon vs. Kimball:&lt;/strong&gt; Inmon advocates top-down (enterprise warehouse first, then data marts); Kimball advocates bottom-up (data marts first, then conformed dimensions). Both definitions are valid but lead to different architectures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;“Nonvolatile” is not “immutable”:&lt;/strong&gt; Data is refreshed periodically — new data is appended, not old data modified.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data warehouse is not a data lake:&lt;/strong&gt; Warehouses require structured, cleaned data; lakes accept raw, unstructured data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Misconception:&lt;/strong&gt; A warehouse is not just “a big database.” The four characteristics (subject-oriented, integrated, time-variant, nonvolatile) are what make it a warehouse.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>dimension-table</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/dimension-table" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/dimension-table.md" />
    <summary>The Problem Numerical measures in a fact table (e.g., “5,000 sold&amp;quot;) are meaningless without context -- 5,000 of what, when, where, and to whom? Without descriptive attributes that provide this context, analytical queries cannot filter, group, or label results in ways that business users underst...</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Numerical measures in a fact table (e.g., “&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;5&lt;/mn&gt;&lt;mo separator=&quot;true&quot;&gt;,&lt;/mo&gt;&lt;mn&gt;000&lt;/mn&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;&quot;&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;w&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mi&gt;h&lt;/mi&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;5,000 sold&quot;) are meaningless without context -- &lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:1em;vertical-align:-0.25em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;mpunct&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.1667em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;000&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;so&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0197em;&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;mclose&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0278em;&quot;&gt;r&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;m&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;anin&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0359em;&quot;&gt;g&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0197em;&quot;&gt;l&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;ess&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot; style=&quot;margin-right:0.0269em;&quot;&gt;w&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;h&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;o&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;u&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;co&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;mord mathnormal&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mbin&quot;&gt;−&lt;/span&gt;&lt;span class=&quot;mspace&quot; style=&quot;margin-right:0.2222em;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.6667em;vertical-align:-0.0833em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;−&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;5,000 of what, when, where, and to whom? Without descriptive attributes that provide this context, analytical queries cannot filter, group, or label results in ways that business users understand.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A &lt;strong&gt;dimension table&lt;/strong&gt; contains descriptive attributes about a business entity that provide context for the numerical measures in the fact table. Each dimension represents an axis of analysis — Time (when), Item (what), Location (where), Customer (who). In a star schema, dimension tables are denormalized (all attributes in one table); in a snowflake schema, they may be normalized across multiple tables.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A dimension table has these characteristics:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Primary key:&lt;/strong&gt; A unique identifier (surrogate key) that joins to the fact table’s foreign key.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Descriptive attributes:&lt;/strong&gt; Non-numerical columns that describe the entity.&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dim_location&lt;/code&gt;: &lt;code class=&quot;notranslate&quot;&gt;location_key, street, city, province_or_state, country&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dim_time&lt;/code&gt;: &lt;code class=&quot;notranslate&quot;&gt;time_key, day, day_of_week, month, quarter, year, is_holiday&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dim_item&lt;/code&gt;: &lt;code class=&quot;notranslate&quot;&gt;item_key, item_name, type, brand, category&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dim_customer&lt;/code&gt;: &lt;code class=&quot;notranslate&quot;&gt;customer_key, name, age_group, city, is_premium&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Hierarchical structure:&lt;/strong&gt; Many dimensions have natural hierarchies:&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Location: Street → City → Province → Country&lt;/li&gt;
&lt;li&gt;Time: Day → Month → Quarter → Year&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Denormalized in star schema:&lt;/strong&gt; All attributes live in one table, even if this causes redundancy (e.g., “British Columbia” repeated for every city in that province).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;May be normalized in snowflake schema:&lt;/strong&gt; Large dimensions can be split into multiple tables to reduce redundancy.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: dimension_table Pages: 1 --&gt;
&lt;svg width=&quot;400pt&quot; height=&quot;162pt&quot; viewBox=&quot;0.00 0.00 400.00 162.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 157.6)&quot;&gt;
&lt;title&gt;dimension_table&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-157.6 396,-157.6 396,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_cols&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-109.6 248,-109.6 248,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;128&quot; y=&quot;-93&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Columns&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_hierarchy&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;256,-20.4 256,-97.2 384,-97.2 384,-20.4 256,-20.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;320&quot; y=&quot;-80.6&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Hierarchy&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_loc --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_loc&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;226.88,-153.6 153.12,-153.6 149.12,-149.6 149.12,-117.6 222.88,-117.6 226.88,-121.6 226.88,-153.6&quot;&gt;&lt;/polygon&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;222.88,-149.6 149.12,-149.6&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;222.88,-149.6 222.88,-117.6&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;222.88,-149.6 226.88,-153.6&quot;&gt;&lt;/polyline&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188&quot; y=&quot;-132.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_location&lt;/text&gt;
&lt;/g&gt;
&lt;!-- pk --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;pk&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;118.1,-64.4 15.9,-64.4 15.9,-28.4 118.1,-28.4 118.1,-64.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-43.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;location_key (PK)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_loc&amp;#45;&amp;gt;pk --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dim_loc-&gt;pk&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M148.69,-121.31C141.19,-118.01 133.63,-114.1 127,-109.6 112.31,-99.63 98.39,-85.6 87.66,-73.38&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;90.57,-71.4 81.42,-66.04 85.23,-75.93 90.57,-71.4&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- attrs --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;attrs&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;239.72,-76.8 136.28,-76.8 136.28,-16 239.72,-16 239.72,-76.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188&quot; y=&quot;-62.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;street&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;city&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;province_or_state&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;country&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_loc&amp;#45;&amp;gt;attrs --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dim_loc-&gt;attrs&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M188,-117.37C188,-109.01 188,-98.56 188,-88.32&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;191.5,-88.47 188,-78.47 184.5,-88.47 191.5,-88.47&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- h1 --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;h1&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;376.3,-64.4 263.7,-64.4 263.7,-28.4 376.3,-28.4 376.3,-64.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;320&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Street → City →&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;320&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Province → Country&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_loc&amp;#45;&amp;gt;h1 --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dim_loc-&gt;h1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M227.35,-121.87C235.77,-118.43 244.4,-114.33 252,-109.6 268.22,-99.5 284.11,-85.29 296.44,-73&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;298.84,-75.55 303.32,-65.95 293.83,-70.67 298.84,-75.55&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_dimension_table Pages: 1 --&gt;
&lt;svg width=&quot;300pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 300.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 189.56)&quot;&gt;
&lt;title&gt;semantic_dimension_table&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-189.56 295.52,-189.56 295.52,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;146.49&quot; cy=&quot;-86.38&quot; rx=&quot;54.74&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;146.49&quot; y=&quot;-90.28&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Dimension&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;146.49&quot; y=&quot;-74.68&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Table&lt;/text&gt;
&lt;/g&gt;
&lt;!-- STAR --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;STAR&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;198.35&quot; cy=&quot;-23.83&quot; rx=&quot;49.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;198.35&quot; y=&quot;-20.53&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;STAR --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--STAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M167.88,-60.58C173.24,-54.12 178.86,-47.33 183.8,-41.38&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157.34&quot; y=&quot;-42.88&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- FACT --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;FACT&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;102.73&quot; cy=&quot;-18&quot; rx=&quot;42.05&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;102.73&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Fact Table&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;FACT --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--FACT&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M129.45,-59.75C124.26,-51.65 118.7,-42.95 114,-35.6&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;107.96&quot; y=&quot;-50.37&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SNOW --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SNOW&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;68.15&quot; cy=&quot;-107.72&quot; rx=&quot;68.15&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.15&quot; y=&quot;-104.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Snowflake Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SNOW --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SNOW&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M97.77,-99.65C97.64,-99.69 97.52,-99.72 97.39,-99.76&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;77.32&quot; y=&quot;-102.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CUBE --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CUBE&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;222.28&quot; cy=&quot;-115.84&quot; rx=&quot;69.24&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;222.28&quot; y=&quot;-119.14&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multidimensional&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;222.28&quot; y=&quot;-105.94&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Model&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CUBE --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CUBE&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M190.14,-103.34C190.27,-103.4 190.4,-103.45 190.53,-103.5&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;171.83&quot; y=&quot;-95.32&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_OPS --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_OPS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;142.66&quot; cy=&quot;-167.56&quot; rx=&quot;63.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;142.66&quot; y=&quot;-164.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Operations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_OPS --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_OPS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M145.17,-114.32C144.63,-125.88 144.01,-138.96 143.52,-149.26&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;124.08&quot; y=&quot;-134.49&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Descriptive:&lt;/strong&gt; Contains text/attribute columns, not numerical measures&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Primary key:&lt;/strong&gt; Surrogate key joins to fact table&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hierarchical:&lt;/strong&gt; Natural hierarchies enable roll-up and drill-down&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Denormalized in star:&lt;/strong&gt; All attributes in one table for query simplicity&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can be normalized in snowflake:&lt;/strong&gt; Large dimensions split to reduce redundancy&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — dimension tables surround the fact table&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../fact-table&quot; class=&quot;internal alias&quot; data-slug=&quot;fact-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Table&lt;/a&gt; — dimension tables provide context for facts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../snowflake-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;snowflake-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Snowflake Schema&lt;/a&gt; — dimensions may be normalized&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — dimensions are the axes of the cube&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-operations&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-operations&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Operations&lt;/a&gt; — dimensions are the basis for roll-up, drill-down, slice, and dice&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../data-mart-types&quot; class=&quot;internal alias&quot; data-slug=&quot;data-mart-types&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Mart Types&lt;/a&gt; — data marts contain their own dimension tables&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Slowly Changing Dimensions (SCDs):&lt;/strong&gt; When a dimension attribute changes (customer moves), the warehouse must decide whether to overwrite (Type 1), add a new row (Type 2), or add a new column (Type 3).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Junk dimensions:&lt;/strong&gt; Low-cardinality flags (e.g., “is_returned”, “is_expedited”) are sometimes combined into a single “junk dimension” to avoid creating many small dimension tables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Role-playing dimensions:&lt;/strong&gt; The same dimension table (e.g., Date) can be joined to a fact table multiple times with different roles (order_date, ship_date, delivery_date).&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>dwh-application-areas</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/dwh-application-areas" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/dwh-application-areas.md" />
    <summary>The Problem Data warehousing is an abstract concept until it is connected to real business problems.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Data warehousing is an abstract concept until it is connected to real business problems. Without understanding how specific industries use data warehouses, it is difficult to appreciate the technology’s value or design warehouses that meet actual business needs.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Data warehouse application areas&lt;/strong&gt; span diverse industries, each using the warehouse to solve domain-specific analytical problems. Finance analyzes credit card transactions, insurance detects fraud, telecommunications analyzes call records, transport optimizes logistics, consumer goods evaluates promotions, utilities tracks power usage, and data service providers create value-added data products.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Each industry applies the warehouse to its unique analytical challenges:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Finance — Credit Card Analysis:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Analyze spending patterns, identify high-value customers, detect unusual transaction patterns.&lt;/li&gt;
&lt;li&gt;Cross-sell financial products based on transaction history.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Insurance — Claims and Fraud Analysis:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Analyze claim patterns to identify fraudulent claims.&lt;/li&gt;
&lt;li&gt;Historical trend analysis for risk assessment and premium pricing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Telecommunications — Call Record Analysis:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Analyze call patterns, peak usage times, and customer churn.&lt;/li&gt;
&lt;li&gt;Optimize network capacity based on usage trends.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Transport — Logistics Management:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Optimize routing, fleet utilization, and delivery schedules.&lt;/li&gt;
&lt;li&gt;Historical analysis of delays and their causes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Consumer Goods — Promotion Analysis:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Measure promotion effectiveness across regions and time periods.&lt;/li&gt;
&lt;li&gt;Compare sales performance before, during, and after promotional campaigns.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Data Service Providers — Value-Added Data:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Combine multiple data sources to create new analytical products.&lt;/li&gt;
&lt;li&gt;Sell enriched, analyzed data to third parties.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Utilities — Power Usage Analysis:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Analyze consumption patterns for demand forecasting.&lt;/li&gt;
&lt;li&gt;Identify peak usage periods for capacity planning.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: dwh_applications Pages: 1 --&gt;
&lt;svg width=&quot;788pt&quot; height=&quot;137pt&quot; viewBox=&quot;0.00 0.00 788.00 137.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 132.8)&quot;&gt;
&lt;title&gt;dwh_applications&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-132.8 784,-132.8 784,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_apps&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-84.8 772,-84.8 772,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;390&quot; y=&quot;-68.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Industry Applications&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dwh&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;460.8,-128.8 319.2,-128.8 315.2,-124.8 315.2,-92.8 456.8,-92.8 460.8,-96.8 460.8,-128.8&quot;&gt;&lt;/polygon&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;456.8,-124.8 315.2,-124.8&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;456.8,-124.8 456.8,-92.8&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;456.8,-124.8 460.8,-128.8&quot;&gt;&lt;/polyline&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;388&quot; y=&quot;-114.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;388&quot; y=&quot;-100.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Central Analytical Platform&lt;/text&gt;
&lt;/g&gt;
&lt;!-- finance --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;finance&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;132.13,-52 15.87,-52 15.87,-16 132.13,-16 132.13,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;74&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Finance&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;74&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Credit Card Analysis&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;finance --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;finance&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M314.85,-106.69C253.69,-103.3 171.69,-96.7 141,-84.8 126.29,-79.09 111.97,-69.23 100.37,-59.78&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;102.73,-57.19 92.85,-53.36 98.18,-62.51 102.73,-57.19&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- insurance --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;insurance&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;241.9,-52 150.1,-52 150.1,-16 241.9,-16 241.9,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;196&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Insurance&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;196&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Claims &amp;#x26; Fraud&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;insurance --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;insurance&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M314.86,-104.1C293.49,-100.44 270.62,-94.48 251,-84.8 238.97,-78.87 227.63,-69.52 218.4,-60.52&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;221.1,-58.28 211.62,-53.55 216.08,-63.16 221.1,-58.28&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- telecom --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;telecom&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;338.48,-52 259.52,-52 259.52,-16 338.48,-16 338.48,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;299&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Telecom&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;299&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Call Records&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;telecom --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;telecom&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M357.4,-92.35C353.8,-89.95 350.25,-87.41 347,-84.8 337.96,-77.55 328.92,-68.7 321.15,-60.47&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;323.95,-58.34 314.61,-53.34 318.79,-63.07 323.95,-58.34&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- transport --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;transport&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;419.54,-52 356.46,-52 356.46,-16 419.54,-16 419.54,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;388&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Transport&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;388&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Logistics&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;transport --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;transport&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M388,-92.45C388,-83.86 388,-73.27 388,-63.52&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;391.5,-63.77 388,-53.77 384.5,-63.77 391.5,-63.77&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- cpg --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;cpg&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;540.1,-52 437.9,-52 437.9,-16 540.1,-16 540.1,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;489&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Consumer Goods&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;489&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Promotions&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;cpg --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;cpg&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M417.45,-92.55C421.39,-90.04 425.34,-87.42 429,-84.8 439.8,-77.09 451.12,-67.98 460.98,-59.68&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;463.09,-62.48 468.42,-53.33 458.55,-57.16 463.09,-62.48&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- utilities --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;utilities&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;640.02,-52 557.98,-52 557.98,-16 640.02,-16 640.02,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;599&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Utilities&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;599&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Power Usage&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;utilities --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;utilities&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M461.09,-108.1C489.75,-105.02 522.12,-98.41 549,-84.8 560.43,-79.01 570.87,-69.64 579.21,-60.58&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;581.65,-63.12 585.55,-53.26 576.36,-58.53 581.65,-63.12&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- dsp --&gt;
&lt;g id=&quot;node8&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dsp&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;763.95,-52 658.05,-52 658.05,-16 763.95,-16 763.95,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;711&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Services&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;711&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Value-Added Data&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;dsp --&gt;
&lt;g id=&quot;edge7&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;dsp&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M460.99,-107.47C526.1,-104.55 616.06,-98.19 649,-84.8 662.79,-79.19 675.96,-69.48 686.59,-60.11&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;688.82,-62.81 693.77,-53.44 684.06,-57.68 688.82,-62.81&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_applications Pages: 1 --&gt;
&lt;svg width=&quot;284pt&quot; height=&quot;200pt&quot; viewBox=&quot;0.00 0.00 284.00 200.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 196.38)&quot;&gt;
&lt;title&gt;semantic_applications&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-196.38 280.44,-196.38 280.44,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;130.97&quot; cy=&quot;-86.87&quot; rx=&quot;80.79&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;130.97&quot; y=&quot;-90.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH Application&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;130.97&quot; y=&quot;-75.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Areas&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;182.83&quot; cy=&quot;-24.32&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;182.83&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;182.83&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M153.26,-59.98C156.56,-56.01 159.93,-51.94 163.17,-48.04&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;139.71&quot; y=&quot;-56.71&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;87.21&quot; cy=&quot;-18.49&quot; rx=&quot;56.41&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;87.21&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLTP vs OLAP&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M113.42,-59.45C108.48,-51.72 103.23,-43.52 98.73,-36.49&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;87.57&quot; y=&quot;-50.67&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- BENEFITS --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;BENEFITS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;52.63&quot; cy=&quot;-108.22&quot; rx=&quot;52.63&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;52.63&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Benefits&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;BENEFITS --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--BENEFITS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M67.36,-104.2C67.23,-104.24 67.09,-104.27 66.96,-104.31&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;53.4&quot; y=&quot;-106.96&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SUBJECT --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SUBJECT&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;206.76&quot; cy=&quot;-116.33&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;206.76&quot; y=&quot;-119.63&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Subject-Oriented&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;206.76&quot; y=&quot;-106.43&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SUBJECT --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SUBJECT&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M184.84,-107.81C184.93,-107.85 185.03,-107.88 185.13,-107.92&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;171.22&quot; y=&quot;-110.56&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CUBE --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CUBE&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;127.14&quot; cy=&quot;-168.06&quot; rx=&quot;69.24&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;127.14&quot; y=&quot;-171.36&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multidimensional&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;127.14&quot; y=&quot;-158.16&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Model&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CUBE --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CUBE&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M129.65,-114.81C129.21,-124.08 128.73,-134.32 128.31,-143.32&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;108.71&quot; y=&quot;-131.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Seven industry areas:&lt;/strong&gt; Finance, Insurance, Telecom, Transport, Consumer Goods, Data Services, Utilities&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Common pattern:&lt;/strong&gt; Each industry uses the warehouse to find patterns in historical data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decision support:&lt;/strong&gt; All applications support management decision-making, not operational processing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-industry value:&lt;/strong&gt; The warehouse is a general-purpose analytical platform adaptable to any domain&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data-driven insights:&lt;/strong&gt; All applications transform raw transactional data into actionable intelligence&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — applications demonstrate the definition in practice&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — each application uses OLAP, not OLTP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../dwh-benefits&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-benefits&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Benefits&lt;/a&gt; — applications realize the benefits&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../subject-oriented-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;subject-oriented-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Subject-Oriented DWH&lt;/a&gt; — each application organizes data around business subjects&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — applications analyze data along multiple dimensions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Industry-specific schemas:&lt;/strong&gt; Each industry may require different dimension designs (e.g., Telecom needs time-of-day dimensions, Finance needs currency dimensions).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regulatory compliance:&lt;/strong&gt; Finance and Insurance applications must comply with data retention and privacy regulations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Real-time needs:&lt;/strong&gt; Some applications (e.g., fraud detection) may require near-real-time data, pushing the boundaries of the warehouse’s periodic refresh model.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>dwh-benefits</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/dwh-benefits" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/dwh-benefits.md" />
    <summary>The Problem Building a data warehouse requires significant investment in infrastructure, ETL development, and ongoing maintenance.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Building a data warehouse requires significant investment in infrastructure, ETL development, and ongoing maintenance. Decision-makers need to understand the concrete benefits to justify this investment. Without clear understanding of what the warehouse enables, organizations may not commit the resources needed for success.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Data warehouse benefits&lt;/strong&gt; are the analytical and operational advantages that result from having a centralized, subject-oriented, integrated, and nonvolatile data store. These include optimized aggregate query performance on large datasets, cross-departmental data comparison, simplified query building, reduced OLTP workload, efficient multi-source data management, scalable user support, and historical analysis capability.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The benefits manifest across seven dimensions:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Aggregate query performance:&lt;/strong&gt; Designed to perform well with SUM, AVG, COUNT queries on massive datasets. The star schema and pre-aggregations enable fast responses that would be impossible on normalized OLTP databases.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Cross-segment analysis:&lt;/strong&gt; Enables queries that cut across different company segments. Production data can be compared against inventory data even if they originated in different databases with different structures.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Simplified query building:&lt;/strong&gt; Queries that would be complex in highly normalized databases are easier to build and maintain in the warehouse’s denormalized schema. This decreases the workload on transaction systems and makes analysis accessible to more users.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Reduced OLTP workload:&lt;/strong&gt; Analytical queries run against the warehouse, not the production database. This prevents analytical workloads from slowing down live transaction processing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Multi-source data management:&lt;/strong&gt; Efficient way to manage and report on data from a variety of sources that is non-uniform and scattered throughout a company.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Scalable user support:&lt;/strong&gt; Efficient way to manage demand for information from many users simultaneously — the warehouse is read-only and designed for concurrent access.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Historical analysis:&lt;/strong&gt; Provides the capability to analyze large amounts of historical data — trends, patterns, and changes over 5-10 year periods that are impossible in current-state OLTP systems.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: dwh_benefits Pages: 1 --&gt;
&lt;svg width=&quot;714pt&quot; height=&quot;137pt&quot; viewBox=&quot;0.00 0.00 714.00 137.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 132.8)&quot;&gt;
&lt;title&gt;dwh_benefits&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-132.8 710,-132.8 710,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_benefits&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-84.8 698,-84.8 698,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;353&quot; y=&quot;-68.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Benefits&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dwh&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;413.27,-128.8 318.73,-128.8 314.73,-124.8 314.73,-92.8 409.27,-92.8 413.27,-96.8 413.27,-128.8&quot;&gt;&lt;/polygon&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;409.27,-124.8 314.73,-124.8&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;409.27,-124.8 409.27,-92.8&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;409.27,-124.8 413.27,-128.8&quot;&gt;&lt;/polyline&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;364&quot; y=&quot;-107.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;/g&gt;
&lt;!-- b1 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;b1&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;107.61,-52 16.39,-52 16.39,-16 107.61,-16 107.61,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;62&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Fast Aggregate&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;62&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Queries&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;b1 --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;b1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M314.49,-108.43C252.77,-106.09 151.21,-100.01 117,-84.8 104.56,-79.27 93.02,-69.82 83.76,-60.63&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;86.4,-58.33 76.97,-53.48 81.32,-63.15 86.4,-58.33&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- b2 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;b2&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;218.21,-52 125.79,-52 125.79,-16 218.21,-16 218.21,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;172&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Cross-Segment&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;172&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Analysis&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;b2 --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;b2&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M314.39,-107.36C287.4,-104.44 254.11,-98.17 227,-84.8 214.97,-78.87 203.63,-69.52 194.4,-60.52&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;197.1,-58.28 187.62,-53.55 192.08,-63.16 197.1,-58.28&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- b3 --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;b3&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;299.84,-52 236.16,-52 236.16,-16 299.84,-16 299.84,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;268&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Simplified&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;268&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Queries&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;b3 --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;b3&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M320.57,-92.38C316.51,-90.07 312.58,-87.54 309,-84.8 300.48,-78.26 292.59,-69.63 286.05,-61.4&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;289,-59.5 280.19,-53.61 283.41,-63.71 289,-59.5&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- b4 --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;b4&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;409.91,-52 318.09,-52 318.09,-16 409.91,-16 409.91,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;364&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Reduced OLTP&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;364&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Workload&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;b4 --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;b4&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M364,-92.45C364,-83.86 364,-73.27 364,-63.52&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;367.5,-63.77 364,-53.77 360.5,-63.77 367.5,-63.77&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- b5 --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;b5&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;508.1,-52 427.9,-52 427.9,-16 508.1,-16 508.1,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;468&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multi-Source&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;468&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Management&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;b5 --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;b5&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M406.62,-92.36C410.92,-90.03 415.13,-87.5 419,-84.8 428.74,-77.99 438.2,-69.1 446.17,-60.72&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;448.7,-63.14 452.86,-53.39 443.53,-58.42 448.7,-63.14&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- b6 --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;b6&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;610.24,-52 525.76,-52 525.76,-16 610.24,-16 610.24,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;568&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Scalable User&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;568&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Support&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;b6 --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;b6&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M413.54,-109.23C444.7,-107.1 484.93,-101 517,-84.8 528.55,-78.97 539.18,-69.59 547.7,-60.53&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;550.18,-63.02 554.19,-53.21 544.94,-58.37 550.18,-63.02&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- b7 --&gt;
&lt;g id=&quot;node8&quot; class=&quot;node&quot;&gt;
&lt;title&gt;b7&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;689.61,-52 628.39,-52 628.39,-16 689.61,-16 689.61,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;659&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Historical&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;659&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Analysis&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;b7 --&gt;
&lt;g id=&quot;edge7&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;b7&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M413.6,-109.45C477.57,-108.23 584.67,-103.37 619,-84.8 628.88,-79.45 637.21,-70.53 643.67,-61.71&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;646.44,-63.87 649.08,-53.61 640.61,-59.98 646.44,-63.87&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_benefits Pages: 1 --&gt;
&lt;svg width=&quot;281pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 281.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_benefits&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 277.46,-190.06 277.46,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;127.57&quot; cy=&quot;-86.87&quot; rx=&quot;64.64&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;127.57&quot; y=&quot;-82.97&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH Benefits&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;179.44&quot; cy=&quot;-24.32&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;179.44&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;179.44&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M142.3,-69.12C147.81,-62.47 154.15,-54.82 160.02,-47.74&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;132.65&quot; y=&quot;-61.13&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLTP --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLTP&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;83.82&quot; cy=&quot;-18.49&quot; rx=&quot;56.41&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;83.82&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLTP vs OLAP&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLTP --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLTP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M116.08,-68.91C109.7,-58.93 101.78,-46.57 95.39,-36.58&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;87.23&quot; y=&quot;-55.44&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- STAR --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;STAR&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;49.23&quot; cy=&quot;-108.22&quot; rx=&quot;49.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;49.23&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;STAR --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--STAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M80.65,-99.66C80.52,-99.69 80.39,-99.73 80.26,-99.76&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;100.71&quot; y=&quot;-102.41&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- APPS --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;APPS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;203.36&quot; cy=&quot;-116.33&quot; rx=&quot;70.1&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;203.36&quot; y=&quot;-119.63&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Application&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;203.36&quot; y=&quot;-106.43&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Areas&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;APPS --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--APPS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M165.91,-101.77C166.06,-101.83 166.21,-101.89 166.35,-101.94&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;179.89&quot; y=&quot;-93.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- NONVOL --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;NONVOL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;123.74&quot; cy=&quot;-168.06&quot; rx=&quot;61.71&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;123.74&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Nonvolatile DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;NONVOL --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--NONVOL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M126.7,-105.29C126.08,-118.58 125.23,-136.44 124.61,-149.71&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;111.9&quot; y=&quot;-130.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Seven benefits:&lt;/strong&gt; Performance, cross-segment analysis, simplicity, OLTP relief, multi-source, scalability, history&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User-facing:&lt;/strong&gt; Benefits directly impact end users’ ability to analyze and decide&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost-justifying:&lt;/strong&gt; Benefits provide the ROI case for warehouse investment&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Measurable:&lt;/strong&gt; Query speed, user count, data volume — all benefits are quantifiable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compound:&lt;/strong&gt; Benefits reinforce each other (e.g., reduced OLTP workload + fast queries = better decisions)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — benefits result from the four characteristics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — benefits highlight why OLAP is needed alongside OLTP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — denormalized schema enables simplified queries&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../dwh-application-areas&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-application-areas&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Application Areas&lt;/a&gt; — applications realize the benefits&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../nonvolatile-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;nonvolatile-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Nonvolatile DWH&lt;/a&gt; — nonvolatility enables historical analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Benefits require proper design:&lt;/strong&gt; A poorly designed warehouse (wrong schema, bad ETL) will not deliver these benefits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time to value:&lt;/strong&gt; Benefits are not immediate — the warehouse must be populated with sufficient historical data before analysis becomes meaningful.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User adoption:&lt;/strong&gt; Benefits are only realized if users actually use the warehouse. Training and tool accessibility are critical.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>dwh-evolution</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/dwh-evolution" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/dwh-evolution.md" />
    <summary>The Problem Data warehousing did not emerge fully formed — it evolved over decades as a response to the growing need for better data analysis tools.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Data warehousing did not emerge fully formed — it evolved over decades as a response to the growing need for better data analysis tools. Understanding this evolution reveals why modern warehouses have their current architecture and why certain design decisions (subject-oriented, nonvolatile, integrated) were made.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Data warehouse evolution&lt;/strong&gt; traces the progression from 1960s batch reporting systems through 1990s data warehouses with integrated OLAP engines. Each decade addressed limitations of the previous approach: 60s batch reports were inflexible, 70s terminal-based systems lacked desktop integration, 80s desktop tools could only access operational databases, and 90s warehouses finally integrated historical data with analytical engines.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The evolution unfolded in four major phases:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;1960s — Batch Reports:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Data was processed in batch jobs, producing printed reports.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Problems:&lt;/strong&gt; Hard to find and analyze information; inflexible and expensive — every new request required reprogramming.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; No interactive analysis possible.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;1970s — Terminal-based DSS and EIS:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Decision Support Systems (DSS) and Executive Information Systems (EIS) provided interactive terminal access.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Problems:&lt;/strong&gt; Still inflexible; not integrated with desktop tools (spreadsheets, word processors).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; Users were locked into specific terminal interfaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;1980s — Desktop Data Access and Analysis Tools:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Query tools, spreadsheets, and GUIs made analysis accessible on personal computers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Problems:&lt;/strong&gt; Easier to use, but could only access operational databases (not historical data).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; Analyzing production data degraded operational performance.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;1990s — Data Warehousing with Integrated OLAP:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;The modern era: dedicated warehouses with integrated OLAP engines and tools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Separate analytical database (nonvolatile, historical, subject-oriented) with multidimensional analysis capabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Breakthrough:&lt;/strong&gt; Combined historical data integration with desktop-friendly analytical tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: dwh_evolution Pages: 1 --&gt;
&lt;svg width=&quot;768pt&quot; height=&quot;56pt&quot; viewBox=&quot;0.00 0.00 768.00 56.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 51.6)&quot;&gt;
&lt;title&gt;dwh_evolution&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-51.6 764.11,-51.6 764.11,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- sixties --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;sixties&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;123.6,-47.6 0,-47.6 0,0 123.6,0 123.6,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;61.8&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;1960s&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;61.8&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Batch Reports&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;61.8&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Inflexible, Expensive)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- seventies --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;seventies&lt;/title&gt;
&lt;polygon fill=&quot;#ffe5cc&quot; stroke=&quot;black&quot; points=&quot;335.47,-47.6 199.63,-47.6 199.63,0 335.47,0 335.47,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;267.55&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;1970s&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;267.55&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Terminal DSS/EIS&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;267.55&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(No Desktop Integration)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- sixties&amp;#45;&amp;gt;seventies --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;sixties-&gt;seventies&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M123.93,-23.8C144.1,-23.8 166.83,-23.8 188.1,-23.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;187.9,-27.3 197.9,-23.8 187.9,-20.3 187.9,-27.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;161.62&quot; y=&quot;-26.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;evolution&lt;/text&gt;
&lt;/g&gt;
&lt;!-- eighties --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;eighties&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;543.66,-47.6 411.5,-47.6 411.5,0 543.66,0 543.66,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;477.58&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;1980s&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;477.58&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Desktop Tools&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;477.58&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Only Operational Data)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- seventies&amp;#45;&amp;gt;eighties --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;seventies-&gt;eighties&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M335.8,-23.8C356.24,-23.8 378.84,-23.8 399.85,-23.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;399.82,-27.3 409.82,-23.8 399.82,-20.3 399.82,-27.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;373.48&quot; y=&quot;-26.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;evolution&lt;/text&gt;
&lt;/g&gt;
&lt;!-- nineties --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;nineties&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;760.11,-47.6 619.69,-47.6 619.69,0 760.11,0 760.11,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;689.9&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;1990s&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;689.9&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse + OLAP&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;689.9&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Historical + Integrated)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- eighties&amp;#45;&amp;gt;nineties --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;eighties-&gt;nineties&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M543.97,-23.8C564.31,-23.8 586.98,-23.8 608.24,-23.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;608.03,-27.3 618.03,-23.8 608.03,-20.3 608.03,-27.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;581.67&quot; y=&quot;-26.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;evolution&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_evolution Pages: 1 --&gt;
&lt;svg width=&quot;284pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 284.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_evolution&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 279.87,-190.06 279.87,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;146.69&quot; cy=&quot;-86.87&quot; rx=&quot;68.95&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;146.69&quot; y=&quot;-82.97&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH Evolution&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;198.56&quot; cy=&quot;-24.32&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;198.56&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;198.56&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M161.42,-69.12C166.93,-62.47 173.27,-54.82 179.14,-47.74&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;150.02&quot; y=&quot;-61.13&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLTP --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLTP&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;102.94&quot; cy=&quot;-18.49&quot; rx=&quot;56.41&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;102.94&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLTP vs OLAP&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLTP --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLTP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M135.2,-68.91C128.82,-58.93 120.9,-46.57 114.51,-36.58&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;104.59&quot; y=&quot;-55.44&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THREE_TIER --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THREE_TIER&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;68.35&quot; cy=&quot;-108.22&quot; rx=&quot;68.35&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.35&quot; y=&quot;-111.52&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Three-Tier DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.35&quot; y=&quot;-98.32&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;THREE_TIER --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--THREE_TIER&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M98.42,-100.02C98.29,-100.06 98.17,-100.09 98.04,-100.13&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;77.97&quot; y=&quot;-102.78&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_SRV --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_SRV&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;222.48&quot; cy=&quot;-116.33&quot; rx=&quot;53.39&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;222.48&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Servers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_SRV --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_SRV&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M185.92,-102.12C186.35,-102.29 186.79,-102.45 187.22,-102.62&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;166.31&quot; y=&quot;-105.07&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_OPS --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_OPS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;142.86&quot; cy=&quot;-168.06&quot; rx=&quot;63.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;142.86&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Operations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_OPS --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_OPS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M145.82,-105.29C145.2,-118.58 144.36,-136.44 143.73,-149.71&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;165.04&quot; y=&quot;-130.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Four phases:&lt;/strong&gt; 60s (batch), 70s (terminal), 80s (desktop), 90s (warehouse + OLAP)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Problem-driven:&lt;/strong&gt; Each phase solved the previous phase’s limitations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Increasing flexibility:&lt;/strong&gt; From reprogramming every query to interactive analysis&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data access expansion:&lt;/strong&gt; From batch reports → terminals → desktop → integrated warehouse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OLAP integration:&lt;/strong&gt; The 90s breakthrough was combining historical data with multidimensional analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — evolution explains why the four characteristics exist&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — the 80s limitation (only operational data) motivated the OLAP/OLTP split&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — the architecture is the culmination of the evolution&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-servers&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-servers&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Servers&lt;/a&gt; — OLAP integration was the 90s breakthrough&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../dwh-benefits&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-benefits&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Benefits&lt;/a&gt; — benefits represent the solution to all historical limitations&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Pre-history:&lt;/strong&gt; Before the 1960s, data analysis was entirely manual — paper records and human calculation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The term “data warehouse”:&lt;/strong&gt; Coined by Bill Inmon in the early 1990s, formalizing concepts that had been evolving for decades.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parallel developments:&lt;/strong&gt; The evolution described is specific to business intelligence; scientific computing had its own parallel evolution.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>dwh-gateway</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/dwh-gateway" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/dwh-gateway.md" />
    <summary>The Problem Operational data lives in diverse database systems — Oracle, SQL Server, MySQL, flat files, legacy mainframe databases — each with its own protocol, query language, and API.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Operational data lives in diverse database systems — Oracle, SQL Server, MySQL, flat files, legacy mainframe databases — each with its own protocol, query language, and API. The data warehouse needs to extract data from all these sources, but writing custom extraction code for each system is impractical and unmaintainable.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A &lt;strong&gt;data warehouse gateway&lt;/strong&gt; is a standardized API provided by the underlying DBMS that allows client programs (like ETL tools) to generate SQL and execute queries against heterogeneous data sources through a uniform interface. Instead of writing source-specific code, the ETL pipeline uses a single gateway API to connect to any supported database.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Gateways act as translation layers between the ETL process and the source database:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;ETL tool calls gateway API:&lt;/strong&gt; The ETL process invokes standardized functions (e.g., &lt;code class=&quot;notranslate&quot;&gt;SQLConnect()&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;SQLExecute()&lt;/code&gt;) without knowing the specifics of the target database.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gateway translates to native protocol:&lt;/strong&gt; The gateway converts the standardized calls into the database’s native protocol and query dialect.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Results returned in standard format:&lt;/strong&gt; Query results are returned in a consistent format regardless of the source system.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;Key gateway technologies:&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;ODBC (Open Database Connectivity):&lt;/strong&gt; Microsoft’s universal API for accessing relational databases. Supports SQL-based databases through driver-specific implementations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JDBC (Java Database Connectivity):&lt;/strong&gt; Java’s equivalent of ODBC. Allows Java programs to connect to any database with a JDBC driver.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OLE-DB (Object Linking and Embedding for Databases):&lt;/strong&gt; Microsoft’s COM-based API that goes beyond relational databases to access non-relational data sources (email, spreadsheets, etc.).&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir=&quot;auto&quot;&gt;The gateway sits between the data sources and the ETL pipeline in the three-tier architecture, enabling the “integrated” characteristic of the warehouse.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: dwh_gateway Pages: 1 --&gt;
&lt;svg width=&quot;358pt&quot; height=&quot;209pt&quot; viewBox=&quot;0.00 0.00 358.00 209.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 205)&quot;&gt;
&lt;title&gt;dwh_gateway&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-205 354.38,-205 354.38,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_sources&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;4.74,-8 4.74,-193 94.99,-193 94.99,-8 4.74,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;49.87&quot; y=&quot;-176.4&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Data Sources&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_gateways&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;114.99,-8 114.99,-193 212.25,-193 212.25,-8 114.99,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;163.62&quot; y=&quot;-176.4&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Gateway APIs&lt;/text&gt;
&lt;/g&gt;
&lt;!-- oracle --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;oracle&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;82.74,-52 16,-52 16,-16 82.74,-16 82.74,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;49.37&quot; y=&quot;-30.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Oracle DB&lt;/text&gt;
&lt;/g&gt;
&lt;!-- odbc --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;odbc&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;190.12,-52 136.12,-52 136.12,-16 190.12,-16 190.12,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;163.12&quot; y=&quot;-30.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ODBC&lt;/text&gt;
&lt;/g&gt;
&lt;!-- oracle&amp;#45;&amp;gt;odbc --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;oracle-&gt;odbc&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M82.99,-34C95.95,-34 110.93,-34 124.36,-34&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;124.14,-37.5 134.14,-34 124.14,-30.5 124.14,-37.5&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- mysql --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;mysql&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;76.37,-106 22.37,-106 22.37,-70 76.37,-70 76.37,-106&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;49.37&quot; y=&quot;-84.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MySQL&lt;/text&gt;
&lt;/g&gt;
&lt;!-- jdbc --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;jdbc&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;190.12,-106 136.12,-106 136.12,-70 190.12,-70 190.12,-106&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;163.12&quot; y=&quot;-84.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;JDBC&lt;/text&gt;
&lt;/g&gt;
&lt;!-- mysql&amp;#45;&amp;gt;jdbc --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;mysql-&gt;jdbc&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M76.85,-88C91.05,-88 108.78,-88 124.4,-88&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;124.32,-91.5 134.32,-88 124.32,-84.5 124.32,-91.5&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- flat --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;flat&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;79.68,-160 19.06,-160 19.06,-124 79.68,-124 79.68,-160&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;49.37&quot; y=&quot;-138.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Flat Files&lt;/text&gt;
&lt;/g&gt;
&lt;!-- oledb --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;oledb&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;191.6,-160 134.65,-160 134.65,-124 191.6,-124 191.6,-160&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;163.12&quot; y=&quot;-138.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLE-DB&lt;/text&gt;
&lt;/g&gt;
&lt;!-- flat&amp;#45;&amp;gt;oledb --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;flat-&gt;oledb&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M80.02,-142C93.16,-142 108.79,-142 122.88,-142&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;122.74,-145.5 132.74,-142 122.74,-138.5 122.74,-145.5&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- etl --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;etl&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;350.38,-106 240.25,-106 240.25,-70 350.38,-70 350.38,-106&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;295.31&quot; y=&quot;-91.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;295.31&quot; y=&quot;-78.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Uniform API Calls)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- odbc&amp;#45;&amp;gt;etl --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;odbc-&gt;etl&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M190.47,-44.93C204.56,-50.77 222.46,-58.2 239.41,-65.23&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;237.83,-68.36 248.4,-68.96 240.51,-61.89 237.83,-68.36&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- jdbc&amp;#45;&amp;gt;etl --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;jdbc-&gt;etl&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M190.47,-88C201.56,-88 215,-88 228.49,-88&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;228.26,-91.5 238.26,-88 228.26,-84.5 228.26,-91.5&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- oledb&amp;#45;&amp;gt;etl --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;oledb-&gt;etl&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M192.05,-130.42C205.84,-124.7 222.98,-117.59 239.26,-110.84&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;240.49,-114.11 248.39,-107.05 237.81,-107.65 240.49,-114.11&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_gateway Pages: 1 --&gt;
&lt;svg width=&quot;274pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 274.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_gateway&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 269.97,-190.06 269.97,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;133.75&quot; cy=&quot;-86.87&quot; rx=&quot;67.51&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;133.75&quot; y=&quot;-82.97&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH Gateway&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THREE_TIER --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THREE_TIER&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;185.62&quot; cy=&quot;-24.32&quot; rx=&quot;68.35&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;185.62&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Three-Tier DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;185.62&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;THREE_TIER --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--THREE_TIER&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M148.48,-69.12C153.99,-62.47 160.33,-54.82 166.2,-47.74&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;138.84&quot; y=&quot;-61.13&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INTEGRATED --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INTEGRATED&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;90&quot; cy=&quot;-18.49&quot; rx=&quot;58.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;90&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrated DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INTEGRATED --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INTEGRATED&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M122.26,-68.91C115.88,-58.93 107.96,-46.57 101.57,-36.58&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.41&quot; y=&quot;-55.44&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;55.42&quot; cy=&quot;-108.22&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;55.42&quot; y=&quot;-111.52&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;55.42&quot; y=&quot;-98.32&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M85.93,-99.9C85.8,-99.94 85.67,-99.97 85.55,-100.01&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;106&quot; y=&quot;-102.65&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- EXTRACT --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;EXTRACT&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;209.54&quot; cy=&quot;-116.33&quot; rx=&quot;56.42&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;209.54&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Extraction&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;EXTRACT --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--EXTRACT&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M172.54,-101.95C172.83,-102.06 173.12,-102.17 173.41,-102.28&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;152.71&quot; y=&quot;-104.82&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;129.92&quot; cy=&quot;-168.06&quot; rx=&quot;56.04&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;129.92&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Systems&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M132.89,-105.29C132.26,-118.58 131.42,-136.44 130.79,-149.71&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;138.72&quot; y=&quot;-119.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Uniform interface:&lt;/strong&gt; One API to access all supported databases, regardless of vendor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL generation:&lt;/strong&gt; Gateways allow client programs to generate SQL code executed at the server&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Driver-based:&lt;/strong&gt; Each database vendor provides a driver that implements the gateway API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparent translation:&lt;/strong&gt; ETL tools do not need to know the native protocol of each source&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Part of Tier 1:&lt;/strong&gt; Gateways operate at the bottom tier of the three-tier architecture&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — gateways connect Tier 1 to external sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated DWH&lt;/a&gt; — gateways enable integration of heterogeneous sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — ETL uses gateways to extract data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../data-extraction&quot; class=&quot;internal alias&quot; data-slug=&quot;data-extraction&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Extraction&lt;/a&gt; — gateways are the technical mechanism for extraction&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — gateways bridge OLTP sources to the OLAP warehouse&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Driver compatibility:&lt;/strong&gt; Not all database features are supported through every gateway driver. Native queries may be needed for advanced operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance overhead:&lt;/strong&gt; Gateway translation adds a layer of abstraction that can slow down bulk extraction. Native bulk-copy tools may be faster for large volumes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security concerns:&lt;/strong&gt; Gateway connections require credentials for each source system — credential management becomes a security challenge.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OLE-DB is deprecated:&lt;/strong&gt; Microsoft has deprecated OLE-DB in favor of newer APIs, but it remains in legacy systems.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>dwh-refresh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/dwh-refresh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/dwh-refresh.md" />
    <summary>The Problem Source systems are continuously updated — new sales recorded, customer addresses changed, inventory levels adjusted.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Source systems are continuously updated — new sales recorded, customer addresses changed, inventory levels adjusted. The warehouse, being nonvolatile, does not receive these updates in real-time. Without a systematic refresh mechanism, the warehouse data becomes increasingly stale, and analytical decisions are based on outdated information.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;DWH Refresh&lt;/strong&gt; is the process of propagating source data updates to the warehouse on a scheduled basis. Administrators set refresh policies based on user needs and system traffic — typically periodic (nightly, weekly) rather than real-time, because real-time refresh is prohibitively expensive. Incremental techniques are used to propagate only the changes, not the entire dataset.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;when-to-refresh&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;When to Refresh&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#when-to-refresh&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Periodic refresh:&lt;/strong&gt; Most common approach. Refresh on a schedule — every night, every week, or after significant business events (end of month, end of quarter).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Event-driven refresh:&lt;/strong&gt; Trigger refresh after significant events — a major system migration, a data quality incident.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Real-time refresh:&lt;/strong&gt; Possible but very expensive. Used only when the warehouse requires up-to-the-minute data (e.g., stock quotation dashboards). Rarely implemented in practice.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;how-to-refresh-incremental-techniques&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How to Refresh (Incremental Techniques)&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-to-refresh-incremental-techniques&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p dir=&quot;auto&quot;&gt;Two primary approaches for detecting and propagating changes:&lt;/p&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;1. Data Shipping (e.g., Oracle Replication Server):&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;A table in the warehouse is treated as a &lt;strong&gt;remote snapshot&lt;/strong&gt; of a table in the source database.&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;after-row trigger&lt;/strong&gt; is set on the source table.&lt;/li&gt;
&lt;li&gt;When a row is updated in the source, the trigger fires and updates a &lt;strong&gt;snapshot log table&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The updated data is then propagated from the snapshot log to the warehouse.&lt;/li&gt;
&lt;li&gt;The warehouse receives the actual data changes (the “data”).&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;2. Transaction Shipping (e.g., Sybase Replication Server, Microsoft SQL Server):&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;The source database’s &lt;strong&gt;transaction log&lt;/strong&gt; is scanned for updates to replicated tables.&lt;/li&gt;
&lt;li&gt;Modified log records are transferred to a &lt;strong&gt;replication server&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The replication server packages the corresponding transactions and sends them to the warehouse.&lt;/li&gt;
&lt;li&gt;The warehouse receives the transactions and replays them to apply the updates.&lt;/li&gt;
&lt;li&gt;The warehouse receives the transaction records (the “how”), not just the resulting data.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;policy-configuration&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Policy Configuration&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#policy-configuration&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Different sources can have different refresh policies.&lt;/li&gt;
&lt;li&gt;High-priority sources (e.g., sales data) may be refreshed nightly.&lt;/li&gt;
&lt;li&gt;Low-priority sources (e.g., historical reference data) may be refreshed monthly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: dwh_refresh Pages: 1 --&gt;
&lt;svg width=&quot;284pt&quot; height=&quot;218pt&quot; viewBox=&quot;0.00 0.00 284.00 218.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 213.6)&quot;&gt;
&lt;title&gt;dwh_refresh&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-213.6 280,-213.6 280,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_shipping&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-64 8,-165.6 268,-165.6 268,-64 8,-64&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;138&quot; y=&quot;-149&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Incremental Techniques&lt;/text&gt;
&lt;/g&gt;
&lt;!-- source --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;source&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;182.5,-209.6 81.5,-209.6 81.5,-173.6 182.5,-173.6 182.5,-209.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;132&quot; y=&quot;-194.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Source Database&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;132&quot; y=&quot;-181.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Live Updates)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- data_ship --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;data_ship&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;118.4,-132.8 15.6,-132.8 15.6,-72 118.4,-72 118.4,-132.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-118.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Shipping&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-105.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;After-Row Trigger&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-92.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Snapshot Log&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-79.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(e.g., Oracle)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- source&amp;#45;&amp;gt;data_ship --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;source-&gt;data_ship&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M119.16,-173.37C112.45,-164.38 103.96,-152.98 95.78,-142.01&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;98.72,-140.1 89.94,-134.17 93.11,-144.28 98.72,-140.1&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- txn_ship --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;txn_ship&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;259.5,-132.8 136.5,-132.8 136.5,-72 259.5,-72 259.5,-132.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;198&quot; y=&quot;-118.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Transaction Shipping&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;198&quot; y=&quot;-105.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Transaction Log Scan&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;198&quot; y=&quot;-92.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Replication Server&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;198&quot; y=&quot;-79.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(e.g., SQL Server)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- source&amp;#45;&amp;gt;txn_ship --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;source-&gt;txn_ship&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M145.04,-173.37C151.85,-164.38 160.47,-152.98 168.78,-142.01&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;171.47,-144.25 174.71,-134.17 165.89,-140.03 171.47,-144.25&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- warehouse --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;warehouse&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;184.32,-36 83.68,-36 79.68,-32 79.68,0 180.32,0 184.32,-4 184.32,-36&quot;&gt;&lt;/polygon&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;180.32,-32 79.68,-32&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;180.32,-32 180.32,0&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;180.32,-32 184.32,-36&quot;&gt;&lt;/polyline&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;132&quot; y=&quot;-21.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;132&quot; y=&quot;-8.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Periodic Refresh)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- data_ship&amp;#45;&amp;gt;warehouse --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;data_ship-&gt;warehouse&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M90.47,-71.65C97.23,-63.08 104.56,-53.78 111.15,-45.43&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;113.83,-47.68 117.28,-37.66 108.34,-43.35 113.83,-47.68&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- txn_ship&amp;#45;&amp;gt;warehouse --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;txn_ship-&gt;warehouse&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M174.17,-71.65C167.3,-63.08 159.86,-53.78 153.17,-45.43&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;155.93,-43.27 146.94,-37.66 150.46,-47.65 155.93,-43.27&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_refresh Pages: 1 --&gt;
&lt;svg width=&quot;286pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 286.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_refresh&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 281.91,-190.06 281.91,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;145.33&quot; cy=&quot;-86.87&quot; rx=&quot;63.68&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;145.33&quot; y=&quot;-82.97&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH Refresh&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;197.19&quot; cy=&quot;-24.32&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;197.19&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;197.19&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M160.05,-69.12C165.68,-62.33 172.19,-54.48 178.16,-47.28&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;150.6&quot; y=&quot;-60.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- NONVOL --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;NONVOL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;101.57&quot; cy=&quot;-18.49&quot; rx=&quot;61.71&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101.57&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Nonvolatile DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;NONVOL --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--NONVOL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M133.83,-68.91C127.45,-58.93 119.54,-46.57 113.15,-36.58&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;104.98&quot; y=&quot;-55.44&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- TIME_VAR --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;TIME_VAR&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;66.99&quot; cy=&quot;-108.22&quot; rx=&quot;66.99&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;66.99&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Time-Variant DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;TIME_VAR --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--TIME_VAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M98.85,-99.53C98.72,-99.57 98.59,-99.61 98.46,-99.64&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;84.9&quot; y=&quot;-102.29&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- LOADING --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;LOADING&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;221.12&quot; cy=&quot;-116.33&quot; rx=&quot;56.79&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;221.12&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Loading (DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;LOADING --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--LOADING&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M183.22,-101.6C183.67,-101.77 184.11,-101.95 184.56,-102.12&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;170.13&quot; y=&quot;-104.56&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;141.5&quot; cy=&quot;-168.06&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;141.5&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M144.46,-105.29C143.83,-118.58 142.99,-136.44 142.37,-149.71&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;129.65&quot; y=&quot;-130.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Periodic by default:&lt;/strong&gt; Nightly or weekly refresh, not real-time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Incremental:&lt;/strong&gt; Only propagates changes, not full reloads&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Two techniques:&lt;/strong&gt; Data Shipping (snapshot + trigger) and Transaction Shipping (log scan + replication)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Policy-driven:&lt;/strong&gt; Different sources can have different refresh schedules&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Admin-controlled:&lt;/strong&gt; Refresh policies set by administrators based on user needs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — refresh is the fourth phase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../nonvolatile-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;nonvolatile-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Nonvolatile DWH&lt;/a&gt; — refresh is the only way to update nonvolatile data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../loading-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;loading-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Loading (DWH)&lt;/a&gt; — refresh uses similar batch loading mechanisms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../time-variant-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;time-variant-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Time-Variant DWH&lt;/a&gt; — refresh adds new time slices to the historical record&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — refresh rules and schedules stored in metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Refresh window conflicts:&lt;/strong&gt; Refreshing during business hours can impact query performance. Refresh should be scheduled during off-peak hours.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data Shipping vs. Transaction Shipping:&lt;/strong&gt; Data Shipping sends the actual changed data; Transaction Shipping sends the transaction log entries. Data Shipping is simpler; Transaction Shipping preserves transaction semantics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conflicting updates:&lt;/strong&gt; If a source record is updated twice between refresh cycles, only the final state may be captured (unless the technique preserves all intermediate states).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema mismatch during refresh:&lt;/strong&gt; If the source schema changes between refresh cycles, the ETL pipeline must be updated first.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>dwh-scale</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/dwh-scale" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/dwh-scale.md" />
    <summary>The Problem Data warehouses are not small databases — they are among the largest databases in existence.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Data warehouses are not small databases — they are among the largest databases in existence. Understanding the scale is essential for appreciating the engineering challenges: storage architecture, query optimization, ETL throughput, and refresh performance all behave differently at terabyte and petabyte scale than at gigabyte scale.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Data warehouse scale&lt;/strong&gt; spans from terabytes (&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mn&gt;12&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;10^{12}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;12&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; bytes) to zettabytes (&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mn&gt;21&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;10^{21}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;21&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; bytes) and beyond. Real-world examples include Walmart at 24 terabytes, Geographic Information Systems at petabytes, National Medical Records at exabytes, weather imaging at zettabytes, and intelligence agency video archives at yottabytes (&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mn&gt;24&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;10^{24}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;24&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; bytes). These volumes drive every architectural decision in warehouse design.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The scale hierarchy determines technology choices at every level:&lt;/p&gt;









































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Scale&lt;/th&gt;&lt;th&gt;Bytes&lt;/th&gt;&lt;th&gt;Example&lt;/th&gt;&lt;th&gt;Implications&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Terabytes&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mn&gt;12&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;10^{12}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;12&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Walmart (24 TB)&lt;/td&gt;&lt;td&gt;Single server possible; basic partitioning&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Petabytes&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mn&gt;15&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;10^{15}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;15&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;GIS Systems&lt;/td&gt;&lt;td&gt;Distributed storage required; parallel query processing&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Exabytes&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mn&gt;18&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;10^{18}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;18&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;National Medical Records&lt;/td&gt;&lt;td&gt;Multi-datacenter; specialized columnar databases&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Zettabytes&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mn&gt;21&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;10^{21}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;21&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Weather Images&lt;/td&gt;&lt;td&gt;Global infrastructure; extreme parallelism&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Yottabytes&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;katex&quot;&gt;&lt;span class=&quot;katex-mathml&quot;&gt;&lt;math xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msup&gt;&lt;mn&gt;10&lt;/mn&gt;&lt;mn&gt;24&lt;/mn&gt;&lt;/msup&gt;&lt;/mrow&gt;&lt;annotation encoding=&quot;application/x-tex&quot;&gt;10^{24}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;span class=&quot;katex-html&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;base&quot;&gt;&lt;span class=&quot;strut&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;mord&quot;&gt;&lt;span class=&quot;mord&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;msupsub&quot;&gt;&lt;span class=&quot;vlist-t&quot;&gt;&lt;span class=&quot;vlist-r&quot;&gt;&lt;span class=&quot;vlist&quot; style=&quot;height:0.8141em;&quot;&gt;&lt;span style=&quot;top:-3.063em;margin-right:0.05em;&quot;&gt;&lt;span class=&quot;pstrut&quot; style=&quot;height:2.7em;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;sizing reset-size6 size3 mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;&lt;span class=&quot;mord mtight&quot;&gt;24&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Intelligence Videos&lt;/td&gt;&lt;td&gt;Beyond current technology; theoretical limit&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p dir=&quot;auto&quot;&gt;At each scale level:&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Storage architecture&lt;/strong&gt; evolves from single disks to RAID arrays to distributed file systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query processing&lt;/strong&gt; evolves from single-threaded execution to parallel/distributed execution.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ETL design&lt;/strong&gt; evolves from simple batch loads to parallel streaming pipelines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refresh strategies&lt;/strong&gt; must account for the time it takes to process billions of records.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: dwh_scale Pages: 1 --&gt;
&lt;svg width=&quot;881pt&quot; height=&quot;56pt&quot; viewBox=&quot;0.00 0.00 881.00 56.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 51.6)&quot;&gt;
&lt;title&gt;dwh_scale&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-51.6 877,-51.6 877,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- tb --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;tb&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;92.4,-47.6 0,-47.6 0,0 92.4,0 92.4,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;46.2&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Terabytes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;46.2&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;10^12 bytes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;46.2&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Walmart: 24 TB&lt;/text&gt;
&lt;/g&gt;
&lt;!-- pb --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;pb&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;280.29,-47.6 200.11,-47.6 200.11,0 280.29,0 280.29,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;240.2&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Petabytes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;240.2&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;10^15 bytes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;240.2&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;GIS Systems&lt;/text&gt;
&lt;/g&gt;
&lt;!-- tb&amp;#45;&amp;gt;pb --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;tb-&gt;pb&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M92.7,-23.8C121.48,-23.8 158.73,-23.8 188.46,-23.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;188.36,-27.3 198.36,-23.8 188.36,-20.3 188.36,-27.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;146.26&quot; y=&quot;-26.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;increasing scale&lt;/text&gt;
&lt;/g&gt;
&lt;!-- eb --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;eb&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;485.91,-47.6 387.99,-47.6 387.99,0 485.91,0 485.91,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;436.95&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Exabytes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;436.95&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;10^18 bytes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;436.95&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Medical Records&lt;/text&gt;
&lt;/g&gt;
&lt;!-- pb&amp;#45;&amp;gt;eb --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;pb-&gt;eb&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M280.61,-23.8C308.13,-23.8 345.36,-23.8 376.47,-23.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;376.12,-27.3 386.12,-23.8 376.12,-20.3 376.12,-27.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;334.14&quot; y=&quot;-26.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;increasing scale&lt;/text&gt;
&lt;/g&gt;
&lt;!-- zb --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;zb&lt;/title&gt;
&lt;polygon fill=&quot;#ffe5cc&quot; stroke=&quot;black&quot; points=&quot;690.32,-47.6 593.62,-47.6 593.62,0 690.32,0 690.32,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;641.97&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Zettabytes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;641.97&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;10^21 bytes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;641.97&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Weather Images&lt;/text&gt;
&lt;/g&gt;
&lt;!-- eb&amp;#45;&amp;gt;zb --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;eb-&gt;zb&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M486.32,-23.8C515.02,-23.8 551.62,-23.8 582.01,-23.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;581.8,-27.3 591.8,-23.8 581.8,-20.3 581.8,-27.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;539.76&quot; y=&quot;-26.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;increasing scale&lt;/text&gt;
&lt;/g&gt;
&lt;!-- yb --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;yb&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;873,-47.6 798.02,-47.6 798.02,0 873,0 873,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;835.51&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Yottabytes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;835.51&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;10^24 bytes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;835.51&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Intel Videos&lt;/text&gt;
&lt;/g&gt;
&lt;!-- zb&amp;#45;&amp;gt;yb --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;zb-&gt;yb&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M690.81,-23.8C720.06,-23.8 757.34,-23.8 786.6,-23.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;786.28,-27.3 796.28,-23.8 786.28,-20.3 786.28,-27.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;744.17&quot; y=&quot;-26.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;increasing scale&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_scale Pages: 1 --&gt;
&lt;svg width=&quot;291pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 291.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_scale&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 286.83,-190.06 286.83,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;135.13&quot; cy=&quot;-86.87&quot; rx=&quot;55.07&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.13&quot; y=&quot;-82.97&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH Scale&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;186.99&quot; cy=&quot;-24.32&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;186.99&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;186.99&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M149.86,-69.12C155.37,-62.47 161.71,-54.82 167.58,-47.74&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;144.96&quot; y=&quot;-61.13&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- TIME_VAR --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;TIME_VAR&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;91.38&quot; cy=&quot;-18.49&quot; rx=&quot;66.99&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;91.38&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Time-Variant DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;TIME_VAR --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--TIME_VAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M123.64,-68.91C117.26,-58.93 109.34,-46.57 102.95,-36.58&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.79&quot; y=&quot;-55.44&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- LOADING --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;LOADING&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;56.79&quot; cy=&quot;-108.22&quot; rx=&quot;56.79&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.79&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Loading (DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;LOADING --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--LOADING&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M92.3,-98.54C92.15,-98.58 92.01,-98.62 91.87,-98.66&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;71.82&quot; y=&quot;-101.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SERVERS --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SERVERS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;210.92&quot; cy=&quot;-116.33&quot; rx=&quot;71.91&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;210.92&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Server Models&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SERVERS --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SERVERS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M171.25,-100.91C171.4,-100.97 171.56,-101.03 171.71,-101.09&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;191.74&quot; y=&quot;-92.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- MOLAP --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;MOLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;131.3&quot; cy=&quot;-168.06&quot; rx=&quot;55.66&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131.3&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MOLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;MOLAP --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--MOLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M134.26,-105.29C133.64,-118.58 132.79,-136.44 132.17,-149.71&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;119.46&quot; y=&quot;-130.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Five levels:&lt;/strong&gt; Terabytes → Petabytes → Exabytes → Zettabytes → Yottabytes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exponential growth:&lt;/strong&gt; Each level is 1,000× the previous&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Real-world anchors:&lt;/strong&gt; Walmart (TB), GIS (PB), Medical (EB), Weather (ZB), Intel (YB)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drives architecture:&lt;/strong&gt; Scale determines storage, processing, and ETL technology choices&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Historical accumulation:&lt;/strong&gt; Time-variance (5-10 year history) is the primary driver of growth&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — scale is a consequence of the warehouse’s design&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../time-variant-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;time-variant-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Time-Variant DWH&lt;/a&gt; — historical accumulation drives scale growth&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../loading-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;loading-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Loading (DWH)&lt;/a&gt; — loading strategies must handle massive volumes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../dwh-server-models&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-server-models&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Server Models&lt;/a&gt; — server architecture choices depend on scale&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../molap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;molap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;MOLAP Server&lt;/a&gt; — MOLAP is limited at large scale due to storage constraints&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Yottabytes are theoretical:&lt;/strong&gt; No existing system approaches yottabyte scale — this is a future projection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scale is not just storage:&lt;/strong&gt; Query performance, ETL throughput, and refresh time all scale non-linearly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compression reduces effective scale:&lt;/strong&gt; Modern columnar databases compress data 5-10×, making a petabyte warehouse occupy only 100-200 TB of physical storage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Archive tiering:&lt;/strong&gt; Not all data needs to be on fast storage. Old data can be moved to cheaper archival storage while remaining queryable.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>dwh-server-models</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/dwh-server-models" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/dwh-server-models.md" />
    <summary>The Problem A company needs to implement a data warehouse, but there is no single “right way” to physically store and organize the data.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A company needs to implement a data warehouse, but there is no single “right way” to physically store and organize the data. Should all data go into one massive central database (easy to maintain but prone to bottlenecks)? Should each department get its own smaller database (fast but potentially inconsistent)? Or should there be no physical warehouse at all, just a virtual layer that queries the source systems directly?&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Data Warehouse Server Models&lt;/strong&gt; define the physical architecture of how warehouse data is stored and accessed. There are three primary models: &lt;strong&gt;Enterprise/Centralized Warehouse&lt;/strong&gt; (one massive central database), &lt;strong&gt;Tiered/Data Mart&lt;/strong&gt; (central warehouse with departmental subsets), and &lt;strong&gt;Virtual/Federated Warehouse&lt;/strong&gt; (no physical storage, just a logical query layer).&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;1-enterprise--centralized-warehouse-server&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;1. Enterprise / Centralized Warehouse Server&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#1-enterprise--centralized-warehouse-server&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Structure:&lt;/strong&gt; One single database stores all data necessary for business analysis across the entire company.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mechanism:&lt;/strong&gt; External sources feed data through ETL into the central repository. All clients query this single database.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Companies with centralized operational frameworks where all data naturally flows to a central point.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advantages:&lt;/strong&gt; Single data model makes access easy; centralized maintenance is simpler than managing distributed systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt; Network bottlenecks from high traffic; limited concurrent access (single copy in single location); high dependency on network connectivity.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-tiered-data-warehouse-server--data-marts&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;2. Tiered Data Warehouse Server / Data Marts&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#2-tiered-data-warehouse-server--data-marts&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Structure:&lt;/strong&gt; A physical central data warehouse exists, with local &lt;strong&gt;data marts&lt;/strong&gt; on different tiers storing copies or summaries of the central data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mechanism:&lt;/strong&gt; Data flows from sources → central warehouse → data marts → workstations. Each tier may contain increasingly summarized data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Large organizations with department-specific analytical needs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advantages:&lt;/strong&gt; Department-level queries are fast (local data mart); flexible sizing; choices of dependent, independent, or hybrid data mart models.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt; Too many data marts become cumbersome to maintain; potential data consistency issues.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-virtual--federated-data-warehouse-server&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;3. Virtual / Federated Data Warehouse Server&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#3-virtual--federated-data-warehouse-server&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Structure:&lt;/strong&gt; No physical central database exists. A logical layer provides a unified view over the source systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mechanism:&lt;/strong&gt; When a user queries the virtual warehouse, the system dynamically translates the query and routes it to the appropriate source databases or data marts. Results are aggregated and returned.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Organizations that cannot afford the cost of building and maintaining a physical warehouse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advantages:&lt;/strong&gt; No data duplication; no ETL infrastructure needed; always reflects current source data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disadvantages:&lt;/strong&gt; Query performance depends on source system availability and speed; complex query translation; no historical data unless sources maintain it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: dwh_server_models Pages: 1 --&gt;
&lt;svg width=&quot;186pt&quot; height=&quot;332pt&quot; viewBox=&quot;0.00 0.00 186.00 332.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 327.6)&quot;&gt;
&lt;title&gt;dwh_server_models&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-327.6 182,-327.6 182,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_centralized&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;21,-227.2 21,-315.6 170,-315.6 170,-227.2 21,-227.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;95.5&quot; y=&quot;-299&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Enterprise / Centralized&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_tiered&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;18,-117.6 18,-219.2 144,-219.2 144,-117.6 18,-117.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-202.6&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Tiered / Data Marts&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust3&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_virtual&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-109.6 154,-109.6 154,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-93&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Virtual / Federated&lt;/text&gt;
&lt;/g&gt;
&lt;!-- c1 --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;c1&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;121.39,-282.8 40.61,-282.8 40.61,-235.2 121.39,-235.2 121.39,-282.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-268.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sources →&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-255.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Central DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-242.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;→ All Clients&lt;/text&gt;
&lt;/g&gt;
&lt;!-- t1 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;t1&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;127.51,-186.4 34.49,-186.4 34.49,-125.6 127.51,-125.6 127.51,-186.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-172.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sources →&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-159.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Central DWH →&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-146.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Marts →&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-132.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Workstations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- c1&amp;#45;&amp;gt;t1 --&gt;
&lt;!-- v1 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;v1&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;146.47,-76.8 15.53,-76.8 15.53,-16 146.47,-16 146.47,-76.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-62.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sources →&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Virtual Layer&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;→ Clients (query routed&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;to sources dynamically)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- t1&amp;#45;&amp;gt;v1 --&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_server_models Pages: 1 --&gt;
&lt;svg width=&quot;271pt&quot; height=&quot;200pt&quot; viewBox=&quot;0.00 0.00 271.00 200.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 196.38)&quot;&gt;
&lt;title&gt;semantic_server_models&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-196.38 266.93,-196.38 266.93,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;133.75&quot; cy=&quot;-86.87&quot; rx=&quot;62.9&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;133.75&quot; y=&quot;-90.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH Server&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;133.75&quot; y=&quot;-75.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Models&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THREE_TIER --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THREE_TIER&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;185.62&quot; cy=&quot;-24.32&quot; rx=&quot;68.35&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;185.62&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Three-Tier DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;185.62&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;THREE_TIER --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--THREE_TIER&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M155.45,-60.71C159,-56.42 162.66,-52.01 166.16,-47.79&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;179.31&quot; y=&quot;-56.95&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DATA_MART --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DATA_MART&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;90&quot; cy=&quot;-18.49&quot; rx=&quot;60.2&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;90&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Mart Types&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DATA_MART --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DATA_MART&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M116.46,-59.85C111.4,-51.93 105.99,-43.48 101.39,-36.3&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;88.66&quot; y=&quot;-50.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;55.42&quot; cy=&quot;-108.22&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;55.42&quot; y=&quot;-111.52&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;55.42&quot; y=&quot;-98.32&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M79.77,-101.58C79.67,-101.61 79.56,-101.64 79.46,-101.67&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;61.11&quot; y=&quot;-104.32&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_SRV --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_SRV&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;209.54&quot; cy=&quot;-116.33&quot; rx=&quot;53.39&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;209.54&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Servers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_SRV --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_SRV&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M181.32,-105.36C181.44,-105.41 181.56,-105.45 181.68,-105.5&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;201.76&quot; y=&quot;-97.33&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;129.92&quot; cy=&quot;-168.06&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;129.92&quot; y=&quot;-171.36&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;129.92&quot; y=&quot;-158.16&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M132.44,-114.81C132,-124.08 131.52,-134.32 131.09,-143.32&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131.76&quot; y=&quot;-120.97&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Three models:&lt;/strong&gt; Enterprise (centralized), Tiered (with data marts), Virtual (logical only)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Physical vs. logical:&lt;/strong&gt; Enterprise and Tiered are physical; Virtual is logical&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Trade-off:&lt;/strong&gt; Centralization (simplicity) vs. distribution (performance) vs. virtuality (cost savings)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalability varies:&lt;/strong&gt; Virtual scales poorly under heavy load; Tiered scales best for large organizations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data consistency:&lt;/strong&gt; Centralized ensures single truth; Tiered risks inconsistency across marts&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — server models implement Tier 1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../data-mart-types&quot; class=&quot;internal alias&quot; data-slug=&quot;data-mart-types&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Mart Types&lt;/a&gt; — Tiered model uses dependent, independent, or hybrid data marts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — Enterprise and Tiered models require ETL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-servers&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-servers&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Servers&lt;/a&gt; — server models determine which OLAP implementation is used&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — server models are the physical implementation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — server models are the OLAP-side architecture&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Virtual warehouse is not “real-time”:&lt;/strong&gt; Even though it queries source systems directly, query translation and aggregation add latency.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hybrid approaches:&lt;/strong&gt; Many companies use a combination — Enterprise warehouse for corporate reporting, Data Marts for departmental analysis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost progression:&lt;/strong&gt; Virtual (cheapest) → Tiered (moderate) → Enterprise (most expensive to build, but cheapest per-query at scale).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Network dependency:&lt;/strong&gt; Centralized warehouses are highly dependent on network connectivity — a network failure blocks all analysis.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>enrichment-dwh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/enrichment-dwh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/enrichment-dwh.md" />
    <summary>The Problem Operational data generated within a company provides only an internal view of business activities.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Operational data generated within a company provides only an internal view of business activities. It cannot answer questions like “How does our customer base compare to national demographics?” or “What is the credit risk profile of our customers?” — questions that require external context. Without augmenting internal data with outside information, the warehouse provides an incomplete analytical picture.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Enrichment&lt;/strong&gt; is the process of bringing data from external sources to augment and enhance operational data stored in the warehouse. It adds context that internal systems alone cannot provide — survey reports, demographic data, market research, credit scores — enabling deeper, more informed analysis.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Enrichment operates as a sub-process within the ETL transformation phase:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Identify enrichment needs:&lt;/strong&gt; Determine which analytical questions cannot be answered with internal data alone. Examples: customer demographics, market segmentation, geographic risk factors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source external data:&lt;/strong&gt; Obtain data from external providers — survey companies, government databases, market research firms, data brokers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Match and merge:&lt;/strong&gt; Align external data with internal records using common identifiers (customer ID, address, ZIP code). This requires the same scrubbing techniques used for internal data integration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Augment records:&lt;/strong&gt; Append external attributes to internal records. For example, adding a survey-derived “income bracket” field to each customer record.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validate:&lt;/strong&gt; Ensure enrichment did not introduce inconsistencies or duplicates.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Example:&lt;/strong&gt; A company has internal sales data per customer. By enriching with a survey report containing demographic data, the warehouse can now answer: “What is the average purchase value by income bracket?” — a question impossible with internal data alone.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: enrichment Pages: 1 --&gt;
&lt;svg width=&quot;473pt&quot; height=&quot;122pt&quot; viewBox=&quot;0.00 0.00 473.00 122.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 117.6)&quot;&gt;
&lt;title&gt;enrichment&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-117.6 468.78,-117.6 468.78,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- internal --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;internal&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;118.69,-113.6 0,-113.6 0,-66 118.69,-66 118.69,-113.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;59.34&quot; y=&quot;-99.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Internal&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;59.34&quot; y=&quot;-86.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Operational Data&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;59.34&quot; y=&quot;-73.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Customer ID, Sales)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- merge --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;merge&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;273.39,-74.8 154.69,-74.8 154.69,-38.8 273.39,-38.8 273.39,-74.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;214.04&quot; y=&quot;-60.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Match &amp;#x26; Merge&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;214.04&quot; y=&quot;-46.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Common Identifiers)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- internal&amp;#45;&amp;gt;merge --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;internal-&gt;merge&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M118.94,-77.14C126.92,-75.41 135.18,-73.63 143.33,-71.87&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;143.83,-75.34 152.86,-69.8 142.35,-68.5 143.83,-75.34&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- external --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;external&lt;/title&gt;
&lt;polygon fill=&quot;#e8e8e8&quot; stroke=&quot;black&quot; points=&quot;109.23,-47.6 9.46,-47.6 9.46,0 109.23,0 109.23,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;59.34&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;External Sources&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;59.34&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Survey Reports,&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;59.34&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Demographics)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- external&amp;#45;&amp;gt;merge --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;external-&gt;merge&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M109.5,-34.42C120.33,-36.76 132.01,-39.29 143.48,-41.77&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;142.38,-45.11 152.9,-43.8 143.86,-38.27 142.38,-45.11&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- enriched --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;enriched&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;464.78,-80.6 309.39,-80.6 309.39,-33 464.78,-33 464.78,-80.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;387.08&quot; y=&quot;-66.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Enriched Data&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;387.08&quot; y=&quot;-53.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Customer ID, Sales,&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;387.08&quot; y=&quot;-40.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Income Bracket, Age Group)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- merge&amp;#45;&amp;gt;enriched --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;merge-&gt;enriched&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M273.42,-56.8C281.19,-56.8 289.28,-56.8 297.41,-56.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;297.39,-60.3 307.39,-56.8 297.39,-53.3 297.39,-60.3&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_enrichment Pages: 1 --&gt;
&lt;svg width=&quot;284pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 284.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_enrichment&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 280.42,-190.06 280.42,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;137.03&quot; cy=&quot;-86.87&quot; rx=&quot;57.81&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;137.03&quot; y=&quot;-90.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Enrichment&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;137.03&quot; y=&quot;-75.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;188.89&quot; cy=&quot;-24.32&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188.89&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188.89&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M158.72,-60.71C162.38,-56.29 166.16,-51.73 169.76,-47.4&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;145.73&quot; y=&quot;-45.95&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SCRUB --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SCRUB&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;93.27&quot; cy=&quot;-18.49&quot; rx=&quot;56.81&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.27&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Scrubbing&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SCRUB --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SCRUB&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M119.98,-60.24C114.9,-52.29 109.44,-43.76 104.8,-36.51&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;98.63&quot; y=&quot;-51.07&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INTEGRATED --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INTEGRATED&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;58.69&quot; cy=&quot;-108.22&quot; rx=&quot;58.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;58.69&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrated DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INTEGRATED --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INTEGRATED&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M86.53,-100.63C86.41,-100.66 86.29,-100.69 86.17,-100.73&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;72.59&quot; y=&quot;-103.38&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;212.82&quot; cy=&quot;-116.33&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;212.82&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M182.43,-104.52C182.55,-104.57 182.68,-104.62 182.8,-104.66&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;196.37&quot; y=&quot;-96.49&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- LOAD --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;LOAD&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;133.2&quot; cy=&quot;-168.06&quot; rx=&quot;56.79&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;133.2&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Loading (DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;LOAD --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--LOAD&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M135.71,-114.81C135.16,-126.37 134.55,-139.45 134.06,-149.75&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;114.62&quot; y=&quot;-134.98&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;External augmentation:&lt;/strong&gt; Adds data that internal systems cannot generate&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Common identifiers:&lt;/strong&gt; Requires matching keys (ID, address, ZIP) to merge external with internal data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complementary to scrubbing:&lt;/strong&gt; Uses the same standardization techniques as data scrubbing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enables new analyses:&lt;/strong&gt; Creates analytical dimensions that did not exist in internal data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ongoing cost:&lt;/strong&gt; External data often requires subscription or purchase, creating recurring costs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — enrichment is part of the Transform phase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../data-scrubbing&quot; class=&quot;internal alias&quot; data-slug=&quot;data-scrubbing&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Scrubbing&lt;/a&gt; — enrichment uses scrubbing techniques for matching and merging&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated DWH&lt;/a&gt; — enrichment extends integration to external sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../loading-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;loading-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Loading (DWH)&lt;/a&gt; — enriched data is loaded into the warehouse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — enrichment source information stored in metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Data quality of external sources:&lt;/strong&gt; External data may be less reliable than internal data. Validation is critical.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacy and compliance:&lt;/strong&gt; Enriching customer data with external sources may trigger privacy regulations (GDPR, CCPA).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Identifier matching accuracy:&lt;/strong&gt; Inexact matching (fuzzy address matching, partial name matching) can create incorrect merges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;External data staleness:&lt;/strong&gt; Survey data and demographic data become outdated. Enrichment must be refreshed periodically.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>etl-pipeline-dwh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/etl-pipeline-dwh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/etl-pipeline-dwh.md" />
    <summary>The Problem Raw operational data from multiple heterogeneous sources is inconsistent, incomplete, and formatted differently across systems.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Raw operational data from multiple heterogeneous sources is inconsistent, incomplete, and formatted differently across systems. Loading this “dirty” data directly into the warehouse would produce unreliable analysis results — garbage in, garbage out. The warehouse needs a systematic pipeline that extracts data from sources, cleans and standardizes it, transforms it into a uniform structure, and loads it reliably into the warehouse.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The &lt;strong&gt;ETL (Extract, Transform, Load) pipeline&lt;/strong&gt; is the four-phase backend process that populates and refreshes a data warehouse. &lt;strong&gt;Extract&lt;/strong&gt; gathers raw data from heterogeneous sources. &lt;strong&gt;Transform&lt;/strong&gt; cleans, standardizes, enriches, and restructures the data. &lt;strong&gt;Load&lt;/strong&gt; inserts the cleaned data into the warehouse. &lt;strong&gt;Refresh&lt;/strong&gt; propagates ongoing source updates to keep the warehouse current.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;phase-1-data-extraction&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Phase 1: Data Extraction&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#phase-1-data-extraction&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Gathers data from multiple heterogeneous sources: production databases, legacy systems, internal office systems, external systems, and metadata.&lt;/li&gt;
&lt;li&gt;Data is captured in its &lt;strong&gt;“as is”&lt;/strong&gt; (raw) state — no modifications at this stage.&lt;/li&gt;
&lt;li&gt;Uses &lt;strong&gt;gateways&lt;/strong&gt; (ODBC, JDBC, OLE-DB) to connect to diverse source systems.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;phase-2-data-cleaning-and-transformation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Phase 2: Data Cleaning and Transformation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#phase-2-data-cleaning-and-transformation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p dir=&quot;auto&quot;&gt;This is the heaviest phase, involving multiple sub-processes:&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Data scrubbing:&lt;/strong&gt; Standardizes values (encoding, units, attribute names, name resolution).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enrichment:&lt;/strong&gt; Augments operational data with external sources (e.g., survey reports).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conditioning:&lt;/strong&gt; Converts source data types to target warehouse data types.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scoring:&lt;/strong&gt; Computes probabilities (e.g., customer purchase likelihood).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Householding:&lt;/strong&gt; Groups records by shared attributes (e.g., same address) to eliminate redundancy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;phase-3-loading&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Phase 3: Loading&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#phase-3-loading&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Inserts cleaned data into the warehouse.&lt;/li&gt;
&lt;li&gt;Checks integrity constraints, sorts, and summarizes data.&lt;/li&gt;
&lt;li&gt;Uses &lt;strong&gt;batch load utilities&lt;/strong&gt; with &lt;strong&gt;checkpoint&lt;/strong&gt; support — if a load fails, it resumes from the last checkpoint rather than restarting.&lt;/li&gt;
&lt;li&gt;Must handle very large data volumes; sequential loads can take hours.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;phase-4-refresh&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Phase 4: Refresh&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#phase-4-refresh&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Propagates source updates to the warehouse.&lt;/li&gt;
&lt;li&gt;Two techniques: &lt;strong&gt;Data Shipping&lt;/strong&gt; (remote snapshots with after-row triggers) and &lt;strong&gt;Transaction Shipping&lt;/strong&gt; (transaction log scanning and replication).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: etl_pipeline Pages: 1 --&gt;
&lt;svg width=&quot;662pt&quot; height=&quot;126pt&quot; viewBox=&quot;0.00 0.00 662.00 126.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 122.2)&quot;&gt;
&lt;title&gt;etl_pipeline&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-122.2 657.69,-122.2 657.69,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- sources --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;sources&lt;/title&gt;
&lt;polygon fill=&quot;#e8e8e8&quot; stroke=&quot;black&quot; points=&quot;91.22,-74.8 0,-74.8 0,-38.8 91.22,-38.8 91.22,-74.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;45.61&quot; y=&quot;-60.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Heterogeneous&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;45.61&quot; y=&quot;-46.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sources&lt;/text&gt;
&lt;/g&gt;
&lt;!-- extract --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;extract&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;225,-102.8 127.22,-102.8 127.22,-66.8 225,-66.8 225,-102.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;176.11&quot; y=&quot;-88.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Extract&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;176.11&quot; y=&quot;-74.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Raw &quot;as is&quot; Data&lt;/text&gt;
&lt;/g&gt;
&lt;!-- sources&amp;#45;&amp;gt;extract --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;sources-&gt;extract&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M91.55,-66.59C99.42,-68.31 107.7,-70.11 115.88,-71.89&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;114.92,-75.27 125.44,-73.98 116.41,-68.43 114.92,-75.27&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- refresh --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;refresh&lt;/title&gt;
&lt;polygon fill=&quot;#ffe5cc&quot; stroke=&quot;black&quot; points=&quot;384.31,-47.6 264.97,-47.6 264.97,0 384.31,0 384.31,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;324.64&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Refresh&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;324.64&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Shipping&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;324.64&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Transaction Shipping&lt;/text&gt;
&lt;/g&gt;
&lt;!-- sources&amp;#45;&amp;gt;refresh --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;sources-&gt;refresh&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; d=&quot;M91.43,-51.46C135.21,-46.25 202.49,-38.23 253.39,-32.17&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;253.62,-35.67 263.13,-31.01 252.79,-28.72 253.62,-35.67&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- clean --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;clean&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;388.28,-113.6 261,-113.6 261,-66 388.28,-66 388.28,-113.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;324.64&quot; y=&quot;-99.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Clean &amp;#x26; Transform&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;324.64&quot; y=&quot;-86.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Scrubbing, Enrichment&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;324.64&quot; y=&quot;-73.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Conditioning, Scoring&lt;/text&gt;
&lt;/g&gt;
&lt;!-- extract&amp;#45;&amp;gt;clean --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;extract-&gt;clean&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M225.5,-86.45C233.15,-86.71 241.21,-86.99 249.28,-87.26&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;249.05,-90.76 259.16,-87.6 249.29,-83.76 249.05,-90.76&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- load --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;load&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;519.14,-118.2 424.28,-118.2 424.28,-57.4 519.14,-57.4 519.14,-118.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;471.71&quot; y=&quot;-104.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Load&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;471.71&quot; y=&quot;-91.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Batch Insert&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;471.71&quot; y=&quot;-77.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrity Checks&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;471.71&quot; y=&quot;-64.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Checkpoints&lt;/text&gt;
&lt;/g&gt;
&lt;!-- clean&amp;#45;&amp;gt;load --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;clean-&gt;load&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M388.43,-88.93C396.45,-88.82 404.64,-88.71 412.59,-88.6&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;412.55,-92.1 422.5,-88.46 412.46,-85.1 412.55,-92.1&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- warehouse --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;warehouse&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;653.69,-74.8 559.14,-74.8 555.14,-70.8 555.14,-38.8 649.69,-38.8 653.69,-42.8 653.69,-74.8&quot;&gt;&lt;/polygon&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;649.69,-70.8 555.14,-70.8&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;649.69,-70.8 649.69,-38.8&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;649.69,-70.8 653.69,-74.8&quot;&gt;&lt;/polyline&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;604.42&quot; y=&quot;-53.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;/g&gt;
&lt;!-- load&amp;#45;&amp;gt;warehouse --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;load-&gt;warehouse&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M519.53,-76.7C527.39,-74.83 535.63,-72.88 543.76,-70.95&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;544.33,-74.41 553.25,-68.7 542.71,-67.6 544.33,-74.41&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- refresh&amp;#45;&amp;gt;warehouse --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;refresh-&gt;warehouse&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; d=&quot;M384.55,-30.8C431.34,-36.36 496.49,-44.1 543.53,-49.69&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;542.93,-53.14 553.27,-50.84 543.75,-46.19 542.93,-53.14&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_etl_pipeline Pages: 1 --&gt;
&lt;svg width=&quot;280pt&quot; height=&quot;215pt&quot; viewBox=&quot;0.00 0.00 280.00 215.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 211.39)&quot;&gt;
&lt;title&gt;semantic_etl_pipeline&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-211.39 275.54,-211.39 275.54,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;141.46&quot; cy=&quot;-100.51&quot; rx=&quot;63.43&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;141.46&quot; y=&quot;-104.41&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;141.46&quot; y=&quot;-88.81&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INTEGRATED --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INTEGRATED&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;212.86&quot; cy=&quot;-59.01&quot; rx=&quot;58.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;212.86&quot; y=&quot;-55.71&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrated DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INTEGRATED --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INTEGRATED&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M180.09,-78.06C181.79,-77.07 183.49,-76.08 185.17,-75.11&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;201.13&quot; y=&quot;-79.28&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- GATEWAY --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;GATEWAY&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;141.3&quot; cy=&quot;-18&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;141.3&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Gateway&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;GATEWAY --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--GATEWAY&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M141.41,-72.58C141.38,-60.61 141.36,-46.96 141.33,-36.31&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;141.37&quot; y=&quot;-46.35&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SCRUB --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SCRUB&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;70.72&quot; cy=&quot;-142.96&quot; rx=&quot;56.81&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;70.72&quot; y=&quot;-139.66&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Scrubbing&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SCRUB --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SCRUB&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M103.6,-123.23C101.63,-124.41 99.67,-125.59 97.75,-126.74&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;80.41&quot; y=&quot;-116.89&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REFRESH --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REFRESH&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;213.44&quot; cy=&quot;-141.05&quot; rx=&quot;51.87&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;213.44&quot; y=&quot;-137.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Refresh&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REFRESH --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REFRESH&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M180.82,-122.68C182.53,-123.64 184.22,-124.6 185.9,-125.54&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;203.62&quot; y=&quot;-116.01&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THREE_TIER --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THREE_TIER&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;142.9&quot; cy=&quot;-183.07&quot; rx=&quot;68.35&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;142.9&quot; y=&quot;-186.37&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Three-Tier DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;142.9&quot; y=&quot;-173.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;THREE_TIER --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--THREE_TIER&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M141.95,-128.46C142.12,-138.19 142.31,-149.03 142.47,-158.47&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;142.21&quot; y=&quot;-135.36&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;69.68&quot; cy=&quot;-59.9&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;69.68&quot; y=&quot;-63.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;69.68&quot; y=&quot;-50&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M102.21,-78.3C102.08,-78.23 101.95,-78.16 101.82,-78.08&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81.75&quot; y=&quot;-80.89&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Four phases:&lt;/strong&gt; Extract, Transform, Load, Refresh — each with distinct responsibilities&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Batch-oriented:&lt;/strong&gt; Loading happens in batches, not row-by-row, for performance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checkpoint support:&lt;/strong&gt; Failed loads resume from the last checkpoint, not from scratch&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data quality critical:&lt;/strong&gt; Scrubbing and transformation determine the warehouse’s analytical accuracy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resource intensive:&lt;/strong&gt; Transformation and scrubbing are CPU/memory intensive operations&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated DWH&lt;/a&gt; — ETL implements the integration characteristic&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../dwh-gateway&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-gateway&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Gateway&lt;/a&gt; — gateways provide the extraction mechanism&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../data-scrubbing&quot; class=&quot;internal alias&quot; data-slug=&quot;data-scrubbing&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Scrubbing&lt;/a&gt; — scrubbing is a core transformation sub-process&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../dwh-refresh&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-refresh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Refresh&lt;/a&gt; — refresh is the fourth phase of ETL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — ETL feeds Tier 1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — ETL enables all four Inmon characteristics&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Garbage In, Garbage Out:&lt;/strong&gt; Poor scrubbing produces unreliable analysis. The transformation phase is where most ETL failures occur.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full load vs. incremental:&lt;/strong&gt; Full loads rebuild the entire warehouse (slow but safe); incremental loads only process changes (fast but complex to implement correctly).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Load failure recovery:&lt;/strong&gt; Without checkpoints, a 10-hour load that fails at hour 9.5 must restart completely.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Schema evolution:&lt;/strong&gt; When source systems change their schema, ETL pipelines must be updated — this is a common maintenance burden.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>fact-constellation-schema</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/fact-constellation-schema" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/fact-constellation-schema.md" />
    <summary>The Problem A single fact table can measure only one business process.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A single fact table can measure only one business process. But an enterprise needs to analyze multiple processes — sales, shipping, returns, inventory — simultaneously. Each process has its own metrics and may share some dimensions (Time, Item) with others. A single star schema cannot represent this multi-process reality.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Fact Constellation Schema&lt;/strong&gt; (also called &lt;strong&gt;Galaxy Schema&lt;/strong&gt;) has &lt;strong&gt;multiple fact tables&lt;/strong&gt; that share common dimension tables. It extends the star schema by allowing several fact tables (e.g., Sales, Shipping) to coexist and share dimensions (e.g., Time, Item, Location), enabling analysis across multiple business processes within a single model.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The galaxy schema involves:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Multiple fact tables:&lt;/strong&gt; Each fact table represents a different business process.&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;fact_sales&lt;/code&gt;: &lt;code class=&quot;notranslate&quot;&gt;time_key, item_key, branch_key, location_key, dollars_sold, units_sold&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;fact_shipping&lt;/code&gt;: &lt;code class=&quot;notranslate&quot;&gt;item_key, time_key, shipper_key, from_location, to_location, dollars_cost, units_shipped&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Shared dimensions:&lt;/strong&gt; Some dimensions are common across fact tables.&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dim_time&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;dim_item&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;dim_location&lt;/code&gt; are shared between Sales and Shipping.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dim_branch&lt;/code&gt; is specific to Sales.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dim_shipper&lt;/code&gt; is specific to Shipping.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Process-specific dimensions:&lt;/strong&gt; Each fact table may have unique dimensions.&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Sales has &lt;code class=&quot;notranslate&quot;&gt;branch_key&lt;/code&gt;; Shipping has &lt;code class=&quot;notranslate&quot;&gt;shipper_key&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;from_location&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;to_location&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Cross-process analysis:&lt;/strong&gt; Shared dimensions enable queries that span multiple fact tables — e.g., “Compare sales revenue to shipping cost by item category.”&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: fact_constellation Pages: 1 --&gt;
&lt;svg width=&quot;443pt&quot; height=&quot;175pt&quot; viewBox=&quot;0.00 0.00 443.00 175.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 171.2)&quot;&gt;
&lt;title&gt;fact_constellation&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-171.2 438.73,-171.2 438.73,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- fact_sales --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;fact_sales&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;308.69,-167.2 233.99,-119.6 308.69,-72 383.39,-119.6 308.69,-167.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;308.69&quot; y=&quot;-129.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;fact_sales&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;308.69&quot; y=&quot;-116.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dollars_sold&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;308.69&quot; y=&quot;-103.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;units_sold&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_time --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_time&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;168,-36 107.38,-36 107.38,0 168,0 168,-36&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;137.69&quot; y=&quot;-21.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_time&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;137.69&quot; y=&quot;-8.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Shared)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact_sales&amp;#45;&amp;gt;dim_time --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact_sales-&gt;dim_time&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M270.31,-96.25C242.69,-80.16 205.52,-58.51 177.55,-42.22&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;179.42,-39.25 169.01,-37.25 175.89,-45.3 179.42,-39.25&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- dim_item --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_item&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;247,-36 186.38,-36 186.38,0 247,0 247,-36&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;216.69&quot; y=&quot;-21.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_item&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;216.69&quot; y=&quot;-8.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Shared)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact_sales&amp;#45;&amp;gt;dim_item --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact_sales-&gt;dim_item&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M281.33,-88.99C268.3,-74.87 252.86,-58.16 240.34,-44.6&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;242.97,-42.29 233.61,-37.32 237.83,-47.04 242.97,-42.29&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- dim_loc --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_loc&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;342.57,-36 264.81,-36 264.81,0 342.57,0 342.57,-36&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;303.69&quot; y=&quot;-21.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_location&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;303.69&quot; y=&quot;-8.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Shared)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact_sales&amp;#45;&amp;gt;dim_loc --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact_sales-&gt;dim_loc&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M306.39,-72.88C305.96,-64.19 305.51,-55.33 305.11,-47.37&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;308.62,-47.45 304.62,-37.63 301.63,-47.8 308.62,-47.45&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- dim_branch --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_branch&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;434.73,-36 360.65,-36 360.65,0 434.73,0 434.73,-36&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;397.69&quot; y=&quot;-21.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_branch&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;397.69&quot; y=&quot;-8.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Sales only)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact_sales&amp;#45;&amp;gt;dim_branch --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact_sales-&gt;dim_branch&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M335.39,-88.72C347.91,-74.71 362.67,-58.19 374.69,-44.74&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;377.07,-47.33 381.12,-37.54 371.85,-42.66 377.07,-47.33&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- fact_ship --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;fact_ship&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;131.69,-167.2 47.8,-119.6 131.69,-72 215.57,-119.6 131.69,-167.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131.69&quot; y=&quot;-129.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;fact_shipping&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131.69&quot; y=&quot;-116.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dollars_cost&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131.69&quot; y=&quot;-103.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;units_shipped&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact_ship&amp;#45;&amp;gt;dim_time --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact_ship-&gt;dim_time&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M134.42,-73.17C134.95,-64.45 135.49,-55.55 135.97,-47.55&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;139.45,-47.94 136.56,-37.75 132.46,-47.52 139.45,-47.94&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- fact_ship&amp;#45;&amp;gt;dim_item --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact_ship-&gt;dim_item&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M158.58,-87.09C170.2,-73.47 183.63,-57.74 194.64,-44.83&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;197.02,-47.44 200.85,-37.56 191.7,-42.89 197.02,-47.44&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- fact_ship&amp;#45;&amp;gt;dim_loc --&gt;
&lt;g id=&quot;edge7&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact_ship-&gt;dim_loc&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M172.45,-95C200.14,-78.96 236.58,-57.86 264.04,-41.96&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;265.5,-45.16 272.4,-37.12 262,-39.1 265.5,-45.16&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- dim_shipper --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_shipper&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;89.37,-36 0,-36 0,0 89.37,0 89.37,-36&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;44.69&quot; y=&quot;-21.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_shipper&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;44.69&quot; y=&quot;-8.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Shipping only)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact_ship&amp;#45;&amp;gt;dim_shipper --&gt;
&lt;g id=&quot;edge8&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact_ship-&gt;dim_shipper&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M104.16,-87.09C92.27,-73.47 78.53,-57.74 67.25,-44.83&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;70.1,-42.77 60.89,-37.55 64.83,-47.38 70.1,-42.77&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_constellation Pages: 1 --&gt;
&lt;svg width=&quot;265pt&quot; height=&quot;200pt&quot; viewBox=&quot;0.00 0.00 265.00 200.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 195.89)&quot;&gt;
&lt;title&gt;semantic_constellation&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-195.89 261.14,-195.89 261.14,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;120.39&quot; cy=&quot;-86.38&quot; rx=&quot;84.89&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;120.39&quot; y=&quot;-90.28&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Fact Constellation&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;120.39&quot; y=&quot;-74.68&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- STAR --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;STAR&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;172.25&quot; cy=&quot;-23.83&quot; rx=&quot;49.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;172.25&quot; y=&quot;-20.53&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;STAR --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--STAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M142.68,-59.49C147.73,-53.4 152.97,-47.08 157.61,-41.48&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131.64&quot; y=&quot;-42.39&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SNOW --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SNOW&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;76.63&quot; cy=&quot;-18&quot; rx=&quot;68.15&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;76.63&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Snowflake Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SNOW --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SNOW&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M102.84,-58.96C97.9,-51.23 92.64,-43.02 88.15,-36&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;81.73&quot; y=&quot;-50.18&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- FACT --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;FACT&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;42.05&quot; cy=&quot;-107.72&quot; rx=&quot;42.05&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;42.05&quot; y=&quot;-104.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Fact Table&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;FACT --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--FACT&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M54.63,-104.29C54.52,-104.33 54.4,-104.36 54.28,-104.39&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;34.19&quot; y=&quot;-107.04&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DIM --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DIM&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;196.18&quot; cy=&quot;-115.84&quot; rx=&quot;60.96&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;196.18&quot; y=&quot;-112.54&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Dimension Table&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DIM --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DIM&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M175.47,-107.79C175.56,-107.82 175.65,-107.86 175.74,-107.89&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;195.87&quot; y=&quot;-99.74&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CUBE --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CUBE&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;116.56&quot; cy=&quot;-167.56&quot; rx=&quot;69.24&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;116.56&quot; y=&quot;-170.86&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multidimensional&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;116.56&quot; y=&quot;-157.66&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Model&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CUBE --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CUBE&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M119.07,-114.32C118.63,-123.58 118.15,-133.83 117.72,-142.83&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;98.13&quot; y=&quot;-131.28&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Multiple fact tables:&lt;/strong&gt; Each represents a different business process&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shared dimensions:&lt;/strong&gt; Common dimensions (Time, Item, Location) are shared across fact tables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Process-specific dimensions:&lt;/strong&gt; Some dimensions are unique to individual fact tables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise-scale:&lt;/strong&gt; Designed for complex organizations with multiple business processes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-process analysis:&lt;/strong&gt; Enables analysis spanning multiple business processes&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — galaxy is an extension with multiple fact tables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../snowflake-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;snowflake-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Snowflake Schema&lt;/a&gt; — both are schema variants beyond the basic star&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../fact-table&quot; class=&quot;internal alias&quot; data-slug=&quot;fact-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Table&lt;/a&gt; — galaxy uses multiple fact tables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../dimension-table&quot; class=&quot;internal alias&quot; data-slug=&quot;dimension-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Dimension Table&lt;/a&gt; — shared dimensions connect all fact tables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — galaxy implements the dimensional model at scale&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — star has one fact table, galaxy has many&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Complexity:&lt;/strong&gt; Managing multiple fact tables with shared and unique dimensions is significantly more complex than a single star schema.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dimension conformance:&lt;/strong&gt; Shared dimensions must have consistent definitions across all fact tables. If “Time” means different things in Sales vs. Shipping, cross-process analysis fails.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implementation challenge:&lt;/strong&gt; Galaxy schemas are difficult to design and maintain — they are the most complex of the three schema types.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When to use:&lt;/strong&gt; Only needed for enterprise-level companies with genuinely distinct but related business processes.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>fact-table</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/fact-table" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/fact-table.md" />
    <summary>The Problem Business analysis requires quantitative measurement — how many units were sold, how much revenue was generated, how many items were shipped.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Business analysis requires quantitative measurement — how many units were sold, how much revenue was generated, how many items were shipped. But these numbers have no meaning without context: when, what product, where, and through which channel. The raw numbers (facts) must be stored alongside the references that give them meaning.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A &lt;strong&gt;fact table&lt;/strong&gt; is the central table in a star schema that contains measurable business events (numerical metrics/measurements) and foreign keys linking to surrounding dimension tables. It represents the “what happened” of the business — the quantitative events that analysis seeks to understand through the lens of dimensions.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The fact table has two types of columns:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Measures (facts):&lt;/strong&gt; Numerical values that represent business events.&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dollars_sold&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;units_sold&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;dollars_cost&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;units_shipped&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;These are the values that get aggregated (SUM, AVG, COUNT) in analytical queries.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Foreign keys:&lt;/strong&gt; References to dimension tables that provide context.&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;time_key&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;item_key&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;branch_key&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;location_key&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Each key links to a dimension table that describes that axis of analysis.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Example fact table (Sales):&lt;/strong&gt;&lt;/p&gt;
&lt;pre class=&quot;notranslate&quot;&gt;&lt;span class=&quot;clipboard-button&quot; type=&quot;button&quot; aria-label=&quot;copy source&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 -8 24 24&quot; fill=&quot;currentColor&quot; stroke=&quot;none&quot; stroke-width=&quot;0&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;copy-icon&quot;&gt;&lt;use href=&quot;#github-copy&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 -8 24 24&quot; fill=&quot;currentColor&quot; stroke=&quot;none&quot; stroke-width=&quot;0&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; class=&quot;check-icon&quot;&gt;&lt;use href=&quot;#github-check&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/span&gt;&lt;code class=&quot;notranslate&quot;&gt;fact_sales:
  time_key (FK → dim_time)
  item_key (FK → dim_item)
  branch_key (FK → dim_branch)
  location_key (FK → dim_location)
  dollars_sold (measure)
  units_sold (measure)
&lt;/code&gt;&lt;/pre&gt;
&lt;p dir=&quot;auto&quot;&gt;In a fact constellation schema, multiple fact tables can coexist (e.g., &lt;code class=&quot;notranslate&quot;&gt;fact_sales&lt;/code&gt; and &lt;code class=&quot;notranslate&quot;&gt;fact_shipping&lt;/code&gt;), each with its own measures but potentially sharing dimension tables.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: fact_table Pages: 1 --&gt;
&lt;svg width=&quot;257pt&quot; height=&quot;205pt&quot; viewBox=&quot;0.00 0.00 257.00 205.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 201)&quot;&gt;
&lt;title&gt;fact_table&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-201 253.48,-201 253.48,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_cols&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-189 104.81,-189 104.81,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.4&quot; y=&quot;-172.4&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Columns&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;fact&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;249.48,-103 187.96,-103 183.96,-99 183.96,-67 245.48,-67 249.48,-71 249.48,-103&quot;&gt;&lt;/polygon&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;245.48,-99 183.96,-99&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;245.48,-99 245.48,-67&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;245.48,-99 249.48,-103&quot;&gt;&lt;/polyline&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;216.72&quot; y=&quot;-81.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;fact_sales&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fk --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;fk&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;96.81,-156 16,-156 16,-82 96.81,-82 96.81,-156&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.4&quot; y=&quot;-142.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Foreign Keys&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.4&quot; y=&quot;-128.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;time_key&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.4&quot; y=&quot;-115.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;item_key&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.4&quot; y=&quot;-102.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;branch_key&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.4&quot; y=&quot;-89.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;location_key&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fk&amp;#45;&amp;gt;fact --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fk-&gt;fact&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M96.94,-110.51C119.93,-105.57 148.91,-99.35 172.5,-94.28&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;173.07,-97.74 182.11,-92.22 171.6,-90.9 173.07,-97.74&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;140.38&quot; y=&quot;-109.05&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;context&lt;/text&gt;
&lt;/g&gt;
&lt;!-- measures --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;measures&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;93.75,-63.8 19.05,-63.8 19.05,-16.2 93.75,-16.2 93.75,-63.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.4&quot; y=&quot;-49.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Measures&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.4&quot; y=&quot;-36.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dollars_sold&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;56.4&quot; y=&quot;-23.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;units_sold&lt;/text&gt;
&lt;/g&gt;
&lt;!-- measures&amp;#45;&amp;gt;fact --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;measures-&gt;fact&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M94.12,-50.44C117.57,-57.1 148.07,-65.77 172.66,-72.76&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;171.46,-76.06 182.03,-75.43 173.37,-69.32 171.46,-76.06&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;140.38&quot; y=&quot;-73.44&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;quantitative&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_fact_table Pages: 1 --&gt;
&lt;svg width=&quot;295pt&quot; height=&quot;200pt&quot; viewBox=&quot;0.00 0.00 295.00 200.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 195.89)&quot;&gt;
&lt;title&gt;semantic_fact_table&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-195.89 290.61,-195.89 290.61,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;147.58&quot; cy=&quot;-86.38&quot; rx=&quot;51.26&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;147.58&quot; y=&quot;-82.48&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Fact Table&lt;/text&gt;
&lt;/g&gt;
&lt;!-- STAR --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;STAR&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;199.45&quot; cy=&quot;-23.83&quot; rx=&quot;49.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;199.45&quot; y=&quot;-20.53&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;STAR --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--STAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M162.03,-68.96C169.22,-60.28 177.89,-49.82 185.08,-41.16&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;155.05&quot; y=&quot;-57.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DIM --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DIM&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;103.83&quot; cy=&quot;-18&quot; rx=&quot;60.96&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;103.83&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Dimension Table&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DIM --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DIM&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M136.09,-68.41C129.71,-58.44 121.79,-46.07 115.4,-36.08&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;111.98&quot; y=&quot;-54.95&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CUBE --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CUBE&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;69.24&quot; cy=&quot;-107.72&quot; rx=&quot;69.24&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;69.24&quot; y=&quot;-111.02&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multidimensional&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;69.24&quot; y=&quot;-97.82&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Model&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CUBE --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CUBE&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M106.58,-97.55C106.43,-97.59 106.28,-97.63 106.13,-97.67&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;87.85&quot; y=&quot;-100.31&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_OPS --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_OPS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;223.37&quot; cy=&quot;-115.84&quot; rx=&quot;63.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;223.37&quot; y=&quot;-112.54&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Operations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_OPS --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_OPS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M182.37,-99.9C183.46,-100.32 184.55,-100.75 185.65,-101.17&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;204.27&quot; y=&quot;-92.44&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- GALAXY --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;GALAXY&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;143.75&quot; cy=&quot;-167.56&quot; rx=&quot;73.57&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;143.75&quot; y=&quot;-170.86&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Fact Constellation&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;143.75&quot; y=&quot;-157.66&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;GALAXY --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--GALAXY&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M146.71,-104.8C146.18,-116.03 145.5,-130.52 144.92,-142.75&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;145.82&quot; y=&quot;-115.68&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Central position:&lt;/strong&gt; Sits at the center of the star schema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Two column types:&lt;/strong&gt; Foreign keys (context) and measures (quantitative values)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Largest table:&lt;/strong&gt; Typically has the most rows (one per business event)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Additive measures:&lt;/strong&gt; Most measures are additive (can be summed across dimensions)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Granularity:&lt;/strong&gt; The fact table’s granularity determines the finest level of detail available for analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — fact table is the central component&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/dimension-table&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/dimension-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Dimension Table&lt;/a&gt; — fact table references dimension tables via foreign keys&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — facts are the cell values in the cube&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-operations&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-operations&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Operations&lt;/a&gt; — operations aggregate and filter fact values&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../fact-constellation-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;fact-constellation-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Constellation Schema&lt;/a&gt; — galaxy schema uses multiple fact tables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../snowflake-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;snowflake-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Snowflake Schema&lt;/a&gt; — fact tables also exist in snowflake schemas&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Non-additive measures:&lt;/strong&gt; Some measures (e.g., ratios, percentages) cannot be meaningfully summed. These require special handling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fact table granularity:&lt;/strong&gt; Choosing the right granularity (daily vs. monthly, per-transaction vs. per-day) is a critical design decision that cannot be easily changed later.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Surrogate keys:&lt;/strong&gt; Fact tables use surrogate (integer) keys, not natural keys, for performance and to handle slowly changing dimensions.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>holap-server</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/holap-server" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/holap-server.md" />
    <summary>The Problem ROLAP handles large data volumes but has slow query response times.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;ROLAP handles large data volumes but has slow query response times. MOLAP has fast response times but cannot store detailed data and has limited scalability. Neither solution alone satisfies organizations that need both fast access to aggregated data and the ability to drill down into massive detailed datasets.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;HOLAP (Hybrid OLAP)&lt;/strong&gt; combines the higher scalability of ROLAP with the faster computation of MOLAP. It stores large volumes of detailed information in relational tables (ROLAP) while storing frequently accessed aggregations separately in a MOLAP store. This provides fast responses for summary queries while retaining the ability to access full detail when needed.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;HOLAP divides data storage and processing based on usage patterns:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Detailed data → ROLAP storage:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;The full granular data (individual transactions, daily records) is stored in relational tables.&lt;/li&gt;
&lt;li&gt;This provides unlimited scalability — the ROLAP layer can handle terabytes of detailed data.&lt;/li&gt;
&lt;li&gt;Queries requiring row-level detail are directed to this layer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Aggregations → MOLAP storage:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Pre-computed summary data (monthly totals, regional summaries, category-level aggregates) is stored in multidimensional cubes.&lt;/li&gt;
&lt;li&gt;This provides instant response for common analytical queries.&lt;/li&gt;
&lt;li&gt;Queries for summaries hit the MOLAP layer directly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Query routing:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;When a user queries the HOLAP server, it determines whether the requested data is available in the MOLAP aggregation layer.&lt;/li&gt;
&lt;li&gt;If yes: returns the pre-computed result instantly.&lt;/li&gt;
&lt;li&gt;If no: generates a SQL query against the ROLAP detailed layer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Best of both worlds:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Summary queries: fast (MOLAP)&lt;/li&gt;
&lt;li&gt;Detail queries: possible (ROLAP)&lt;/li&gt;
&lt;li&gt;Storage: efficient (only aggregations pre-computed)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: holap_server Pages: 1 --&gt;
&lt;svg width=&quot;245pt&quot; height=&quot;311pt&quot; viewBox=&quot;0.00 0.00 245.00 311.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 306.6)&quot;&gt;
&lt;title&gt;holap_server&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-306.6 241.11,-306.6 241.11,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_storage&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-96.4 222,-96.4 222,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;115&quot; y=&quot;-79.8&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Dual Storage&lt;/text&gt;
&lt;/g&gt;
&lt;!-- user --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;user&lt;/title&gt;
&lt;polygon fill=&quot;#e8e8e8&quot; stroke=&quot;black&quot; points=&quot;155.12,-302.6 82.88,-302.6 82.88,-266.6 155.12,-266.6 155.12,-302.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;119&quot; y=&quot;-281.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;User Query&lt;/text&gt;
&lt;/g&gt;
&lt;!-- engine --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;engine&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;119,-229.6 0.89,-182 119,-134.4 237.11,-182 119,-229.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;119&quot; y=&quot;-191.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;HOLAP Engine&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;119&quot; y=&quot;-178.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Routes Query Based&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;119&quot; y=&quot;-165.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;on Request Type&lt;/text&gt;
&lt;/g&gt;
&lt;!-- user&amp;#45;&amp;gt;engine --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;user-&gt;engine&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M119,-266.53C119,-259.36 119,-250.55 119,-241.38&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;122.5,-241.61 119,-231.61 115.5,-241.61 122.5,-241.61&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- molap_store --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;molap_store&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;113.65,-63.6 16.35,-63.6 16.35,-16 113.65,-16 113.65,-63.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;65&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MOLAP Store&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;65&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Aggregations&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;65&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Fast Response)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- engine&amp;#45;&amp;gt;molap_store --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;engine-&gt;molap_store&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M88.93,-146.41C82.4,-137.2 76.27,-126.89 72.31,-116.4 67.46,-103.56 65.35,-88.65 64.54,-75.49&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;68.04,-75.38 64.19,-65.51 61.05,-75.63 68.04,-75.38&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;110.66&quot; y=&quot;-107.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;summary queries&lt;/text&gt;
&lt;/g&gt;
&lt;!-- rolap_store --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;rolap_store&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;214.32,-63.6 131.68,-63.6 131.68,-16 214.32,-16 214.32,-63.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;173&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ROLAP Store&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;173&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Detailed Data&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;173&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Scalable)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- engine&amp;#45;&amp;gt;rolap_store --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;engine-&gt;rolap_store&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M138.21,-141.71C141.99,-133.44 145.77,-124.7 149,-116.4 154.21,-103 159.17,-87.95 163.21,-74.83&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;166.53,-75.92 166.06,-65.34 159.83,-73.91 166.53,-75.92&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;182.52&quot; y=&quot;-107.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;detail queries&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_holap Pages: 1 --&gt;
&lt;svg width=&quot;287pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 287.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 189.56)&quot;&gt;
&lt;title&gt;semantic_holap&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-189.56 283.03,-189.56 283.03,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;134&quot; cy=&quot;-86.38&quot; rx=&quot;67.52&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;134&quot; y=&quot;-82.48&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;HOLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_SRV --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_SRV&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;185.86&quot; cy=&quot;-23.83&quot; rx=&quot;53.39&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;185.86&quot; y=&quot;-20.53&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Servers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_SRV --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_SRV&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M148.72,-68.62C155.79,-60.1 164.23,-49.92 171.28,-41.42&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;141.49&quot; y=&quot;-57.72&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ROLAP --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ROLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;90.24&quot; cy=&quot;-18&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;90.24&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ROLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ROLAP --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ROLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M122.5,-68.41C116.12,-58.44 108.2,-46.07 101.81,-36.08&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.65&quot; y=&quot;-54.95&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- MOLAP --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;MOLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;55.66&quot; cy=&quot;-107.72&quot; rx=&quot;55.66&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;55.66&quot; y=&quot;-104.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MOLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;MOLAP --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--MOLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M86.17,-99.41C86.04,-99.44 85.91,-99.48 85.79,-99.51&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;104.48&quot; y=&quot;-102.16&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CUBE --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CUBE&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;209.79&quot; cy=&quot;-115.84&quot; rx=&quot;69.24&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;209.79&quot; y=&quot;-119.14&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multidimensional&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;209.79&quot; y=&quot;-105.94&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Model&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CUBE --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CUBE&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M172.78,-101.45C172.92,-101.51 173.07,-101.57 173.22,-101.62&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;152.73&quot; y=&quot;-104.24&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_OPS --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_OPS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;130.17&quot; cy=&quot;-167.56&quot; rx=&quot;63.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;130.17&quot; y=&quot;-164.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Operations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_OPS --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_OPS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M133.13,-104.8C132.5,-118.09 131.66,-135.95 131.03,-149.22&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;111.82&quot; y=&quot;-129.71&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Hybrid storage:&lt;/strong&gt; ROLAP for detail, MOLAP for aggregations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query routing:&lt;/strong&gt; Engine directs queries to the appropriate storage layer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; Handles large data volumes via ROLAP layer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Speed:&lt;/strong&gt; Pre-computed aggregations provide fast summary responses&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuration dependent:&lt;/strong&gt; Administrators must decide which aggregations go to MOLAP&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../olap-servers&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-servers&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Servers&lt;/a&gt; — HOLAP is one of four server types&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../rolap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;rolap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ROLAP Server&lt;/a&gt; — HOLAP incorporates ROLAP for detailed data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../molap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;molap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;MOLAP Server&lt;/a&gt; — HOLAP incorporates MOLAP for aggregations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — HOLAP implements the model hybridly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-operations&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-operations&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Operations&lt;/a&gt; — HOLAP serves operations from both storage layers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../rolap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;rolap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ROLAP Server&lt;/a&gt; — HOLAP adds pre-computation; ROLAP does not&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Configuration complexity:&lt;/strong&gt; Administrators must carefully choose which aggregations to pre-compute — wrong choices waste storage or provide no performance benefit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stale aggregations:&lt;/strong&gt; When detailed data is refreshed, MOLAP aggregations must be re-computed, adding refresh latency.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Not a panacea:&lt;/strong&gt; HOLAP inherits weaknesses from both ROLAP (slow detail queries) and MOLAP (storage overhead for aggregations).&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>householding-dwh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/householding-dwh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/householding-dwh.md" />
    <summary>The Problem A company sends marketing catalogues to every customer individually, unaware that five customers live at the same address (a single household).</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A company sends marketing catalogues to every customer individually, unaware that five customers live at the same address (a single household). This wastes resources — five catalogues are printed and mailed when one would suffice. For a company sending 1 million catalogues at Rs. 50 each (Rs. 50 million total), even a 2% reduction through householding saves Rs. 1 million. Without identifying households, the company wastes money on redundant communications.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Householding&lt;/strong&gt; is the process of identifying all members of a household (people living at the same address) and grouping them together to enable household-level decisions rather than individual-level decisions. It eliminates redundant communications, reduces marketing costs, and enables household-level analysis (e.g., “total household spending”).&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Householding operates during the ETL transformation phase:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Address normalization:&lt;/strong&gt; Standardize addresses across all source records — consistent formatting, spelling, ZIP code validation. This is essential because “123 Main St.” and “123 Main Street, Apt 4B” must be recognized as the same address.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Household identification:&lt;/strong&gt; Group records that share the same normalized address into household clusters. Fuzzy matching handles minor variations (typos, abbreviations).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Household ID assignment:&lt;/strong&gt; Assign a unique household identifier to all members of each cluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Household-level aggregation:&lt;/strong&gt; Compute household-level metrics — total household income, combined purchase history, household size.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deduplication of communications:&lt;/strong&gt; When generating marketing mailings, send one per household instead of one per individual.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Cost savings example:&lt;/strong&gt; 1 million catalogues at Rs. 50 each = Rs. 50 million. A 2% reduction through householding eliminates 20,000 unnecessary mailings, saving Rs. 1 million.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: householding Pages: 1 --&gt;
&lt;svg width=&quot;811pt&quot; height=&quot;249pt&quot; viewBox=&quot;0.00 0.00 811.00 249.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 244.8)&quot;&gt;
&lt;title&gt;householding&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-244.8 807.41,-244.8 807.41,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_individuals&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-156 8,-232.8 526,-232.8 526,-156 8,-156&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;267&quot; y=&quot;-216.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Before Householding (Individual)&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_households&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;147,-8 147,-96.4 407,-96.4 407,-8 147,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;277&quot; y=&quot;-79.8&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;After Householding (Household)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- c1 --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;c1&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;128,-200 16,-200 16,-164 128,-164 128,-200&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;72&quot; y=&quot;-178.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;John -- 123 Main St&lt;/text&gt;
&lt;/g&gt;
&lt;!-- h1 --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;h1&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;294.76,-63.6 155.24,-63.6 155.24,-16 294.76,-16 294.76,-63.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;225&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;HH-001: John, Jane, Bob&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;225&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(123 Main St)&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;225&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;→ 1 mailing&lt;/text&gt;
&lt;/g&gt;
&lt;!-- c1&amp;#45;&amp;gt;h1 --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;c1-&gt;h1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M91.07,-163.53C116.18,-140.51 160.76,-99.66 191.55,-71.45&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;193.71,-74.22 198.72,-64.88 188.98,-69.06 193.71,-74.22&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;165.88&quot; y=&quot;-107.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;group&lt;/text&gt;
&lt;/g&gt;
&lt;!-- c2 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;c2&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;258,-200 146,-200 146,-164 258,-164 258,-200&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;202&quot; y=&quot;-178.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Jane -- 123 Main St&lt;/text&gt;
&lt;/g&gt;
&lt;!-- c2&amp;#45;&amp;gt;h1 --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;c2-&gt;h1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M204.87,-163.53C208.49,-141.43 214.81,-102.9 219.41,-74.89&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;222.85,-75.54 221.01,-65.11 215.94,-74.41 222.85,-75.54&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;226.98&quot; y=&quot;-107.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;group&lt;/text&gt;
&lt;/g&gt;
&lt;!-- c3 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;c3&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;383.86,-200 276.14,-200 276.14,-164 383.86,-164 383.86,-200&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;330&quot; y=&quot;-178.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Bob -- 123 Main St&lt;/text&gt;
&lt;/g&gt;
&lt;!-- c3&amp;#45;&amp;gt;h1 --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;c3-&gt;h1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M316.91,-163.53C299.92,-140.84 269.95,-100.82 248.87,-72.67&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;251.79,-70.73 242.99,-64.82 246.19,-74.93 251.79,-70.73&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;293.44&quot; y=&quot;-107.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;group&lt;/text&gt;
&lt;/g&gt;
&lt;!-- c4 --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;c4&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;518.44,-200 401.56,-200 401.56,-164 518.44,-164 518.44,-200&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;460&quot; y=&quot;-178.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Alice -- 456 Oak Ave&lt;/text&gt;
&lt;/g&gt;
&lt;!-- h2 --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;h2&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;399.46,-63.6 312.54,-63.6 312.54,-16 399.46,-16 399.46,-63.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;356&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;HH-002: Alice&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;356&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(456 Oak Ave)&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;356&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;→ 1 mailing&lt;/text&gt;
&lt;/g&gt;
&lt;!-- c4&amp;#45;&amp;gt;h2 --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;c4-&gt;h2&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M447.04,-163.53C430.21,-140.84 400.53,-100.82 379.64,-72.67&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;382.59,-70.78 373.82,-64.83 376.97,-74.95 382.59,-70.78&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;423.91&quot; y=&quot;-107.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;group&lt;/text&gt;
&lt;/g&gt;
&lt;!-- household --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;household&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;670,-229.6 536.59,-182 670,-134.4 803.41,-182 670,-229.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;670&quot; y=&quot;-191.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Household Identification&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;670&quot; y=&quot;-178.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Address Normalization&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;670&quot; y=&quot;-165.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Fuzzy Matching&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_householding Pages: 1 --&gt;
&lt;svg width=&quot;284pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 284.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_householding&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 280.42,-190.06 280.42,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;137.03&quot; cy=&quot;-86.87&quot; rx=&quot;67.53&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;137.03&quot; y=&quot;-90.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Householding&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;137.03&quot; y=&quot;-75.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;188.89&quot; cy=&quot;-24.32&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188.89&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188.89&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M159.02,-60.35C162.55,-56.08 166.19,-51.7 169.65,-47.53&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;145.83&quot; y=&quot;-45.84&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SCRUB --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SCRUB&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;93.27&quot; cy=&quot;-18.49&quot; rx=&quot;56.81&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.27&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Scrubbing&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SCRUB --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SCRUB&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M119.73,-59.85C114.67,-51.93 109.26,-43.48 104.66,-36.3&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.69&quot; y=&quot;-50.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INTEGRATED --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INTEGRATED&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;58.69&quot; cy=&quot;-108.22&quot; rx=&quot;58.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;58.69&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrated DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INTEGRATED --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INTEGRATED&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M80.51,-102.27C80.41,-102.3 80.32,-102.32 80.22,-102.35&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;66.61&quot; y=&quot;-105.01&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;212.82&quot; cy=&quot;-116.33&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;212.82&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M186.31,-106.03C186.42,-106.07 186.53,-106.11 186.65,-106.16&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;200.24&quot; y=&quot;-97.99&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- LOAD --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;LOAD&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;133.2&quot; cy=&quot;-168.06&quot; rx=&quot;56.79&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;133.2&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Loading (DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;LOAD --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--LOAD&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M135.71,-114.81C135.16,-126.37 134.55,-139.45 134.06,-149.75&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;114.62&quot; y=&quot;-134.98&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Address-based grouping:&lt;/strong&gt; Identifies households by matching normalized addresses&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost reduction:&lt;/strong&gt; Eliminates redundant communications, saving significant marketing expenses&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Household-level analysis:&lt;/strong&gt; Enables analysis at household granularity (total household spending, household size)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fuzzy matching required:&lt;/strong&gt; Handles address variations, typos, and abbreviations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direct financial impact:&lt;/strong&gt; Measurable ROI — savings can be calculated precisely&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — householding is part of the Transform phase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../data-scrubbing&quot; class=&quot;internal alias&quot; data-slug=&quot;data-scrubbing&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Scrubbing&lt;/a&gt; — address normalization is a scrubbing technique&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated DWH&lt;/a&gt; — householding requires integration across sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../loading-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;loading-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Loading (DWH)&lt;/a&gt; — household IDs are loaded as new attributes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — householding rules and mappings stored in metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Multi-unit addresses:&lt;/strong&gt; Apartments, shared offices, and dormitories complicate household identification — same building, different households.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Address changes:&lt;/strong&gt; When a household moves, the system must recognize the new address as the same household.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Privacy concerns:&lt;/strong&gt; Grouping individuals by address may raise privacy issues, especially in regulated industries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;False matches:&lt;/strong&gt; Fuzzy matching can incorrectly group unrelated people at similar addresses (e.g., “123 Main St” vs “123 Main St NE”).&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>Inmon vs Kimball -- Top-Down vs Bottom-Up Data Warehouse Architecture</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/inmon-vs-kimball" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/inmon-vs-kimball.md" />
    <summary>What’s Being Compared Two competing philosophies for building data warehouses: Bill Inmon’s top-down approach (enterprise warehouse first, then data marts) vs.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;whats-being-compared&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;What’s Being Compared&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#whats-being-compared&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Two competing philosophies for building data warehouses: Bill Inmon’s top-down approach (enterprise warehouse first, then data marts) vs. Ralph Kimball’s bottom-up approach (data marts first, then conformed dimensions). This distinction maps directly to the Dependent vs. Independent data mart types.&lt;/p&gt;
&lt;h2 id=&quot;the-core-tension&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Core Tension&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-core-tension&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The fundamental disagreement is &lt;strong&gt;where to start&lt;/strong&gt;: build the complete enterprise warehouse first (Inmon) or build department-level data marts first and integrate them later (Kimball). Inmon prioritizes data consistency; Kimball prioritizes speed to value.&lt;/p&gt;
&lt;h2 id=&quot;comparison&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Comparison&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#comparison&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;





















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Dimension&lt;/th&gt;&lt;th&gt;&lt;a href=&quot;../../data-mart-types&quot; class=&quot;internal alias&quot; data-slug=&quot;data-mart-types&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Dependent (Inmon)&lt;/a&gt;&lt;/th&gt;&lt;th&gt;&lt;a href=&quot;../../data-mart-types&quot; class=&quot;internal alias&quot; data-slug=&quot;data-mart-types&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Independent (Kimball)&lt;/a&gt;&lt;/th&gt;&lt;th&gt;&lt;a href=&quot;../../data-mart-types&quot; class=&quot;internal alias&quot; data-slug=&quot;data-mart-types&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Hybrid&lt;/a&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Starting point&lt;/td&gt;&lt;td&gt;Central enterprise warehouse&lt;/td&gt;&lt;td&gt;Departmental data marts&lt;/td&gt;&lt;td&gt;Both simultaneously&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Data flow&lt;/td&gt;&lt;td&gt;Sources → DWH → Data Marts&lt;/td&gt;&lt;td&gt;Sources → Data Marts → (DWH later)&lt;/td&gt;&lt;td&gt;Sources → DWH → Marts AND Sources → Marts&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Data consistency&lt;/td&gt;&lt;td&gt;Guaranteed (single source of truth)&lt;/td&gt;&lt;td&gt;Risk of inconsistency (data silos)&lt;/td&gt;&lt;td&gt;Moderate (central hub + direct paths)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Time to value&lt;/td&gt;&lt;td&gt;Slow (warehouse first)&lt;/td&gt;&lt;td&gt;Fast (marts first)&lt;/td&gt;&lt;td&gt;Moderate&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cost&lt;/td&gt;&lt;td&gt;High upfront&lt;/td&gt;&lt;td&gt;Lower upfront, may increase during integration&lt;/td&gt;&lt;td&gt;Variable&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Best for&lt;/td&gt;&lt;td&gt;Large organizations (MNCs)&lt;/td&gt;&lt;td&gt;Small organizations, startups&lt;/td&gt;&lt;td&gt;Organizations with mixed needs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Integration risk&lt;/td&gt;&lt;td&gt;Low (integration done first)&lt;/td&gt;&lt;td&gt;High (integration deferred)&lt;/td&gt;&lt;td&gt;Moderate&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;when-to-choose-inmon-dependent--top-down&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;When to Choose Inmon (Dependent / Top-Down)&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#when-to-choose-inmon-dependent--top-down&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Large organization with centralized operations&lt;/li&gt;
&lt;li&gt;Budget allows for upfront enterprise warehouse investment&lt;/li&gt;
&lt;li&gt;Data consistency is the highest priority&lt;/li&gt;
&lt;li&gt;Long-term analytical strategy exists&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;when-to-choose-kimball-independent--bottom-up&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;When to Choose Kimball (Independent / Bottom-Up)&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#when-to-choose-kimball-independent--bottom-up&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Small organization or startup&lt;/li&gt;
&lt;li&gt;Limited budget, need quick wins&lt;/li&gt;
&lt;li&gt;Departments need analytical capability immediately&lt;/li&gt;
&lt;li&gt;Willing to accept integration risk for speed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;when-to-choose-hybrid&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;When to Choose Hybrid&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#when-to-choose-hybrid&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Organization has both enterprise-wide and department-specific needs&lt;/li&gt;
&lt;li&gt;Some departments need immediate capability while central warehouse is being built&lt;/li&gt;
&lt;li&gt;Flexibility is more important than architectural purity&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-insight&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Insight&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-insight&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The Inmon vs. Kimball debate is often framed as a binary choice, but in practice, &lt;strong&gt;most successful warehouses evolve from Kimball to Inmon&lt;/strong&gt;. Organizations start with independent data marts (quick wins), then gradually build a central warehouse as inconsistencies become painful. The hybrid model is the most realistic path for growing companies — it acknowledges that architectural purity must be balanced against business urgency.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: inmon_vs_kimball Pages: 1 --&gt;
&lt;svg width=&quot;548pt&quot; height=&quot;50pt&quot; viewBox=&quot;0.00 0.00 548.00 50.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 45.6)&quot;&gt;
&lt;title&gt;inmon_vs_kimball&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-45.6 544.1,-45.6 544.1,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- A --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;A&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;124.93,-41.6 0,-41.6 0,0 124.93,0 124.93,-41.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;62.47&quot; y=&quot;-25&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Inmon Vs Kimball&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;62.47&quot; y=&quot;-8.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Input&lt;/text&gt;
&lt;/g&gt;
&lt;!-- B --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;B&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;328.63,-41.6 203.7,-41.6 203.7,0 328.63,0 328.63,-41.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;266.16&quot; y=&quot;-25&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Inmon Vs Kimball&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;266.16&quot; y=&quot;-8.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Core Mechanism&lt;/text&gt;
&lt;/g&gt;
&lt;!-- A&amp;#45;&amp;gt;B --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;A-&gt;B&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M125.35,-20.8C146.45,-20.8 170.25,-20.8 192.14,-20.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;191.88,-24.3 201.88,-20.8 191.88,-17.3 191.88,-24.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;164.31&quot; y=&quot;-25&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;triggers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- C --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;C&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;540.1,-41.6 415.17,-41.6 415.17,0 540.1,0 540.1,-41.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;477.63&quot; y=&quot;-25&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Inmon Vs Kimball&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;477.63&quot; y=&quot;-8.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Output&lt;/text&gt;
&lt;/g&gt;
&lt;!-- B&amp;#45;&amp;gt;C --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;B-&gt;C&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M328.88,-20.8C352.32,-20.8 379.24,-20.8 403.62,-20.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;403.48,-24.3 413.48,-20.8 403.48,-17.3 403.48,-24.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;371.9&quot; y=&quot;-25&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;produces&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_inmon_vs_kimball Pages: 1 --&gt;
&lt;svg width=&quot;190pt&quot; height=&quot;170pt&quot; viewBox=&quot;0.00 0.00 190.00 170.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 165.63)&quot;&gt;
&lt;title&gt;semantic_inmon_vs_kimball&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-165.63 186.05,-165.63 186.05,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;77.57&quot; cy=&quot;-86.21&quot; rx=&quot;77.57&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;77.57&quot; y=&quot;-82.31&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Inmon Vs Kimball&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REL1 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REL1&lt;/title&gt;
&lt;ellipse fill=&quot;#f0f0f0&quot; stroke=&quot;black&quot; cx=&quot;121.46&quot; cy=&quot;-143.63&quot; rx=&quot;60.59&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;121.46&quot; y=&quot;-140.33&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Related Concept&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REL1 --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REL1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M91.46,-104.37C96.68,-111.21 102.61,-118.97 107.81,-125.77&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;80.59&quot; y=&quot;-119.27&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REL2 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REL2&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;53.61&quot; cy=&quot;-18&quot; rx=&quot;41.67&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;53.61&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Builds Into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REL2 --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REL2&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M71.15,-67.93C67.65,-57.98 63.35,-45.73 59.88,-35.86&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;95.27&quot; y=&quot;-39.29&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;a href=&quot;../../data-mart-types&quot; class=&quot;internal alias&quot; data-slug=&quot;data-mart-types&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Mart Types&lt;/a&gt; — the three types embody these approaches&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../dwh-server-models&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-server-models&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Server Models&lt;/a&gt; — server architecture follows the chosen approach&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated DWH&lt;/a&gt; — Inmon’s approach maximizes integration&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../dwh-evolution&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-evolution&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Evolution&lt;/a&gt; — both approaches emerged in the 1990s OLAP era&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — both approaches implement the three tiers differently&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — both approaches serve the OLAP side of the split&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>integrated-dwh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/integrated-dwh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/integrated-dwh.md" />
    <summary>The Problem Every operational system in a company stores data differently.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Every operational system in a company stores data differently. One database uses “MM/DD/YYYY” for dates, another uses “DD-Mon-YY.” Gender might be stored as “M/F” in one system, “1/0” in another, and “Male/Female” in a third. Customer names have different spellings across systems. Without integration, analysts cannot reliably combine data from different sources — they get conflicting results depending on which system they query.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;An &lt;strong&gt;integrated&lt;/strong&gt; data warehouse resolves format inconsistencies across heterogeneous data sources by converting all incoming data into a single, uniform structure before loading. This involves standardizing date formats, encoding conventions, naming patterns, units of measure, and attribute names so that data from any source can be queried and compared seamlessly.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The integration process occurs during the ETL pipeline’s transformation phase:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Extract from heterogeneous sources:&lt;/strong&gt; Pull data from relational databases, flat files, ERP systems, legacy systems, and external APIs. Data is captured in its “as is” state.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data scrubbing (format standardization):&lt;/strong&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Encode free-form values: “Male”, “M”, “1”, “male” → standard “M”&lt;/li&gt;
&lt;li&gt;Map different units: centimeters, inches, yards → single standard unit&lt;/li&gt;
&lt;li&gt;Map different attribute names: “bal”, “currbal”, “balcurr” → “balance”&lt;/li&gt;
&lt;li&gt;Resolve name variations: “Agrawal”, “Agarwal”, “Aggarwal” → canonical spelling&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conditioning:&lt;/strong&gt; Convert source data types to target warehouse data types (e.g., string to integer, VARCHAR to DATE).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entity resolution:&lt;/strong&gt; Map different account numbers or IDs generated by different applications for the same customer to a single identification number.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enrichment:&lt;/strong&gt; Augment operational data with external sources (e.g., adding demographic survey data to customer records).&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;The result is a warehouse where a query for “total sales in Q1” returns the same number regardless of which source systems contributed the underlying data.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: integrated_dwh Pages: 1 --&gt;
&lt;svg width=&quot;323pt&quot; height=&quot;277pt&quot; viewBox=&quot;0.00 0.00 323.00 277.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 272.6)&quot;&gt;
&lt;title&gt;integrated_dwh&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-272.6 319,-272.6 319,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_sources&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-172.2 8,-260.6 307,-260.6 307,-172.2 8,-172.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157.5&quot; y=&quot;-244&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Heterogeneous Sources&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s1 --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;s1&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;101.84,-227.8 16.16,-227.8 16.16,-180.2 101.84,-180.2 101.84,-227.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;59&quot; y=&quot;-213.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;RDBMS&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;59&quot; y=&quot;-200.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MM/DD/YYYY&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;59&quot; y=&quot;-187.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;M/F&lt;/text&gt;
&lt;/g&gt;
&lt;!-- scrub --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;scrub&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;216.05,-143.2 97.95,-143.2 97.95,-95.6 216.05,-95.6 216.05,-143.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157&quot; y=&quot;-129.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Scrubbing&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157&quot; y=&quot;-116.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Standardize Formats&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157&quot; y=&quot;-102.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Resolve Conflicts&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s1&amp;#45;&amp;gt;scrub --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;s1-&gt;scrub&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M86.56,-179.77C97.3,-170.72 109.74,-160.23 121.16,-150.61&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;123.1,-153.55 128.49,-144.43 118.59,-148.2 123.1,-153.55&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- s2 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;s2&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;194.64,-227.8 119.36,-227.8 119.36,-180.2 194.64,-180.2 194.64,-227.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157&quot; y=&quot;-213.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Flat File&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157&quot; y=&quot;-200.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DD-Mon-YY&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157&quot; y=&quot;-187.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;1/0&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s2&amp;#45;&amp;gt;scrub --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;s2-&gt;scrub&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M157,-179.99C157,-172.27 157,-163.48 157,-155.06&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;160.5,-155.09 157,-145.09 153.5,-155.09 160.5,-155.09&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- s3 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;s3&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;299.44,-227.8 212.56,-227.8 212.56,-180.2 299.44,-180.2 299.44,-227.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;256&quot; y=&quot;-213.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ERP System&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;256&quot; y=&quot;-200.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;YYYY-MM-DD&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;256&quot; y=&quot;-187.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Male/Female&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s3&amp;#45;&amp;gt;scrub --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;s3-&gt;scrub&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M228.16,-179.77C217.31,-170.72 204.74,-160.23 193.2,-150.61&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;195.71,-148.14 185.79,-144.42 191.23,-153.52 195.71,-148.14&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- warehouse --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;warehouse&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;206.27,-47.6 107.73,-47.6 107.73,0 206.27,0 206.27,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;YYYY-MM-DD&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;M/F (Standard)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- scrub&amp;#45;&amp;gt;warehouse --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;scrub-&gt;warehouse&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M157,-95.26C157,-84.46 157,-71.38 157,-59.44&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;160.5,-59.51 157,-49.51 153.5,-59.51 160.5,-59.51&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;186.45&quot; y=&quot;-68.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;Uniform Data&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_integrated_dwh Pages: 1 --&gt;
&lt;svg width=&quot;267pt&quot; height=&quot;200pt&quot; viewBox=&quot;0.00 0.00 267.00 200.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 195.89)&quot;&gt;
&lt;title&gt;semantic_integrated_dwh&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-195.89 263.42,-195.89 263.42,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;126.82&quot; cy=&quot;-92.7&quot; rx=&quot;52.71&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;126.82&quot; y=&quot;-96.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Integrated&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;126.82&quot; y=&quot;-81&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;178.68&quot; cy=&quot;-30.16&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;178.68&quot; y=&quot;-33.46&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;178.68&quot; y=&quot;-20.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M148.22,-66.9C151.79,-62.59 155.48,-58.14 159,-53.89&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.1&quot; y=&quot;-52.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SUBJECT --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SUBJECT&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;83.07&quot; cy=&quot;-24.32&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;83.07&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Subject-Oriented&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;83.07&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SUBJECT --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SUBJECT&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M109.78,-66.07C106.04,-60.22 102.09,-54.06 98.42,-48.32&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;90.34&quot; y=&quot;-59.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;48.48&quot; cy=&quot;-114.05&quot; rx=&quot;48.48&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;48.48&quot; y=&quot;-110.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M79.9,-105.49C79.76,-105.52 79.63,-105.56 79.5,-105.6&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;59.44&quot; y=&quot;-108.24&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SCRUB --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SCRUB&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;202.61&quot; cy=&quot;-122.16&quot; rx=&quot;56.81&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;202.61&quot; y=&quot;-118.86&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Scrubbing&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SCRUB --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SCRUB&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M169.59,-109.33C169.72,-109.38 169.86,-109.43 169.99,-109.48&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;190.05&quot; y=&quot;-101.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;122.99&quot; cy=&quot;-173.89&quot; rx=&quot;56.04&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;122.99&quot; y=&quot;-170.59&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Systems&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M125.5,-120.64C124.96,-132.2 124.34,-145.28 123.86,-155.58&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;104.42&quot; y=&quot;-140.81&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Format harmonization:&lt;/strong&gt; All dates, codes, units, and encodings standardized to a single convention&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-source queryability:&lt;/strong&gt; Data from any source can be joined and compared without manual reconciliation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entity resolution:&lt;/strong&gt; Same real-world entity identified uniquely across all sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata-driven:&lt;/strong&gt; Integration rules (mappings, transformations) are documented in metadata&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ongoing process:&lt;/strong&gt; New sources require new integration rules; integration is never “done”&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — second of Inmon’s four characteristics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../subject-oriented-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;subject-oriented-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Subject-Oriented&lt;/a&gt; — subject consolidation requires integration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — integration happens in the ETL transform phase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../data-scrubbing&quot; class=&quot;internal alias&quot; data-slug=&quot;data-scrubbing&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Scrubbing&lt;/a&gt; — the specific mechanism for resolving format conflicts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — integration rules and mappings stored as metadata&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../dwh-refresh&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-refresh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Refresh&lt;/a&gt; — integration must be reapplied during each refresh cycle&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Integration is not deduplication:&lt;/strong&gt; Standardizing “M” and “Male” to “M” is integration; realizing two records are the same person is deduplication. Both are needed but are different processes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Loss of source fidelity:&lt;/strong&gt; Once integrated, the original source format is lost unless explicitly preserved in metadata.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conflicting business rules:&lt;/strong&gt; Two source systems may apply different business rules (e.g., different revenue recognition policies). Integration must decide which rule “wins.”&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>loading-dwh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/loading-dwh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/loading-dwh.md" />
    <summary>The Problem After data has been extracted, cleaned, and transformed, it must be inserted into the warehouse.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;After data has been extracted, cleaned, and transformed, it must be inserted into the warehouse. But the volumes are massive — millions or billions of records. A naive row-by-row INSERT approach would take days. Furthermore, if the load fails halfway through (network issue, disk full, power outage), the warehouse would be left in an inconsistent state with partial data.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Loading&lt;/strong&gt; is the third phase of the ETL pipeline. It inserts cleaned and transformed data into the warehouse using &lt;strong&gt;batch load utilities&lt;/strong&gt; optimized for high-volume insertion. The load process includes integrity constraint checking, sorting, summarizing, and &lt;strong&gt;checkpoint support&lt;/strong&gt; so that failed loads can resume from the last saved point without losing data integrity.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The loading process involves several critical steps:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Integrity constraint checking:&lt;/strong&gt; Before inserting, the load utility verifies that data satisfies all constraints — primary keys are unique, foreign keys reference valid records, NOT NULL columns have values, data types match.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sorting:&lt;/strong&gt; Data is sorted to match the warehouse’s physical storage order (e.g., by date, by region). Sorted data improves query performance and enables efficient indexing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Summarizing:&lt;/strong&gt; Aggregate values (totals, averages, counts) are pre-computed during loading to speed up common analytical queries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Batch insertion:&lt;/strong&gt; Records are inserted in large batches (not row-by-row) using bulk load utilities provided by the DBMS. This is orders of magnitude faster than individual INSERT statements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checkpoint management:&lt;/strong&gt; The load is divided into segments. After each segment, a checkpoint is recorded. If the load fails, it restarts from the last checkpoint — not from the beginning.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Admin controls:&lt;/strong&gt; The load utility allows administrators to monitor status, cancel, suspend, resume, and restart after failure.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Key issues in loading:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Volume:&lt;/strong&gt; Load utilities must handle terabytes of data efficiently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sequential load time:&lt;/strong&gt; Loading data sequentially can take very long — parallel loading strategies are often needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full load as transaction:&lt;/strong&gt; A full load is treated as a single long batch transaction; checkpoints ensure recoverability.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: loading Pages: 1 --&gt;
&lt;svg width=&quot;166pt&quot; height=&quot;455pt&quot; viewBox=&quot;0.00 0.00 166.00 455.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 450.8)&quot;&gt;
&lt;title&gt;loading&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-450.8 161.58,-450.8 161.58,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_load_steps&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-65 8,-383.8 141,-383.8 141,-65 8,-65&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;74.5&quot; y=&quot;-367.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Loading Process&lt;/text&gt;
&lt;/g&gt;
&lt;!-- transformed --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;transformed&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;128.5,-446.8 5.5,-446.8 5.5,-410.8 128.5,-410.8 128.5,-446.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-432.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Transformed Data&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-418.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Clean, Standardized)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- check --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;check&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;117.18,-351 16.82,-351 16.82,-315 117.18,-315 117.18,-351&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-336.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrity&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-323.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Constraint Check&lt;/text&gt;
&lt;/g&gt;
&lt;!-- transformed&amp;#45;&amp;gt;check --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;transformed-&gt;check&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M67,-410.6C67,-397.19 67,-378.29 67,-362.62&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;70.5,-362.93 67,-352.93 63.5,-362.93 70.5,-362.93&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- sort --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;sort&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;111.07,-278 22.93,-278 22.93,-242 111.07,-242 111.07,-278&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-263.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sort by&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-250.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Physical Order&lt;/text&gt;
&lt;/g&gt;
&lt;!-- check&amp;#45;&amp;gt;sort --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;check-&gt;sort&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M67,-314.81C67,-307.23 67,-298.1 67,-289.54&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;70.5,-289.54 67,-279.54 63.5,-289.54 70.5,-289.54&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- batch --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;batch&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;118.1,-205 15.9,-205 15.9,-169 118.1,-169 118.1,-205&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-190.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Batch Insert&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67&quot; y=&quot;-177.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Bulk Load Utility)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- sort&amp;#45;&amp;gt;batch --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;sort-&gt;batch&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M67,-241.81C67,-234.23 67,-225.1 67,-216.54&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;70.5,-216.54 67,-206.54 63.5,-216.54 70.5,-216.54&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- checkpoint --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;checkpoint&lt;/title&gt;
&lt;polygon fill=&quot;#ffe5cc&quot; stroke=&quot;black&quot; points=&quot;111.74,-109 16.26,-109 16.26,-73 111.74,-73 111.74,-109&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;64&quot; y=&quot;-94.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Checkpoint&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;64&quot; y=&quot;-81.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Save Progress)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- batch&amp;#45;&amp;gt;checkpoint --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;batch-&gt;checkpoint&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M36.91,-168.83C30.89,-163.89 25.39,-157.93 22,-151 17.31,-141.42 17.48,-136.66 22,-127 23.66,-123.45 25.88,-120.14 28.43,-117.08&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;30.69,-119.77 35.24,-110.21 25.72,-114.84 30.69,-119.77&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- checkpoint&amp;#45;&amp;gt;batch --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;checkpoint-&gt;batch&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; d=&quot;M64.56,-109.45C64.99,-122.94 65.59,-141.89 66.09,-157.56&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;62.58,-157.36 66.4,-167.25 69.58,-157.14 62.58,-157.36&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;111.72&quot; y=&quot;-142&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;resume from&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;111.72&quot; y=&quot;-130&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;checkpoint on failure&lt;/text&gt;
&lt;/g&gt;
&lt;!-- warehouse --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;warehouse&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;116.65,-36 15.35,-36 11.35,-32 11.35,0 112.65,0 116.65,-4 116.65,-36&quot;&gt;&lt;/polygon&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;112.65,-32 11.35,-32&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;112.65,-32 112.65,0&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;112.65,-32 116.65,-36&quot;&gt;&lt;/polyline&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;64&quot; y=&quot;-21.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;64&quot; y=&quot;-8.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Loaded &amp;#x26; Indexed&lt;/text&gt;
&lt;/g&gt;
&lt;!-- checkpoint&amp;#45;&amp;gt;warehouse --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;checkpoint-&gt;warehouse&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M64,-72.81C64,-65.23 64,-56.1 64,-47.54&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;67.5,-47.54 64,-37.54 60.5,-47.54 67.5,-47.54&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_loading Pages: 1 --&gt;
&lt;svg width=&quot;284pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 284.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_loading&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 279.68,-190.06 279.68,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;130.21&quot; cy=&quot;-86.87&quot; rx=&quot;44.03&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;130.21&quot; y=&quot;-90.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Loading&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;130.21&quot; y=&quot;-75.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;182.07&quot; cy=&quot;-24.32&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;182.07&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;182.07&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M150.71,-62.15C154.78,-57.23 159.05,-52.09 163.07,-47.24&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;175.39&quot; y=&quot;-57.39&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SCRUB --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SCRUB&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;86.45&quot; cy=&quot;-18.49&quot; rx=&quot;56.81&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;86.45&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Scrubbing&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SCRUB --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SCRUB&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M113.67,-61.02C108.44,-52.85 102.78,-44.01 97.98,-36.51&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;87.32&quot; y=&quot;-40.66&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REFRESH --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REFRESH&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;51.87&quot; cy=&quot;-108.22&quot; rx=&quot;51.87&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;51.87&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Refresh&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REFRESH --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REFRESH&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M89.66,-97.92C89.51,-97.96 89.36,-98 89.21,-98.04&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;69.17&quot; y=&quot;-100.68&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;206&quot; cy=&quot;-116.33&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;206&quot; y=&quot;-119.63&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;206&quot; y=&quot;-106.43&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M168.1,-101.6C168.25,-101.66 168.4,-101.72 168.55,-101.77&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188.59&quot; y=&quot;-104.39&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;126.38&quot; cy=&quot;-168.06&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;126.38&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M128.89,-114.81C128.34,-126.37 127.73,-139.45 127.24,-149.75&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;114.31&quot; y=&quot;-134.98&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Batch-oriented:&lt;/strong&gt; Bulk load utilities insert millions of records at once, not row-by-row&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Checkpoint support:&lt;/strong&gt; Failed loads resume from last checkpoint, not from scratch&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrity enforcement:&lt;/strong&gt; All constraints (PK, FK, NOT NULL) are validated during load&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sorted insertion:&lt;/strong&gt; Data sorted to match physical storage order for optimal query performance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Admin controls:&lt;/strong&gt; Monitor, cancel, suspend, resume — full operational control&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — loading is the third phase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../data-scrubbing&quot; class=&quot;internal alias&quot; data-slug=&quot;data-scrubbing&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Scrubbing&lt;/a&gt; — only cleaned data enters the loading phase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../dwh-refresh&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-refresh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Refresh&lt;/a&gt; — loading is the initial load; refresh maintains it&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — loading populates the warehouse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — load status and history tracked in metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Partial load corruption:&lt;/strong&gt; Without checkpoints, a failed load leaves the warehouse in an inconsistent state. Always use checkpointing.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Foreign key violations:&lt;/strong&gt; If dimension tables are not loaded before fact tables, FK constraints will fail. Load order matters.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Index rebuild cost:&lt;/strong&gt; After bulk loading, indexes must be rebuilt — this can take as long as the load itself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disk space:&lt;/strong&gt; Batch loading requires temporary space for sorting and staging. Insufficient disk space causes load failure.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>metadata-in-dwh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/metadata-in-dwh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/metadata-in-dwh.md" />
    <summary>The Problem A data warehouse contains petabytes of data from hundreds of sources.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A data warehouse contains petabytes of data from hundreds of sources. Without documentation describing what each table means, where the data came from, how it was transformed, and what business terms represent, the warehouse is a useless data swamp. Analysts cannot find what they need, and reports cannot be trusted without understanding the data’s origin and transformation history.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Metadata&lt;/strong&gt; is “data about data” — the roadmap, directory, and documentation of the data warehouse. It defines all warehouse objects, tracks data lineage (history of migrations and transformations), records data currency (active, archived, or purged), and maps business terms to technical structures. Without metadata, a data warehouse is an unreadable mountain of bytes.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;three-categories-of-metadata&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Three Categories of Metadata&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#three-categories-of-metadata&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Business Metadata:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Business terms and definitions (e.g., “Revenue = gross sales minus returns”).&lt;/li&gt;
&lt;li&gt;Data ownership information (who is responsible for each data domain).&lt;/li&gt;
&lt;li&gt;Changing policies (how business definitions evolve over time).&lt;/li&gt;
&lt;li&gt;Non-technical — designed for business end-users.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Technical Metadata:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Database system names, table and column names and sizes.&lt;/li&gt;
&lt;li&gt;Data types and allowed values.&lt;/li&gt;
&lt;li&gt;Structural information: primary keys, foreign keys, indices.&lt;/li&gt;
&lt;li&gt;Warehouse schema, views, dimensions, hierarchies, derived data definitions.&lt;/li&gt;
&lt;li&gt;Technical — designed for developers and DBAs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Operational Metadata:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Data lineage:&lt;/strong&gt; History of migrated data and the sequence of transformations applied.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data currency:&lt;/strong&gt; Whether data is active, archived, or purged.&lt;/li&gt;
&lt;li&gt;Monitoring information: warehouse usage statistics, error reports, audit trails.&lt;/li&gt;
&lt;li&gt;Data refresh and purging rules, security (user authorization and access control).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;what-a-metadata-repository-contains&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;What a Metadata Repository Contains&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#what-a-metadata-repository-contains&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Structure description:&lt;/strong&gt; Schema, views, dimensions, hierarchies, data mart locations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Operational history:&lt;/strong&gt; Migration history, transformation sequences, monitoring data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Summarization algorithms:&lt;/strong&gt; Measure and dimension definitions, granularity, partitions, aggregation rules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source-to-warehouse mapping:&lt;/strong&gt; Source databases, gateway descriptions, extraction rules, cleaning rules, transformation rules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Performance data:&lt;/strong&gt; Indices, profiles, timing and scheduling rules for refresh/update/replication cycles.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;roles-of-metadata&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Roles of Metadata&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#roles-of-metadata&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p dir=&quot;auto&quot;&gt;Metadata is used by: query tools, extraction and cleansing tools, reporting tools, transformation tools, loading functions, and the decision support system for data mapping.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: metadata_in_dwh Pages: 1 --&gt;
&lt;svg width=&quot;580pt&quot; height=&quot;148pt&quot; viewBox=&quot;0.00 0.00 580.00 148.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 144.4)&quot;&gt;
&lt;title&gt;metadata_in_dwh&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-144.4 576,-144.4 576,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_uses&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-96.4 564,-96.4 564,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;286&quot; y=&quot;-79.8&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Used By&lt;/text&gt;
&lt;/g&gt;
&lt;!-- meta --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;meta&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;361.83,-140.4 176.17,-140.4 172.17,-136.4 172.17,-104.4 357.83,-104.4 361.83,-108.4 361.83,-140.4&quot;&gt;&lt;/polygon&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;357.83,-136.4 172.17,-136.4&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;357.83,-136.4 357.83,-104.4&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;357.83,-136.4 361.83,-140.4&quot;&gt;&lt;/polyline&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;267&quot; y=&quot;-125.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata Repository&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;267&quot; y=&quot;-112.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Business + Technical + Operational&lt;/text&gt;
&lt;/g&gt;
&lt;!-- query --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;query&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;91.95,-57.8 16.05,-57.8 16.05,-21.8 91.95,-21.8 91.95,-57.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;54&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Query Tools&lt;/text&gt;
&lt;/g&gt;
&lt;!-- meta&amp;#45;&amp;gt;query --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;meta-&gt;query&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M171.82,-112.84C142.12,-108.93 113.79,-103.54 101,-96.4 88.75,-89.56 78.28,-78.2 70.36,-67.52&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;73.25,-65.54 64.68,-59.3 67.49,-69.52 73.25,-65.54&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- etl --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;etl&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;201.9,-63.6 110.1,-63.6 110.1,-16 201.9,-16 201.9,-63.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;156&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Tools&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;156&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Extract, Clean,&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;156&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Transform)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- meta&amp;#45;&amp;gt;etl --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;meta-&gt;etl&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M223.61,-104C219.22,-101.67 214.94,-99.13 211,-96.4 201.02,-89.49 191.3,-80.62 182.87,-72.01&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;185.68,-69.88 176.27,-65 180.58,-74.68 185.68,-69.88&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- report --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;report&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;313.82,-57.8 220.18,-57.8 220.18,-21.8 313.82,-21.8 313.82,-57.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;267&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Reporting Tools&lt;/text&gt;
&lt;/g&gt;
&lt;!-- meta&amp;#45;&amp;gt;report --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;meta-&gt;report&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M267,-103.91C267,-93.88 267,-81.03 267,-69.55&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;270.5,-69.77 267,-59.77 263.5,-69.77 270.5,-69.77&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- load --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;load&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;437.95,-57.8 332.05,-57.8 332.05,-21.8 437.95,-21.8 437.95,-57.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;385&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Loading Functions&lt;/text&gt;
&lt;/g&gt;
&lt;!-- meta&amp;#45;&amp;gt;load --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;meta-&gt;load&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M309.93,-103.91C314.45,-101.58 318.89,-99.07 323,-96.4 336.3,-87.77 349.59,-76.33 360.43,-66.07&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;362.74,-68.71 367.47,-59.23 357.86,-63.69 362.74,-68.71&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- dss --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dss&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;555.88,-57.8 456.12,-57.8 456.12,-21.8 555.88,-21.8 555.88,-57.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;506&quot; y=&quot;-43.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Decision Support&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;506&quot; y=&quot;-29.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;System&lt;/text&gt;
&lt;/g&gt;
&lt;!-- meta&amp;#45;&amp;gt;dss --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;meta-&gt;dss&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M362.04,-113.43C396.88,-109.41 431.56,-103.8 447,-96.4 461.52,-89.44 474.85,-77.6 485.15,-66.62&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;487.68,-69.05 491.72,-59.25 482.45,-64.39 487.68,-69.05&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_metadata Pages: 1 --&gt;
&lt;svg width=&quot;317pt&quot; height=&quot;222pt&quot; viewBox=&quot;0.00 0.00 317.00 222.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 217.72)&quot;&gt;
&lt;title&gt;semantic_metadata&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-217.72 313.32,-217.72 313.32,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;169.58&quot; cy=&quot;-106.84&quot; rx=&quot;78.52&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;169.58&quot; y=&quot;-102.94&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THREE_TIER --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THREE_TIER&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;240.97&quot; cy=&quot;-65.33&quot; rx=&quot;68.35&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;240.97&quot; y=&quot;-68.63&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Three-Tier DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;240.97&quot; y=&quot;-55.43&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;THREE_TIER --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--THREE_TIER&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M199.03,-89.72C201.02,-88.56 203.05,-87.38 205.07,-86.2&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;220.55&quot; y=&quot;-79.86&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;169.41&quot; cy=&quot;-24.32&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;169.41&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;169.41&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M169.54,-88.53C169.52,-76.85 169.48,-61.57 169.46,-48.85&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;149.24&quot; y=&quot;-71.39&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INTEGRATED --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INTEGRATED&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;98.83&quot; cy=&quot;-149.29&quot; rx=&quot;58.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;98.83&quot; y=&quot;-145.99&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrated DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INTEGRATED --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INTEGRATED&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M141.21,-123.86C136.13,-126.9 130.86,-130.07 125.82,-133.09&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;147.28&quot; y=&quot;-120.37&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ROLAP --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ROLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;241.55&quot; cy=&quot;-147.37&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;241.55&quot; y=&quot;-144.07&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ROLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ROLAP --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ROLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M199.68,-123.79C204.31,-126.4 209.06,-129.08 213.63,-131.65&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;186.4&quot; y=&quot;-130.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA_REPO --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA_REPO&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;171.01&quot; cy=&quot;-189.39&quot; rx=&quot;48.49&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;171.01&quot; y=&quot;-192.69&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;171.01&quot; y=&quot;-179.49&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Repository&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA_REPO --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA_REPO&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M169.89,-125.16C170.1,-136.84 170.36,-152.13 170.59,-164.86&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;190.5&quot; y=&quot;-147.71&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA_CHALLENGES --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA_CHALLENGES&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;97.79&quot; cy=&quot;-66.22&quot; rx=&quot;97.79&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;97.79&quot; y=&quot;-69.52&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;97.79&quot; y=&quot;-56.32&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Management Challenges&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA_CHALLENGES --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA_CHALLENGES&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M139.55,-89.85C138.93,-89.5 138.32,-89.15 137.7,-88.8&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;118.36&quot; y=&quot;-81.22&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Three categories:&lt;/strong&gt; Business, Technical, Operational — each serves different users&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Roadmap function:&lt;/strong&gt; Acts as a directory helping users find and understand warehouse contents&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transformation tracking:&lt;/strong&gt; Records every step data takes from source to warehouse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Used everywhere:&lt;/strong&gt; Query tools, ETL, reporting, loading, and DSS all depend on metadata&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Repository-based:&lt;/strong&gt; All metadata is stored in a centralized metadata repository&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — metadata is part of Tier 1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — metadata tracks transformation rules&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated DWH&lt;/a&gt; — integration rules are stored as metadata&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../rolap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;rolap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ROLAP Server&lt;/a&gt; — ROLAP depends on metadata for dimension mapping&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../metadata-repository&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-repository&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata Repository&lt;/a&gt; — the repository stores all metadata categories&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../metadata-management-challenges&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-management-challenges&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata Management Challenges&lt;/a&gt; — challenges of managing metadata at scale&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Scattered metadata:&lt;/strong&gt; In large organizations, metadata exists in spreadsheets, databases, applications, text files, and multimedia — consolidating it is a major challenge.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No industry standards:&lt;/strong&gt; There are no widely accepted standards for metadata management, making vendor interoperability difficult.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata staleness:&lt;/strong&gt; If metadata is not updated when the warehouse changes, it becomes actively misleading.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Business vs. Technical gap:&lt;/strong&gt; Business users need business metadata; developers need technical metadata. Bridging the gap requires deliberate effort.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>metadata-management-challenges</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/metadata-management-challenges" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/metadata-management-challenges.md" />
    <summary>The Problem Metadata drives report accuracy, validates data transformations, enforces business term definitions, and ensures calculation correctness.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Metadata drives report accuracy, validates data transformations, enforces business term definitions, and ensures calculation correctness. Despite its importance, managing metadata at enterprise scale is fraught with difficulties. Metadata is scattered across formats and systems, there are no industry-wide standards for passing it between tools, and vendors focus narrowly on their own products.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Metadata management challenges&lt;/strong&gt; are the organizational and technical difficulties in maintaining accurate, accessible, and standardized metadata across a large enterprise. These challenges include scattered metadata across diverse formats and systems, lack of industry standards, no easy methods for passing metadata between tools, and narrow vendor focus.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The challenges manifest in four key areas:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Scattered Metadata:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Metadata exists in spreadsheets, databases, applications, text files, and multimedia files across the organization.&lt;/li&gt;
&lt;li&gt;Each department or system maintains its own metadata independently.&lt;/li&gt;
&lt;li&gt;No centralized view of what metadata exists or where it is located.&lt;/li&gt;
&lt;li&gt;Consolidating scattered metadata requires significant effort and coordination.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Format Diversity:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Metadata in text files or multimedia files requires special handling to be usable by information management solutions.&lt;/li&gt;
&lt;li&gt;Structured metadata (database catalogs) and unstructured metadata (document descriptions) must be reconciled.&lt;/li&gt;
&lt;li&gt;Converting metadata from diverse formats to a unified structure is non-trivial.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;No Industry-Wide Standards:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Data management solution vendors have narrow focus areas — each defines metadata differently.&lt;/li&gt;
&lt;li&gt;No universally accepted metadata interchange format or protocol.&lt;/li&gt;
&lt;li&gt;Tool interoperability is limited — metadata from one tool often cannot be imported into another.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;No Easy Methods of Passing Metadata:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Transferring metadata between systems (e.g., from ETL tool to reporting tool) requires custom integration.&lt;/li&gt;
&lt;li&gt;Metadata changes in one system must be manually propagated to others.&lt;/li&gt;
&lt;li&gt;No standardized API for metadata exchange.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;why-these-challenges-matter&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Why These Challenges Matter&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#why-these-challenges-matter&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p dir=&quot;auto&quot;&gt;Metadata ensures:&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Report accuracy:&lt;/strong&gt; Reports are only as good as the metadata defining their sources and calculations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transformation validation:&lt;/strong&gt; ETL processes depend on metadata to know how to transform data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Business term consistency:&lt;/strong&gt; All users must agree on what “revenue” or “customer” means.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: metadata_challenges Pages: 1 --&gt;
&lt;svg width=&quot;472pt&quot; height=&quot;339pt&quot; viewBox=&quot;0.00 0.00 472.00 339.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 335.2)&quot;&gt;
&lt;title&gt;metadata_challenges&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-335.2 468,-335.2 468,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_sources&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-246.4 8,-323.2 456,-323.2 456,-246.4 8,-246.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;232&quot; y=&quot;-306.6&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Scattered Metadata Sources&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s1 --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;s1&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;99.94,-290.4 16.06,-290.4 16.06,-254.4 99.94,-254.4 99.94,-290.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;58&quot; y=&quot;-269.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Spreadsheets&lt;/text&gt;
&lt;/g&gt;
&lt;!-- challenges --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;challenges&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;242,-218.4 119.01,-157.6 242,-96.8 364.99,-157.6 242,-218.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;242&quot; y=&quot;-174.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Challenges&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;242&quot; y=&quot;-160.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;No Standards&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;242&quot; y=&quot;-147.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;No Easy Exchange&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;242&quot; y=&quot;-134.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Narrow Vendor Focus&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s1&amp;#45;&amp;gt;challenges --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;s1-&gt;challenges&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M86.35,-254.02C110.74,-239.07 146.84,-216.94 178.14,-197.75&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;179.69,-200.9 186.39,-192.69 176.03,-194.94 179.69,-200.9&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- s2 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;s2&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;186.29,-290.4 117.71,-290.4 117.71,-254.4 186.29,-254.4 186.29,-290.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;152&quot; y=&quot;-269.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Databases&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s2&amp;#45;&amp;gt;challenges --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;s2-&gt;challenges&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M165.67,-254.27C175.05,-242.52 188.03,-226.25 200.62,-210.46&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;203.11,-212.95 206.62,-202.95 197.64,-208.58 203.11,-212.95&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- s3 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;s3&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;279.66,-290.4 204.34,-290.4 204.34,-254.4 279.66,-254.4 279.66,-290.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;242&quot; y=&quot;-269.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Applications&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s3&amp;#45;&amp;gt;challenges --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;s3-&gt;challenges&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M242,-254.27C242,-247.35 242,-238.86 242,-229.82&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;245.5,-230.11 242,-220.11 238.5,-230.11 245.5,-230.11&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- s4 --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;s4&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;360.84,-290.4 297.16,-290.4 297.16,-254.4 360.84,-254.4 360.84,-290.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;329&quot; y=&quot;-269.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Text Files&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s4&amp;#45;&amp;gt;challenges --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;s4-&gt;challenges&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M315.79,-254.27C306.89,-242.73 294.63,-226.83 282.66,-211.31&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;285.47,-209.23 276.59,-203.45 279.93,-213.51 285.47,-209.23&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- s5 --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;s5&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;447.59,-290.4 378.41,-290.4 378.41,-254.4 447.59,-254.4 447.59,-290.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;413&quot; y=&quot;-269.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multimedia&lt;/text&gt;
&lt;/g&gt;
&lt;!-- s5&amp;#45;&amp;gt;challenges --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;s5-&gt;challenges&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M386.66,-254.02C364.6,-239.48 332.25,-218.13 303.73,-199.32&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;305.77,-196.47 295.49,-193.89 301.91,-202.31 305.77,-196.47&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- impact --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;impact&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;306.56,-60.8 177.44,-60.8 177.44,0 306.56,0 306.56,-60.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;242&quot; y=&quot;-46.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Impact&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;242&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Report Inaccuracy&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;242&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Broken ETL&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;242&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Inconsistent Definitions&lt;/text&gt;
&lt;/g&gt;
&lt;!-- challenges&amp;#45;&amp;gt;impact --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;challenges-&gt;impact&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M242,-96.57C242,-88.4 242,-80.17 242,-72.44&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;245.5,-72.69 242,-62.69 238.5,-72.69 245.5,-72.69&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_metadata_challenges Pages: 1 --&gt;
&lt;svg width=&quot;276pt&quot; height=&quot;200pt&quot; viewBox=&quot;0.00 0.00 276.00 200.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 195.89)&quot;&gt;
&lt;title&gt;semantic_metadata_challenges&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-195.89 272.23,-195.89 272.23,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;133.75&quot; cy=&quot;-86.38&quot; rx=&quot;105.85&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;133.75&quot; y=&quot;-90.28&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Metadata Management&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;133.75&quot; y=&quot;-74.68&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Challenges&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;185.62&quot; cy=&quot;-23.83&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;185.62&quot; y=&quot;-20.53&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M156.35,-59.13C161.26,-53.2 166.34,-47.08 170.86,-41.63&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;145.1&quot; y=&quot;-53.08&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REPO --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REPO&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;90&quot; cy=&quot;-18&quot; rx=&quot;72.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;90&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata Repository&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REPO --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REPO&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M115.96,-58.57C111.13,-51.02 106.03,-43.05 101.64,-36.19&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;90.29&quot; y=&quot;-50.08&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;55.42&quot; cy=&quot;-107.72&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;55.42&quot; y=&quot;-111.02&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;55.42&quot; y=&quot;-97.82&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M59.63,-106.58C59.46,-106.62 59.3,-106.66 59.14,-106.71&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;45.62&quot; y=&quot;-109.34&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INTEGRATED --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INTEGRATED&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;209.54&quot; cy=&quot;-115.84&quot; rx=&quot;58.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;209.54&quot; y=&quot;-112.54&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrated DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INTEGRATED --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INTEGRATED&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M193.47,-109.59C193.62,-109.65 193.76,-109.7 193.91,-109.76&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;179.93&quot; y=&quot;-112.37&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;129.92&quot; cy=&quot;-167.56&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;129.92&quot; y=&quot;-170.86&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;129.92&quot; y=&quot;-157.66&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M132.44,-114.32C132,-123.58 131.52,-133.83 131.09,-142.83&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131.76&quot; y=&quot;-120.48&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Four challenge areas:&lt;/strong&gt; Scattered metadata, format diversity, no standards, no easy exchange&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise-wide problem:&lt;/strong&gt; Affects all departments and systems&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vendor ecosystem issue:&lt;/strong&gt; Narrow vendor focus prevents interoperability&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Impact on accuracy:&lt;/strong&gt; Poor metadata management leads to inaccurate reports and broken ETL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No silver bullet:&lt;/strong&gt; No industry-wide solution exists&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — challenges arise from metadata’s importance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../metadata-repository&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-repository&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata Repository&lt;/a&gt; — the repository must address these challenges&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — ETL depends on accurate metadata&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated DWH&lt;/a&gt; — integration requires consistent metadata across sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — the warehouse’s value depends on metadata quality&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Metadata governance is essential:&lt;/strong&gt; Without a designated metadata governance team, metadata quality degrades over time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool consolidation helps:&lt;/strong&gt; Using fewer vendors reduces metadata interoperability challenges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata quality initiatives:&lt;/strong&gt; Some organizations implement metadata quality audits similar to data quality audits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Emerging standards:&lt;/strong&gt; While no universal standard exists, initiatives like the OMG’s Common Warehouse Metamodel (CWM) attempt to address interoperability.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>metadata-repository</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/metadata-repository" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/metadata-repository.md" />
    <summary>The Problem Metadata — the documentation describing what warehouse data means, where it came from, and how it was transformed — must be stored somewhere accessible to all tools and users that depend on it.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Metadata — the documentation describing what warehouse data means, where it came from, and how it was transformed — must be stored somewhere accessible to all tools and users that depend on it. If metadata is scattered across spreadsheets, code comments, and individual team members’ knowledge, it becomes unusable and unreliable.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A &lt;strong&gt;metadata repository&lt;/strong&gt; is the centralized storage system that is an integral part of the data warehouse. It contains six key types of metadata: warehouse structure definitions, business metadata, operational metadata, source-to-warehouse mapping rules, summarization algorithms, and performance data. It serves as the single authoritative source for all warehouse documentation.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The metadata repository organizes metadata into six components:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Definition of Data Warehouse:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Schema description, views, dimension hierarchies, derived data definitions.&lt;/li&gt;
&lt;li&gt;Data mart locations and their contents.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Business Metadata:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Data ownership information, business term definitions, changing policies.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Operational Metadata:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Data currency (active, archived, or purged).&lt;/li&gt;
&lt;li&gt;Data lineage (history of migrations and transformations applied).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Mapping from Operational Environment:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Source databases and their contents.&lt;/li&gt;
&lt;li&gt;Data extraction, cleaning, and transformation rules and defaults.&lt;/li&gt;
&lt;li&gt;Data refresh and purging rules.&lt;/li&gt;
&lt;li&gt;Security: user authorization and access control.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Algorithms for Summarization:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Dimension algorithms, data granularity definitions.&lt;/li&gt;
&lt;li&gt;Aggregation and summarization rules.&lt;/li&gt;
&lt;li&gt;Predefined queries and reports.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Performance Data:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Indices and profiles that improve data access and retrieval.&lt;/li&gt;
&lt;li&gt;Rules for timing and scheduling of refresh, update, and replication cycles.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: metadata_repository Pages: 1 --&gt;
&lt;svg width=&quot;1002pt&quot; height=&quot;137pt&quot; viewBox=&quot;0.00 0.00 1002.00 137.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 132.8)&quot;&gt;
&lt;title&gt;metadata_repository&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-132.8 998,-132.8 998,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_contents&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-84.8 986,-84.8 986,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;497&quot; y=&quot;-68.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Six Components&lt;/text&gt;
&lt;/g&gt;
&lt;!-- repo --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;repo&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;543.75,-128.8 430.25,-128.8 426.25,-124.8 426.25,-92.8 539.75,-92.8 543.75,-96.8 543.75,-128.8&quot;&gt;&lt;/polygon&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;539.75,-124.8 426.25,-124.8&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;539.75,-124.8 539.75,-92.8&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;539.75,-124.8 543.75,-128.8&quot;&gt;&lt;/polyline&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;485&quot; y=&quot;-107.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata Repository&lt;/text&gt;
&lt;/g&gt;
&lt;!-- c1 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;c1&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;169.77,-52 16.23,-52 16.23,-16 169.77,-16 169.77,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;1. DWH Structure&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Schema, Views, Hierarchies&lt;/text&gt;
&lt;/g&gt;
&lt;!-- repo&amp;#45;&amp;gt;c1 --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;repo-&gt;c1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M425.85,-108.06C350.16,-105.29 223.51,-98.73 179,-84.8 160.36,-78.97 141.39,-68.56 126.02,-58.76&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;128.02,-55.88 117.75,-53.29 124.17,-61.72 128.02,-55.88&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- c2 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;c2&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;314.02,-52 187.98,-52 187.98,-16 314.02,-16 314.02,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;251&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;2. Business Metadata&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;251&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definitions, Ownership&lt;/text&gt;
&lt;/g&gt;
&lt;!-- repo&amp;#45;&amp;gt;c2 --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;repo-&gt;c2&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M425.97,-107.09C394.5,-104.08 355.65,-97.81 323,-84.8 307.59,-78.66 292.22,-68.7 279.67,-59.29&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;281.9,-56.6 271.86,-53.21 277.6,-62.12 281.9,-56.6&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- c3 --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;c3&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;466.01,-52 331.99,-52 331.99,-16 466.01,-16 466.01,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;399&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;3. Operational Metadata&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;399&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Currency, Lineage&lt;/text&gt;
&lt;/g&gt;
&lt;!-- repo&amp;#45;&amp;gt;c3 --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;repo-&gt;c3&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M465.05,-92.45C453.87,-82.73 439.74,-70.44 427.42,-59.72&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;429.82,-57.17 419.98,-53.25 425.23,-62.45 429.82,-57.17&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- c4 --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;c4&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;660.09,-52 483.91,-52 483.91,-16 660.09,-16 660.09,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;572&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;4. Source Mapping&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;572&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Extraction, Transformation Rules&lt;/text&gt;
&lt;/g&gt;
&lt;!-- repo&amp;#45;&amp;gt;c4 --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;repo-&gt;c4&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M505.18,-92.45C516.49,-82.73 530.78,-70.44 543.25,-59.72&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;545.48,-62.41 550.78,-53.24 540.92,-57.11 545.48,-62.41&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- c5 --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;c5&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;817.45,-52 678.55,-52 678.55,-16 817.45,-16 817.45,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;748&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;5. Summarization&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;748&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Algorithms, Aggregations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- repo&amp;#45;&amp;gt;c5 --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;repo-&gt;c5&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M544.12,-108.15C580.98,-105.58 628.86,-99.4 669,-84.8 685.96,-78.63 703.11,-68.41 717.07,-58.83&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;718.83,-61.88 724.96,-53.23 714.78,-56.17 718.83,-61.88&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- c6 --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;c6&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;978.29,-52 835.71,-52 835.71,-16 978.29,-16 978.29,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;907&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;6. Performance Data&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;907&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Indices, Scheduling Rules&lt;/text&gt;
&lt;/g&gt;
&lt;!-- repo&amp;#45;&amp;gt;c6 --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;repo-&gt;c6&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M544.22,-108.83C627.64,-106.89 775.23,-101.19 826,-84.8 843.74,-79.07 861.59,-68.71 876.01,-58.91&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;878.01,-61.78 884.15,-53.15 873.97,-56.06 878.01,-61.78&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_metadata_repo Pages: 1 --&gt;
&lt;svg width=&quot;272pt&quot; height=&quot;206pt&quot; viewBox=&quot;0.00 0.00 272.00 206.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 202.21)&quot;&gt;
&lt;title&gt;semantic_metadata_repo&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-202.21 268.45,-202.21 268.45,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;133.75&quot; cy=&quot;-92.7&quot; rx=&quot;55.25&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;133.75&quot; y=&quot;-96.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Metadata&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;133.75&quot; y=&quot;-81&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Repository&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;185.62&quot; cy=&quot;-30.16&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;185.62&quot; y=&quot;-26.86&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M155.15,-66.9C160.39,-60.58 165.9,-53.94 170.76,-48.08&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;181.46&quot; y=&quot;-49.39&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THREE_TIER --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THREE_TIER&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;90&quot; cy=&quot;-24.32&quot; rx=&quot;68.35&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;90&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Three-Tier DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;90&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;THREE_TIER --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--THREE_TIER&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M116.71,-66.07C112.97,-60.22 109.03,-54.06 105.35,-48.32&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;90.77&quot; y=&quot;-59.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;55.42&quot; cy=&quot;-114.05&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;55.42&quot; y=&quot;-117.35&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;55.42&quot; y=&quot;-104.15&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M85.03,-105.98C84.91,-106.01 84.78,-106.05 84.66,-106.08&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;71.09&quot; y=&quot;-108.73&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ROLAP --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ROLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;209.54&quot; cy=&quot;-122.16&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;209.54&quot; y=&quot;-118.86&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ROLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ROLAP --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ROLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M177.84,-109.84C177.97,-109.89 178.1,-109.94 178.23,-109.99&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188.17&quot; y=&quot;-101.81&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CHALLENGES --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CHALLENGES&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;129.92&quot; cy=&quot;-173.89&quot; rx=&quot;91.31&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;129.92&quot; y=&quot;-177.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata Management&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;129.92&quot; y=&quot;-163.99&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Challenges&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CHALLENGES --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CHALLENGES&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M132.44,-120.64C132,-129.91 131.52,-140.15 131.09,-149.16&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;138.64&quot; y=&quot;-126.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Six components:&lt;/strong&gt; Structure, business, operational, mapping, summarization, performance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Centralized:&lt;/strong&gt; Single authoritative source for all warehouse metadata&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool-agnostic:&lt;/strong&gt; Serves query tools, ETL, reporting, loading, and DSS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrally linked:&lt;/strong&gt; The repository is part of the warehouse system, not external to it&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Comprehensive:&lt;/strong&gt; Covers technical, business, and operational dimensions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — the repository stores all metadata categories&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — repository resides in Tier 1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../rolap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;rolap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ROLAP Server&lt;/a&gt; — ROLAP queries the repository for dimension mappings&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — ETL rules and transformation logic stored in repository&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../metadata-management-challenges&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-management-challenges&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata Management Challenges&lt;/a&gt; — challenges of maintaining the repository&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Repository becomes stale:&lt;/strong&gt; If the warehouse schema changes and the repository is not updated, tools relying on it will break.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Access control:&lt;/strong&gt; The repository itself needs security — not all users should see all metadata (e.g., ETL transformation rules may be sensitive).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Versioning:&lt;/strong&gt; When transformation rules change, the repository should track both old and new versions for audit purposes.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>molap-server</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/molap-server" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/molap-server.md" />
    <summary>The Problem When analysts need to interactively explore data across multiple dimensions — slicing, dicing, rolling up, drilling down — dynamically generating SQL queries (as ROLAP does) introduces unacceptable latency.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;When analysts need to interactively explore data across multiple dimensions — slicing, dicing, rolling up, drilling down — dynamically generating SQL queries (as ROLAP does) introduces unacceptable latency. Every user action requires the database to compute aggregations on-the-fly, which can take seconds or minutes for large datasets.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;MOLAP (Multidimensional Online Analytical Processing)&lt;/strong&gt; stores data in proprietary &lt;strong&gt;multidimensional databases (MDDBs)&lt;/strong&gt; as pre-calculated arrays of data cubes. Because the cubes are computed during the data load phase (not at query time), user requests are served with near-instant response — no SQL generation or computation is needed at query time.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Data loading phase (pre-computation):&lt;/strong&gt; When data is loaded from the warehouse into the MDDB, proprietary software pre-calculates all possible aggregations and stores them in multidimensional arrays (data cubes).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage format:&lt;/strong&gt; Data is stored in specialized multidimensional arrays, not relational tables. Each cell in the array corresponds to a specific combination of dimension values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sparse matrix technology:&lt;/strong&gt; Since most cells in a high-dimensional cube are empty (no sales for a specific product in a specific city on a specific day), MOLAP uses sparse matrix techniques to efficiently store only non-empty cells.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query phase:&lt;/strong&gt; When a user requests data, the MOLAP engine directly retrieves pre-calculated values from the MDDB — no SQL, no joins, no aggregations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Application layer:&lt;/strong&gt; The MOLAP engine resides in the application layer, providing a simple interface for users of all skill levels.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Strengths:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Lightning-fast response time (data already pre-calculated)&lt;/li&gt;
&lt;li&gt;Simple interface compatible with both experienced and inexperienced users&lt;/li&gt;
&lt;li&gt;Fast indexing to previously summarized data&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Weaknesses:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Limited data volumes — cannot store detailed transactional data&lt;/li&gt;
&lt;li&gt;Storage waste with sparse (scattered) datasets despite sparse matrix optimization&lt;/li&gt;
&lt;li&gt;Proprietary format — vendor lock-in risk&lt;/li&gt;
&lt;li&gt;Not suitable for users who need detailed, row-level data&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: molap_server Pages: 1 --&gt;
&lt;svg width=&quot;793pt&quot; height=&quot;69pt&quot; viewBox=&quot;0.00 0.00 793.00 69.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 64.8)&quot;&gt;
&lt;title&gt;molap_server&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-64.8 789.27,-64.8 789.27,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- warehouse --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;warehouse&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;108.32,-48.4 0,-48.4 0,-12.4 108.32,-12.4 108.32,-48.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;54.16&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;54.16&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Relational Tables)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- precalc --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;precalc&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;292.4,-54.2 144.32,-54.2 144.32,-6.6 292.4,-6.6 292.4,-54.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;218.36&quot; y=&quot;-40.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Pre-Computation&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;218.36&quot; y=&quot;-27.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Proprietary Software&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;218.36&quot; y=&quot;-13.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Calculates all aggregations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- warehouse&amp;#45;&amp;gt;precalc --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;warehouse-&gt;precalc&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M108.72,-30.4C116.37,-30.4 124.39,-30.4 132.47,-30.4&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;132.37,-33.9 142.37,-30.4 132.37,-26.9 132.37,-33.9&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- mddb --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;mddb&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;483.79,-60.8 328.4,-60.8 328.4,0 483.79,0 483.79,-60.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;406.1&quot; y=&quot;-46.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MDDB&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;406.1&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Multidimensional Database)&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;406.1&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Pre-calculated Cubes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;406.1&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sparse Matrix Storage&lt;/text&gt;
&lt;/g&gt;
&lt;!-- precalc&amp;#45;&amp;gt;mddb --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;precalc-&gt;mddb&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M292.77,-30.4C300.62,-30.4 308.68,-30.4 316.68,-30.4&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;316.44,-33.9 326.44,-30.4 316.44,-26.9 316.44,-33.9&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- engine --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;engine&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;640.33,-54.2 519.79,-54.2 519.79,-6.6 640.33,-6.6 640.33,-54.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;580.06&quot; y=&quot;-40.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MOLAP Engine&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;580.06&quot; y=&quot;-27.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Direct Cube Retrieval&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;580.06&quot; y=&quot;-13.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;No SQL Needed&lt;/text&gt;
&lt;/g&gt;
&lt;!-- mddb&amp;#45;&amp;gt;engine --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;mddb-&gt;engine&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M484.28,-30.4C492.2,-30.4 500.22,-30.4 508.06,-30.4&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;507.89,-33.9 517.89,-30.4 507.89,-26.9 507.89,-33.9&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- user --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;user&lt;/title&gt;
&lt;polygon fill=&quot;#e8e8e8&quot; stroke=&quot;black&quot; points=&quot;785.27,-48.4 676.33,-48.4 676.33,-12.4 785.27,-12.4 785.27,-48.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;730.8&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;User&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;730.8&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Instant Response)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- engine&amp;#45;&amp;gt;user --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;engine-&gt;user&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M640.7,-30.4C648.52,-30.4 656.57,-30.4 664.48,-30.4&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;664.41,-33.9 674.41,-30.4 664.41,-26.9 664.41,-33.9&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_molap Pages: 1 --&gt;
&lt;svg width=&quot;272pt&quot; height=&quot;200pt&quot; viewBox=&quot;0.00 0.00 272.00 200.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 195.89)&quot;&gt;
&lt;title&gt;semantic_molap&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-195.89 267.93,-195.89 267.93,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;133.24&quot; cy=&quot;-92.7&quot; rx=&quot;68.47&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;133.24&quot; y=&quot;-88.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;MOLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_SRV --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_SRV&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;185.1&quot; cy=&quot;-30.16&quot; rx=&quot;53.39&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;185.1&quot; y=&quot;-26.86&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Servers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_SRV --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_SRV&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M147.96,-74.95C155.03,-66.42 163.48,-56.24 170.52,-47.74&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;140.74&quot; y=&quot;-64.04&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CUBE --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CUBE&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;89.49&quot; cy=&quot;-24.32&quot; rx=&quot;69.24&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;89.49&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multidimensional&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;89.49&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Model&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CUBE --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CUBE&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M121.75,-74.74C116.58,-66.67 110.41,-57.02 104.85,-48.34&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.79&quot; y=&quot;-64.24&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ROLAP --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ROLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;54.9&quot; cy=&quot;-114.05&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;54.9&quot; y=&quot;-110.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ROLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ROLAP --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ROLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M84.97,-105.86C84.84,-105.89 84.71,-105.92 84.59,-105.96&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;112.29&quot; y=&quot;-108.61&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;contrasts with&lt;/text&gt;
&lt;/g&gt;
&lt;!-- HOLAP --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;HOLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;209.03&quot; cy=&quot;-122.16&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;209.03&quot; y=&quot;-118.86&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;HOLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;HOLAP --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--HOLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M172.02,-107.78C172.46,-107.95 172.9,-108.12 173.34,-108.29&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;158.92&quot; y=&quot;-110.73&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_OPS --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_OPS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;129.41&quot; cy=&quot;-173.89&quot; rx=&quot;63.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;129.41&quot; y=&quot;-170.59&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Operations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_OPS --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_OPS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M132.37,-111.13C131.75,-124.41 130.9,-142.27 130.28,-155.54&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;111.06&quot; y=&quot;-136.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Pre-calculated cubes:&lt;/strong&gt; All aggregations computed during load, not at query time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MDDB storage:&lt;/strong&gt; Proprietary multidimensional arrays, not relational tables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sparse matrix technology:&lt;/strong&gt; Efficiently stores mostly-empty cubes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instant response:&lt;/strong&gt; No SQL generation or computation at query time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Limited detail:&lt;/strong&gt; Stores summaries, not detailed transactional data&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../olap-servers&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-servers&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Servers&lt;/a&gt; — MOLAP is one of four server types&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — MOLAP implements the model directly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../rolap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;rolap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ROLAP Server&lt;/a&gt; — MOLAP pre-computes; ROLAP computes dynamically&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../holap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;holap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;HOLAP Server&lt;/a&gt; — HOLAP combines MOLAP aggregations with ROLAP detail&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-operations&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-operations&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Operations&lt;/a&gt; — MOLAP serves pre-computed results for all operations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../dwh-scale&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-scale&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Scale&lt;/a&gt; — MOLAP is limited by storage costs for large datasets&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Storage explosion:&lt;/strong&gt; Pre-computing all possible aggregations for many dimensions creates enormous storage requirements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Refresh latency:&lt;/strong&gt; When warehouse data is refreshed, MOLAP cubes must be re-computed — this can take hours.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vendor lock-in:&lt;/strong&gt; MDDB formats are proprietary — migrating data between MOLAP vendors requires re-extraction and re-computation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No detailed data:&lt;/strong&gt; MOLAP cannot answer “show me all individual transactions” — it only stores aggregated data.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>multidimensional-data-model</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/multidimensional-data-model" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/multidimensional-data-model.md" />
    <summary>The Problem In a flat relational table, data is organized in rows and columns — a 2D structure.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;In a flat relational table, data is organized in rows and columns — a 2D structure. When a manager asks “What were the sales of Biscuits in Chennai during Q3?”, the query must filter across three attributes simultaneously. As the number of analysis dimensions increases, flat tables require increasingly complex GROUP BY and JOIN operations that become slow and hard to understand.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The &lt;strong&gt;multidimensional data model&lt;/strong&gt; organizes data around a central theme (represented by a &lt;strong&gt;fact table&lt;/strong&gt;) with multiple &lt;strong&gt;dimensions&lt;/strong&gt; (entities the business tracks, like Time, Item, Location). Data is stored in the form of a &lt;strong&gt;data cube&lt;/strong&gt;, where each cell at the intersection of dimension values contains a &lt;strong&gt;numerical measure&lt;/strong&gt; (fact). This enables intuitive, multi-angle analysis of business data.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The model has two fundamental building blocks:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Dimensions:&lt;/strong&gt; Business entities along which analysis is performed — Time (Q1, Q2, Q3, Q4), Item (Egg, Milk, Biscuit), Location (Chennai, Delhi, Mumbai). Each dimension has a related dimension table describing its attributes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Facts (Measures):&lt;/strong&gt; Numerical values at the intersection of dimensions — e.g., 340 units of Eggs sold in Chennai in Q1. The fact table contains these measures along with foreign keys to each dimension.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;From Flat to Cube:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;A flat fact relation: &lt;code class=&quot;notranslate&quot;&gt;(p1, c1, 12)&lt;/code&gt; — product 1, client 1, amount 12&lt;/li&gt;
&lt;li&gt;A 2D cube (matrix): rows = Product, columns = Client, cell values = Amount&lt;/li&gt;
&lt;li&gt;A 3D cube: add Date as a third dimension — each date gets its own 2D matrix, stacked to form a cube&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;SQL Mapping:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;SELECT sum(Amt) FROM SALE WHERE Date = 1&lt;/code&gt; corresponds to taking one 2D slice of the 3D cube (Day 1) and summing all values.&lt;/li&gt;
&lt;li&gt;Each WHERE clause selects a slice; each GROUP BY rolls up along a dimension.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: multidimensional_model Pages: 1 --&gt;
&lt;svg width=&quot;474pt&quot; height=&quot;303pt&quot; viewBox=&quot;0.00 0.00 474.00 303.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 299.2)&quot;&gt;
&lt;title&gt;multidimensional_model&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-299.2 470,-299.2 470,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_dimensions&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;58,-210.4 58,-287.2 437,-287.2 437,-210.4 58,-210.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;247.5&quot; y=&quot;-270.6&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Dimensions (Axes)&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_measures&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-84.8 458,-84.8 458,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;233&quot; y=&quot;-68.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Facts (Measures)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- time --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;time&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;159.52,-254.4 66.48,-254.4 66.48,-218.4 159.52,-218.4 159.52,-254.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;113&quot; y=&quot;-239.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Time&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;113&quot; y=&quot;-226.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Q1, Q2, Q3, Q4&lt;/text&gt;
&lt;/g&gt;
&lt;!-- cube --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;cube&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;302.41,-170.4 155.59,-170.4 151.59,-166.4 151.59,-122.8 298.41,-122.8 302.41,-126.8 302.41,-170.4&quot;&gt;&lt;/polygon&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;298.41,-166.4 151.59,-166.4&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;298.41,-166.4 298.41,-122.8&quot;&gt;&lt;/polyline&gt;
&lt;polyline fill=&quot;none&quot; stroke=&quot;black&quot; points=&quot;298.41,-166.4 302.41,-170.4&quot;&gt;&lt;/polyline&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;227&quot; y=&quot;-156.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Cube&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;227&quot; y=&quot;-143.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;3D: Time × Item × Location&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;227&quot; y=&quot;-130.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Cell values = Sales Amount&lt;/text&gt;
&lt;/g&gt;
&lt;!-- time&amp;#45;&amp;gt;cube --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;time-&gt;cube&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M135.52,-218.05C150.44,-206.56 170.41,-191.18 187.88,-177.73&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;189.77,-180.69 195.55,-171.82 185.49,-175.15 189.77,-180.69&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;183.98&quot; y=&quot;-191.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;axes&lt;/text&gt;
&lt;/g&gt;
&lt;!-- item --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;item&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;276.87,-254.4 177.13,-254.4 177.13,-218.4 276.87,-218.4 276.87,-254.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;227&quot; y=&quot;-239.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Item&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;227&quot; y=&quot;-226.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Egg, Milk, Biscuit&lt;/text&gt;
&lt;/g&gt;
&lt;!-- item&amp;#45;&amp;gt;cube --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;item-&gt;cube&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M227,-218.05C227,-207.83 227,-194.52 227,-182.23&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;230.5,-182.41 227,-172.41 223.5,-182.41 230.5,-182.41&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;237.56&quot; y=&quot;-191.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;axes&lt;/text&gt;
&lt;/g&gt;
&lt;!-- loc --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;loc&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;428.7,-254.4 295.3,-254.4 295.3,-218.4 428.7,-218.4 428.7,-254.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;362&quot; y=&quot;-239.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Location&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;362&quot; y=&quot;-226.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Chennai, Delhi, Mumbai&lt;/text&gt;
&lt;/g&gt;
&lt;!-- loc&amp;#45;&amp;gt;cube --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;loc-&gt;cube&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M335.33,-218.05C317.42,-206.4 293.36,-190.76 272.47,-177.17&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;274.38,-174.24 264.09,-171.72 270.56,-180.11 274.38,-174.24&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;317.15&quot; y=&quot;-191.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;axes&lt;/text&gt;
&lt;/g&gt;
&lt;!-- m1 --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;m1&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;150.17,-52 15.83,-52 15.83,-16 150.17,-16 150.17,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;83&quot; y=&quot;-30.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Chennai, Q1, Egg = 340&lt;/text&gt;
&lt;/g&gt;
&lt;!-- cube&amp;#45;&amp;gt;m1 --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;cube-&gt;m1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M196.81,-122.41C172.68,-103.88 138.96,-77.98 114.49,-59.18&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;116.87,-56.6 106.8,-53.28 112.6,-62.15 116.87,-56.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;195.48&quot; y=&quot;-95.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;cell values&lt;/text&gt;
&lt;/g&gt;
&lt;!-- m2 --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;m2&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;286.2,-52 167.8,-52 167.8,-16 286.2,-16 286.2,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;227&quot; y=&quot;-30.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Delhi, Q2, Milk = 520&lt;/text&gt;
&lt;/g&gt;
&lt;!-- cube&amp;#45;&amp;gt;m2 --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;cube-&gt;m2&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M227,-122.41C227,-105.35 227,-82.04 227,-63.78&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;230.5,-63.87 227,-53.87 223.5,-63.87 230.5,-63.87&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;250.34&quot; y=&quot;-95.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;cell values&lt;/text&gt;
&lt;/g&gt;
&lt;!-- m3 --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;m3&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;449.65,-52 304.35,-52 304.35,-16 449.65,-16 449.65,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;377&quot; y=&quot;-30.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Mumbai, Q3, Biscuit = 180&lt;/text&gt;
&lt;/g&gt;
&lt;!-- cube&amp;#45;&amp;gt;m3 --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;cube-&gt;m3&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M258.44,-122.41C283.58,-103.88 318.71,-77.98 344.2,-59.18&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;346.27,-62.01 352.24,-53.26 342.11,-56.38 346.27,-62.01&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;320.85&quot; y=&quot;-95.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;cell values&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_multidimensional Pages: 1 --&gt;
&lt;svg width=&quot;286pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 286.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 189.56)&quot;&gt;
&lt;title&gt;semantic_multidimensional&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-189.56 282.32,-189.56 282.32,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;139.3&quot; cy=&quot;-86.38&quot; rx=&quot;79.78&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;139.3&quot; y=&quot;-90.28&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Multidimensional&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;139.3&quot; y=&quot;-74.68&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Data Model&lt;/text&gt;
&lt;/g&gt;
&lt;!-- STAR --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;STAR&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;191.16&quot; cy=&quot;-23.83&quot; rx=&quot;49.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;191.16&quot; y=&quot;-20.53&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;STAR --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--STAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M161.59,-59.49C166.65,-53.4 171.89,-47.08 176.53,-41.48&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;148.8&quot; y=&quot;-42.39&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- FACT --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;FACT&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;95.54&quot; cy=&quot;-18&quot; rx=&quot;42.05&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;95.54&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Fact Table&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;FACT --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--FACT&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M121.75,-58.96C116.71,-51.08 111.35,-42.71 106.8,-35.6&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.02&quot; y=&quot;-49.98&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DIM --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DIM&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;60.96&quot; cy=&quot;-107.72&quot; rx=&quot;60.96&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60.96&quot; y=&quot;-104.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Dimension Table&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DIM --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DIM&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M76.06,-103.61C75.93,-103.65 75.79,-103.68 75.65,-103.72&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;55.59&quot; y=&quot;-106.36&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_OPS --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_OPS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;215.09&quot; cy=&quot;-115.84&quot; rx=&quot;63.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;215.09&quot; y=&quot;-112.54&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Operations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_OPS --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_OPS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M192.76,-107.16C192.86,-107.2 192.96,-107.23 193.05,-107.27&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;213.17&quot; y=&quot;-109.91&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_SRV --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_SRV&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;135.47&quot; cy=&quot;-167.56&quot; rx=&quot;53.39&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.47&quot; y=&quot;-164.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Servers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_SRV --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_SRV&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M137.98,-114.32C137.44,-125.88 136.82,-138.96 136.33,-149.26&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;116.89&quot; y=&quot;-134.49&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Two building blocks:&lt;/strong&gt; Facts (numerical measures) and Dimensions (analysis axes)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data cube representation:&lt;/strong&gt; Data arranged in N-dimensional space (typically 2D or 3D)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Central theme:&lt;/strong&gt; All dimensions relate to a single business process (e.g., sales)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL mapping:&lt;/strong&gt; WHERE = slice, GROUP BY = roll-up, SUM/AVG = aggregation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Beyond 3D:&lt;/strong&gt; Hypercubes (4D, 5D) exist logically but are hard to visualize&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — the relational implementation of the multidimensional model&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/fact-table&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/fact-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Table&lt;/a&gt; — facts are the measures in the cube&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/dimension-table&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/dimension-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Dimension Table&lt;/a&gt; — dimensions are the axes of the cube&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-operations&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-operations&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Operations&lt;/a&gt; — operations manipulate the cube (slice, dice, roll-up, drill-down)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-servers&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-servers&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Servers&lt;/a&gt; — servers implement the multidimensional model&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../dwh-scale&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-scale&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Scale&lt;/a&gt; — cube size grows with dimension cardinality&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Data sparsity:&lt;/strong&gt; Most cells in a high-dimensional cube are empty (null). A city may not sell a particular product on a particular day. This wastes storage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dimension explosion:&lt;/strong&gt; Adding more dimensions exponentially increases the number of cells. A cube with 5 dimensions of cardinality 100 each has 10 billion cells.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visualization limit:&lt;/strong&gt; Humans can visualize up to 3 dimensions easily. Beyond that, the model is mathematical but not intuitive.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cube vs. table:&lt;/strong&gt; The multidimensional model is a conceptual model; it is implemented using star/snowflake schemas in relational databases.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>nonvolatile-dwh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/nonvolatile-dwh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/nonvolatile-dwh.md" />
    <summary>The Problem In an operational database, multiple users simultaneously insert, update, and delete records.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;In an operational database, multiple users simultaneously insert, update, and delete records. This requires complex concurrency control (locking, deadlocks), transaction management (ACID properties, rollback), and recovery mechanisms (WAL logs, checkpoints). When analytical queries scan millions of rows, they lock tables and slow down live transactions. Running analysis on the same database that handles daily operations creates resource contention and performance degradation for both workloads.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A &lt;strong&gt;nonvolatile&lt;/strong&gt; data warehouse is a physically separate store of data where, once data is loaded, it is &lt;strong&gt;never updated or deleted&lt;/strong&gt;. The only two operations permitted are &lt;strong&gt;initial loading&lt;/strong&gt; (and periodic refresh) and &lt;strong&gt;querying (read access)&lt;/strong&gt;. This fundamental design eliminates the need for transaction processing, concurrency control, and recovery mechanisms, allowing the warehouse to focus entirely on optimizing read performance.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Nonvolatility is enforced at multiple levels:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Physical separation:&lt;/strong&gt; The warehouse runs on separate hardware/infrastructure from operational systems. There is no shared database, no shared locks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Insert-and-read only:&lt;/strong&gt; Data enters the warehouse through the ETL pipeline. Once loaded, it is never modified in place. If a source record changes, the warehouse appends a new version with a new timestamp rather than updating the old record.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No transaction processing:&lt;/strong&gt; Since there are no concurrent writes, the warehouse does not need locking, deadlock detection, or rollback mechanisms. This simplifies the architecture significantly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No concurrency control:&lt;/strong&gt; Read-only access means multiple users can query simultaneously without conflict. No row-level or table-level locks are needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Periodic refresh instead of real-time updates:&lt;/strong&gt; Changes from source systems are propagated to the warehouse on a scheduled basis (nightly, weekly) through the ETL refresh process. The warehouse is a snapshot in time, not a live mirror.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;The tradeoff is clear: you lose real-time accuracy but gain massive analytical performance and architectural simplicity.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: nonvolatile Pages: 1 --&gt;
&lt;svg width=&quot;614pt&quot; height=&quot;125pt&quot; viewBox=&quot;0.00 0.00 614.00 125.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 121)&quot;&gt;
&lt;title&gt;nonvolatile&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-121 609.75,-121 609.75,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_oltp&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-14 8,-103 179.97,-103 179.97,-14 8,-14&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.99&quot; y=&quot;-86.4&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;OLTP (Volatile)&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_dwh&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;447.75,-8 447.75,-109 597.75,-109 597.75,-8 447.75,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;522.75&quot; y=&quot;-92.4&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;DWH (Nonvolatile)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- oltp --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;oltp&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;171.97,-69.8 16,-69.8 16,-22.2 171.97,-22.2 171.97,-69.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.99&quot; y=&quot;-55.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;INSERT, UPDATE, DELETE&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.99&quot; y=&quot;-42.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Locking, Concurrency&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.99&quot; y=&quot;-29.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Rollback, Recovery&lt;/text&gt;
&lt;/g&gt;
&lt;!-- etl --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;etl&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;317.46,-64 239.09,-64 239.09,-28 317.46,-28 317.46,-64&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;278.27&quot; y=&quot;-49.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;278.27&quot; y=&quot;-36.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Insert Only)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- oltp&amp;#45;&amp;gt;etl --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;oltp-&gt;etl&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M172.29,-46C190.9,-46 210.29,-46 227.28,-46&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;227.09,-49.5 237.09,-46 227.09,-42.5 227.09,-49.5&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;205.53&quot; y=&quot;-49&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;Extract&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dwh&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;589.75,-76.4 455.75,-76.4 455.75,-15.6 589.75,-15.6 589.75,-76.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;522.75&quot; y=&quot;-62.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;LOAD + QUERY ONLY&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;522.75&quot; y=&quot;-49.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;No Locking&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;522.75&quot; y=&quot;-36.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;No Concurrency Control&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;522.75&quot; y=&quot;-22.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;No Rollback&lt;/text&gt;
&lt;/g&gt;
&lt;!-- etl&amp;#45;&amp;gt;dwh --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;etl-&gt;dwh&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M317.69,-46C351.58,-46 401.99,-46 444.23,-46&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;444.11,-49.5 454.11,-46 444.11,-42.5 444.11,-49.5&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;386.61&quot; y=&quot;-49&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;Append (never update)&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_nonvolatile Pages: 1 --&gt;
&lt;svg width=&quot;278pt&quot; height=&quot;200pt&quot; viewBox=&quot;0.00 0.00 278.00 200.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 196.38)&quot;&gt;
&lt;title&gt;semantic_nonvolatile&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-196.38 273.61,-196.38 273.61,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;141.95&quot; cy=&quot;-86.87&quot; rx=&quot;56.79&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;141.95&quot; y=&quot;-90.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Nonvolatile&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;141.95&quot; y=&quot;-75.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;193.81&quot; cy=&quot;-24.32&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;193.81&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;193.81&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M163.34,-61.07C166.92,-56.76 170.61,-52.31 174.13,-48.06&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;187.24&quot; y=&quot;-57.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- TIME_VAR --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;TIME_VAR&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;98.19&quot; cy=&quot;-18.49&quot; rx=&quot;66.99&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;98.19&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Time-Variant DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;TIME_VAR --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--TIME_VAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M124.91,-60.24C119.82,-52.29 114.37,-43.76 109.72,-36.51&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;103.56&quot; y=&quot;-51.07&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLTP --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLTP&lt;/title&gt;
&lt;ellipse fill=&quot;#ffe5cc&quot; stroke=&quot;black&quot; cx=&quot;63.61&quot; cy=&quot;-108.22&quot; rx=&quot;63.61&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;63.61&quot; y=&quot;-111.52&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLTP Systems&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;63.61&quot; y=&quot;-98.32&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Full CRUD)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLTP --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLTP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M91.89,-100.51C91.77,-100.54 91.65,-100.57 91.53,-100.61&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;64.2&quot; y=&quot;-103.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;contrasts with&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REFRESH --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REFRESH&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;217.74&quot; cy=&quot;-116.33&quot; rx=&quot;51.87&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;217.74&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Refresh&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REFRESH --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REFRESH&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M186.91,-104.35C187.04,-104.4 187.17,-104.45 187.3,-104.5&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;197.24&quot; y=&quot;-96.32&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ARCH --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ARCH&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;138.12&quot; cy=&quot;-168.06&quot; rx=&quot;73.55&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;138.12&quot; y=&quot;-171.36&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Three-Tier&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;138.12&quot; y=&quot;-158.16&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ARCH --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ARCH&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M140.63,-114.81C140.2,-124.08 139.71,-134.32 139.29,-143.32&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;150.09&quot; y=&quot;-120.97&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Read-only after load:&lt;/strong&gt; No UPDATE or DELETE operations on warehouse data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Physical separation:&lt;/strong&gt; Separate infrastructure from operational systems&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No concurrency control:&lt;/strong&gt; Multiple simultaneous reads without locking&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No transaction overhead:&lt;/strong&gt; No ACID requirements, no rollback, no recovery mechanisms&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Append-based growth:&lt;/strong&gt; New data is appended; historical data is preserved&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Periodic refresh:&lt;/strong&gt; Updates come through scheduled ETL cycles, not real-time&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — fourth of Inmon’s four characteristics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../time-variant-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;time-variant-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Time-Variant&lt;/a&gt; — nonvolatility preserves the historical record&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — OLTP requires full CRUD + concurrency control; OLAP is read-only&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../dwh-refresh&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-refresh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Refresh&lt;/a&gt; — the only mechanism for updating warehouse data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — nonvolatility is enforced at the bottom tier&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — ETL is the sole mechanism for data entry&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Nonvolatile ≠ static:&lt;/strong&gt; Data is refreshed periodically. “Nonvolatile” means no in-place updates, not that data never changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Correcting errors is hard:&lt;/strong&gt; If bad data was loaded, you cannot simply UPDATE it. You must either append a corrected record or reload the entire batch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage cost:&lt;/strong&gt; Since data is never deleted, the warehouse grows indefinitely. Archival policies (moving old data to cheaper storage) are essential.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Not suitable for operational queries:&lt;/strong&gt; By design, the warehouse cannot answer “what is the current state?” questions — only “what was the state at time X?”&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>olap-operations</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/olap-operations" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/olap-operations.md" />
    <summary>The Problem A 3D or 4D data cube contains millions of cells of multidimensional data.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A 3D or 4D data cube contains millions of cells of multidimensional data. A manager does not want to see the entire cube — they want specific views: “Show me Q1 sales only” (filter), “Show me sales by country instead of city” (aggregate), “Show me monthly breakdown instead of quarterly” (detail), “Swap rows and columns to see patterns from a different angle” (rearrange). Without standardized operations, each of these would require custom SQL queries.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;OLAP Operations&lt;/strong&gt; are five standard analytical functions that dynamically manipulate a multidimensional data cube: &lt;strong&gt;Roll-up&lt;/strong&gt; (aggregate by climbing a hierarchy), &lt;strong&gt;Drill-down&lt;/strong&gt; (detail by descending a hierarchy), &lt;strong&gt;Slice&lt;/strong&gt; (filter on one dimension), &lt;strong&gt;Dice&lt;/strong&gt; (filter on multiple dimensions), and &lt;strong&gt;Pivot&lt;/strong&gt; (rotate axes for alternative views).&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Roll-up (Aggregation / Consolidation):&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Mechanism:&lt;/strong&gt; Climbs &lt;strong&gt;up&lt;/strong&gt; a concept hierarchy for a dimension, or removes a dimension entirely.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Example:&lt;/strong&gt; City-level data (Vancouver, Toronto, Chicago, New York) → Country-level data (Canada, USA).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Result:&lt;/strong&gt; Less detail, more summary. Dimension count may decrease.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hierarchy:&lt;/strong&gt; Street → City → Province → Country (climbing upward).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Drill-down (Detailing):&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Mechanism:&lt;/strong&gt; Steps &lt;strong&gt;down&lt;/strong&gt; a concept hierarchy, or introduces a new dimension.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Example:&lt;/strong&gt; Quarter-level data (Q1) → Month-level data (Jan, Feb, Mar).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Result:&lt;/strong&gt; More detail, less summary. Dimension count may increase.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hierarchy:&lt;/strong&gt; Day → Month → Quarter → Year (stepping downward).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Slice:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Mechanism:&lt;/strong&gt; Selects one particular dimension value, producing a 2D sub-cube from a 3D cube.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;code class=&quot;notranslate&quot;&gt;Time = &quot;Q1&quot;&lt;/code&gt; — extracts the Q1 slice from the full cube.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Result:&lt;/strong&gt; A 2D plane (single condition filter).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Dice:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Mechanism:&lt;/strong&gt; Selects values across two or more dimensions, producing a smaller 3D sub-cube.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;code class=&quot;notranslate&quot;&gt;(Location = &quot;Toronto&quot; OR &quot;Vancouver&quot;) AND (Time = &quot;Q1&quot; OR &quot;Q2&quot;) AND (Item = &quot;Mobile&quot; OR &quot;Modem&quot;)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Result:&lt;/strong&gt; A smaller 3D box (multi-condition filter).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Pivot (Rotate):&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Mechanism:&lt;/strong&gt; Rotates the data axes — rows become columns, columns become rows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Example:&lt;/strong&gt; Swap “Item” from rows to columns axis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Result:&lt;/strong&gt; Same data, different visual presentation. No data is summarized or filtered.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: olap_operations Pages: 1 --&gt;
&lt;svg width=&quot;530pt&quot; height=&quot;148pt&quot; viewBox=&quot;0.00 0.00 530.00 148.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 144.4)&quot;&gt;
&lt;title&gt;olap_operations&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-144.4 526,-144.4 526,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_ops&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-96.4 514,-96.4 514,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;261&quot; y=&quot;-79.8&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;OLAP Operations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- cube --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;cube&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;340.6,-140.4 205.4,-140.4 205.4,-104.4 340.6,-104.4 340.6,-140.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;273&quot; y=&quot;-125.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Full 3D Data Cube&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;273&quot; y=&quot;-112.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Time × Item × Location)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- rollup --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;rollup&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;104.37,-63.6 15.63,-63.6 15.63,-16 104.37,-16 104.37,-63.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Roll-up&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;City → Country&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;60&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Climb up)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- cube&amp;#45;&amp;gt;rollup --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;cube-&gt;rollup&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M204.96,-120.47C175.32,-117.67 141.02,-111.07 113,-96.4 101.99,-90.64 91.97,-81.7 83.68,-72.66&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;86.45,-70.51 77.27,-65.22 81.14,-75.08 86.45,-70.51&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- drill --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;drill&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;221.57,-63.6 122.43,-63.6 122.43,-16 221.57,-16 221.57,-63.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;172&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Drill-down&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;172&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Quarter → Month&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;172&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Step down)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- cube&amp;#45;&amp;gt;drill --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;cube-&gt;drill&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M240.98,-103.93C237.19,-101.53 233.45,-99 230,-96.4 220.29,-89.09 210.47,-80.31 201.74,-71.91&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;204.4,-69.62 194.82,-65.1 199.49,-74.61 204.4,-69.62&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- slice --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;slice&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;306.83,-63.6 239.17,-63.6 239.17,-16 306.83,-16 306.83,-63.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;273&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Slice&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;273&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Time = Q1&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;273&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(2D plane)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- cube&amp;#45;&amp;gt;slice --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;cube-&gt;slice&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M273,-103.91C273,-95.53 273,-85.17 273,-75.3&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;276.5,-75.58 273,-65.58 269.5,-75.58 276.5,-75.58&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- dice --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dice&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;411.46,-63.6 324.54,-63.6 324.54,-16 411.46,-16 411.46,-63.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;368&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Dice&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;368&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multi-condition&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;368&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Sub-cube)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- cube&amp;#45;&amp;gt;dice --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;cube-&gt;dice&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M305.16,-104.11C308.92,-101.68 312.62,-99.09 316,-96.4 324.9,-89.31 333.69,-80.7 341.45,-72.39&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;343.98,-74.81 348.1,-65.05 338.79,-70.11 343.98,-74.81&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- pivot --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;pivot&lt;/title&gt;
&lt;polygon fill=&quot;#ffe5cc&quot; stroke=&quot;black&quot; points=&quot;506.26,-63.6 429.74,-63.6 429.74,-16 506.26,-16 506.26,-63.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;468&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Pivot&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;468&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Rotate axes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;468&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Same data)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- cube&amp;#45;&amp;gt;pivot --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;cube-&gt;pivot&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M341.02,-119.55C367.06,-116.42 396.21,-109.82 420,-96.4 430.25,-90.62 439.34,-81.79 446.78,-72.85&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;449.37,-75.23 452.73,-65.18 443.84,-70.94 449.37,-75.23&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_olap_ops Pages: 1 --&gt;
&lt;svg width=&quot;270pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 270.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_olap_ops&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 266.42,-190.06 266.42,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;131.73&quot; cy=&quot;-86.87&quot; rx=&quot;56.28&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131.73&quot; y=&quot;-90.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;OLAP&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;131.73&quot; y=&quot;-75.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Operations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CUBE --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CUBE&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;183.59&quot; cy=&quot;-24.32&quot; rx=&quot;69.24&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;183.59&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multidimensional&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;183.59&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Model&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CUBE --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CUBE&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M153.12,-61.07C156.7,-56.76 160.39,-52.31 163.91,-48.06&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;177.02&quot; y=&quot;-57.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- TIME_VAR --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;TIME_VAR&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;87.97&quot; cy=&quot;-18.49&quot; rx=&quot;66.99&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;87.97&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Time-Variant DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;TIME_VAR --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--TIME_VAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M114.69,-60.24C109.6,-52.29 104.15,-43.76 99.5,-36.51&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;88.59&quot; y=&quot;-51.07&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_SRV --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_SRV&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;53.39&quot; cy=&quot;-108.22&quot; rx=&quot;53.39&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;53.39&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Servers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_SRV --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_SRV&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M82.12,-100.39C82,-100.42 81.87,-100.45 81.75,-100.49&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;61.67&quot; y=&quot;-103.14&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ROLAP --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ROLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;207.52&quot; cy=&quot;-116.33&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;207.52&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ROLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ROLAP --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ROLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M176.26,-104.18C176.38,-104.23 176.51,-104.28 176.64,-104.33&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;196.71&quot; y=&quot;-96.15&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- MOLAP --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;MOLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;127.9&quot; cy=&quot;-168.06&quot; rx=&quot;55.66&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;127.9&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MOLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;MOLAP --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--MOLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M130.41,-114.81C129.87,-126.37 129.25,-139.45 128.76,-149.75&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;109.32&quot; y=&quot;-134.98&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Five operations:&lt;/strong&gt; Roll-up, Drill-down, Slice, Dice, Pivot&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hierarchy-driven:&lt;/strong&gt; Roll-up and Drill-down operate on concept hierarchies&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interactive:&lt;/strong&gt; Managers can explore data dynamically without writing SQL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pre-computed speed:&lt;/strong&gt; Roll-ups are often pre-computed for millisecond response&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complementary:&lt;/strong&gt; Operations can be chained (slice → roll-up → pivot)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — operations manipulate the data cube&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../time-variant-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;time-variant-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Time-Variant DWH&lt;/a&gt; — time hierarchies enable roll-up and drill-down&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-servers&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-servers&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Servers&lt;/a&gt; — servers implement these operations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../rolap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;rolap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ROLAP Server&lt;/a&gt; — ROLAP implements operations via SQL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../molap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;molap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;MOLAP Server&lt;/a&gt; — MOLAP implements operations on pre-computed cubes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/fact-table&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/fact-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Table&lt;/a&gt; — facts are the values that operations aggregate and filter&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Roll-up ≠ Sum:&lt;/strong&gt; Roll-up can use different aggregation functions — SUM, AVG, COUNT, MIN, MAX — depending on the measure type.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slice vs. Dice distinction:&lt;/strong&gt; Slice = one dimension, one condition (2D result). Dice = multiple dimensions, multiple conditions (3D sub-cube result).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pivot does not change data:&lt;/strong&gt; Pivoting only rearranges the visual presentation. The underlying data values are unchanged.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drill-down requires detail:&lt;/strong&gt; You can only drill down if the warehouse stores data at the lower granularity level.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>ROLAP vs MOLAP vs HOLAP -- OLAP Server Comparison</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/olap-server-comparison" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/olap-server-comparison.md" />
    <summary>What’s Being Compared Three OLAP server architectures that implement the multidimensional data model differently — storing and processing data in relational tables (ROLAP), pre-computed multidimensional arrays (MOLAP), or a hybrid of both (HOLAP).</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;whats-being-compared&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;What’s Being Compared&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#whats-being-compared&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Three OLAP server architectures that implement the multidimensional data model differently — storing and processing data in relational tables (ROLAP), pre-computed multidimensional arrays (MOLAP), or a hybrid of both (HOLAP). The choice determines query speed, data volume capacity, storage cost, and vendor dependency.&lt;/p&gt;
&lt;h2 id=&quot;the-core-tension&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Core Tension&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-core-tension&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The fundamental tradeoff is &lt;strong&gt;computation timing&lt;/strong&gt; — when should aggregations be calculated? ROLAP computes at query time (slow but flexible), MOLAP computes at load time (fast but rigid), and HOLAP splits the difference (summary at load time, detail at query time).&lt;/p&gt;
&lt;h2 id=&quot;comparison&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Comparison&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#comparison&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;





















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Dimension&lt;/th&gt;&lt;th&gt;&lt;a href=&quot;../../rolap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;rolap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ROLAP&lt;/a&gt;&lt;/th&gt;&lt;th&gt;&lt;a href=&quot;../../molap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;molap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;MOLAP&lt;/a&gt;&lt;/th&gt;&lt;th&gt;&lt;a href=&quot;../../holap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;holap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;HOLAP&lt;/a&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Storage&lt;/td&gt;&lt;td&gt;Relational tables (rows/columns)&lt;/td&gt;&lt;td&gt;Proprietary MDDB (multidimensional arrays)&lt;/td&gt;&lt;td&gt;Both: ROLAP for detail, MOLAP for aggregations&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Computation timing&lt;/td&gt;&lt;td&gt;At query time (dynamic SQL)&lt;/td&gt;&lt;td&gt;At load time (pre-computed)&lt;/td&gt;&lt;td&gt;Aggregations pre-computed; detail at query time&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Query speed&lt;/td&gt;&lt;td&gt;Slow&lt;/td&gt;&lt;td&gt;Fastest&lt;/td&gt;&lt;td&gt;Fast for summaries, moderate for detail&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Data volume&lt;/td&gt;&lt;td&gt;Unlimited (terabytes+)&lt;/td&gt;&lt;td&gt;Limited (summaries only)&lt;/td&gt;&lt;td&gt;Large (detail in ROLAP)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Storage efficiency&lt;/td&gt;&lt;td&gt;High (no pre-computation overhead)&lt;/td&gt;&lt;td&gt;Low (sparse matrix waste)&lt;/td&gt;&lt;td&gt;Medium (only aggregations pre-computed)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Vendor lock-in&lt;/td&gt;&lt;td&gt;None (standard RDBMS)&lt;/td&gt;&lt;td&gt;High (proprietary format)&lt;/td&gt;&lt;td&gt;Moderate (MOLAP component is proprietary)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Best for&lt;/td&gt;&lt;td&gt;Large data, infrequent complex queries&lt;/td&gt;&lt;td&gt;Interactive dashboards, small datasets&lt;/td&gt;&lt;td&gt;Enterprise with mixed query patterns&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;when-to-choose-rolap&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;When to Choose ROLAP&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#when-to-choose-rolap&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Data volumes are very large (terabytes to petabytes)&lt;/li&gt;
&lt;li&gt;Existing RDBMS investment should be leveraged&lt;/li&gt;
&lt;li&gt;Query latency is acceptable (scheduled reports, not interactive dashboards)&lt;/li&gt;
&lt;li&gt;Vendor independence is important&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;when-to-choose-molap&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;When to Choose MOLAP&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#when-to-choose-molap&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Interactive, exploratory analysis is the primary use case&lt;/li&gt;
&lt;li&gt;Data volumes are manageable (gigabytes to low terabytes)&lt;/li&gt;
&lt;li&gt;Fast response time is critical&lt;/li&gt;
&lt;li&gt;Detailed transactional data is not needed in the OLAP layer&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;when-to-choose-holap&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;When to Choose HOLAP&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#when-to-choose-holap&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Both summary speed and detail access are required&lt;/li&gt;
&lt;li&gt;Data volumes exceed MOLAP capacity&lt;/li&gt;
&lt;li&gt;Users need both dashboard-style analysis and drill-through to detail&lt;/li&gt;
&lt;li&gt;Organization can manage the added configuration complexity&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-insight&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Insight&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-insight&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The ROLAP/MOLAP/HOLAP spectrum reveals that &lt;strong&gt;there is no universal optimal OLAP architecture&lt;/strong&gt; — the right choice depends on the query pattern distribution. If 80% of queries are summaries and 20% need detail, HOLAP’s split architecture is ideal. If 100% of queries are summaries on small data, MOLAP wins. If queries are unpredictable and data is massive, ROLAP is the only viable option. Modern cloud warehouses (BigQuery, Redshift, Snowflake) have essentially made ROLAP fast enough that MOLAP’s speed advantage is less critical than it once was.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: olap_server_comparison Pages: 1 --&gt;
&lt;svg width=&quot;637pt&quot; height=&quot;50pt&quot; viewBox=&quot;0.00 0.00 637.00 50.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 45.6)&quot;&gt;
&lt;title&gt;olap_server_comparison&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-45.6 632.77,-45.6 632.77,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- A --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;A&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;154.49,-41.6 0,-41.6 0,0 154.49,0 154.49,-41.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;77.24&quot; y=&quot;-25&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Olap Server Comparis&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;77.24&quot; y=&quot;-8.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Input&lt;/text&gt;
&lt;/g&gt;
&lt;!-- B --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;B&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;387.74,-41.6 233.25,-41.6 233.25,0 387.74,0 387.74,-41.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;310.5&quot; y=&quot;-25&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Olap Server Comparis&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;310.5&quot; y=&quot;-8.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Core Mechanism&lt;/text&gt;
&lt;/g&gt;
&lt;!-- A&amp;#45;&amp;gt;B --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;A-&gt;B&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M154.93,-20.8C176.31,-20.8 199.71,-20.8 221.68,-20.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;221.51,-24.3 231.51,-20.8 221.51,-17.3 221.51,-24.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;193.87&quot; y=&quot;-25&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;triggers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- C --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;C&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;628.77,-41.6 474.28,-41.6 474.28,0 628.77,0 628.77,-41.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;551.53&quot; y=&quot;-25&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Olap Server Comparis&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;551.53&quot; y=&quot;-8.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Output&lt;/text&gt;
&lt;/g&gt;
&lt;!-- B&amp;#45;&amp;gt;C --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;B-&gt;C&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M388.12,-20.8C411.81,-20.8 438.1,-20.8 462.5,-20.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;462.42,-24.3 472.42,-20.8 462.42,-17.3 462.42,-24.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;431.01&quot; y=&quot;-25&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;produces&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_olap_server_comparison Pages: 1 --&gt;
&lt;svg width=&quot;208pt&quot; height=&quot;170pt&quot; viewBox=&quot;0.00 0.00 208.00 170.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 165.63)&quot;&gt;
&lt;title&gt;semantic_olap_server_comparison&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-165.63 204.23,-165.63 204.23,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;95.74&quot; cy=&quot;-86.21&quot; rx=&quot;95.74&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;95.74&quot; y=&quot;-82.31&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Olap Server Comparis&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REL1 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REL1&lt;/title&gt;
&lt;ellipse fill=&quot;#f0f0f0&quot; stroke=&quot;black&quot; cx=&quot;139.64&quot; cy=&quot;-143.63&quot; rx=&quot;60.59&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;139.64&quot; y=&quot;-140.33&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Related Concept&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REL1 --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REL1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M109.63,-104.37C114.85,-111.21 120.79,-118.97 125.99,-125.77&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;98.77&quot; y=&quot;-119.27&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REL2 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REL2&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;71.78&quot; cy=&quot;-18&quot; rx=&quot;41.67&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;71.78&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Builds Into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REL2 --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REL2&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M89.32,-67.93C85.83,-57.98 81.53,-45.73 78.06,-35.86&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;113.44&quot; y=&quot;-39.29&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;a href=&quot;../../rolap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;rolap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ROLAP Server&lt;/a&gt; — relational, dynamic, scalable&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../molap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;molap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;MOLAP Server&lt;/a&gt; — pre-computed, fast, limited&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../holap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;holap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;HOLAP Server&lt;/a&gt; — hybrid, best of both&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../olap-servers&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-servers&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Servers&lt;/a&gt; — the overarching category&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — what all three implement&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../olap-operations&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-operations&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Operations&lt;/a&gt; — operations each server type executes&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>olap-servers</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/olap-servers" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/olap-servers.md" />
    <summary>The Problem The multidimensional data model defines how data should be organized conceptually, but it does not specify how to physically store and process it.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The multidimensional data model defines how data should be organized conceptually, but it does not specify how to physically store and process it. Should the data stay in relational tables and be converted to cubes on-the-fly? Should it be pre-calculated into proprietary multidimensional arrays? Should both approaches be combined? The choice of OLAP server architecture determines query speed, scalability, storage cost, and vendor dependency.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;OLAP Servers&lt;/strong&gt; are the middle-tier engines that provide multidimensional views of warehouse data to end users. There are four types: &lt;strong&gt;ROLAP&lt;/strong&gt; (uses relational tables, dynamically creates cubes via SQL), &lt;strong&gt;MOLAP&lt;/strong&gt; (stores pre-calculated data in proprietary multidimensional arrays), &lt;strong&gt;HOLAP&lt;/strong&gt; (combines ROLAP scalability with MOLAP speed), and &lt;strong&gt;Specialized SQL Servers&lt;/strong&gt; (optimized SQL engines for star/snowflake schemas).&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;1-rolap-relational-olap&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;1. ROLAP (Relational OLAP)&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#1-rolap-relational-olap&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Storage:&lt;/strong&gt; Data stays in standard relational tables (rows and columns).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Processing:&lt;/strong&gt; When a user requests a multidimensional view, the ROLAP engine generates complex SQL queries against the main warehouse and dynamically creates the cube.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata layer:&lt;/strong&gt; A semantic layer of metadata maps dimensions to relational tables and supports aggregation definitions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strengths:&lt;/strong&gt; Handles large data volumes efficiently; integrates with existing RDBMS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weaknesses:&lt;/strong&gt; Slow response time (dynamic SQL generation and execution); scalability limitations for very complex queries.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;2-molap-multidimensional-olap&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;2. MOLAP (Multidimensional OLAP)&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#2-molap-multidimensional-olap&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Storage:&lt;/strong&gt; Data is pre-calculated and stored in proprietary &lt;strong&gt;MDDBs&lt;/strong&gt; (Multidimensional Databases) — large arrays of data cubes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Processing:&lt;/strong&gt; The MOLAP engine resides in the application layer and serves pre-computed cube data directly to users. No SQL generation needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sparse matrix technology:&lt;/strong&gt; Manages data sparsity (empty cells) efficiently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strengths:&lt;/strong&gt; Lightning-fast response (data already calculated); simple interface for all user skill levels.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weaknesses:&lt;/strong&gt; Limited data volumes (cannot store detailed data); storage waste with sparse datasets; proprietary vendor lock-in.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-holap-hybrid-olap&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;3. HOLAP (Hybrid OLAP)&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#3-holap-hybrid-olap&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Storage:&lt;/strong&gt; Detailed data stored in ROLAP (relational tables); aggregations stored in MOLAP (pre-calculated cubes).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Processing:&lt;/strong&gt; Queries for summaries hit the fast MOLAP store; queries for detail go to the ROLAP store.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Strengths:&lt;/strong&gt; Best of both worlds — ROLAP scalability + MOLAP speed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;4-specialized-sql-servers&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;4. Specialized SQL Servers&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#4-specialized-sql-servers&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Purpose:&lt;/strong&gt; Provide advanced query language and processing support for SQL queries over star and snowflake schemas in read-only environments.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimization:&lt;/strong&gt; Query optimizer understands dimensional schema patterns and generates efficient execution plans.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: olap_servers Pages: 1 --&gt;
&lt;svg width=&quot;546pt&quot; height=&quot;218pt&quot; viewBox=&quot;0.00 0.00 546.00 218.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 213.6)&quot;&gt;
&lt;title&gt;olap_servers&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-213.6 542,-213.6 542,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_servers&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-64 8,-165.6 530,-165.6 530,-64 8,-64&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;269&quot; y=&quot;-149&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;OLAP Server Types&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dwh&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;325.16,-209.6 216.84,-209.6 216.84,-173.6 325.16,-173.6 325.16,-209.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;271&quot; y=&quot;-194.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;271&quot; y=&quot;-181.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Relational Tables)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- rolap --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;rolap&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;122.25,-132.8 15.75,-132.8 15.75,-72 122.25,-72 122.25,-132.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;69&quot; y=&quot;-118.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ROLAP&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;69&quot; y=&quot;-105.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Dynamic SQL&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;69&quot; y=&quot;-92.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Relational Storage&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;69&quot; y=&quot;-79.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Scalable but Slow&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;rolap --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;rolap&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M216.68,-188.55C189.66,-185.68 157.25,-179.33 131,-165.6 119.4,-159.53 108.61,-150.54 99.39,-141.27&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;102.15,-139.09 92.74,-134.21 97.05,-143.89 102.15,-139.09&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- molap --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;molap&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;259.97,-132.8 140.03,-132.8 140.03,-72 259.97,-72 259.97,-132.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;200&quot; y=&quot;-118.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MOLAP&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;200&quot; y=&quot;-105.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Pre-computed Cubes&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;200&quot; y=&quot;-92.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MDDB Storage&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;200&quot; y=&quot;-79.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Fast but Limited&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;molap --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;molap&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M256.97,-173.37C249.57,-164.29 240.18,-152.75 231.17,-141.68&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;234.05,-139.68 225.02,-134.13 228.62,-144.1 234.05,-139.68&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- holap --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;holap&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;406.25,-132.8 277.75,-132.8 277.75,-72 406.25,-72 406.25,-132.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;342&quot; y=&quot;-118.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;HOLAP&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;342&quot; y=&quot;-105.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Detail→ROLAP&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;342&quot; y=&quot;-92.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Aggregations→MOLAP&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;342&quot; y=&quot;-79.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Best of Both&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;holap --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;holap&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M285.03,-173.37C292.43,-164.29 301.82,-152.75 310.83,-141.68&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;313.38,-144.1 316.98,-134.13 307.95,-139.68 313.38,-144.1&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- sql --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;sql&lt;/title&gt;
&lt;polygon fill=&quot;#ffe5cc&quot; stroke=&quot;black&quot; points=&quot;521.66,-126.2 424.34,-126.2 424.34,-78.6 521.66,-78.6 521.66,-126.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;473&quot; y=&quot;-112.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Specialized SQL&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;473&quot; y=&quot;-99.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Optimized for&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;473&quot; y=&quot;-85.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star/Snowflake&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;sql --&gt;
&lt;g id=&quot;edge7&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;sql&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M325.34,-189.37C353.52,-186.76 387.66,-180.4 415,-165.6 428.52,-158.28 440.64,-146.62 450.27,-135.36&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;452.9,-137.67 456.47,-127.69 447.46,-133.26 452.9,-137.67&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- users --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;users&lt;/title&gt;
&lt;polygon fill=&quot;#e8e8e8&quot; stroke=&quot;black&quot; points=&quot;337.07,-36 204.93,-36 204.93,0 337.07,0 337.07,-36&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;271&quot; y=&quot;-21.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;End Users&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;271&quot; y=&quot;-8.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Multidimensional View)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- rolap&amp;#45;&amp;gt;users --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;rolap-&gt;users&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M115.78,-71.65C120.83,-68.9 125.97,-66.29 131,-64 151.28,-54.77 174.01,-46.61 195.16,-39.85&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;196.1,-43.22 204.61,-36.9 194.02,-36.54 196.1,-43.22&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- molap&amp;#45;&amp;gt;users --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;molap-&gt;users&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M225.63,-71.65C233.1,-62.99 241.2,-53.58 248.46,-45.16&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;251.08,-47.48 254.95,-37.62 245.78,-42.91 251.08,-47.48&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- holap&amp;#45;&amp;gt;users --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;holap-&gt;users&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M316.37,-71.65C308.9,-62.99 300.8,-53.58 293.54,-45.16&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;296.22,-42.91 287.05,-37.62 290.92,-47.48 296.22,-42.91&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- sql&amp;#45;&amp;gt;users --&gt;
&lt;g id=&quot;edge8&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;sql-&gt;users&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M440.46,-78.24C432.38,-73.11 423.57,-68.01 415,-64 394,-54.17 370.3,-45.75 348.28,-38.95&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;349.32,-35.61 338.73,-36.08 347.3,-42.31 349.32,-35.61&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_olap_servers Pages: 1 --&gt;
&lt;svg width=&quot;288pt&quot; height=&quot;209pt&quot; viewBox=&quot;0.00 0.00 288.00 209.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 205.07)&quot;&gt;
&lt;title&gt;semantic_olap_servers&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-205.07 283.74,-205.07 283.74,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;139.1&quot; cy=&quot;-100.51&quot; rx=&quot;65.61&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;139.1&quot; y=&quot;-96.61&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;OLAP Servers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CUBE --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CUBE&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;210.49&quot; cy=&quot;-59.01&quot; rx=&quot;69.24&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;210.49&quot; y=&quot;-62.31&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multidimensional&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;210.49&quot; y=&quot;-49.11&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Model&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CUBE --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CUBE&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M167.73,-83.87C169.9,-82.61 172.11,-81.32 174.32,-80.04&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;152.52&quot; y=&quot;-73.85&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_OPS --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_OPS&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;138.94&quot; cy=&quot;-18&quot; rx=&quot;63.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;138.94&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Operations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_OPS --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_OPS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M139.06,-82.2C139.04,-68.53 139,-49.92 138.97,-36.26&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;128.89&quot; y=&quot;-51.13&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THREE_TIER --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THREE_TIER&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;68.35&quot; cy=&quot;-142.96&quot; rx=&quot;68.35&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.35&quot; y=&quot;-146.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Three-Tier DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;68.35&quot; y=&quot;-133.06&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;THREE_TIER --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--THREE_TIER&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M111.55,-117.05C108.91,-118.63 106.21,-120.25 103.51,-121.87&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;127.79&quot; y=&quot;-122.16&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ROLAP --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ROLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;211.08&quot; cy=&quot;-141.05&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;211.08&quot; y=&quot;-137.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ROLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ROLAP --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ROLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M168.38,-117C173.2,-119.72 178.2,-122.53 182.99,-125.23&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;195.95&quot; y=&quot;-113.02&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- MOLAP --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;MOLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;140.54&quot; cy=&quot;-183.07&quot; rx=&quot;55.66&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;140.54&quot; y=&quot;-179.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MOLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;MOLAP --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--MOLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M139.42,-118.83C139.66,-132.52 139.98,-151.13 140.22,-164.8&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;160.08&quot; y=&quot;-144.52&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;67.32&quot; cy=&quot;-59.9&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67.32&quot; y=&quot;-56.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M109.9,-83.99C105.4,-81.45 100.75,-78.81 96.26,-76.27&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;89.32&quot; y=&quot;-82.83&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Four types:&lt;/strong&gt; ROLAP (relational), MOLAP (multidimensional), HOLAP (hybrid), Specialized SQL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Speed vs. scale trade-off:&lt;/strong&gt; MOLAP is fast but limited; ROLAP is scalable but slow&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pre-computation:&lt;/strong&gt; MOLAP pre-calculates cubes; ROLAP computes on demand&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata dependency:&lt;/strong&gt; ROLAP requires a metadata layer to map dimensions to tables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage patterns:&lt;/strong&gt; ROLAP uses relational tables; MOLAP uses sparse matrix arrays&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — servers implement the model&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — OLAP servers are Tier 2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-operations&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-operations&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Operations&lt;/a&gt; — servers execute these operations&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../rolap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;rolap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ROLAP Server&lt;/a&gt; — one of the four server types&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../molap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;molap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;MOLAP Server&lt;/a&gt; — one of the four server types&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — ROLAP uses metadata for dimension mapping&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;HOLAP is not automatic:&lt;/strong&gt; Administrators must explicitly configure which aggregations go to MOLAP and which detail stays in ROLAP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MOLAP vendor lock-in:&lt;/strong&gt; MDDBs are proprietary — migrating from one MOLAP vendor to another requires rebuilding all cubes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ROLAP SQL complexity:&lt;/strong&gt; For complex roll-ups across many dimensions, ROLAP generates extremely complex SQL that may not execute efficiently.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Specialized SQL servers are niche:&lt;/strong&gt; Products like columnar databases (e.g., Redshift, BigQuery) are modern equivalents of specialized SQL servers.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>oltp-vs-olap</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/oltp-vs-olap" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/oltp-vs-olap.md" />
    <summary>The Problem A single database cannot efficiently serve both transaction processing (fast, short, concurrent writes) and analytical processing (long, complex, aggregating reads).</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A single database cannot efficiently serve both transaction processing (fast, short, concurrent writes) and analytical processing (long, complex, aggregating reads). Running a 10-year revenue trend analysis on the same database that handles ATM transactions will either hang the analysis or slow down the ATM. The requirements are fundamentally opposite — one optimizes for throughput, the other for query depth.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;OLTP (Online Transaction Processing)&lt;/strong&gt; and &lt;strong&gt;OLAP (Online Analytical Processing)&lt;/strong&gt; represent two fundamentally different database paradigms. OLTP is customer-oriented, handles current detailed data, uses ER models, and requires concurrency control. OLAP is market-oriented, manages large amounts of historical data, uses star/snowflake schemas, and is mostly read-only. They serve different users, different purposes, and different access patterns.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The distinction manifests across five critical dimensions:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;User Orientation:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;OLTP:&lt;/strong&gt; Customer-oriented. Used by clerks, DBAs, and IT professionals for daily operations (e.g., balance check, order entry).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OLAP:&lt;/strong&gt; Market-oriented. Used by knowledge workers (managers, executives, analysts) for strategic analysis.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Data Content:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;OLTP:&lt;/strong&gt; Current, up-to-date, highly detailed data. Every individual transaction is recorded.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OLAP:&lt;/strong&gt; Historical (5-10 years), summarized, multidimensional data at multiple granularity levels.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Database Design:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;OLTP:&lt;/strong&gt; Entity-Relationship (ER) model, application-oriented, normalized to minimize redundancy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OLAP:&lt;/strong&gt; Star or Snowflake schema, subject-oriented, denormalized for query speed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Access Patterns:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;OLTP:&lt;/strong&gt; Short, atomic transactions (INSERT, UPDATE, DELETE, simple SELECT). Thousands of concurrent users. Requires concurrency control and recovery.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OLAP:&lt;/strong&gt; Complex, long-running read-only queries. Hundreds of concurrent users. No concurrency control needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Performance Metrics:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;OLTP:&lt;/strong&gt; Measured by transaction throughput (transactions per second).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OLAP:&lt;/strong&gt; Measured by query throughput (complex reports processed per unit time).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: oltp_vs_olap Pages: 1 --&gt;
&lt;svg width=&quot;767pt&quot; height=&quot;208pt&quot; viewBox=&quot;0.00 0.00 767.00 208.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 203.6)&quot;&gt;
&lt;title&gt;oltp_vs_olap&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-203.6 763,-203.6 763,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_oltp&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;17,-114.8 17,-191.6 748,-191.6 748,-114.8 17,-114.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;382.5&quot; y=&quot;-175&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;OLTP&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_olap&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;8,-8 8,-84.8 751,-84.8 751,-8 8,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;379.5&quot; y=&quot;-68.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;OLAP&lt;/text&gt;
&lt;/g&gt;
&lt;!-- o1 --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;o1&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;134.77,-158.8 25.23,-158.8 25.23,-122.8 134.77,-122.8 134.77,-158.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;80&quot; y=&quot;-137.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Customer-Oriented&lt;/text&gt;
&lt;/g&gt;
&lt;!-- a1 --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;a1&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;111.74,-52 16.26,-52 16.26,-16 111.74,-16 111.74,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;64&quot; y=&quot;-30.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Market-Oriented&lt;/text&gt;
&lt;/g&gt;
&lt;!-- o1&amp;#45;&amp;gt;a1 --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;o1-&gt;a1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M77.36,-122.49C74.91,-106.49 71.24,-82.4 68.36,-63.55&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;71.84,-63.18 66.87,-53.83 64.92,-64.24 71.84,-63.18&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;79.37&quot; y=&quot;-95.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;vs&lt;/text&gt;
&lt;/g&gt;
&lt;!-- o2 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;o2&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;277.72,-158.8 152.28,-158.8 152.28,-122.8 277.72,-122.8 277.72,-158.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;215&quot; y=&quot;-137.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Current, Detailed Data&lt;/text&gt;
&lt;/g&gt;
&lt;!-- a2 --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;a2&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;258.54,-52 129.46,-52 129.46,-16 258.54,-16 258.54,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;194&quot; y=&quot;-30.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Historical, Summarized&lt;/text&gt;
&lt;/g&gt;
&lt;!-- o2&amp;#45;&amp;gt;a2 --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;o2-&gt;a2&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M211.53,-122.49C208.33,-106.49 203.5,-82.4 199.72,-63.55&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;203.17,-62.93 197.77,-53.82 196.3,-64.31 203.17,-62.93&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;212.61&quot; y=&quot;-95.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;vs&lt;/text&gt;
&lt;/g&gt;
&lt;!-- o3 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;o3&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;426.15,-158.8 295.85,-158.8 295.85,-122.8 426.15,-122.8 426.15,-158.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;361&quot; y=&quot;-137.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ER Model (Normalized)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- a3 --&gt;
&lt;g id=&quot;node8&quot; class=&quot;node&quot;&gt;
&lt;title&gt;a3&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;445.11,-52 276.89,-52 276.89,-16 445.11,-16 445.11,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;361&quot; y=&quot;-30.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star/Snowflake (Denormalized)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- o3&amp;#45;&amp;gt;a3 --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;o3-&gt;a3&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M361,-122.49C361,-106.57 361,-82.63 361,-63.82&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;364.5,-63.84 361,-53.84 357.5,-63.84 364.5,-63.84&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;366&quot; y=&quot;-95.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;vs&lt;/text&gt;
&lt;/g&gt;
&lt;!-- o4 --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;o4&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;589.5,-158.8 444.5,-158.8 444.5,-122.8 589.5,-122.8 589.5,-158.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;517&quot; y=&quot;-137.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Short Atomic Transactions&lt;/text&gt;
&lt;/g&gt;
&lt;!-- a4 --&gt;
&lt;g id=&quot;node9&quot; class=&quot;node&quot;&gt;
&lt;title&gt;a4&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;619.3,-52 462.7,-52 462.7,-16 619.3,-16 619.3,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;541&quot; y=&quot;-30.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Complex Read-Only Queries&lt;/text&gt;
&lt;/g&gt;
&lt;!-- o4&amp;#45;&amp;gt;a4 --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;o4-&gt;a4&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M520.96,-122.49C524.63,-106.49 530.14,-82.4 534.46,-63.55&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;537.87,-64.34 536.69,-53.81 531.05,-62.77 537.87,-64.34&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;532.56&quot; y=&quot;-95.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;vs&lt;/text&gt;
&lt;/g&gt;
&lt;!-- o5 --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;o5&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;740.39,-158.8 607.61,-158.8 607.61,-122.8 740.39,-122.8 740.39,-158.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;674&quot; y=&quot;-137.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Transaction Throughput&lt;/text&gt;
&lt;/g&gt;
&lt;!-- a5 --&gt;
&lt;g id=&quot;node10&quot; class=&quot;node&quot;&gt;
&lt;title&gt;a5&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;742.64,-52 637.36,-52 637.36,-16 742.64,-16 742.64,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;690&quot; y=&quot;-30.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Query Throughput&lt;/text&gt;
&lt;/g&gt;
&lt;!-- o5&amp;#45;&amp;gt;a5 --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;o5-&gt;a5&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M676.64,-122.49C679.09,-106.49 682.76,-82.4 685.64,-63.55&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;689.08,-64.24 687.13,-53.83 682.16,-63.18 689.08,-64.24&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;686.04&quot; y=&quot;-95.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;vs&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_oltp_vs_olap Pages: 1 --&gt;
&lt;svg width=&quot;280pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 280.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_oltp_vs_olap&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 275.72,-190.06 275.72,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;127.57&quot; cy=&quot;-86.87&quot; rx=&quot;69.43&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;127.57&quot; y=&quot;-82.97&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;OLTP vs OLAP&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;179.44&quot; cy=&quot;-24.32&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;179.44&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;179.44&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M142.3,-69.12C147.81,-62.47 154.15,-54.82 160.02,-47.74&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;132.65&quot; y=&quot;-61.13&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- NONVOL --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;NONVOL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;83.82&quot; cy=&quot;-18.49&quot; rx=&quot;61.71&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;83.82&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Nonvolatile DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;NONVOL --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--NONVOL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M116.08,-68.91C109.7,-58.93 101.78,-46.57 95.39,-36.58&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;91.97&quot; y=&quot;-55.44&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- STAR --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;STAR&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;49.23&quot; cy=&quot;-108.22&quot; rx=&quot;49.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;49.23&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;STAR --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--STAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M79.3,-100.02C79.17,-100.06 79.05,-100.09 78.92,-100.13&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;99.37&quot; y=&quot;-102.78&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THREE_TIER --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THREE_TIER&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;203.36&quot; cy=&quot;-116.33&quot; rx=&quot;68.35&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;203.36&quot; y=&quot;-119.63&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Three-Tier DWH&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;203.36&quot; y=&quot;-106.43&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;THREE_TIER --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--THREE_TIER&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M166.8,-102.12C166.94,-102.17 167.09,-102.23 167.23,-102.29&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;146.75&quot; y=&quot;-104.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_SRV --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_SRV&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;123.74&quot; cy=&quot;-168.06&quot; rx=&quot;53.39&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;123.74&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Servers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_SRV --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_SRV&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M126.7,-105.29C126.08,-118.58 125.23,-136.44 124.61,-149.71&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;105.39&quot; y=&quot;-130.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Opposite design goals:&lt;/strong&gt; OLTP optimizes for write speed and data integrity; OLAP optimizes for read speed and analytical depth&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Different user bases:&lt;/strong&gt; Clerks/DBAs vs. managers/analysts&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Different data lifetimes:&lt;/strong&gt; Current state vs. 5-10 year history&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Different schemas:&lt;/strong&gt; ER/normalized vs. star/snowflake/denormalized&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Different concurrency:&lt;/strong&gt; Thousands of concurrent writes vs. hundreds of concurrent reads&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Complementary, not competing:&lt;/strong&gt; OLAP systems are fed by OLTP systems through ETL&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — the fundamental reason warehouses exist is the OLTP/OLAP split&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../nonvolatile-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;nonvolatile-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Nonvolatile&lt;/a&gt; — OLAP’s read-only nature stems from nonvolatility&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — OLAP uses star/snowflake schemas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — the architecture separates OLTP sources from OLAP processing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-servers&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-servers&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Servers&lt;/a&gt; — OLAP servers implement the analytical processing paradigm&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../subject-oriented-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;subject-oriented-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Subject-Oriented DWH&lt;/a&gt; — OLTP is application-oriented, OLAP is subject-oriented&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;HTAP (Hybrid Transaction/Analytical Processing):&lt;/strong&gt; Newer systems like SAP HANA claim to handle both OLTP and OLAP in one database. These are exceptions that require specialized in-memory architectures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don’t run OLAP queries on OLTP:&lt;/strong&gt; This is the most common mistake — a single complex analytical query can lock tables and bring down a production system.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data staleness is expected:&lt;/strong&gt; OLAP data is never real-time; it reflects the last ETL cycle. This is by design, not a bug.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The same data, different structure:&lt;/strong&gt; OLAP data originates from OLTP — it’s the same underlying business data, just restructured for analysis.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>rolap-server</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/rolap-server" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/rolap-server.md" />
    <summary>The Problem A company has an existing relational database with terabytes of warehouse data.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A company has an existing relational database with terabytes of warehouse data. Buying a proprietary multidimensional database (MDDB) for MOLAP would be expensive and would limit the data volume that can be analyzed. The company needs to provide multidimensional analytical views using the relational data it already has.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;ROLAP (Relational Online Analytical Processing)&lt;/strong&gt; stores data in standard relational tables (rows and columns) and provides a multidimensional view to users by dynamically generating complex SQL queries. A metadata layer maps dimensions to relational tables, enabling users to interact with relational data as if it were a cube — without requiring proprietary storage.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Data remains relational:&lt;/strong&gt; The warehouse data stays in its existing relational format — no conversion to multidimensional arrays.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Semantic metadata layer:&lt;/strong&gt; A metadata layer is created that maps dimension concepts (Time, Item, Location) to the underlying relational tables and columns. This layer also defines aggregation rules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic query generation:&lt;/strong&gt; When a user requests a multidimensional view (e.g., “sales by city and quarter”), the ROLAP engine:
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Translates the request into complex SQL queries with JOINs, GROUP BYs, and aggregate functions.&lt;/li&gt;
&lt;li&gt;Executes the queries against the main warehouse.&lt;/li&gt;
&lt;li&gt;Returns results formatted as a multidimensional view.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aggregation support:&lt;/strong&gt; The metadata layer supports pre-defined aggregations that the ROLAP engine can leverage for faster responses.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Strengths:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Handles large data volumes efficiently (scalable to terabytes and beyond)&lt;/li&gt;
&lt;li&gt;Easy integration with existing RDBMS technology&lt;/li&gt;
&lt;li&gt;No proprietary storage format — data remains accessible through standard SQL&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Weaknesses:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Slow response time (dynamic SQL generation and execution on every query)&lt;/li&gt;
&lt;li&gt;Scalability limitations for very complex, multi-dimensional queries&lt;/li&gt;
&lt;li&gt;Query performance degrades as the number of dimensions and granularity increase&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: rolap_server Pages: 1 --&gt;
&lt;svg width=&quot;618pt&quot; height=&quot;124pt&quot; viewBox=&quot;0.00 0.00 618.00 124.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 119.6)&quot;&gt;
&lt;title&gt;rolap_server&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-119.6 614.07,-119.6 614.07,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- user --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;user&lt;/title&gt;
&lt;polygon fill=&quot;#e8e8e8&quot; stroke=&quot;black&quot; points=&quot;87.52,-81.6 0,-81.6 0,-34 87.52,-34 87.52,-81.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;43.76&quot; y=&quot;-67.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;User Request&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;43.76&quot; y=&quot;-54.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Slice, Roll-up,&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;43.76&quot; y=&quot;-41.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Drill-down)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- engine --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;engine&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;346.23,-81.6 220.78,-81.6 220.78,-34 346.23,-34 346.23,-81.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;283.51&quot; y=&quot;-67.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ROLAP Engine&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;283.51&quot; y=&quot;-54.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Translates to SQL&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;283.51&quot; y=&quot;-41.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Generates Query Plan&lt;/text&gt;
&lt;/g&gt;
&lt;!-- user&amp;#45;&amp;gt;engine --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;user-&gt;engine&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M87.81,-57.8C121.62,-57.8 169.47,-57.8 209.28,-57.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;209.02,-61.3 219.02,-57.8 209.02,-54.3 209.02,-61.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;154.15&quot; y=&quot;-60.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;request&lt;/text&gt;
&lt;/g&gt;
&lt;!-- engine&amp;#45;&amp;gt;user --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;engine-&gt;user&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M220.45,-44.11C214.5,-43.17 208.54,-42.37 202.78,-41.8 159.77,-37.53 148.39,-36.25 105.52,-41.8 103.37,-42.08 101.19,-42.41 98.99,-42.78&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;98.58,-39.3 89.46,-44.68 99.95,-46.16 98.58,-39.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;154.15&quot; y=&quot;-44.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;multidimensional view&lt;/text&gt;
&lt;/g&gt;
&lt;!-- metadata --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;metadata&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;610.07,-115.6 452.83,-115.6 452.83,-68 610.07,-68 610.07,-115.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;531.45&quot; y=&quot;-101.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata Layer&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;531.45&quot; y=&quot;-88.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Dimension-to-Table Mapping&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;531.45&quot; y=&quot;-75.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Aggregation Rules&lt;/text&gt;
&lt;/g&gt;
&lt;!-- engine&amp;#45;&amp;gt;metadata --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;engine-&gt;metadata&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M339.51,-82.06C347.66,-84.81 356.07,-87.19 364.23,-88.8 388.91,-93.66 416.05,-95.56 441.12,-95.95&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;440.93,-99.45 450.96,-96.02 440.98,-92.45 440.93,-99.45&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;399.53&quot; y=&quot;-98.74&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;lookup mapping&lt;/text&gt;
&lt;/g&gt;
&lt;!-- rdbms --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;rdbms&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;588.98,-47.6 473.92,-47.6 473.92,0 588.98,0 588.98,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;531.45&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Relational Database&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;531.45&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Standard Tables)&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;531.45&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Terabytes of Data&lt;/text&gt;
&lt;/g&gt;
&lt;!-- engine&amp;#45;&amp;gt;rdbms --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;engine-&gt;rdbms&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M346.57,-49.22C381.9,-44.34 426.22,-38.21 462.49,-33.2&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;462.54,-36.72 471.97,-31.88 461.58,-29.79 462.54,-36.72&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;399.53&quot; y=&quot;-48.83&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;SQL query&lt;/text&gt;
&lt;/g&gt;
&lt;!-- metadata&amp;#45;&amp;gt;engine --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;metadata-&gt;engine&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M452.52,-76.6C446.55,-75.59 440.6,-74.65 434.83,-73.8 409.84,-70.12 382.39,-66.95 357.86,-64.42&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;358.26,-60.94 347.96,-63.42 357.55,-67.91 358.26,-60.94&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;399.53&quot; y=&quot;-76.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;mapping rules&lt;/text&gt;
&lt;/g&gt;
&lt;!-- rdbms&amp;#45;&amp;gt;engine --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;rdbms-&gt;engine&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M473.66,-16.91C441.25,-14.52 400.06,-14.09 364.23,-21.8 356.07,-23.56 347.75,-26.22 339.7,-29.31&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;338.63,-25.97 330.72,-33.01 341.3,-32.44 338.63,-25.97&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;399.53&quot; y=&quot;-24.8&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;results&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_rolap Pages: 1 --&gt;
&lt;svg width=&quot;271pt&quot; height=&quot;209pt&quot; viewBox=&quot;0.00 0.00 271.00 209.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 205.07)&quot;&gt;
&lt;title&gt;semantic_rolap&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-205.07 266.65,-205.07 266.65,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;135.02&quot; cy=&quot;-100.51&quot; rx=&quot;67.52&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.02&quot; y=&quot;-96.61&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;ROLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_SRV --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_SRV&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;206.41&quot; cy=&quot;-59.01&quot; rx=&quot;53.39&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;206.41&quot; y=&quot;-55.71&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Servers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_SRV --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_SRV&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M163.64,-83.87C168.76,-80.89 174.09,-77.8 179.17,-74.85&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;152.9&quot; y=&quot;-71.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;134.85&quot; cy=&quot;-18&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;134.85&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M134.98,-82.2C134.95,-68.53 134.91,-49.92 134.89,-36.26&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;144.19&quot; y=&quot;-51.13&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- STAR --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;STAR&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;64.27&quot; cy=&quot;-142.96&quot; rx=&quot;49.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;64.27&quot; y=&quot;-139.66&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;STAR --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--STAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M107.05,-117.29C101.49,-120.63 95.68,-124.12 90.19,-127.41&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;117.13&quot; y=&quot;-125.05&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- MOLAP --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;MOLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;206.99&quot; cy=&quot;-141.05&quot; rx=&quot;55.66&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;206.99&quot; y=&quot;-137.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;MOLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;MOLAP --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--MOLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M164.29,-117C169.12,-119.72 174.11,-122.53 178.91,-125.23&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;199.11&quot; y=&quot;-113.02&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;contrasts with&lt;/text&gt;
&lt;/g&gt;
&lt;!-- HOLAP --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;HOLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;136.45&quot; cy=&quot;-183.07&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;136.45&quot; y=&quot;-179.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;HOLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;HOLAP --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--HOLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M135.33,-118.83C135.57,-132.52 135.9,-151.13 136.13,-164.8&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.73&quot; y=&quot;-133.72&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_OPS --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_OPS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;63.23&quot; cy=&quot;-59.9&quot; rx=&quot;63.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;63.23&quot; y=&quot;-56.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Operations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_OPS --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_OPS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M105.82,-83.99C101.32,-81.45 96.67,-78.81 92.17,-76.27&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;78.73&quot; y=&quot;-82.83&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Relational storage:&lt;/strong&gt; Data stays in rows and columns, not multidimensional arrays&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dynamic SQL:&lt;/strong&gt; Complex queries generated on-the-fly for each user request&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata-dependent:&lt;/strong&gt; Requires a semantic layer mapping dimensions to tables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Highly scalable:&lt;/strong&gt; Handles large data volumes (terabytes+)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slow access:&lt;/strong&gt; Response time is lower than MOLAP due to dynamic query execution&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../olap-servers&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-servers&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Servers&lt;/a&gt; — ROLAP is one of four server types&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — metadata provides the dimension-to-table mapping&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — ROLAP queries star/snowflake schemas&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../molap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;molap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;MOLAP Server&lt;/a&gt; — ROLAP computes dynamically; MOLAP uses pre-computed cubes&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../holap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;holap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;HOLAP Server&lt;/a&gt; — HOLAP combines ROLAP with MOLAP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-operations&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-operations&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Operations&lt;/a&gt; — ROLAP implements operations via SQL&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Complex SQL generation:&lt;/strong&gt; A single roll-up across 5 dimensions can generate a SQL query with dozens of JOINs and GROUP BYs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query caching:&lt;/strong&gt; Some ROLAP implementations cache query results to improve performance for repeated queries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Not suitable for real-time analysis:&lt;/strong&gt; Dynamic SQL execution adds significant latency — ROLAP is better for scheduled reports than interactive dashboards.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Index dependency:&lt;/strong&gt; ROLAP performance heavily depends on proper indexing of the relational tables.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>Star vs Snowflake vs Galaxy -- DWH Schema Comparison</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/schema-comparison" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/schema-comparison.md" />
    <summary>What’s Being Compared The three schema architectures for data warehouses — Star, Snowflake, and Fact Constellation (Galaxy) — represent a progression from simple to complex dimensional modeling.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;whats-being-compared&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;What’s Being Compared&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#whats-being-compared&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The three schema architectures for data warehouses — Star, Snowflake, and Fact Constellation (Galaxy) — represent a progression from simple to complex dimensional modeling. Understanding their tradeoffs is essential for choosing the right schema for a given warehouse’s scale, query patterns, and organizational complexity.&lt;/p&gt;
&lt;h2 id=&quot;the-core-tension&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Core Tension&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-core-tension&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The fundamental tradeoff is &lt;strong&gt;query simplicity vs. storage efficiency vs. modeling expressiveness&lt;/strong&gt;. Star schema maximizes query speed through denormalization but wastes storage. Snowflake reduces storage through normalization but adds join complexity. Galaxy supports multi-process analysis but introduces significant design complexity.&lt;/p&gt;
&lt;h2 id=&quot;comparison&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Comparison&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#comparison&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;



























































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Dimension&lt;/th&gt;&lt;th&gt;&lt;a href=&quot;../../star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt;&lt;/th&gt;&lt;th&gt;&lt;a href=&quot;../../snowflake-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;snowflake-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Snowflake Schema&lt;/a&gt;&lt;/th&gt;&lt;th&gt;&lt;a href=&quot;../../fact-constellation-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;fact-constellation-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Constellation&lt;/a&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Fact tables&lt;/td&gt;&lt;td&gt;One&lt;/td&gt;&lt;td&gt;One&lt;/td&gt;&lt;td&gt;Multiple (shared dimensions)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Dimension normalization&lt;/td&gt;&lt;td&gt;Fully denormalized&lt;/td&gt;&lt;td&gt;Normalized (split tables)&lt;/td&gt;&lt;td&gt;Depends (can be star or snowflake per fact)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Query complexity&lt;/td&gt;&lt;td&gt;Minimal (1-2 joins)&lt;/td&gt;&lt;td&gt;Moderate (3+ joins)&lt;/td&gt;&lt;td&gt;High (multi-fact queries)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Storage efficiency&lt;/td&gt;&lt;td&gt;Low (high redundancy)&lt;/td&gt;&lt;td&gt;High (normalized)&lt;/td&gt;&lt;td&gt;Medium (shared dims reduce redundancy)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Query speed&lt;/td&gt;&lt;td&gt;Fastest&lt;/td&gt;&lt;td&gt;Moderate&lt;/td&gt;&lt;td&gt;Varies per fact table&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Maintenance complexity&lt;/td&gt;&lt;td&gt;Low&lt;/td&gt;&lt;td&gt;Moderate&lt;/td&gt;&lt;td&gt;High&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Best for&lt;/td&gt;&lt;td&gt;Single-process, moderate scale&lt;/td&gt;&lt;td&gt;Storage-constrained environments&lt;/td&gt;&lt;td&gt;Multi-process enterprise&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Use case&lt;/td&gt;&lt;td&gt;Department-level analytics&lt;/td&gt;&lt;td&gt;Cost-sensitive deployments&lt;/td&gt;&lt;td&gt;Enterprise-wide BI&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&quot;when-to-choose-star-schema&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;When to Choose Star Schema&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#when-to-choose-star-schema&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Single business process (e.g., just sales analysis)&lt;/li&gt;
&lt;li&gt;Query speed is the highest priority&lt;/li&gt;
&lt;li&gt;Storage cost is not a concern&lt;/li&gt;
&lt;li&gt;Business users write their own queries and need simple schemas&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;when-to-choose-snowflake-schema&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;When to Choose Snowflake Schema&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#when-to-choose-snowflake-schema&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Large dimension tables with significant redundancy&lt;/li&gt;
&lt;li&gt;Storage costs are a concern&lt;/li&gt;
&lt;li&gt;Query performance requirements are moderate&lt;/li&gt;
&lt;li&gt;Maintenance of dimension values is frequent (normalized updates are easier)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;when-to-choose-fact-constellation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;When to Choose Fact Constellation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#when-to-choose-fact-constellation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Multiple business processes need cross-analysis (sales + shipping + returns)&lt;/li&gt;
&lt;li&gt;Enterprise-scale deployment&lt;/li&gt;
&lt;li&gt;Shared dimensions exist across processes (Time, Item, Location)&lt;/li&gt;
&lt;li&gt;Organization has mature data governance&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-insight&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Insight&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-insight&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The three schemas are not mutually exclusive — they form a &lt;strong&gt;design spectrum&lt;/strong&gt;. A single warehouse can use star schema for some subject areas, snowflake for others, and galaxy for the enterprise view. The choice is not “which schema” but “which schema for which subject area.” The progression from star → snowflake → galaxy mirrors the organization’s growth from department-level analysis to enterprise-wide intelligence.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: schema_comparison Pages: 1 --&gt;
&lt;svg width=&quot;613pt&quot; height=&quot;50pt&quot; viewBox=&quot;0.00 0.00 613.00 50.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 45.6)&quot;&gt;
&lt;title&gt;schema_comparison&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-45.6 609.47,-45.6 609.47,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- A --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;A&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;146.72,-41.6 0,-41.6 0,0 146.72,0 146.72,-41.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;73.36&quot; y=&quot;-25&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Schema Comparison&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;73.36&quot; y=&quot;-8.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Input&lt;/text&gt;
&lt;/g&gt;
&lt;!-- B --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;B&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;372.21,-41.6 225.49,-41.6 225.49,0 372.21,0 372.21,-41.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;298.85&quot; y=&quot;-25&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Schema Comparison&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;298.85&quot; y=&quot;-8.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Core Mechanism&lt;/text&gt;
&lt;/g&gt;
&lt;!-- A&amp;#45;&amp;gt;B --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;A-&gt;B&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M146.92,-20.8C168.3,-20.8 191.88,-20.8 213.91,-20.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;213.76,-24.3 223.76,-20.8 213.76,-17.3 213.76,-24.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;186.11&quot; y=&quot;-25&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;triggers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- C --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;C&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;605.47,-41.6 458.75,-41.6 458.75,0 605.47,0 605.47,-41.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;532.11&quot; y=&quot;-25&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Schema Comparison&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;532.11&quot; y=&quot;-8.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;14.00&quot;&gt;Output&lt;/text&gt;
&lt;/g&gt;
&lt;!-- B&amp;#45;&amp;gt;C --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;B-&gt;C&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M372.71,-20.8C396.37,-20.8 422.81,-20.8 447.2,-20.8&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;447.11,-24.3 457.11,-20.8 447.11,-17.3 447.11,-24.3&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;415.48&quot; y=&quot;-25&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;produces&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_schema_comparison Pages: 1 --&gt;
&lt;svg width=&quot;203pt&quot; height=&quot;170pt&quot; viewBox=&quot;0.00 0.00 203.00 170.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 165.63)&quot;&gt;
&lt;title&gt;semantic_schema_comparison&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-165.63 199.45,-165.63 199.45,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;90.97&quot; cy=&quot;-86.21&quot; rx=&quot;90.97&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;90.97&quot; y=&quot;-82.31&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Schema Comparison&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REL1 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REL1&lt;/title&gt;
&lt;ellipse fill=&quot;#f0f0f0&quot; stroke=&quot;black&quot; cx=&quot;134.86&quot; cy=&quot;-143.63&quot; rx=&quot;60.59&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;134.86&quot; y=&quot;-140.33&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Related Concept&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REL1 --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REL1&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M104.86,-104.37C110.08,-111.21 116.01,-118.97 121.21,-125.77&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.99&quot; y=&quot;-119.27&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REL2 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REL2&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;67.01&quot; cy=&quot;-18&quot; rx=&quot;41.67&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;67.01&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Builds Into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REL2 --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REL2&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M84.55,-67.93C81.05,-57.98 76.75,-45.73 73.28,-35.86&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;108.67&quot; y=&quot;-39.29&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;a href=&quot;../../wiki/data-warehouse/star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — simplest schema, foundation for both others&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../snowflake-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;snowflake-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Snowflake Schema&lt;/a&gt; — normalized variant of star&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../fact-constellation-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;fact-constellation-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Constellation Schema&lt;/a&gt; — multi-fact extension&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — all three implement this model&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../wiki/data-warehouse/dimension-table&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/dimension-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Dimension Table&lt;/a&gt; — normalization decisions affect dimension design&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;../../data-mart-types&quot; class=&quot;internal alias&quot; data-slug=&quot;data-mart-types&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Mart Types&lt;/a&gt; — schema choice interacts with data mart architecture&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>scoring-dwh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/scoring-dwh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/scoring-dwh.md" />
    <summary>The Problem Raw operational data tells you what happened — a customer bought a product, a transaction occurred, a service was used.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Raw operational data tells you what happened — a customer bought a product, a transaction occurred, a service was used. But it does not tell you what is &lt;strong&gt;likely&lt;/strong&gt; to happen next. Businesses need predictive insights to act proactively: Which customer is most likely to churn? Which lead has the highest probability of converting? Without computed scores, the warehouse provides historical facts but no forward-looking intelligence.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Scoring&lt;/strong&gt; in the ETL context is the computation of probability scores for specific events or outcomes based on existing warehouse data. It applies statistical or machine learning models to compute a numerical probability that a particular event will occur — for example, the probability that a customer will buy a new product.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Scoring operates as a transformation sub-process within the ETL pipeline:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Define the target event:&lt;/strong&gt; Specify what probability is being computed — purchase likelihood, churn risk, fraud probability, response rate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Select input features:&lt;/strong&gt; Identify which warehouse attributes are relevant predictors — past purchase history, customer tenure, frequency of visits, demographic attributes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apply scoring model:&lt;/strong&gt; Execute a pre-built statistical or ML model against the warehouse data. The model outputs a probability score (0 to 1) for each record.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Store scores in warehouse:&lt;/strong&gt; The computed scores are stored as new columns in the warehouse, making them available for analytical queries and reporting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Periodic recomputation:&lt;/strong&gt; Scores are recomputed during each ETL refresh cycle to reflect the latest data.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Example:&lt;/strong&gt; A retail warehouse computes a “purchase likelihood score” for each customer based on their browsing history, past purchases, and demographic profile. The marketing team then targets customers with scores above 0.7 for a promotional campaign.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: scoring Pages: 1 --&gt;
&lt;svg width=&quot;198pt&quot; height=&quot;390pt&quot; viewBox=&quot;0.00 0.00 198.00 390.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 386)&quot;&gt;
&lt;title&gt;scoring&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-386 193.7,-386 193.7,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- data --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;data&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;144.72,-382 44.97,-382 44.97,-321.2 144.72,-321.2 144.72,-382&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-368.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Warehouse Data&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-354.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Purchase History&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-341.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Demographics&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-328.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Behavior&lt;/text&gt;
&lt;/g&gt;
&lt;!-- model --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;model&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;94.85,-273.2 0,-238.8 94.85,-204.4 189.7,-238.8 94.85,-273.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-242.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Scoring Model&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-228.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Statistical / ML)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- data&amp;#45;&amp;gt;model --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;data-&gt;model&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M94.85,-320.91C94.85,-309.83 94.85,-296.99 94.85,-284.85&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;98.35,-285 94.85,-275 91.35,-285 98.35,-285&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;125.15&quot; y=&quot;-294.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;input features&lt;/text&gt;
&lt;/g&gt;
&lt;!-- scores --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;scores&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;146.87,-156.4 42.83,-156.4 42.83,-95.6 146.87,-95.6 146.87,-156.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-142.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Computed Scores&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-129.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Customer A: 0.85&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-116.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Customer B: 0.32&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-102.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Customer C: 0.67&lt;/text&gt;
&lt;/g&gt;
&lt;!-- model&amp;#45;&amp;gt;scores --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;model-&gt;scores&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M94.85,-203.95C94.85,-192.69 94.85,-180.02 94.85,-168.26&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;98.35,-168.4 94.85,-158.4 91.35,-168.4 98.35,-168.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;132.93&quot; y=&quot;-177.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;probability output&lt;/text&gt;
&lt;/g&gt;
&lt;!-- action --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;action&lt;/title&gt;
&lt;polygon fill=&quot;#ffe5cc&quot; stroke=&quot;black&quot; points=&quot;161.54,-47.6 28.16,-47.6 28.16,0 161.54,0 161.54,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Actionable Insight&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Target high-scoring&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;94.85&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;customers for campaign&lt;/text&gt;
&lt;/g&gt;
&lt;!-- scores&amp;#45;&amp;gt;action --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;scores-&gt;action&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M94.85,-95.21C94.85,-83.87 94.85,-70.87 94.85,-59.14&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;98.35,-59.47 94.85,-49.47 91.35,-59.47 98.35,-59.47&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;112.91&quot; y=&quot;-68.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;analysis&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_scoring Pages: 1 --&gt;
&lt;svg width=&quot;279pt&quot; height=&quot;209pt&quot; viewBox=&quot;0.00 0.00 279.00 209.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 205.07)&quot;&gt;
&lt;title&gt;semantic_scoring&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-205.07 274.6,-205.07 274.6,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;135.38&quot; cy=&quot;-100.51&quot; rx=&quot;42.48&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.38&quot; y=&quot;-104.41&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Scoring&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.38&quot; y=&quot;-88.81&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;206.78&quot; cy=&quot;-59.01&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;206.78&quot; y=&quot;-62.31&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;206.78&quot; y=&quot;-49.11&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M167.32,-81.95C169.25,-80.82 171.2,-79.69 173.14,-78.57&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;188.73&quot; y=&quot;-82.96&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SCRUB --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SCRUB&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;135.22&quot; cy=&quot;-18&quot; rx=&quot;56.81&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;135.22&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Scrubbing&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SCRUB --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SCRUB&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M135.33,-72.58C135.3,-60.61 135.28,-46.96 135.26,-36.31&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;142.17&quot; y=&quot;-46.35&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ENRICH --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ENRICH&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;64.64&quot; cy=&quot;-142.96&quot; rx=&quot;44.32&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;64.64&quot; y=&quot;-139.66&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Enrichment&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ENRICH --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ENRICH&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M103.74,-119.5C99.03,-122.33 94.23,-125.21 89.68,-127.94&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;82.95&quot; y=&quot;-115.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_OPS --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_OPS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;207.36&quot; cy=&quot;-141.05&quot; rx=&quot;63.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;207.36&quot; y=&quot;-137.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Operations&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_OPS --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_OPS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M168,-118.88C171.43,-120.81 174.89,-122.76 178.27,-124.66&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;193.4&quot; y=&quot;-113.67&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DATA_MINING --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DATA_MINING&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;136.82&quot; cy=&quot;-183.07&quot; rx=&quot;64.74&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;136.82&quot; y=&quot;-179.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Mining Tools&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DATA_MINING --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DATA_MINING&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M135.87,-128.46C136.08,-140.44 136.32,-154.09 136.5,-164.75&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;126.06&quot; y=&quot;-138.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;63.6&quot; cy=&quot;-59.9&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;63.6&quot; y=&quot;-56.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M102.85,-82.11C99.44,-80.18 95.99,-78.22 92.62,-76.31&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;83.98&quot; y=&quot;-81.91&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Probability-based:&lt;/strong&gt; Outputs numerical scores (0 to 1) representing likelihood of events&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model-driven:&lt;/strong&gt; Relies on pre-built statistical or machine learning models&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Warehouse-native:&lt;/strong&gt; Uses existing warehouse data as input features&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Periodically refreshed:&lt;/strong&gt; Scores are recomputed during each ETL cycle&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actionable:&lt;/strong&gt; Enables targeted marketing, risk assessment, and proactive decision-making&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — scoring is part of the Transform phase&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../data-scrubbing&quot; class=&quot;internal alias&quot; data-slug=&quot;data-scrubbing&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Scrubbing&lt;/a&gt; — clean data is essential for accurate scoring&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../enrichment-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;enrichment-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Enrichment&lt;/a&gt; — external data can improve scoring model accuracy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-operations&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-operations&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Operations&lt;/a&gt; — scored data can be sliced and analyzed through OLAP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../data-mining-tools&quot; class=&quot;internal alias&quot; data-slug=&quot;data-mining-tools&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Mining Tools&lt;/a&gt; — scoring bridges ETL and data mining&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — scoring model definitions stored in metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Model staleness:&lt;/strong&gt; Scoring models degrade over time as customer behavior changes. Models must be retrained periodically.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Score interpretation:&lt;/strong&gt; A score of 0.7 does not mean 70% certainty in all cases — calibration is needed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Data bias:&lt;/strong&gt; If the training data is biased, the scores will be biased. This can lead to unfair targeting decisions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Computational cost:&lt;/strong&gt; Scoring millions of records with complex models can significantly extend ETL run times.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>snowflake-schema</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/snowflake-schema" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/snowflake-schema.md" />
    <summary>The Problem In a star schema, dimension tables are fully denormalized, leading to significant data redundancy.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;In a star schema, dimension tables are fully denormalized, leading to significant data redundancy. If a location dimension has 10,000 cities across 50 states and 10 countries, the “state” and “country” names are repeated thousands of times. This wastes storage space and can make dimension tables unwieldy. In some cases, this redundancy creates maintenance problems when attribute values need to be corrected.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Snowflake Schema&lt;/strong&gt; is an extension of the star schema where large dimension tables are &lt;strong&gt;normalized&lt;/strong&gt; — split into additional tables to eliminate redundancy. The normalized dimensions branch out like a snowflake, creating a more complex but storage-efficient structure.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The snowflake schema takes the star schema’s denormalized dimensions and normalizes them:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Identify redundant attributes:&lt;/strong&gt; In the star schema’s location dimension, “province_or_state” and “country” are repeated for every city in that state/country.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Split into additional tables:&lt;/strong&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;The &lt;code class=&quot;notranslate&quot;&gt;location&lt;/code&gt; dimension table is split: cities stay in the location table, but states move to a new &lt;code class=&quot;notranslate&quot;&gt;state&lt;/code&gt; table, and countries to a &lt;code class=&quot;notranslate&quot;&gt;country&lt;/code&gt; table.&lt;/li&gt;
&lt;li&gt;The &lt;code class=&quot;notranslate&quot;&gt;item&lt;/code&gt; dimension table is split: items stay in the item table, but suppliers move to a new &lt;code class=&quot;notranslate&quot;&gt;supplier&lt;/code&gt; table.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Establish hierarchical joins:&lt;/strong&gt; The fact table joins to the top-level dimension table, which joins to the next-level normalized table, and so on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query impact:&lt;/strong&gt; A query that needed 1 join in the star schema may now need 2-3 joins in the snowflake schema.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Example from source:&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Star schema: &lt;code class=&quot;notranslate&quot;&gt;dim_item&lt;/code&gt; contains &lt;code class=&quot;notranslate&quot;&gt;item_key, item_name, type, brand, supplier_type&lt;/code&gt; (redundant supplier info)&lt;/li&gt;
&lt;li&gt;Snowflake schema: &lt;code class=&quot;notranslate&quot;&gt;dim_item&lt;/code&gt; contains &lt;code class=&quot;notranslate&quot;&gt;item_key, item_name, type, brand, supplier_key&lt;/code&gt; → joins to &lt;code class=&quot;notranslate&quot;&gt;dim_supplier&lt;/code&gt; with &lt;code class=&quot;notranslate&quot;&gt;supplier_key, supplier_type&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: snowflake_schema Pages: 1 --&gt;
&lt;svg width=&quot;198pt&quot; height=&quot;248pt&quot; viewBox=&quot;0.00 0.00 198.00 248.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 244.4)&quot;&gt;
&lt;title&gt;snowflake_schema&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-244.4 193.7,-244.4 193.7,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- fact --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;fact&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;97.82,-240.4 40.49,-222.4 97.82,-204.4 155.15,-222.4 97.82,-240.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;97.82&quot; y=&quot;-219.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;fact_sales&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_item --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_item&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;93.64,-156.4 0,-156.4 0,-95.6 93.64,-95.6 93.64,-156.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;46.82&quot; y=&quot;-142.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_item&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;46.82&quot; y=&quot;-129.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;item_key, name&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;46.82&quot; y=&quot;-116.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;brand, type&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;46.82&quot; y=&quot;-102.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;supplier_key&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact&amp;#45;&amp;gt;dim_item --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact-&gt;dim_item&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M89.32,-206.83C85.71,-200.57 81.5,-193.16 77.81,-186.4 74.37,-180.1 70.79,-173.39 67.33,-166.83&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;70.48,-165.31 62.75,-158.07 64.28,-168.55 70.48,-165.31&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;97.81&quot; y=&quot;-177.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;item_key&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_loc --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_loc&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;189.7,-149.8 111.94,-149.8 111.94,-102.2 189.7,-102.2 189.7,-149.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;150.82&quot; y=&quot;-135.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_location&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;150.82&quot; y=&quot;-122.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;location_key&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;150.82&quot; y=&quot;-109.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;street, city&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact&amp;#45;&amp;gt;dim_loc --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact-&gt;dim_loc&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M106.23,-206.78C109.82,-200.51 114.04,-193.11 117.82,-186.4 122.6,-177.92 127.72,-168.74 132.47,-160.19&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;135.51,-161.93 137.3,-151.49 129.39,-158.54 135.51,-161.93&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;151.98&quot; y=&quot;-177.4&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;location_key&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_supplier --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_supplier&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;87.54,-47.6 6.11,-47.6 6.11,0 87.54,0 87.54,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;46.82&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_supplier&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;46.82&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;supplier_key&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;46.82&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;supplier_type&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_item&amp;#45;&amp;gt;dim_supplier --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dim_item-&gt;dim_supplier&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M46.82,-95.21C46.82,-83.87 46.82,-70.87 46.82,-59.14&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;50.32,-59.47 46.82,-49.47 43.32,-59.47 50.32,-59.47&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;74.89&quot; y=&quot;-68.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;supplier_key&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_city --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_city&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;183.89,-47.6 117.76,-47.6 117.76,0 183.89,0 183.89,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;150.82&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_city&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;150.82&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;city_key&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;150.82&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;city_name&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_loc&amp;#45;&amp;gt;dim_city --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dim_loc-&gt;dim_city&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M150.82,-101.76C150.82,-89.11 150.82,-73.23 150.82,-59.17&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;154.32,-59.43 150.82,-49.43 147.32,-59.43 154.32,-59.43&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;168.88&quot; y=&quot;-68.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;city_key&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_snowflake Pages: 1 --&gt;
&lt;svg width=&quot;305pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 305.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 189.56)&quot;&gt;
&lt;title&gt;semantic_snowflake&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-189.56 300.94,-189.56 300.94,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;151.91&quot; cy=&quot;-86.38&quot; rx=&quot;53.73&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;151.91&quot; y=&quot;-90.28&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Snowflake&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;151.91&quot; y=&quot;-74.68&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- STAR --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;STAR&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;203.77&quot; cy=&quot;-23.83&quot; rx=&quot;49.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;203.77&quot; y=&quot;-20.53&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;STAR --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--STAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M173.3,-60.58C178.66,-54.12 184.28,-47.33 189.22,-41.38&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;162.76&quot; y=&quot;-42.88&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DIM --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DIM&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;108.15&quot; cy=&quot;-18&quot; rx=&quot;60.96&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;108.15&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Dimension Table&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DIM --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DIM&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M134.87,-59.75C129.78,-51.8 124.32,-43.27 119.68,-36.01&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;107.01&quot; y=&quot;-50.58&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- GALAXY --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;GALAXY&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;73.57&quot; cy=&quot;-107.72&quot; rx=&quot;73.57&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;73.57&quot; y=&quot;-111.02&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Fact Constellation&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;73.57&quot; y=&quot;-97.82&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;GALAXY --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--GALAXY&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M104.08,-99.41C103.95,-99.44 103.83,-99.48 103.7,-99.51&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;90.13&quot; y=&quot;-102.16&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CUBE --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CUBE&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;227.7&quot; cy=&quot;-115.84&quot; rx=&quot;69.24&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;227.7&quot; y=&quot;-119.14&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multidimensional&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;227.7&quot; y=&quot;-105.94&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Model&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CUBE --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CUBE&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M195.12,-103.17C195.25,-103.22 195.38,-103.28 195.52,-103.33&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;215.58&quot; y=&quot;-105.95&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ROLAP --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ROLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;148.08&quot; cy=&quot;-167.56&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;148.08&quot; y=&quot;-164.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ROLAP Server&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ROLAP --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ROLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M150.59,-114.32C150.05,-125.88 149.43,-138.96 148.94,-149.26&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;136.01&quot; y=&quot;-134.49&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Normalized dimensions:&lt;/strong&gt; Dimension tables split to eliminate redundancy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage efficient:&lt;/strong&gt; Less disk space needed compared to star schema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;More joins required:&lt;/strong&gt; Queries need more joins, which can slow performance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Easier maintenance:&lt;/strong&gt; Updating a value (e.g., country name) requires changing only one record&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Snowflake shape:&lt;/strong&gt; Normalized tables branch outward, creating a snowflake-like appearance&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — snowflake is a normalized variant of the star schema&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/dimension-table&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/dimension-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Dimension Table&lt;/a&gt; — normalized dimensions are still dimension tables&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../fact-constellation-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;fact-constellation-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Constellation Schema&lt;/a&gt; — another schema variant beyond star&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — snowflake implements the dimensional model&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../rolap-server&quot; class=&quot;internal alias&quot; data-slug=&quot;rolap-server&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ROLAP Server&lt;/a&gt; — ROLAP works well with snowflake schemas (relational tables)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — the defining difference is normalization&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Query performance degradation:&lt;/strong&gt; Each additional join in the snowflake adds query execution time. For very large warehouses, the star schema is usually faster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Over-normalization:&lt;/strong&gt; Normalizing every dimension attribute creates a complex schema that is hard to understand and maintain. Only normalize large, highly redundant dimensions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When to use snowflake:&lt;/strong&gt; Best when storage cost is a significant concern and query performance requirements are moderate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hybrid approach:&lt;/strong&gt; Some dimensions can be normalized (snowflake) while others remain denormalized (star) — a “partially snowflaked” schema.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>star-schema</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/star-schema" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/star-schema.md" />
    <summary>The Problem In a normalized OLTP database, answering a question like “What were total sales by city in Q1?” requires joining 5-6 tables (Sales, Customer, Address, City, State, Date).</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;In a normalized OLTP database, answering a question like “What were total sales by city in Q1?” requires joining 5-6 tables (Sales, Customer, Address, City, State, Date). As data volumes grow to millions of rows, these multi-table joins become extremely slow. Analysts need a schema design that minimizes joins while still providing all the context needed for analysis.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Star Schema&lt;/strong&gt; is a dimensional modeling approach (developed by Ralph Kimball) where a central &lt;strong&gt;fact table&lt;/strong&gt; containing measurable business events is surrounded by multiple &lt;strong&gt;dimension tables&lt;/strong&gt; containing descriptive attributes. Each dimension table is &lt;strong&gt;denormalized&lt;/strong&gt; — all attributes for a dimension live in a single table — minimizing the number of joins needed for analytical queries.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The star schema consists of two table types:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Fact Table (center of the star):&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Contains measurable metrics (e.g., &lt;code class=&quot;notranslate&quot;&gt;dollars_sold&lt;/code&gt;, &lt;code class=&quot;notranslate&quot;&gt;units_sold&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Contains foreign keys to each dimension table.&lt;/li&gt;
&lt;li&gt;One fact table per business process (e.g., Sales, Shipping).&lt;/li&gt;
&lt;li&gt;Typically the largest table in the schema.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Dimension Tables (points of the star):&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;Each dimension is represented by &lt;strong&gt;one single denormalized table&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Contains descriptive attributes (e.g., Location dimension: &lt;code class=&quot;notranslate&quot;&gt;location_key, street, city, province_or_state, country&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Not normalized — redundancy is accepted for query simplicity.&lt;/li&gt;
&lt;li&gt;Joined to the fact table via a primary key.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Example:&lt;/strong&gt; A sales star schema with four dimensions (Time, Item, Branch, Location):&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;fact_sales&lt;/code&gt;: &lt;code class=&quot;notranslate&quot;&gt;time_key, item_key, branch_key, location_key, dollars_sold, units_sold&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dim_location&lt;/code&gt;: &lt;code class=&quot;notranslate&quot;&gt;location_key, street, city, province_or_state, country&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dim_time&lt;/code&gt;: &lt;code class=&quot;notranslate&quot;&gt;time_key, day, month, quarter, year&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dim_item&lt;/code&gt;: &lt;code class=&quot;notranslate&quot;&gt;item_key, item_name, type, brand&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;notranslate&quot;&gt;dim_branch&lt;/code&gt;: &lt;code class=&quot;notranslate&quot;&gt;branch_key, branch_name, city&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p dir=&quot;auto&quot;&gt;A query for “total sales by city” joins only &lt;code class=&quot;notranslate&quot;&gt;fact_sales&lt;/code&gt; with &lt;code class=&quot;notranslate&quot;&gt;dim_location&lt;/code&gt; — a single join, not the 5+ joins a normalized schema would require.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: star_schema Pages: 1 --&gt;
&lt;svg width=&quot;446pt&quot; height=&quot;225pt&quot; viewBox=&quot;0.00 0.00 446.00 225.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 221.2)&quot;&gt;
&lt;title&gt;star_schema&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-221.2 441.7,-221.2 441.7,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- fact --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;fact&lt;/title&gt;
&lt;polygon fill=&quot;#ffd700&quot; stroke=&quot;black&quot; points=&quot;229.97,-217.2 147.33,-156.4 229.97,-95.6 312.6,-156.4 229.97,-217.2&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;229.97&quot; y=&quot;-172.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;fact_sales&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;229.97&quot; y=&quot;-159.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dollars_sold&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;229.97&quot; y=&quot;-146.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;units_sold&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;229.97&quot; y=&quot;-133.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(foreign keys)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_time --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_time&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;97.93,-47.6 0,-47.6 0,0 97.93,0 97.93,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;48.97&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_time&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;48.97&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;time_key&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;48.97&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;day, month, year&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact&amp;#45;&amp;gt;dim_time --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact-&gt;dim_time&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M188.89,-125.76C159.44,-104.51 119.9,-75.98 90.36,-54.67&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;92.54,-51.92 82.38,-48.91 88.44,-57.6 92.54,-51.92&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;137.94&quot; y=&quot;-68.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;time_key&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_item --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_item&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;220.3,-47.6 115.63,-47.6 115.63,0 220.3,0 220.3,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;167.97&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_item&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;167.97&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;item_key&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;167.97&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;name, type, brand&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact&amp;#45;&amp;gt;dim_item --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact-&gt;dim_item&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M208.8,-110.82C200.57,-93.48 191.31,-73.97 183.69,-57.92&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;187.05,-56.83 179.6,-49.3 180.72,-59.83 187.05,-56.83&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;211.6&quot; y=&quot;-68.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;item_key&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_loc --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_loc&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;346.12,-47.6 237.81,-47.6 237.81,0 346.12,0 346.12,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;291.97&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_location&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;291.97&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;location_key&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;291.97&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;street, city, country&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact&amp;#45;&amp;gt;dim_loc --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact-&gt;dim_loc&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M251.13,-110.82C259.36,-93.48 268.62,-73.97 276.24,-57.92&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;279.21,-59.83 280.34,-49.3 272.88,-56.83 279.21,-59.83&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;299.71&quot; y=&quot;-68.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;location_key&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dim_branch --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dim_branch&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;437.7,-47.6 364.23,-47.6 364.23,0 437.7,0 437.7,-47.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;400.97&quot; y=&quot;-33.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;dim_branch&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;400.97&quot; y=&quot;-20.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;branch_key&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;400.97&quot; y=&quot;-7.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;name, city&lt;/text&gt;
&lt;/g&gt;
&lt;!-- fact&amp;#45;&amp;gt;dim_branch --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;fact-&gt;dim_branch&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M270.19,-124.74C288.96,-110.43 311.61,-93.15 331.97,-77.6 341.59,-70.24 351.97,-62.31 361.68,-54.87&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;363.73,-57.72 369.54,-48.86 359.47,-52.16 363.73,-57.72&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;372.94&quot; y=&quot;-68.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;branch_key&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_star_schema Pages: 1 --&gt;
&lt;svg width=&quot;289pt&quot; height=&quot;215pt&quot; viewBox=&quot;0.00 0.00 289.00 215.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 211.39)&quot;&gt;
&lt;title&gt;semantic_star_schema&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-211.39 285.15,-211.39 285.15,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;141.03&quot; cy=&quot;-100.51&quot; rx=&quot;60.35&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;141.03&quot; y=&quot;-96.61&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Star Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- FACT --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;FACT&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;212.42&quot; cy=&quot;-59.01&quot; rx=&quot;42.05&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;212.42&quot; y=&quot;-55.71&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Fact Table&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;FACT --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--FACT&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M168.83,-84.35C174.94,-80.8 181.37,-77.06 187.37,-73.57&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;157.84&quot; y=&quot;-70.86&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DIM --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DIM&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;140.86&quot; cy=&quot;-18&quot; rx=&quot;60.96&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;140.86&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Dimension Table&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DIM --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DIM&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M140.99,-82.2C140.96,-68.53 140.92,-49.92 140.9,-36.26&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;151.08&quot; y=&quot;-51.13&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;70.28&quot; cy=&quot;-142.96&quot; rx=&quot;56.41&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;70.28&quot; y=&quot;-139.66&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLTP vs OLAP&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M113.88,-116.8C108.42,-120.08 102.69,-123.52 97.24,-126.79&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;124.06&quot; y=&quot;-124.49&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SNOW --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SNOW&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;213&quot; cy=&quot;-141.05&quot; rx=&quot;68.15&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;213&quot; y=&quot;-137.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Snowflake Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SNOW --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SNOW&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M169.89,-116.77C174.42,-119.32 179.12,-121.97 183.67,-124.53&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;204.29&quot; y=&quot;-112.55&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;contrasts with&lt;/text&gt;
&lt;/g&gt;
&lt;!-- GALAXY --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;GALAXY&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;142.46&quot; cy=&quot;-183.07&quot; rx=&quot;73.57&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;142.46&quot; y=&quot;-186.37&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Fact Constellation&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;142.46&quot; y=&quot;-173.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;GALAXY --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--GALAXY&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M141.35,-118.83C141.55,-130.52 141.81,-145.81 142.04,-158.53&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;114.18&quot; y=&quot;-141.38&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;contrasts with&lt;/text&gt;
&lt;/g&gt;
&lt;!-- CUBE --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;CUBE&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;69.24&quot; cy=&quot;-59.9&quot; rx=&quot;69.24&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;69.24&quot; y=&quot;-63.2&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multidimensional&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;69.24&quot; y=&quot;-50&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Model&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;CUBE --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--CUBE&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M112.24,-84.23C110.21,-83.08 108.16,-81.91 106.09,-80.75&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;129.43&quot; y=&quot;-74.39&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;One fact table, many dimension tables:&lt;/strong&gt; Central fact surrounded by dimensions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Denormalized dimensions:&lt;/strong&gt; All attributes in one table per dimension — redundancy accepted&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Minimal joins:&lt;/strong&gt; Query typically needs only 1-2 joins&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simple to understand:&lt;/strong&gt; Resembles a star shape, intuitive for business users&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Query performance:&lt;/strong&gt; Faster than normalized schemas for analytical queries&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — star schema is the OLAP design paradigm&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../fact-table&quot; class=&quot;internal alias&quot; data-slug=&quot;fact-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Table&lt;/a&gt; — the central table of the star&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../dimension-table&quot; class=&quot;internal alias&quot; data-slug=&quot;dimension-table&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Dimension Table&lt;/a&gt; — the surrounding tables of the star&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../snowflake-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;snowflake-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Snowflake Schema&lt;/a&gt; — star is denormalized, snowflake is normalized&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../fact-constellation-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;fact-constellation-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Fact Constellation Schema&lt;/a&gt; — star has one fact table, constellation has multiple&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../multidimensional-data-model&quot; class=&quot;internal alias&quot; data-slug=&quot;multidimensional-data-model&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Multidimensional Data Model&lt;/a&gt; — star schema implements the dimensional model&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Data redundancy:&lt;/strong&gt; “Vancouver” and “Victoria” both repeat “British Columbia, Canada” in the location table. This is intentional — redundancy trades storage for query speed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slowly Changing Dimensions:&lt;/strong&gt; When a dimension attribute changes (customer moves cities), SCD techniques determine whether to overwrite, add a new row, or track history.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Not suitable for OLTP:&lt;/strong&gt; Star schema is optimized for reads, not writes. Using it for transactional operations leads to data integrity issues.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Degenerate dimensions:&lt;/strong&gt; Some low-cardinality attributes (order number, invoice number) are kept in the fact table rather than creating a separate dimension.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>subject-oriented-dwh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/subject-oriented-dwh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/subject-oriented-dwh.md" />
    <summary>The Problem Traditional operational databases are organized around applications — there is a database for invoicing, another for shipping, another for HR.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Traditional operational databases are organized around &lt;strong&gt;applications&lt;/strong&gt; — there is a database for invoicing, another for shipping, another for HR. Each application has its own tables, its own data model, and its own definition of entities like “customer.” When a manager wants to analyze “all customer interactions across the company,” they must query multiple unrelated application databases and manually reconcile the results.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A &lt;strong&gt;subject-oriented&lt;/strong&gt; data warehouse organizes data around major business &lt;strong&gt;subjects&lt;/strong&gt; (Customer, Product, Sales, Time) rather than around the applications that generate the data. This means all information related to a single subject is consolidated into one coherent view, regardless of which operational system originally produced it.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The shift from application-oriented to subject-oriented involves:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Identify key subjects:&lt;/strong&gt; Determine the major entities the business needs to analyze — typically Customer, Product, Sales, Location, Time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Map sources to subjects:&lt;/strong&gt; For each subject, identify all operational systems that contain relevant data. For “Customer,” this might include the CRM system, the billing system, the support ticket system, and the marketing database.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consolidate data:&lt;/strong&gt; Extract customer data from all sources, resolve conflicts (e.g., different customer IDs for the same person), and load into a unified subject table.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model for analysis:&lt;/strong&gt; Structure the subject tables with analysis in mind — denormalized attributes, clear hierarchies (City → State → Country), and time-stamped records.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Example:&lt;/strong&gt; Instead of a “Sales_App_DB” and a “Shipping_App_DB,” a subject-oriented warehouse has a “Sales” subject table and a “Product” subject table, each containing all relevant data regardless of source.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: subject_oriented Pages: 1 --&gt;
&lt;svg width=&quot;399pt&quot; height=&quot;241pt&quot; viewBox=&quot;0.00 0.00 399.00 241.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 237)&quot;&gt;
&lt;title&gt;subject_oriented&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-237 394.66,-237 394.66,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_apps&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;0,-40 0,-225 186.65,-225 186.65,-40 0,-40&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;93.33&quot; y=&quot;-208.4&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Application-Oriented (Before)&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_subjects&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;236.66,-8 236.66,-193 390.66,-193 390.66,-8 236.66,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;313.66&quot; y=&quot;-176.4&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Subject-Oriented (After)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- inv --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;inv&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;131.7,-138 53.95,-138 53.95,-102 131.7,-102 131.7,-138&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;92.83&quot; y=&quot;-116.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Invoicing DB&lt;/text&gt;
&lt;/g&gt;
&lt;!-- cust --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;cust&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;345,-160 281.32,-160 281.32,-124 345,-124 345,-160&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;313.16&quot; y=&quot;-145.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Customer&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;313.16&quot; y=&quot;-132.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Subject&lt;/text&gt;
&lt;/g&gt;
&lt;!-- inv&amp;#45;&amp;gt;cust --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;inv-&gt;cust&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M132.11,-123.86C170.62,-127.74 229.87,-133.71 269.78,-137.73&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;269.19,-141.19 279.49,-138.71 269.89,-134.22 269.19,-141.19&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;211.66&quot; y=&quot;-135.97&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;extract&lt;/text&gt;
&lt;/g&gt;
&lt;!-- sales --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;sales&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;340.16,-106 286.16,-106 286.16,-70 340.16,-70 340.16,-106&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;313.16&quot; y=&quot;-91.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Sales&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;313.16&quot; y=&quot;-78.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Subject&lt;/text&gt;
&lt;/g&gt;
&lt;!-- inv&amp;#45;&amp;gt;sales --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;inv-&gt;sales&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M132.11,-114.39C172.2,-108.51 234.78,-99.34 274.6,-93.5&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;275.05,-96.98 284.44,-92.06 274.04,-90.05 275.05,-96.98&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;211.66&quot; y=&quot;-107&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;extract&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ship --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ship&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;131.4,-84 54.25,-84 54.25,-48 131.4,-48 131.4,-84&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;92.83&quot; y=&quot;-62.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Shipping DB&lt;/text&gt;
&lt;/g&gt;
&lt;!-- prod --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;prod&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;340.16,-52 286.16,-52 286.16,-16 340.16,-16 340.16,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;313.16&quot; y=&quot;-37.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Product&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;313.16&quot; y=&quot;-24.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Subject&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ship&amp;#45;&amp;gt;prod --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;ship-&gt;prod&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M131.86,-60.43C171.91,-54.56 234.6,-45.37 274.51,-39.52&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;274.99,-42.99 284.37,-38.07 273.97,-36.06 274.99,-42.99&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;211.66&quot; y=&quot;-53&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;extract&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ship&amp;#45;&amp;gt;sales --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;ship-&gt;sales&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M131.75,-65.36C158.39,-65.35 194.82,-66.2 226.66,-70 242.63,-71.91 260.03,-75.32 274.94,-78.66&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;273.78,-81.99 284.31,-80.84 275.36,-75.17 273.78,-81.99&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;211.66&quot; y=&quot;-73&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;extract&lt;/text&gt;
&lt;/g&gt;
&lt;!-- crm --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;crm&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;122.52,-192 63.13,-192 63.13,-156 122.52,-156 122.52,-192&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;92.83&quot; y=&quot;-170.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;CRM DB&lt;/text&gt;
&lt;/g&gt;
&lt;!-- crm&amp;#45;&amp;gt;cust --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;crm-&gt;cust&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M122.82,-169.75C160.43,-164.24 226.35,-154.58 269.63,-148.23&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;270.04,-151.71 279.43,-146.8 269.03,-144.78 270.04,-151.71&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;211.66&quot; y=&quot;-161&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;extract&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_subject_oriented Pages: 1 --&gt;
&lt;svg width=&quot;267pt&quot; height=&quot;200pt&quot; viewBox=&quot;0.00 0.00 267.00 200.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 196.38)&quot;&gt;
&lt;title&gt;semantic_subject_oriented&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-196.38 263.4,-196.38 263.4,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;127.57&quot; cy=&quot;-86.87&quot; rx=&quot;80.29&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;127.57&quot; y=&quot;-90.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Subject-Oriented&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;127.57&quot; y=&quot;-75.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;179.44&quot; cy=&quot;-24.32&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;179.44&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;179.44&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M149.87,-59.98C153.16,-56.01 156.54,-51.94 159.77,-48.04&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;136.32&quot; y=&quot;-56.71&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- INTEGRATED --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;INTEGRATED&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;83.82&quot; cy=&quot;-18.49&quot; rx=&quot;58.69&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;83.82&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Integrated DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;INTEGRATED --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--INTEGRATED&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M110.03,-59.45C105.08,-51.72 99.83,-43.52 95.33,-36.49&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;88.92&quot; y=&quot;-50.67&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- STAR --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;STAR&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;49.23&quot; cy=&quot;-108.22&quot; rx=&quot;49.23&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;49.23&quot; y=&quot;-104.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Star Schema&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;STAR --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--STAR&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M63.97,-104.2C63.83,-104.24 63.7,-104.27 63.56,-104.31&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;43.5&quot; y=&quot;-106.96&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;203.36&quot; cy=&quot;-116.33&quot; rx=&quot;56.04&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;203.36&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Systems&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M181.44,-107.81C181.54,-107.85 181.63,-107.88 181.73,-107.92&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;161.32&quot; y=&quot;-110.56&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLTP --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLTP&lt;/title&gt;
&lt;ellipse fill=&quot;#ffe5cc&quot; stroke=&quot;black&quot; cx=&quot;123.74&quot; cy=&quot;-168.06&quot; rx=&quot;81.79&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;123.74&quot; y=&quot;-171.36&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Application-Oriented&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;123.74&quot; y=&quot;-158.16&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLTP&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLTP --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLTP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M126.25,-114.81C125.82,-124.08 125.33,-134.32 124.91,-143.32&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;98.07&quot; y=&quot;-131.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;contrasts with&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Analysis-first design:&lt;/strong&gt; Data organized for decision makers, not for transaction processing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cross-application consolidation:&lt;/strong&gt; All data about a subject unified from multiple sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subject boundaries:&lt;/strong&gt; Common subjects include Customer, Product, Sales, Location, Time&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Denormalization accepted:&lt;/strong&gt; Redundancy is tolerated if it makes analytical queries simpler and faster&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subject granularity:&lt;/strong&gt; Each subject can be analyzed at multiple levels (e.g., Customer → Household → Region)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — first of Inmon’s four characteristics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../integrated-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;integrated-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Integrated&lt;/a&gt; — subject-orientation requires integration of heterogeneous sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../wiki/data-warehouse/star-schema&quot; class=&quot;internal alias&quot; data-slug=&quot;wiki/data-warehouse/star-schema&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Star Schema&lt;/a&gt; — dimension tables are subject-oriented by design&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — OLAP uses subject-oriented design, OLTP uses application-oriented design&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../data-mart-types&quot; class=&quot;internal alias&quot; data-slug=&quot;data-mart-types&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Mart Types&lt;/a&gt; — data marts are subject-oriented subsets for specific departments&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Subject definition varies:&lt;/strong&gt; Different departments may define “Customer” differently (e.g., Marketing includes prospects, Sales only includes buyers). Resolution requires business-level agreement.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Not the same as normalization:&lt;/strong&gt; Subject-oriented means “organized by business topic,” not “normalized to 3NF.” In fact, subject-oriented warehouses are often denormalized.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Evolves over time:&lt;/strong&gt; New subjects emerge as business needs change — the warehouse schema must accommodate new subjects without breaking existing ones.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>three-tier-dwh-architecture</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/three-tier-dwh-architecture" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/three-tier-dwh-architecture.md" />
    <summary>The Problem Raw operational data is scattered across multiple heterogeneous systems in inconsistent formats.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Raw operational data is scattered across multiple heterogeneous systems in inconsistent formats. End users cannot query these sources directly, and running analytical queries against them would crash the production systems. A single monolithic system that does everything — extract, store, analyze, and display — becomes a maintenance nightmare and a performance bottleneck.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;The &lt;strong&gt;three-tier data warehouse architecture&lt;/strong&gt; separates concerns into three distinct layers: &lt;strong&gt;Tier 1&lt;/strong&gt; (bottom) stores the raw warehouse data, &lt;strong&gt;Tier 2&lt;/strong&gt; (middle) provides the OLAP engine for fast analytical querying, and &lt;strong&gt;Tier 3&lt;/strong&gt; (top) presents results through front-end tools for end users. This modular design ensures that heavy analytical queries do not impact data storage, and each layer can scale independently.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Data flows upward through the three tiers:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Tier 1 — Bottom Tier (Data Warehouse Server):&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;The foundation layer, typically an RDBMS storing massive historical data.&lt;/li&gt;
&lt;li&gt;Contains the &lt;strong&gt;metadata repository&lt;/strong&gt; describing data origins, transformations, and schema.&lt;/li&gt;
&lt;li&gt;Can be implemented as an Enterprise Warehouse, Data Marts, or Virtual Warehouse.&lt;/li&gt;
&lt;li&gt;Receives data from operational databases and external sources through &lt;strong&gt;gateways&lt;/strong&gt; (ODBC, JDBC, OLE-DB).&lt;/li&gt;
&lt;li&gt;Data is processed through the ETL pipeline: Extract → Clean → Transform → Load → Refresh.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Tier 2 — Middle Tier (OLAP Server):&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;The analytics engine that maps relational data from Tier 1 into multidimensional cubes.&lt;/li&gt;
&lt;li&gt;Implements one of: &lt;strong&gt;ROLAP&lt;/strong&gt; (relational OLAP), &lt;strong&gt;MOLAP&lt;/strong&gt; (multidimensional OLAP), &lt;strong&gt;HOLAP&lt;/strong&gt; (hybrid), or specialized SQL servers.&lt;/li&gt;
&lt;li&gt;Handles fast ad-hoc querying, slicing, dicing, roll-up, and drill-down operations.&lt;/li&gt;
&lt;li&gt;Isolates heavy analytical processing from the storage layer.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p dir=&quot;auto&quot;&gt;&lt;strong&gt;Tier 3 — Top Tier (Front-End Client Tools):&lt;/strong&gt;&lt;/p&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;The presentation layer where end users interact with the data.&lt;/li&gt;
&lt;li&gt;Includes query/reporting tools (tabular data), analysis tools (charts/graphs), data mining tools (pattern recognition), and visualization tools.&lt;/li&gt;
&lt;li&gt;Users never interact directly with the database — all requests go through the OLAP server.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: three_tier_architecture Pages: 1 --&gt;
&lt;svg width=&quot;230pt&quot; height=&quot;474pt&quot; viewBox=&quot;0.00 0.00 230.00 474.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 469.6)&quot;&gt;
&lt;title&gt;three_tier_architecture&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-469.6 226,-469.6 226,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_tier1&lt;/title&gt;
&lt;polygon fill=&quot;#f0f4ff&quot; stroke=&quot;black&quot; points=&quot;28,-200.8 28,-277.6 214,-277.6 214,-200.8 28,-200.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;121&quot; y=&quot;-261&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Tier 1: Bottom (DWH Server)&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust2&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_tier2&lt;/title&gt;
&lt;polygon fill=&quot;#f0fff0&quot; stroke=&quot;black&quot; points=&quot;8,-104.4 8,-192.8 195,-192.8 195,-104.4 8,-104.4&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101.5&quot; y=&quot;-176.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Tier 2: Middle (OLAP Server)&lt;/text&gt;
&lt;/g&gt;
&lt;g id=&quot;clust3&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_tier3&lt;/title&gt;
&lt;polygon fill=&quot;#fff8f0&quot; stroke=&quot;black&quot; points=&quot;26,-8 26,-96.4 188,-96.4 188,-8 26,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;107&quot; y=&quot;-79.8&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;Tier 3: Top (Client Tools)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- sources --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;sources&lt;/title&gt;
&lt;polygon fill=&quot;#e8e8e8&quot; stroke=&quot;black&quot; points=&quot;150.88,-465.6 51.12,-465.6 51.12,-429.6 150.88,-429.6 150.88,-465.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-450.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Operational DBs&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-437.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;External Sources&lt;/text&gt;
&lt;/g&gt;
&lt;!-- gateway --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;gateway&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;169.51,-393.6 32.49,-393.6 32.49,-357.6 169.51,-357.6 169.51,-393.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-378.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Gateways&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-365.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(ODBC, JDBC, OLE-DB)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- sources&amp;#45;&amp;gt;gateway --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;sources-&gt;gateway&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M101,-429.3C101,-422.01 101,-413.33 101,-405.14&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;104.5,-405.22 101,-395.22 97.5,-405.22 104.5,-405.22&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- etl --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;etl&lt;/title&gt;
&lt;polygon fill=&quot;#fff3cd&quot; stroke=&quot;black&quot; points=&quot;171.66,-321.6 30.34,-321.6 30.34,-285.6 171.66,-285.6 171.66,-321.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-306.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL: Extract, Clean,&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-293.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Transform, Load, Refresh&lt;/text&gt;
&lt;/g&gt;
&lt;!-- gateway&amp;#45;&amp;gt;etl --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;gateway-&gt;etl&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M101,-357.3C101,-350.01 101,-341.33 101,-333.14&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;104.5,-333.22 101,-323.22 97.5,-333.22 104.5,-333.22&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- dwh --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;dwh&lt;/title&gt;
&lt;polygon fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; points=&quot;158.06,-244.8 43.94,-244.8 43.94,-208.8 158.06,-208.8 158.06,-244.8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-230.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-216.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;RDBMS + Metadata&lt;/text&gt;
&lt;/g&gt;
&lt;!-- etl&amp;#45;&amp;gt;dwh --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;etl-&gt;dwh&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M101,-285.25C101,-276.66 101,-266.07 101,-256.32&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;104.5,-256.57 101,-246.57 97.5,-256.57 104.5,-256.57&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- olap --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;olap&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;174.72,-160 27.28,-160 27.28,-112.4 174.72,-112.4 174.72,-160&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-146.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Engine&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-132.9&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ROLAP / MOLAP / HOLAP&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-119.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Multidimensional Cubes&lt;/text&gt;
&lt;/g&gt;
&lt;!-- dwh&amp;#45;&amp;gt;olap --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;dwh-&gt;olap&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M101,-208.72C101,-198.17 101,-184.26 101,-171.51&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;104.5,-171.78 101,-161.78 97.5,-171.78 104.5,-171.78&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- tools --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;tools&lt;/title&gt;
&lt;polygon fill=&quot;#ffe5cc&quot; stroke=&quot;black&quot; points=&quot;161.89,-63.6 40.11,-63.6 40.11,-16 161.89,-16 161.89,-63.6&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-49.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Query/Reporting&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-36.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Analysis/Visualization&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;101&quot; y=&quot;-23.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Mining Tools&lt;/text&gt;
&lt;/g&gt;
&lt;!-- olap&amp;#45;&amp;gt;tools --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;olap-&gt;tools&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M101,-112.35C101,-101.27 101,-87.72 101,-75.4&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;104.5,-75.61 101,-65.61 97.5,-75.61 104.5,-75.61&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_three_tier Pages: 1 --&gt;
&lt;svg width=&quot;293pt&quot; height=&quot;209pt&quot; viewBox=&quot;0.00 0.00 293.00 209.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 205.07)&quot;&gt;
&lt;title&gt;semantic_three_tier&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-205.07 288.77,-205.07 288.77,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;143.69&quot; cy=&quot;-100.51&quot; rx=&quot;84.87&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;143.69&quot; y=&quot;-104.41&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Three-Tier&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;143.69&quot; y=&quot;-88.81&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH Architecture&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;215.09&quot; cy=&quot;-59.01&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;215.09&quot; y=&quot;-62.31&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;215.09&quot; y=&quot;-49.11&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M185.64,-76.13C185.76,-76.06 185.88,-75.99 186,-75.92&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;167.31&quot; y=&quot;-67.92&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- GATEWAY --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;GATEWAY&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;143.53&quot; cy=&quot;-18&quot; rx=&quot;54.9&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;143.53&quot; y=&quot;-14.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Gateway&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;GATEWAY --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--GATEWAY&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M143.64,-72.58C143.61,-60.61 143.59,-46.96 143.57,-36.31&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;162.11&quot; y=&quot;-46.35&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ETL --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;ETL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;72.95&quot; cy=&quot;-142.96&quot; rx=&quot;55.42&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;72.95&quot; y=&quot;-146.26&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;ETL Pipeline&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;72.95&quot; y=&quot;-133.06&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(DWH)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;ETL --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--ETL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M102.54,-125.21C102.42,-125.28 102.3,-125.35 102.18,-125.42&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;120.86&quot; y=&quot;-117.22&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_SRV --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_SRV&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;215.67&quot; cy=&quot;-141.05&quot; rx=&quot;53.39&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;215.67&quot; y=&quot;-137.75&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Servers&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_SRV --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_SRV&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M186.81,-124.8C187.17,-125 187.53,-125.2 187.89,-125.4&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;167.09&quot; y=&quot;-117&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- METADATA --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;METADATA&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;145.13&quot; cy=&quot;-183.07&quot; rx=&quot;63.6&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;145.13&quot; y=&quot;-179.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Metadata in DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;METADATA --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--METADATA&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M144.18,-128.46C144.39,-140.44 144.63,-154.09 144.81,-164.75&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;144.5&quot; y=&quot;-138.5&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- SERVERS --&gt;
&lt;g id=&quot;node7&quot; class=&quot;node&quot;&gt;
&lt;title&gt;SERVERS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;71.91&quot; cy=&quot;-59.9&quot; rx=&quot;71.91&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;71.91&quot; y=&quot;-56.6&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Server Models&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;SERVERS --&gt;
&lt;g id=&quot;edge6&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--SERVERS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M100.7,-76.18C100.58,-76.12 100.46,-76.05 100.34,-75.98&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;120.78&quot; y=&quot;-67.98&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Modular separation:&lt;/strong&gt; Each tier handles one concern — storage, analysis, or presentation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Independent scaling:&lt;/strong&gt; Heavy analytical load on Tier 2 does not impact Tier 1 storage&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gateway abstraction:&lt;/strong&gt; ODBC, JDBC, OLE-DB provide uniform access to heterogeneous sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata at Tier 1:&lt;/strong&gt; The warehouse server maintains metadata describing all warehouse objects&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ETL feeds Tier 1:&lt;/strong&gt; Data enters through the bottom tier only, never directly from users&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — the architecture implements Inmon’s definition&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../dwh-gateway&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-gateway&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Gateway&lt;/a&gt; — gateways connect Tier 1 to external sources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../etl-pipeline-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;etl-pipeline-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;ETL Pipeline (DWH)&lt;/a&gt; — ETL feeds data into Tier 1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-servers&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-servers&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Servers&lt;/a&gt; — Tier 2 is the OLAP server layer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../dwh-server-models&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-server-models&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Server Models&lt;/a&gt; — Tier 1 can be Enterprise, Data Mart, or Virtual&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../metadata-in-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;metadata-in-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Metadata in DWH&lt;/a&gt; — metadata repository resides in Tier 1&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../three-tier-dwh-architecture&quot; class=&quot;internal alias&quot; data-slug=&quot;three-tier-dwh-architecture&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Three-Tier DWH Architecture&lt;/a&gt; — the overall system design&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;High latency:&lt;/strong&gt; Data must traverse ETL before reaching users — the warehouse is never real-time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Maintenance overhead:&lt;/strong&gt; Three separate layers require coordinated management and version control.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tier 2 is the bottleneck:&lt;/strong&gt; The OLAP server’s performance determines the end-user experience. If cubes are not pre-computed, queries will be slow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Virtual warehouse skips Tier 1 storage:&lt;/strong&gt; In a virtual architecture, there is no physical warehouse — queries are routed directly to source systems.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry><entry>
    <title>time-variant-dwh</title>
    <link href="https://animishraa05.github.io/wiki/data-warehouse/time-variant-dwh" />
    <link rel="alternate" type="text/markdown" href="https://animishraa05.github.io/wiki/data-warehouse/time-variant-dwh.md" />
    <summary>The Problem Operational databases are optimized for showing the current state — what is the customer’s current balance, what is today’s inventory level.</summary>
    <published>2026-05-04T00:00:00.000Z</published>
    <updated>2026-05-04T00:00:00.000Z</updated>
    <publishedTime>May 04, 2026</publishedTime>
    <updatedTime>May 04, 2026</updatedTime>
    <category term="database" label="database" />
<category term="data-warehouse" label="data-warehouse" />
    <author>
      <name>Animesh Mishra</name>
      <email>animesh.mishra818@gmail.com</email>
    </author>
    <content type="html">&lt;h2 id=&quot;the-problem&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;The Problem&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#the-problem&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Operational databases are optimized for showing the &lt;strong&gt;current state&lt;/strong&gt; — what is the customer’s current balance, what is today’s inventory level. But managers need to answer questions like “How has customer behavior changed over the past 5 years?” or “What was our revenue trend from 2019 to 2024?” Without historical data stored alongside timestamps, trend analysis and temporal comparisons are impossible.&lt;/p&gt;
&lt;h2 id=&quot;core-idea&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Core Idea&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#core-idea&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;A &lt;strong&gt;time-variant&lt;/strong&gt; data warehouse stores data with explicit or implicit time elements, providing a historical perspective that typically spans 5-10 years. Every key structure in the warehouse contains a time component, enabling analysis of how data changes over time rather than just its current value.&lt;/p&gt;
&lt;h2 id=&quot;how-it-works&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;How It Works&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#how-it-works&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p dir=&quot;auto&quot;&gt;Time-variance is implemented through several mechanisms:&lt;/p&gt;
&lt;ol dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Timestamping every record:&lt;/strong&gt; Each row in the warehouse includes a time element — either as an explicit timestamp column or implicitly embedded in the key structure (e.g., &lt;code class=&quot;notranslate&quot;&gt;date_id = 20240315&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Historical snapshots:&lt;/strong&gt; Instead of overwriting old values, the warehouse appends new records. If a customer’s address changes, both the old and new addresses exist with their respective time ranges.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time hierarchies:&lt;/strong&gt; Data is organized along time dimensions with natural hierarchies: Day → Month → Quarter → Year. This enables roll-up (daily → monthly → yearly) and drill-down (yearly → quarterly → monthly).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Periodic snapshots:&lt;/strong&gt; At regular intervals (daily, weekly, monthly), the warehouse captures the state of key metrics, creating a time-series of business snapshots.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slowly Changing Dimensions (SCDs):&lt;/strong&gt; Dimension tables use techniques (SCD Type 1, Type 2, Type 3) to track how descriptive attributes change over time.&lt;/li&gt;
&lt;/ol&gt;
&lt;p dir=&quot;auto&quot;&gt;This temporal depth enables year-over-year comparisons, trend identification, seasonal analysis, and forecasting — all impossible in an OLTP system that only maintains current state.&lt;/p&gt;
&lt;h2 id=&quot;visual-explanation&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Visual Explanation&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#visual-explanation&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: time_variant Pages: 1 --&gt;
&lt;svg width=&quot;381pt&quot; height=&quot;331pt&quot; viewBox=&quot;0.00 0.00 381.00 331.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 326.8)&quot;&gt;
&lt;title&gt;time_variant&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-326.8 377.1,-326.8 377.1,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;g id=&quot;clust1&quot; class=&quot;cluster&quot;&gt;
&lt;title&gt;cluster_time_series&lt;/title&gt;
&lt;polygon fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; points=&quot;155.1,-8 155.1,-314.8 365.1,-314.8 365.1,-8 155.1,-8&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;260.1&quot; y=&quot;-298.2&quot; font-family=&quot;Times,serif&quot; font-size=&quot;14.00&quot;&gt;DWH (Time-Variant -- Historical)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- oltp --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;oltp&lt;/title&gt;
&lt;polygon fill=&quot;#f8d7da&quot; stroke=&quot;black&quot; points=&quot;146.21,-209 0,-209 0,-173 146.21,-173 146.21,-209&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;73.1&quot; y=&quot;-194.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLTP (Current State Only)&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;73.1&quot; y=&quot;-181.1&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Balance: $5,000&lt;/text&gt;
&lt;/g&gt;
&lt;!-- t3 --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;t3&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;295.36,-125 162.85,-125 162.85,-89 295.36,-89 295.36,-125&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;229.1&quot; y=&quot;-103.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;2024: Balance = $5,000&lt;/text&gt;
&lt;/g&gt;
&lt;!-- oltp&amp;#45;&amp;gt;t3 --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;oltp-&gt;t3&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;5 2&quot; d=&quot;M98.68,-172.71C112.99,-163.37 131.35,-151.96 148.4,-143 157.04,-138.46 166.4,-134 175.58,-129.87&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;black&quot; stroke=&quot;black&quot; points=&quot;176.7,-133.21 184.44,-125.97 173.88,-126.8 176.7,-133.21&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;186.75&quot; y=&quot;-146&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;10.00&quot;&gt;current state only&lt;/text&gt;
&lt;/g&gt;
&lt;!-- t1 --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;t1&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;296.36,-282 163.85,-282 163.85,-246 296.36,-246 296.36,-282&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;230.1&quot; y=&quot;-260.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;2022: Balance = $2,000&lt;/text&gt;
&lt;/g&gt;
&lt;!-- t2 --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;t2&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;296.36,-209 163.85,-209 163.85,-173 296.36,-173 296.36,-209&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;230.1&quot; y=&quot;-187.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;2023: Balance = $3,500&lt;/text&gt;
&lt;/g&gt;
&lt;!-- t1&amp;#45;&amp;gt;t2 --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;t1-&gt;t2&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;green&quot; stroke-width=&quot;2&quot; d=&quot;M230.1,-245.81C230.1,-238.23 230.1,-229.1 230.1,-220.54&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;green&quot; stroke=&quot;green&quot; stroke-width=&quot;2&quot; points=&quot;233.6,-222.06 230.1,-212.06 226.6,-222.06 233.6,-222.06&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- t2&amp;#45;&amp;gt;t3 --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;t2-&gt;t3&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;green&quot; stroke-width=&quot;2&quot; d=&quot;M229.89,-172.61C229.76,-162.17 229.6,-148.64 229.45,-136.66&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;green&quot; stroke=&quot;green&quot; stroke-width=&quot;2&quot; points=&quot;232.97,-138.35 229.35,-128.39 225.97,-138.43 232.97,-138.35&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;!-- t4 --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;t4&lt;/title&gt;
&lt;polygon fill=&quot;#d4edda&quot; stroke=&quot;black&quot; points=&quot;295.36,-52 162.85,-52 162.85,-16 295.36,-16 295.36,-52&quot;&gt;&lt;/polygon&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;229.1&quot; y=&quot;-30.7&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;2025: Balance = $6,200&lt;/text&gt;
&lt;/g&gt;
&lt;!-- t3&amp;#45;&amp;gt;t4 --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;t3-&gt;t4&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;green&quot; stroke-width=&quot;2&quot; d=&quot;M229.1,-88.81C229.1,-81.23 229.1,-72.1 229.1,-63.54&quot;&gt;&lt;/path&gt;
&lt;polygon fill=&quot;green&quot; stroke=&quot;green&quot; stroke-width=&quot;2&quot; points=&quot;232.6,-65.06 229.1,-55.06 225.6,-65.06 232.6,-65.06&quot;&gt;&lt;/polygon&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;semantic-network&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Semantic Network&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#semantic-network&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;graphviz-container&quot; style=&quot;display: flex; justify-content: center; margin: 1.5rem 0; overflow-x: auto;&quot; dir=&quot;auto&quot;&gt;&lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?--&gt;

&lt;!-- Generated by graphviz version 15.1.0 (0)
 --&gt;
&lt;!-- Title: semantic_time_variant Pages: 1 --&gt;
&lt;svg width=&quot;315pt&quot; height=&quot;194pt&quot; viewBox=&quot;0.00 0.00 315.00 194.00&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;&gt;
&lt;g id=&quot;graph0&quot; class=&quot;graph&quot; transform=&quot;scale(1 1) rotate(0) translate(4 190.06)&quot;&gt;
&lt;title&gt;semantic_time_variant&lt;/title&gt;
&lt;polygon fill=&quot;white&quot; stroke=&quot;none&quot; points=&quot;-4,4 -4,-190.06 310.83,-190.06 310.83,4 -4,4&quot;&gt;&lt;/polygon&gt;
&lt;!-- THIS --&gt;
&lt;g id=&quot;node1&quot; class=&quot;node&quot;&gt;
&lt;title&gt;THIS&lt;/title&gt;
&lt;ellipse fill=&quot;#ffd700&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; cx=&quot;158.37&quot; cy=&quot;-86.87&quot; rx=&quot;63.93&quot; ry=&quot;27.72&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;158.37&quot; y=&quot;-90.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;Time-Variant&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;158.37&quot; y=&quot;-75.17&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;13.00&quot;&gt;DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- DWH_DEF --&gt;
&lt;g id=&quot;node2&quot; class=&quot;node&quot;&gt;
&lt;title&gt;DWH_DEF&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;210.24&quot; cy=&quot;-24.32&quot; rx=&quot;69.68&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;210.24&quot; y=&quot;-27.62&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Data Warehouse&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;210.24&quot; y=&quot;-14.42&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Definition&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;DWH_DEF --&gt;
&lt;g id=&quot;edge1&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--DWH_DEF&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M180.07,-60.71C183.62,-56.42 187.28,-52.01 190.78,-47.79&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;166.92&quot; y=&quot;-56.95&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;built from&lt;/text&gt;
&lt;/g&gt;
&lt;!-- NONVOL --&gt;
&lt;g id=&quot;node3&quot; class=&quot;node&quot;&gt;
&lt;title&gt;NONVOL&lt;/title&gt;
&lt;ellipse fill=&quot;#cce5ff&quot; stroke=&quot;black&quot; cx=&quot;114.62&quot; cy=&quot;-18.49&quot; rx=&quot;61.71&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;114.62&quot; y=&quot;-15.19&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;Nonvolatile DWH&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;NONVOL --&gt;
&lt;g id=&quot;edge2&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--NONVOL&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M141.08,-59.85C136.01,-51.93 130.61,-43.48 126.01,-36.3&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;119.78&quot; y=&quot;-50.77&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLAP_OPS --&gt;
&lt;g id=&quot;node4&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLAP_OPS&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;80.03&quot; cy=&quot;-108.22&quot; rx=&quot;80.03&quot; ry=&quot;24.32&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;80.03&quot; y=&quot;-111.52&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLAP Operations&lt;/text&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;80.03&quot; y=&quot;-98.32&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;(Roll-up, Drill-down)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLAP_OPS --&gt;
&lt;g id=&quot;edge3&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLAP_OPS&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M103.96,-101.7C103.86,-101.72 103.75,-101.75 103.65,-101.78&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;83.54&quot; y=&quot;-104.44&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;builds into&lt;/text&gt;
&lt;/g&gt;
&lt;!-- OLTP --&gt;
&lt;g id=&quot;node5&quot; class=&quot;node&quot;&gt;
&lt;title&gt;OLTP&lt;/title&gt;
&lt;ellipse fill=&quot;#ffe5cc&quot; stroke=&quot;black&quot; cx=&quot;234.16&quot; cy=&quot;-116.33&quot; rx=&quot;72.67&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;234.16&quot; y=&quot;-113.03&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;OLTP (Current Only)&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;OLTP --&gt;
&lt;g id=&quot;edge4&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--OLTP&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; stroke-dasharray=&quot;1 5&quot; d=&quot;M206.37,-105.53C206.49,-105.57 206.61,-105.62 206.72,-105.66&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;234.06&quot; y=&quot;-108.3&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;contrasts with&lt;/text&gt;
&lt;/g&gt;
&lt;!-- REFRESH --&gt;
&lt;g id=&quot;node6&quot; class=&quot;node&quot;&gt;
&lt;title&gt;REFRESH&lt;/title&gt;
&lt;ellipse fill=&quot;#d4edda&quot; stroke=&quot;black&quot; cx=&quot;154.54&quot; cy=&quot;-168.06&quot; rx=&quot;51.87&quot; ry=&quot;18&quot;&gt;&lt;/ellipse&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;154.54&quot; y=&quot;-164.76&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;11.00&quot;&gt;DWH Refresh&lt;/text&gt;
&lt;/g&gt;
&lt;!-- THIS&amp;#45;&amp;#45;REFRESH --&gt;
&lt;g id=&quot;edge5&quot; class=&quot;edge&quot;&gt;
&lt;title&gt;THIS--REFRESH&lt;/title&gt;
&lt;path fill=&quot;none&quot; stroke=&quot;black&quot; d=&quot;M157.05,-114.81C156.51,-126.37 155.89,-139.45 155.41,-149.75&quot;&gt;&lt;/path&gt;
&lt;text xml:space=&quot;preserve&quot; text-anchor=&quot;middle&quot; x=&quot;142.47&quot; y=&quot;-134.98&quot; font-family=&quot;Helvetica,sans-Serif&quot; font-size=&quot;9.00&quot;&gt;related&lt;/text&gt;
&lt;/g&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;h2 id=&quot;key-properties&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Key Properties&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#key-properties&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Historical depth:&lt;/strong&gt; Typically stores 5-10 years of data&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Every key contains time:&lt;/strong&gt; Timestamps are explicit columns or implicit in key structures&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Append-only growth:&lt;/strong&gt; New time-period data is appended; old data is never overwritten&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time hierarchies:&lt;/strong&gt; Day → Month → Quarter → Year for aggregation at different granularities&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Temporal analysis:&lt;/strong&gt; Enables trend detection, year-over-year comparison, seasonality analysis&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;connections&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Connections&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#connections&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../data-warehouse-definition&quot; class=&quot;internal alias&quot; data-slug=&quot;data-warehouse-definition&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Definition&lt;/a&gt; — third of Inmon’s four characteristics&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Built from:&lt;/strong&gt; &lt;a href=&quot;../../nonvolatile-dwh&quot; class=&quot;internal alias&quot; data-slug=&quot;nonvolatile-dwh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Nonvolatile&lt;/a&gt; — time-variance requires nonvolatility to preserve history&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../olap-operations&quot; class=&quot;internal alias&quot; data-slug=&quot;olap-operations&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLAP Operations&lt;/a&gt; — roll-up and drill-down operate on time hierarchies&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Builds into:&lt;/strong&gt; &lt;a href=&quot;../../dwh-scale&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-scale&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;Data Warehouse Scale&lt;/a&gt; — historical accumulation is a primary driver of warehouse size&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contrasts with:&lt;/strong&gt; &lt;a href=&quot;../../oltp-vs-olap&quot; class=&quot;internal alias&quot; data-slug=&quot;oltp-vs-olap&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;OLTP vs OLAP&lt;/a&gt; — OLTP maintains current state only; OLAP maintains full history&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Related:&lt;/strong&gt; &lt;a href=&quot;../../dwh-refresh&quot; class=&quot;internal alias&quot; data-slug=&quot;dwh-refresh&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;DWH Refresh&lt;/a&gt; — periodic refresh adds new time slices to the warehouse&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;edge-cases--gotchas&quot; dir=&quot;auto&quot;&gt;&lt;span class=&quot;highlight-span&quot;&gt;Edge Cases &amp;#x26; Gotchas&lt;/span&gt;&lt;a data-role=&quot;anchor&quot; data-no-popover href=&quot;#edge-cases--gotchas&quot; class=&quot;internal&quot;&gt;&lt;span class=&quot;indicator-hook&quot;&gt;&lt;/span&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;use href=&quot;#github-anchor&quot;&gt;&lt;/use&gt;&lt;/svg&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul dir=&quot;auto&quot;&gt;
&lt;li&gt;&lt;strong&gt;Storage explosion:&lt;/strong&gt; Storing 10 years of daily snapshots creates massive data volumes. Archival and summarization strategies are essential.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time zone complexity:&lt;/strong&gt; Global businesses must handle multiple time zones consistently — UTC is the standard choice.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;“Time variant” ≠ “real-time”:&lt;/strong&gt; Warehouses are periodically refreshed (nightly, weekly), not updated in real-time. The historical data is always slightly behind the operational systems.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changing definitions over time:&lt;/strong&gt; A “customer” may be defined differently in 2019 vs. 2024. The warehouse must handle evolving business definitions.&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry>
</feed>