<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Benjamin Ochieng</title>
    <description>The latest articles on DEV Community by Benjamin Ochieng (@benjamin_ogol_1af8e695c87).</description>
    <link>https://dev.to/benjamin_ogol_1af8e695c87</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3952248%2Fd74b3c05-b497-41e3-9eab-03b93423695e.png</url>
      <title>DEV Community: Benjamin Ochieng</title>
      <link>https://dev.to/benjamin_ogol_1af8e695c87</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/benjamin_ogol_1af8e695c87"/>
    <language>en</language>
    <item>
      <title>How I Connected a Cloud PostgreSQL Database to DBeaver and Power BI — And What Nobody Tells You About the Process</title>
      <dc:creator>Benjamin Ochieng</dc:creator>
      <pubDate>Sun, 05 Jul 2026 12:19:01 +0000</pubDate>
      <link>https://dev.to/benjamin_ogol_1af8e695c87/how-i-connected-a-cloud-postgresql-database-to-dbeaver-and-power-bi-and-what-nobody-tells-you-5gjc</link>
      <guid>https://dev.to/benjamin_ogol_1af8e695c87/how-i-connected-a-cloud-postgresql-database-to-dbeaver-and-power-bi-and-what-nobody-tells-you-5gjc</guid>
      <description>&lt;p&gt;&lt;em&gt;A step-by-step account of connecting Aiven cloud to a local database tool and into Power BI — with the frustrations, the certificates, and the small victories included.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Nobody Warns You About
&lt;/h2&gt;

&lt;p&gt;You have data. It lives somewhere in the cloud — a PostgreSQL service, spinning quietly on a server you have never physically touched. You want to query it, clean it, visualise it. Simple enough in theory.&lt;/p&gt;

&lt;p&gt;Then you open your laptop.&lt;/p&gt;

&lt;p&gt;Within ten minutes you are staring at connection errors, downloading files called things like &lt;code&gt;ca.pem&lt;/code&gt;, and wondering why a database tutorial never mentioned certificates once. This article is my attempt to fix that. Here is the full road — every step, every reason, and every thing that tripped me up — from creating a PostgreSQL service on Aiven to pulling live data into Power BI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Will Need
&lt;/h2&gt;

&lt;p&gt;Before starting, get these ready:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;a href="https://aiven.io" rel="noopener noreferrer"&gt;Aiven&lt;/a&gt; account (free tier works fine to follow along)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dbeaver.io" rel="noopener noreferrer"&gt;DBeaver Community Edition&lt;/a&gt; installed on your computer&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://powerbi.microsoft.com/desktop" rel="noopener noreferrer"&gt;Power BI Desktop&lt;/a&gt; installed&lt;/li&gt;
&lt;li&gt;Basic familiarity with what a database is — you do not need to know SQL yet&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1 — Creating a PostgreSQL Service on Aiven
&lt;/h2&gt;

&lt;p&gt;Aiven is a managed cloud database platform. Think of it as renting a database that lives on a server somewhere — you do not manage the server, you just use the database. For data analysts who want to work with live, cloud-hosted data without setting up their own server infrastructure, it is a reasonable starting point.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbjpd772g76j0lby5vemz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbjpd772g76j0lby5vemz.png" alt="*The Aiven dashboard showing the service creation screen*" width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you log into Aiven for the first time, you land on a dashboard that asks what kind of service you want to create. Select &lt;strong&gt;PostgreSQL&lt;/strong&gt;. You will be prompted to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Choose a cloud provider — Google Cloud, AWS, or Azure all work. For a free-tier test, the region does not matter much, but pick one geographically close to you for better connection speed.&lt;/li&gt;
&lt;li&gt;Select a plan — the free tier gives you a single-node PostgreSQL instance, which is enough for learning and small datasets.&lt;/li&gt;
&lt;li&gt;Name your service — pick something meaningful. I used &lt;code&gt;jcars&lt;/code&gt; to match the dataset I was working with.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After clicking &lt;strong&gt;Create Service&lt;/strong&gt;, Aiven starts building your database. This takes between one and five minutes. The status indicator on your dashboard will show &lt;strong&gt;Rebuilding&lt;/strong&gt;, then &lt;strong&gt;Running&lt;/strong&gt;. Do not try to connect during the Rebuilding phase — the service is not ready and the connection will fail.&lt;/p&gt;

