<?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: Neema Kirui</title>
    <description>The latest articles on DEV Community by Neema Kirui (@neema_kirui).</description>
    <link>https://dev.to/neema_kirui</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%2F3951195%2F9f0068f7-0821-406f-a383-d99de0fbeb89.jpeg</url>
      <title>DEV Community: Neema Kirui</title>
      <link>https://dev.to/neema_kirui</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/neema_kirui"/>
    <language>en</language>
    <item>
      <title>From My Machine to the Cloud: Connecting Power BI to SQL Databases; PostgreSQL (Local vs Aiven)</title>
      <dc:creator>Neema Kirui</dc:creator>
      <pubDate>Sat, 04 Jul 2026 21:26:12 +0000</pubDate>
      <link>https://dev.to/neema_kirui/from-my-machine-to-the-cloud-connecting-power-bi-to-sql-databases-postgresql-local-vs-aiven-5hc3</link>
      <guid>https://dev.to/neema_kirui/from-my-machine-to-the-cloud-connecting-power-bi-to-sql-databases-postgresql-local-vs-aiven-5hc3</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I used to think "connecting to a database" was one skill. Turns out it's two: connecting to a database chilling quietly on your own laptop, and connecting to one living in the cloud, behind a login, in this case, an SSL certificate that will not let you in until you treat it with respect.&lt;/p&gt;

&lt;p&gt;This week I did both. Same tool (Power BI), same dataset, two very different vibes.&lt;/p&gt;

&lt;p&gt;Grab a coffee, here's the full walkthrough local PostgreSQL first, then Aiven's cloud version, side by side, screenshots and all.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 1: Local PostgreSQL → Power BI
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1 : Create a schema
&lt;/h3&gt;

&lt;p&gt;Nothing fancy, just giving my table a home:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;
&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;SCHEMA&lt;/span&gt; &lt;span class="n"&gt;powerbi&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fh4hh0dk25k9egn7jkhr4.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%2Fh4hh0dk25k9egn7jkhr4.png" alt="Create schema" width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 : Import the dataset
&lt;/h3&gt;

&lt;p&gt;Right-click the new schema → &lt;strong&gt;Import Data&lt;/strong&gt; in DBeaver, point it at your CSV, and let the wizard do its thing.&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%2Fhwnyyp757bm01uzgh7ej.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%2Fhwnyyp757bm01uzgh7ej.png" alt="Import wizard" width="800" height="450"&gt;&lt;/a&gt;&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%2Frievs9v33cvzsjoaqdun.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%2Frievs9v33cvzsjoaqdun.png" alt="Import done" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 : Check the table landed properly
&lt;/h3&gt;

&lt;p&gt;A quick peek at the columns to make sure nothing got mangled on the way in.&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%2Fm8a5ttlcovtu6rtt560f.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%2Fm8a5ttlcovtu6rtt560f.png" alt="Columns showing" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 : Connect Power BI
&lt;/h3&gt;

&lt;p&gt;In Power BI Desktop: &lt;strong&gt;Get Data → Database → PostgreSQL database.&lt;/strong&gt;&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%2Fm1xd8ughxy2f80dh7cog.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%2Fm1xd8ughxy2f80dh7cog.png" alt="Powerbi local" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the Server field, type &lt;code&gt;localhost&lt;/code&gt; (or &lt;code&gt;127.0.0.1&lt;/code&gt;) and your database name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localhost
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F1qvjubp48yg4c527mg3f.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%2F1qvjubp48yg4c527mg3f.png" alt="Server" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose &lt;strong&gt;Import&lt;/strong&gt;, hit OK, and log in with your local username and password.&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%2Fu6jxp5z66ksobytsnz1b.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%2Fu6jxp5z66ksobytsnz1b.png" alt="Loaded" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Load&lt;/strong&gt;. That's it. That's the whole local experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 2: Aiven PostgreSQL (Cloud) → Power BI
&lt;/h2&gt;

&lt;p&gt;Now for the part that actually taught me something.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 : Grab your connection details
&lt;/h3&gt;

&lt;p&gt;Everything you need lives on Aiven's Overview page: Host, Port, Database name, User, SSL mode.&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%2Fby60333qs61jbk5z8mwq.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%2Fby60333qs61jbk5z8mwq.png" alt="Aiven console" width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your service URI will look something like this (don't worry, this isn't a real password, Aiven masks it in the console):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;postgres&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;avnadmin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="err"&gt;••••••••&lt;/span&gt;&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;pg&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;xxxxxxxx&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;yourproject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;aivencloud&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;22016&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;defaultdb&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="n"&gt;sslmode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;require&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2 : Import the dataset into Aiven
&lt;/h3&gt;