&lt;p&gt;Wait until it says &lt;strong&gt;Running&lt;/strong&gt; before moving to the next step.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;One thing worth knowing: Aiven generates connection credentials automatically when the service is created. You will need the &lt;strong&gt;host&lt;/strong&gt;, &lt;strong&gt;port&lt;/strong&gt;, &lt;strong&gt;database name&lt;/strong&gt;, &lt;strong&gt;username&lt;/strong&gt;, and &lt;strong&gt;password&lt;/strong&gt; from the service overview page. Keep that page open — you will be copying from it several times.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 2 — Connecting the Aiven Service to DBeaver
&lt;/h2&gt;

&lt;p&gt;DBeaver is a free database management tool. It lets you connect to databases, run SQL queries, view table structures, and import data — all from a desktop interface. If you have never used it before, think of it as the Excel of database tools: not the most powerful option available, but accessible and genuinely useful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgu6m1tg05oo8bmizjvrm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgu6m1tg05oo8bmizjvrm.png" alt="*DBeaver's new connection wizard with PostgreSQL selected*" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To connect DBeaver to your Aiven PostgreSQL service:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open DBeaver and click the &lt;strong&gt;plug icon&lt;/strong&gt; in the top left (or go to &lt;strong&gt;Database → New Database Connection&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;PostgreSQL&lt;/strong&gt; and select it&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Next&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will see a connection form asking for several fields. Fill them in directly from your Aiven service overview page:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Where to find it in Aiven&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Host&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Listed as "Host" in the Connection Information panel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Port&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Listed next to the host, typically &lt;code&gt;20025&lt;/code&gt; for Aiven PostgreSQL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Database&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Usually &lt;code&gt;defaultdb&lt;/code&gt; on Aiven free tier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Username&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Listed as "User" in the Connection Information panel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Password&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Click "Show password" in Aiven to reveal it&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;After filling these in, click &lt;strong&gt;Test Connection&lt;/strong&gt; before clicking Finish. If the test succeeds, you will see a green confirmation message. If it fails, the most common cause at this stage is a firewall or SSL issue — which brings us to the certificate step.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do not skip the connection test. A failed test here is much easier to debug than a failed connection three steps later when other things have changed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 3 — Importing a Table into DBeaver
&lt;/h2&gt;

&lt;p&gt;Once connected, your Aiven database appears in the DBeaver sidebar as a tree structure. You will see your database name, then schemas, then tables. On a fresh Aiven service, the &lt;code&gt;public&lt;/code&gt; schema exists but contains no tables.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F32n4qmpt8xyrxoj06hv8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F32n4qmpt8xyrxoj06hv8.png" alt="*DBeaver sidebar showing the database tree with the public schema expanded*" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To import data from your computer into DBeaver:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Right-click on the &lt;code&gt;public&lt;/code&gt; schema in the sidebar&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Import Data&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Choose your source format — CSV is the most common&lt;/li&gt;
&lt;li&gt;Browse to your file and select it&lt;/li&gt;
&lt;li&gt;DBeaver will preview the data and attempt to map columns to data types automatically&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pay attention to the data type mapping step. DBeaver will make educated guesses — a column of dates might be read as text, or a numeric column with occasional blanks might be flagged as incompatible. Correct any obvious errors before proceeding.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Import&lt;/strong&gt; and wait. For larger files this can take a minute or two. When finished, right-click the &lt;code&gt;public&lt;/code&gt; schema and select &lt;strong&gt;Refresh&lt;/strong&gt; — your new table should appear in the tree.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 — Confirming the Import Worked
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd8h2y4bp1g74lvcaeu77.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd8h2y4bp1g74lvcaeu77.png" alt="*A successful table import shown in DBeaver with row count visible*" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To confirm everything landed correctly, right-click your table and select &lt;strong&gt;View Data&lt;/strong&gt;. DBeaver runs a &lt;code&gt;SELECT *&lt;/code&gt; query against the table and shows you the results in a spreadsheet-style grid. Scroll through the first few rows and check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Column names match what you expected&lt;/li&gt;
&lt;li&gt;Row count looks right&lt;/li&gt;
&lt;li&gt;Data types are sensible — dates look like dates, numbers look like numbers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If something looks wrong here, it is better to re-import with corrected settings than to fix it downstream in Power BI or Power Query. Catching data problems close to the source saves time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5 — Downloading the SSL Certificate from Aiven
&lt;/h2&gt;

&lt;p&gt;Here is where most tutorials go quiet. They tell you to connect Power BI to PostgreSQL, show a screenshot of the connection dialog, and move on. What they skip is the certificate.&lt;/p&gt;