&lt;p&gt;Same DBeaver wizard as before, just pointed at the Aiven connection instead of local.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;SCHEMA&lt;/span&gt; &lt;span class="n"&gt;powerbi&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fruw0xdsl1o07iglezukc.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%2Fruw0xdsl1o07iglezukc.png" alt="Import 2" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 : Aiven's certificate.
&lt;/h3&gt;

&lt;p&gt;Download the CA cert from the Overview page:&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%2F791d9nxky0ekce5z8c1f.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%2F791d9nxky0ekce5z8c1f.png" alt="Cert download" width="799" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now here's the part that actually tripped me up: Power BI's PostgreSQL connector doesn't have a field where you paste in a certificate file path (DBeaver does, Power BI doesn't). Instead, on Windows, you install the cert into &lt;strong&gt;Windows' own certificate store&lt;/strong&gt;, since Power BI leans on the OS to handle SSL validation.&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%2Fi7s2tp4dnl8h338cdjsl.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%2Fi7s2tp4dnl8h338cdjsl.png" alt="download cert" width="800" height="700"&gt;&lt;/a&gt;&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%2F064acr5da4xa3b97uycs.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%2F064acr5da4xa3b97uycs.png" alt="Downloaded" width="800" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once Windows trusts it, Power BI trusts it too. No settings to toggle inside Power BI itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 : Connect Power BI to Aiven
&lt;/h3&gt;

&lt;p&gt;Same dialog, new server string:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pg-xxxxxxxx-yourproject.c.aivencloud.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Database: &lt;code&gt;defaultdb&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Log in with your Aiven username and password. Since the cert is already trusted system-wide, no extra SSL prompts show up it just connects.&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%2F2orndizrt3vae200dtu7.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%2F2orndizrt3vae200dtu7.png" alt="Aiven" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Local vs Aiven: Side by Side
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Step&lt;/th&gt;
&lt;th&gt;Local PostgreSQL&lt;/th&gt;
&lt;th&gt;Aiven PostgreSQL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Server address&lt;/td&gt;
&lt;td&gt;&lt;code&gt;localhost&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full Aiven host string&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Port&lt;/td&gt;
&lt;td&gt;Default &lt;code&gt;5432&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Custom port from Aiven console&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSL/certificate setup&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Download CA cert, trust it via Windows Certificate Manager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power BI dialog&lt;/td&gt;
&lt;td&gt;Identical&lt;/td&gt;
&lt;td&gt;Identical&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Credentials prompt&lt;/td&gt;
&lt;td&gt;Username/password&lt;/td&gt;
&lt;td&gt;Username/password (SSL handled invisibly behind the scenes)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Same tool, same steps on the surface. The only real difference is one extra layer of trust you have to set up before the cloud database will even talk to you and once it's set up, it disappears completely. You never think about it again.&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>database</category>
      <category>analytics</category>
      <category>datascience</category>
    </item>
    <item>
      <title>The Day I Realized Power BI Isn't Just Pretty Excel: Understanding Data Modelling</title>
      <dc:creator>Neema Kirui</dc:creator>
      <pubDate>Thu, 25 Jun 2026 18:01:47 +0000</pubDate>
      <link>https://dev.to/neema_kirui/the-day-i-realized-power-bi-isnt-just-pretty-excel-understanding-data-modelling-1na5</link>
      <guid>https://dev.to/neema_kirui/the-day-i-realized-power-bi-isnt-just-pretty-excel-understanding-data-modelling-1na5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;When I first opened Power BI, I thought it was just a prettier Excel. Then I hit data modelling and it looked me dead in the eye and said "not today."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Data modelling is the backbone of any Power BI report. It decides how your tables connect, how fast your visuals load, and whether your numbers are actually trustworthy. It's what allows Power BI to understand that a sale belongs to a product, a customer belongs to a region, and a date belongs to a calendar.&lt;/p&gt;

&lt;p&gt;Without a proper model, your visuals might look impressive while quietly lying to you. Once you get it? Everything clicks. Let me break it down simply.&lt;/p&gt;




&lt;h2&gt;
  
  
  Relationships: Getting Your Tables to Actually Talk
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;relationship&lt;/strong&gt; connects two tables through a shared column called a &lt;strong&gt;key&lt;/strong&gt;. If your &lt;code&gt;Sales&lt;/code&gt; table and &lt;code&gt;Products&lt;/code&gt; table both have a &lt;code&gt;ProductID&lt;/code&gt; column, that's your link right there.&lt;/p&gt;