&lt;p&gt;Aiven requires SSL connections. That is not optional — it is a security requirement of the platform. Power BI's PostgreSQL connector supports SSL, but it needs the certificate to verify the connection is legitimate. Without it, the connection either fails outright or connects in an insecure mode that Aiven blocks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8k7jec0cvvmcydosxmm9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8k7jec0cvvmcydosxmm9.png" alt="*The Aiven service overview page with the CA Certificate download button visible*" width="799" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get the certificate:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open your Aiven service overview page&lt;/li&gt;
&lt;li&gt;Scroll down to the &lt;strong&gt;Connection Information&lt;/strong&gt; section&lt;/li&gt;
&lt;li&gt;Find &lt;strong&gt;CA Certificate&lt;/strong&gt; and click &lt;strong&gt;Download&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will receive a file called &lt;code&gt;ca.pem&lt;/code&gt;. Save it somewhere you can find it — a dedicated folder for your project is a sensible choice. You will need to point Power BI to this file during setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6 — Importing the Certificate into Your System
&lt;/h2&gt;

&lt;p&gt;Downloading the certificate is one thing. Making your system trust it is another.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjaycas94tdo5o6i1tani.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjaycas94tdo5o6i1tani.png" alt="*The certificate management screen showing the import process*" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From your system's certificate manager — on Windows, search for &lt;strong&gt;Manage user certificates&lt;/strong&gt; in the Start menu — navigate to &lt;strong&gt;Trusted Root Certification Authorities&lt;/strong&gt;, right-click, and select &lt;strong&gt;Import&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Walk through the import wizard and point it to your &lt;code&gt;ca.pem&lt;/code&gt; file. Accept the default options unless you have a specific reason to change them.&lt;/p&gt;

&lt;p&gt;Why does this matter? When Power BI connects to Aiven, it performs an SSL handshake — a verification process where your computer and the Aiven server confirm they trust each other. If your system does not have the Aiven CA certificate in its trusted store, that handshake fails, and the connection is refused before it even starts.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I am not fully certain whether this step is strictly required on all operating systems and Power BI versions — behaviour may vary. If your connection works without it in Step 7, you can skip this step. If the connection fails with an SSL error, come back here first.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 7 — Connecting Power BI to Your Aiven PostgreSQL Database
&lt;/h2&gt;

&lt;p&gt;With the certificate sorted, Power BI is the last piece.&lt;/p&gt;

&lt;p&gt;Open Power BI Desktop and go to &lt;strong&gt;Home → Get Data → More&lt;/strong&gt;. Search for &lt;strong&gt;PostgreSQL database&lt;/strong&gt; and select it. You will see a connection dialog asking for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Server&lt;/strong&gt; — paste your Aiven host and port together, formatted as &lt;code&gt;hostname:port&lt;/code&gt;. For example: &lt;code&gt;pg-xxxx.aivencloud.com:20025&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database&lt;/strong&gt; — type &lt;code&gt;defaultdb&lt;/code&gt; (or whatever your Aiven database is named)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click &lt;strong&gt;OK&lt;/strong&gt;. Power BI will ask for your username and password — use the same credentials from your Aiven service overview.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs5gckrwr0c68qtlnv843.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs5gckrwr0c68qtlnv843.png" alt="*The Power BI Get Data dialog with PostgreSQL database selected*" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the connection is successful, Power BI shows a &lt;strong&gt;Navigator&lt;/strong&gt; panel listing all tables in your database. Select the tables you want to load, click &lt;strong&gt;Load&lt;/strong&gt; (to bring data straight in) or &lt;strong&gt;Transform Data&lt;/strong&gt; (to open Power Query for cleaning first).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fayw6xxxerc00va0buro8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fayw6xxxerc00va0buro8.png" alt="*The Power BI data navigator showing the successfully connected database tables*" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
That is it. Your cloud database is now live inside Power BI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Setup Actually Gives You
&lt;/h2&gt;

&lt;p&gt;A PostgreSQL database on Aiven connected to Power BI is not just a technical exercise. It is the foundation of a proper data workflow.&lt;/p&gt;

&lt;p&gt;Your data lives in one place — the cloud database. Any tool that can connect to PostgreSQL (DBeaver, Power BI, Python with &lt;code&gt;psycopg2&lt;/code&gt;, or any SQL client) can read from it. When the data updates, your Power BI reports update on refresh without you having to manually replace CSV files or re-import spreadsheets.&lt;/p&gt;

&lt;p&gt;For a data analyst building a portfolio, this kind of setup also demonstrates something that a cleaned Excel file cannot: you understand how production data environments work. Data in the real world lives in databases. It is queried, not downloaded. Being comfortable with that distinction is worth more than it might seem on a CV.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Reference — Connection Details at a Glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Key Setting&lt;/th&gt;
&lt;th&gt;Where to Find It&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DBeaver&lt;/td&gt;
&lt;td&gt;Host, Port, Database, Username, Password&lt;/td&gt;
&lt;td&gt;Aiven service overview → Connection Information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DBeaver&lt;/td&gt;
&lt;td&gt;SSL mode&lt;/td&gt;
&lt;td&gt;Set to &lt;strong&gt;require&lt;/strong&gt; in the SSL tab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power BI&lt;/td&gt;
&lt;td&gt;Server field&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;hostname:port&lt;/code&gt; from Aiven (e.g. &lt;code&gt;pg-xxxx.aivencloud.com:20025&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power BI&lt;/td&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;defaultdb&lt;/code&gt; or your named database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Certificate&lt;/td&gt;
&lt;td&gt;CA file&lt;/td&gt;
&lt;td&gt;Download from Aiven → Connection Information → CA Certificate&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>postgres</category>
      <category>dbeaver</category>
      <category>powerbi</category>
      <category>adventofai</category>
    </item>
    <item>
      <title>The Invisible Architecture Behind Every Great Power BI Report</title>
      <dc:creator>Benjamin Ochieng</dc:creator>
      <pubDate>Mon, 29 Jun 2026 06:44:54 +0000</pubDate>
      <link>https://dev.to/benjamin_ogol_1af8e695c87/the-invisible-architecture-behind-every-great-power-bi-report-3cam</link>
      <guid>https://dev.to/benjamin_ogol_1af8e695c87/the-invisible-architecture-behind-every-great-power-bi-report-3cam</guid>
      <description>&lt;p&gt;&lt;em&gt;A practical guide to database schemas, joins, and data modelling — and why they matter for every dashboard you will ever build&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Imagine you walk into a brand new supermarket. The shelves are fully stocked — thousands of products — but nothing is organised. Beverages are next to shoe polish. Rice is next to televisions. There are no labels, no sections, no logic. You could spend hours searching for a single item.&lt;/p&gt;

&lt;p&gt;That is exactly what happens when you load messy, unstructured data into Power BI. The tool is powerful. The data is there. But without structure, the dashboard you build will be unreliable at best and misleading at worst.&lt;/p&gt;

&lt;p&gt;This article is about the invisible architecture that sits beneath every great Power BI report — database schemas, joins, and data modelling. These are not the flashiest topics. But understanding them is what separates an analyst who builds dashboards from one who builds dashboards that are actually trusted.&lt;/p&gt;




&lt;h2&gt;
  
  
  First — What is Power BI?
&lt;/h2&gt;

&lt;p&gt;Power BI is Microsoft's business intelligence platform. It connects to virtually any data source — Excel files, SQL databases, cloud services, APIs — and transforms that data into interactive reports and dashboards that anyone in an organisation can use to make decisions.&lt;/p&gt;

&lt;p&gt;A sales manager in Nairobi can open a Power BI report on her phone and instantly see which product categories are underperforming. A CFO in London can filter a revenue dashboard by quarter, region, or salesperson in seconds. None of that is possible, though, if the data feeding those visuals is disorganised.&lt;/p&gt;

&lt;p&gt;That is where schemas, joins, and data modelling come in.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Blueprint: Database Schemas
&lt;/h2&gt;

&lt;p&gt;Before any data enters Power BI, it lives somewhere — in a database, a spreadsheet, or a cloud system. A &lt;strong&gt;database schema&lt;/strong&gt; is the blueprint of how that data is organised. It defines the tables, the columns within those tables, the rules that govern the data, and how different tables relate to each other.&lt;/p&gt;

&lt;p&gt;Think of it like the architectural drawing of a building. You do not start constructing walls before you have a plan. Similarly, you should not start building dashboards before understanding how your data is structured.&lt;/p&gt;

&lt;p&gt;There are three levels of schema that every analyst should know:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conceptual&lt;/strong&gt; — the big picture. What are the main entities in this business? Customers, Products, Orders, Salespeople. This is the level where you ask business questions, not technical ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logical&lt;/strong&gt; — the structure. How do those entities relate? A Customer places many Orders. Each Order contains multiple Products. This level defines tables, columns, and relationships — independent of any specific software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Physical&lt;/strong&gt; — the implementation. This is the actual database: the SQL tables, the primary keys, the foreign keys, the constraints. This is what Power BI connects to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9f8rxcr8rvkj5gs8twhi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9f8rxcr8rvkj5gs8twhi.png" alt="Levels of Schemas" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you open Power BI and click "Get Data," you are connecting to the physical layer. But the quality of your analysis depends entirely on how well the conceptual and logical layers were designed.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Connector: Joins
&lt;/h2&gt;

&lt;p&gt;Data in the real world is never stored in a single table. A business database might have a &lt;code&gt;Customers&lt;/code&gt; table, an &lt;code&gt;Orders&lt;/code&gt; table, a &lt;code&gt;Products&lt;/code&gt; table, and a &lt;code&gt;Salespeople&lt;/code&gt; table — all separate, all connected by shared keys.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;join&lt;/strong&gt; is how you combine those tables to answer a real business question.&lt;/p&gt;

&lt;p&gt;Consider this scenario from a Kenyan electronics distributor: the Orders table holds transaction records, but it only stores a &lt;code&gt;CustomerID&lt;/code&gt; — not the customer's name or location. The Customers table holds names and locations but not what they purchased. To answer the question &lt;em&gt;"Which region generates the most revenue?"&lt;/em&gt; — you need both tables talking to each other.&lt;/p&gt;

&lt;p&gt;That is a join.&lt;/p&gt;

&lt;p&gt;There are several types, and each serves a different purpose:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inner Join&lt;/strong&gt; — returns only rows where a match exists in both tables. Use this when you want clean, complete records. If a customer has never placed an order, they will not appear in the result. In Power BI, this is the most common join used in data modelling.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvsxvw7iixnp7bctklyb4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvsxvw7iixnp7bctklyb4.png" alt="Inner Join image" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Left Outer Join&lt;/strong&gt; — returns all rows from the left table, and matched rows from the right. If no match exists, the right-side columns return NULL. Use this when you want to see all records from your primary table, even if related data is missing. For example: all products, including those with no sales yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Right Outer Join&lt;/strong&gt; — the mirror of the left join. All rows from the right table, matched rows from the left.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6bkwslqiutd0imirpgka.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6bkwslqiutd0imirpgka.png" alt="Right Outer join image" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full Outer Join&lt;/strong&gt; — returns everything from both tables, matched or not. Useful when auditing data completeness — finding customers with no orders, or orders with no matching customer record.&lt;/p&gt;

&lt;p&gt;In Power BI, these relationships are managed visually in the &lt;strong&gt;Model View&lt;/strong&gt;. You drag a line between two tables, Power BI asks you which columns to join on, and it handles the rest. But you need to understand what type of join makes sense for your analysis — the tool does not make that decision for you.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Foundation: Data Modelling
&lt;/h2&gt;

&lt;p&gt;Data modelling is the process of deciding how all your tables connect and how your data is structured for analysis. It is the most critical step between raw data and a reliable dashboard.&lt;/p&gt;

&lt;p&gt;There are three stages:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff8454h0go8nbfjwekh6v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff8454h0go8nbfjwekh6v.png" alt="The 3 main stages to Data Modelling" width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conceptual modelling&lt;/strong&gt; is where you define what exists. What are your entities — the main things your business cares about? For a retailer: Products, Customers, Orders, Regions. At this stage you are drawing boxes and arrows, not writing SQL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logical modelling&lt;/strong&gt; is where you define how entities relate. A Customer places one or many Orders. An Order contains one or many Products. This stage produces a schema — the plan that developers and database administrators use to build the actual database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Physical modelling&lt;/strong&gt; is where you implement it. Tables get created, primary keys are assigned, foreign keys are set, and constraints are defined to protect data integrity.&lt;/p&gt;




&lt;h2&gt;
  
  
  Choosing the Right Design: Six Database Schema Models
&lt;/h2&gt;

&lt;p&gt;Not all databases are structured the same way. The design you choose depends on your data's complexity, how it will be used, and what tool will consume it. Here are the six main schema designs — what they are, how they work, and when to use each one.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Flat Model
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9wdpjawzuo07kzflpzbn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9wdpjawzuo07kzflpzbn.png" alt="Image description of a Flat Model" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it is:&lt;/strong&gt; The simplest possible structure — a single two-dimensional table, like a spreadsheet. Every row is a record, every column is a field.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-world example:&lt;/strong&gt; A shopkeeper in Gikomba market tracking daily sales in a single Excel sheet — product name, quantity, price, date — all in one place.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it:&lt;/strong&gt; Small datasets, simple applications, quick personal tracking. It breaks down the moment your data gets complex or relationships between different types of data need to be tracked.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ease of use:&lt;/strong&gt; ⭐⭐⭐⭐⭐ — the easiest. No technical knowledge required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Power BI relevance:&lt;/strong&gt; You will often receive data in this format. The job of the analyst is to recognise its limitations and restructure it before building a model.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Hierarchical Model
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnsubp7fkikos24e7cm9f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnsubp7fkikos24e7cm9f.png" alt="Image description of a Hierarchical Model" width="799" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it is:&lt;/strong&gt; Data organised in a tree structure — one parent, many children. Each record has exactly one parent, but can have multiple children beneath it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-world example:&lt;/strong&gt; An organisation chart. A CEO sits at the top. Below are Directors. Below each Director are Managers. Below each Manager are staff. Each person has only one direct boss — that is a hierarchical relationship.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it:&lt;/strong&gt; When your data has a clear, strict parent-child structure — organisational hierarchies, file systems, product category trees (Electronics → Phones → Smartphones).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; It only works for one-to-many relationships. The moment one child needs two parents — say, a project that belongs to both the Finance and Operations departments — the hierarchical model breaks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ease of use:&lt;/strong&gt; ⭐⭐⭐ — straightforward to understand, but rigid in practice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Power BI relevance:&lt;/strong&gt; Power BI supports hierarchies natively — you can drill down from Year → Quarter → Month → Day in a chart. That drill-down functionality is a hierarchical model in action.&lt;/p&gt;




&lt;h3&gt;
  
  
  3. Network Model
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F009s1rsfkr0wph9jfb60.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F009s1rsfkr0wph9jfb60.png" alt="Image description of a Network Model" width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it is:&lt;/strong&gt; Like the hierarchical model but with the rigidity removed. Instead of a strict tree, the network model allows many-to-many relationships — a child can have multiple parents, and a parent can connect to many children in multiple directions. Think of it as a web rather than a tree.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-world example:&lt;/strong&gt; A university database where a Student can enrol in many Courses, and each Course can have many Students. No single parent-child rule applies — the relationships go in all directions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it:&lt;/strong&gt; Complex systems where entities genuinely have many connections — supply chains, telecommunications networks, social networks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; The flexibility that makes it powerful also makes it difficult to design and maintain. It is rarely used in modern business analytics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ease of use:&lt;/strong&gt; ⭐⭐ — complex to design and navigate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Power BI relevance:&lt;/strong&gt; Low direct relevance. Power BI's model view works best with simpler, cleaner relationships. If your data looks like a network model, it usually needs restructuring before it is brought into Power BI.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Relational Model
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmeltbg7iesrzbjw9xdm9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmeltbg7iesrzbjw9xdm9.png" alt="Image description of a Relational Model" width="799" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it is:&lt;/strong&gt; The dominant model in modern databases. Data is stored in multiple separate tables, and tables are linked to each other through shared keys — a primary key in one table matches a foreign key in another. This is the foundation of SQL databases like MySQL, PostgreSQL, and SQL Server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-world example:&lt;/strong&gt; M-Pesa transaction records. One table stores Customer details (CustomerID, Name, Phone). Another stores Transactions (TransactionID, CustomerID, Amount, Date). The &lt;code&gt;CustomerID&lt;/code&gt; field connects the two — that link is a foreign key relationship, and it is the heart of the relational model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it:&lt;/strong&gt; Almost always, for business data. The relational model handles complex data efficiently, avoids duplication, and scales well. It is what most organisations use for their operational databases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ease of use:&lt;/strong&gt; ⭐⭐⭐⭐ — requires understanding of keys and relationships, but tools like Power BI make it very manageable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Power BI relevance:&lt;/strong&gt; This is Power BI's native language. When you connect Power BI to a SQL database, you are connecting to a relational model. The Model View in Power BI is essentially a visual representation of relational table relationships.&lt;/p&gt;




&lt;h3&gt;
  
  
  5. Star Schema
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8vec99v2w49wjqnkc4b3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8vec99v2w49wjqnkc4b3.png" alt="Image description of a Star Schema" width="799" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it is:&lt;/strong&gt; A specialised design built specifically for analytics and reporting — not for storing live operational data, but for analysing historical data at speed. It has one central &lt;strong&gt;fact table&lt;/strong&gt; containing measurable business events (sales, transactions, clicks), surrounded by multiple &lt;strong&gt;dimension tables&lt;/strong&gt; containing descriptive information (who, what, where, when).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-world example:&lt;/strong&gt; A supermarket analytics database. The fact table holds every sales transaction — date, product, store, quantity, price. The dimension tables describe: &lt;em&gt;which product?&lt;/em&gt; (Product table), &lt;em&gt;which store?&lt;/em&gt; (Store table), &lt;em&gt;which customer?&lt;/em&gt; (Customer table), &lt;em&gt;when?&lt;/em&gt; (Date table). The fact table sits in the middle like the centre of a star, with dimension tables radiating outward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it:&lt;/strong&gt; Whenever you are building dashboards or analytical reports. It is fast, simple to query, and easy to understand. Most Power BI data models follow the star schema pattern.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ease of use:&lt;/strong&gt; ⭐⭐⭐⭐⭐ for analysts — this is the most intuitive structure for building reports.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Power BI relevance:&lt;/strong&gt; This is the &lt;strong&gt;recommended structure for Power BI&lt;/strong&gt;. Microsoft's own documentation advises building star schemas before loading data into Power BI. The reason is performance — Power BI's calculation engine (called DAX) runs significantly faster on a well-built star schema than on flat or unstructured data.&lt;/p&gt;




&lt;h3&gt;
  
  
  6. Snowflake Schema
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8d69gj4f4tlybkqkkqla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8d69gj4f4tlybkqkkqla.png" alt="Image description of a Snowflake Schema" width="799" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it is:&lt;/strong&gt; A variation of the star schema. The difference is that in a snowflake schema, the dimension tables are further broken down into sub-tables — normalised, in database terminology. Instead of one flat Product dimension table, you might have a Product table linking to a Category table, which links to a Department table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-world example:&lt;/strong&gt; Continuing the supermarket example — in a star schema, the Product dimension might have columns for ProductName, Category, and Department all in one table. In a snowflake schema, Category and Department would each be separate tables, linked back to Product. The shape this creates looks like a snowflake — many branching connections rather than simple spokes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use it:&lt;/strong&gt; When storage efficiency matters and your dimension tables contain significant redundancy. Normalising reduces data duplication. It is more common in large enterprise data warehouses where storage costs are significant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trade-off:&lt;/strong&gt; Snowflake schemas are more complex to query. Joining multiple tables to get a single answer takes more processing. For Power BI specifically, this extra complexity can slow report performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ease of use:&lt;/strong&gt; ⭐⭐⭐ — more complex than star schema. Requires more joins to retrieve the same information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Power BI relevance:&lt;/strong&gt; Power BI can work with snowflake schemas, but the general advice is to flatten them back toward a star schema before building your model. The performance gain from simplicity usually outweighs the storage savings from normalisation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Which Schema Should You Use and When?
&lt;/h2&gt;

&lt;p&gt;Here is a simple decision guide:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Recommended Schema&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Quick personal tracking, small dataset&lt;/td&gt;
&lt;td&gt;Flat Model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strict parent-child data (org charts, categories)&lt;/td&gt;
&lt;td&gt;Hierarchical Model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex many-to-many relationships&lt;/td&gt;
&lt;td&gt;Network Model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operational business database (live transactions)&lt;/td&gt;
&lt;td&gt;Relational Model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Analytics, dashboards, Power BI reports&lt;/td&gt;
&lt;td&gt;Star Schema&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large enterprise data warehouse, storage-sensitive&lt;/td&gt;
&lt;td&gt;Snowflake Schema&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For the vast majority of analysts building Power BI dashboards — &lt;strong&gt;start with the star schema&lt;/strong&gt;. It is the easiest to build, the fastest to query, and the most natural fit for how Power BI thinks about data.&lt;/p&gt;

&lt;p&gt;If your data arrives as a flat model (a single Excel sheet), your job is to identify the entities and split them into a fact table and dimension tables. If it arrives as a relational model from a SQL database, restructure it into a star schema before building your Power BI model. If it is a snowflake, consider flattening it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This All Matters for Every Dashboard You Build
&lt;/h2&gt;

&lt;p&gt;Here is the real-world connection.&lt;/p&gt;

&lt;p&gt;During my own analysis of an electronics sales dataset — 632 transactions across 13 countries — the data came from multiple sources. Revenue figures lived in one table. Salesperson information in another. Product categories in a third. Without understanding joins and schemas, I could not have combined those sources to answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Which salesperson generates the highest revenue per order?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Do high-discount products attract more customer reviews?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Which region is growing fastest month on month?&lt;/em&gt;
Every single one of those questions required data from at least two tables. Every answer depended on a correctly defined relationship. The final Power BI model followed a star schema — a central Sales fact table surrounded by dimension tables for Products, Salespeople, Regions, and Dates. Every slicer, every chart, every KPI card on the dashboard was powered by that structure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Power BI gives you the tools to build beautiful, interactive dashboards. But schemas give your data structure. Joins give your data breadth. Data modelling gives your analysis integrity. And choosing the right schema design gives your reports the speed and reliability that decision-makers depend on.&lt;/p&gt;

&lt;p&gt;Get those right, and Power BI becomes genuinely powerful. Skip them, and you are building on sand.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>powerbi</category>
      <category>modelling</category>
      <category>database</category>
    </item>
    <item>
      <title>How Excel is Used in Real-World Data Analysis</title>
      <dc:creator>Benjamin Ochieng</dc:creator>
      <pubDate>Sat, 06 Jun 2026 17:29:40 +0000</pubDate>
      <link>https://dev.to/benjamin_ogol_1af8e695c87/learning-data-science-and-data-analytics-163d</link>
      <guid>https://dev.to/benjamin_ogol_1af8e695c87/learning-data-science-and-data-analytics-163d</guid>
      <description>&lt;p&gt;Prior to taking this course, I believed that Excel was simply another table. A common place where people left numbers when they were not sure what to do with them. I can honestly say after a few weeks, that was an embarrassing mistake.&lt;br&gt;
Excel is one of the applications developed by Microsoft that is used for spread sheets. The fundamental idea is that it enables you to collect, organize, calculate and visualize data, without writing a single line of code. It's ubiquitous, so much so, that one might find it in finance teams, HR departments, hospitals, construction companies and small businesses across Kenya and the world.&lt;br&gt;
&lt;strong&gt;Financial Reporting &amp;amp; Budget Tracking&lt;/strong&gt;&lt;br&gt;
A common application of Excel in the real world is financial reporting. Organizations rely on it to monitor revenues and expenditure, create budget projections, and monitor performance relative to a specific goal. This is easily managed with Excel because it can hold a lot of many to many transactional data, and has the ability to auto calculate differences, percentages, and totals. When a company performs a comparison of revenue for this quarter against the same quarter last year, it's pretty sure doing it in EXCEL.&lt;br&gt;
&lt;strong&gt;HR and Workforce Data&lt;/strong&gt;&lt;br&gt;
HR teams use Excel to keep records of employees, from salaries to departments, hire dates, employee performance scores, etc. This is the type of data I used in our data cleansing that I used to work with. I saw blank salary fields, children aged 4 years old, and hire dates such as 31st April (which is not a valid date) was a clear indicator of the value of clean data. Bad inputs create bad outputs, and Excel can help you catch and correct the issues before they get to the people who have to make the decisions.&lt;br&gt;
&lt;strong&gt;Project Tracking and Timeline Management&lt;/strong&gt;&lt;br&gt;
In construction and project-based industries (which I am familiar with working as a site engineer) Excel is used to track milestones, resource allocation and working days are calculated. One of the functions that I found interesting this week is &lt;em&gt;NETWORKDAYS&lt;/em&gt;. It works out the business day count between two dates, automatically excluding weekends and public holidays. For project managers creating delivery schedules, that's a time-saving function for counting by hand hours.&lt;br&gt;
&lt;strong&gt;What Changing My Mind Felt Like is about.&lt;/strong&gt;&lt;br&gt;
My transition was more to the learning of formulas than anything else. The realization that Excel is where raw data becomes useful. When I used &lt;em&gt;AVERAGE&lt;/em&gt; and &lt;em&gt;MEDIAN&lt;/em&gt; to fill in missing values, or &lt;em&gt;MODE&lt;/em&gt; to determine the most frequently occurring value in a column, I was not simply performing calculations, but making decisions about what the data should be telling me. That's a responsibility that alters the way you think about numbers.&lt;br&gt;
A person's cleaning of the data determines the trustworthiness of the data. That cleaning occurs in the pages of Excel — and now I see why it's important to get it right.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>data</category>
      <category>analytics</category>
      <category>excel</category>
    </item>
  </channel>
</rss>