&lt;p&gt;Every relationship starts with two important columns:&lt;br&gt;
&lt;strong&gt;Primary Key (PK)&lt;/strong&gt; – a column whose values are unique. Think ProductID in a Products table where every product appears once.&lt;br&gt;
&lt;strong&gt;Foreign Key (FK)&lt;/strong&gt; – a column that references the primary key from another table. Think ProductID in a Sales table where the same product &lt;/p&gt;

&lt;p&gt;The primary key identifies the record. The foreign key points to it. Together, they allow Power BI to connect the dots.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;One-to-Many (1:*)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One row on one side, many on the other&lt;/td&gt;
&lt;td&gt;One product → many sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Many-to-Many (&lt;em&gt;:&lt;/em&gt;)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Both sides have repeats&lt;/td&gt;
&lt;td&gt;Students ↔ Courses&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Products Table  ─────────────────  Sales Table
  ┌─────────────┐                   ┌─────────────┐
  │ ProductID   │──────── 1 : * ────│ ProductID   │
  │ ProductName │                   │ SaleAmount  │
  │ Category    │                   │ SaleDate    │
  └─────────────┘                   └─────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Relationships also have a filter direction.Think of it as a one-way street. Filters travel from the one side to the many side.&lt;/p&gt;

&lt;p&gt;One thing I learned very quickly is that relationships matter more than you think. Without them, Power BI sees your tables as separate islands. That's why you might click a product in one visual and wonder why absolutely nothing happens in the others.&lt;/p&gt;




&lt;h2&gt;
  
  
  Star Schema vs Snowflake Schema
&lt;/h2&gt;

&lt;p&gt;Your &lt;strong&gt;schema&lt;/strong&gt; is the overall layout of your data model basically how all your tables are arranged and connected to each other.&lt;/p&gt;

&lt;h3&gt;
  
  
  Star Schema - The One You Want
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;              ┌─────────────┐
              │   DimDate   │
              └──────┬──────┘
                     │
  ┌────────────┐  ┌──▼─────────┐  ┌─────────────┐
  │DimCustomer │──│  FactSales │──│  DimProduct │
  └────────────┘  └──┬─────────┘  └─────────────┘
                     │
              ┌──────▼──────┐
              │  DimRegion  │
              └─────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One central &lt;strong&gt;fact table&lt;/strong&gt; (your numbers in terms of sales amounts, quantities) with &lt;strong&gt;dimension tables&lt;/strong&gt; around it (your context: dates, customers, products). Clean, fast, and exactly what Power BI is optimised for. DAX, Power BI's formula language, was designed with this layout in mind.&lt;/p&gt;

&lt;p&gt;One thing that surprised me was how much Power BI prefers a star schema. At first, I wanted to keep breaking tables into smaller and smaller pieces because it felt more organised. But Power BI works best when dimensions stay relatively flat and connect directly to a central fact table. Fewer relationship paths mean faster calculations and fewer headaches when writing DAX. &lt;/p&gt;

&lt;h3&gt;
  
  
  Snowflake Schema - The Complicated One
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  ┌────────────┐   ┌────────────┐   ┌────────────┐
  │ DimProduct │──▶│ DimCategory│──▶│DimSuperCat │
  └─────┬──────┘   └────────────┘   └────────────┘
        │
  ┌─────▼──────┐
  │ FactSales  │
  └────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps splitting dimension tables into smaller sub-tables (e.g. &lt;code&gt;Product → Category → Super Category&lt;/code&gt;). It looks tidy but makes your model slower and your DAX measures harder to write.&lt;/p&gt;




&lt;h3&gt;
  
  
  Joins: Combining Tables in Power Query
&lt;/h3&gt;

&lt;p&gt;Joins happen in &lt;strong&gt;Power Query&lt;/strong&gt; before data even reaches your model. You're deciding which rows from each table make the cut. The easiest way to picture this is with Venn diagrams: &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%2Fof1hd2f8kzivy8f17kqg.jpeg" 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%2Fof1hd2f8kzivy8f17kqg.jpeg" alt="Venn diagrams illustrating the joins" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Join Type&lt;/th&gt;
&lt;th&gt;What you get&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Inner Join&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Only rows that match on both sides&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Left Outer Join&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;All left rows + right matches&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Full Outer Join&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Every row from both tables&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I once used the wrong join and ended up with sales figures in the millions when they should've been in the thousands. The data wasn't wrong I was just inviting the wrong rows to the party. &lt;/p&gt;




&lt;h3&gt;
  
  
  What Data Modelling Actually Taught Me
&lt;/h3&gt;

&lt;p&gt;The biggest lesson wasn't how to create relationships or choose the correct join.&lt;/p&gt;

&lt;p&gt;It was understanding that dashboards are only as good as the model underneath them.&lt;/p&gt;

&lt;p&gt;A beautiful report built on a bad model will still give bad answers.&lt;/p&gt;

&lt;p&gt;After working with relationships, schemas, joins, keys, and cardinality, I realised that data modelling isn't something you do before analysis. It is part of the analysis.&lt;/p&gt;

&lt;h3&gt;
  
  
  My biggest takeaways:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Build your model before building visuals.&lt;/li&gt;
&lt;li&gt;Use a Star Schema whenever possible.&lt;/li&gt;
&lt;li&gt;Understand your keys before creating relationships.&lt;/li&gt;
&lt;li&gt;Be intentional with joins in Power Query.&lt;/li&gt;
&lt;li&gt;If your numbers look wrong, check the model first.
The chart may be what people see, but the model is what makes it trustworthy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data modelling isn't the flashiest part of Power BI nobody's putting their model diagram on a mood board. But get it right, and your visuals, your numbers, and your whole report will thank you. &lt;/p&gt;

</description>
      <category>datascience</category>
      <category>beginners</category>
      <category>womenintech</category>
      <category>powerfuldevs</category>
    </item>
    <item>
      <title>How Excel is Used in Real-World Data Analysis</title>
      <dc:creator>Neema Kirui</dc:creator>
      <pubDate>Fri, 05 Jun 2026 12:10:31 +0000</pubDate>
      <link>https://dev.to/neema_kirui/how-excel-is-used-in-real-world-data-analysis-1go8</link>
      <guid>https://dev.to/neema_kirui/how-excel-is-used-in-real-world-data-analysis-1go8</guid>
      <description>&lt;h1&gt;
  
  
  Introduction to Excel
&lt;/h1&gt;

&lt;p&gt;In simple terms Excel is a spreadsheet program developed by Microsoft which is designed to organize, calculate, and analyze data. Excel is very collaborative when one is working with other tools in data analysis. It is also very effective when handling large datasets.&lt;/p&gt;

&lt;h1&gt;
  
  
  Ways Excel is used in real-world data analysis
&lt;/h1&gt;

&lt;p&gt;In the real world, Excel is used for financial modeling, auditing, marketing performance,sales forecasting, business decisions among others.&lt;br&gt;
Let's get into a few of them:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Financial Modeling&lt;/strong&gt;&lt;br&gt;
Excel serves as a a digital blueprint to map out the future of a business. Most institutions use Excel to strictly monitor their cash inflows and outflows, ensuring they always have enough money to pay bills while planning for future growth.&lt;br&gt;
&lt;strong&gt;2. Business Decisions&lt;/strong&gt;&lt;br&gt;
Excel acts like a digital testing ground for business owners. You can change your sales and cost numbers on the screen to see how they affect your profits, helping you choose the best plan before spending real money.&lt;br&gt;
&lt;strong&gt;3. Performance Tracking&lt;/strong&gt;&lt;br&gt;
Excel works as a digital report card for everyday operations. It stores daily sales data and uses built-in charts to show managers at a glance if the team is hitting targets or falling behind.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features and Formulas
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Conditional Formatting:&lt;/em&gt; &lt;br&gt;
This feature automatically changes the color of a cell based on its value. For example, you can set Excel to turn a cell bright red if a project goes over budget, or green if sales goals are met, helping you spot critical details instantly.&lt;br&gt;
&lt;em&gt;Data Validation:&lt;/em&gt;&lt;br&gt;
This feature sets strict rules for what users can type into a cell. You can use it to create drop-down menus or restrict cells to only accept specific items like dates or positive numbers preventing mistakes before they happen.&lt;br&gt;
&lt;em&gt;COUNTIF Function:&lt;/em&gt; &lt;br&gt;
This tool counts cells only if they meet a specific rule. For example, it can look at a list of orders and count exactly how many times the word "Completed" appears.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflections
&lt;/h2&gt;

&lt;p&gt;To be honest,knowing more about Excel has completely changed how I look at numbers. Playing with large data sets and making massive changes with just a single click is also really cool! It just shows me how fun it can be to play around with data, test out different features, and see what the numbers are trying to tell us. At the same time, it makes you realize how this work can be used for the greater good because data is really powerful! Yay!&lt;/p&gt;

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