<?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: Enock Kiprotich</title>
    <description>The latest articles on DEV Community by Enock Kiprotich (@enockdata).</description>
    <link>https://dev.to/enockdata</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818269%2F88a9bafa-b699-45f6-b4c9-f8867f049f4f.png</url>
      <title>DEV Community: Enock Kiprotich</title>
      <link>https://dev.to/enockdata</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/enockdata"/>
    <language>en</language>
    <item>
      <title>Subqueries vs CTEs in SQL: A Practical Guide for Data Analysts</title>
      <dc:creator>Enock Kiprotich</dc:creator>
      <pubDate>Wed, 22 Apr 2026 05:55:03 +0000</pubDate>
      <link>https://dev.to/enockdata/subqueries-vs-ctes-in-sql-a-practical-guide-for-data-analysts-1beg</link>
      <guid>https://dev.to/enockdata/subqueries-vs-ctes-in-sql-a-practical-guide-for-data-analysts-1beg</guid>
      <description>&lt;h2&gt;
  
  
  💡 How I Finally Understood Subqueries vs CTEs
&lt;/h2&gt;

&lt;p&gt;When I first started learning SQL, I remember feeling confident—until I ran into subqueries.&lt;/p&gt;

&lt;p&gt;At first, they seemed simple. “Just a query inside another query,” I told myself. But the moment I started working with more complex datasets, my queries became harder to read, harder to debug, and honestly… frustrating.&lt;/p&gt;

&lt;p&gt;Then I discovered CTEs.&lt;/p&gt;

&lt;p&gt;I still remember rewriting one of my messy nested queries using a CTE—and suddenly, everything made sense. The logic was clearer, the structure felt natural, and debugging became much easier. That was the moment I realized something important:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Writing SQL isn’t just about getting the right answer—it’s about writing queries that &lt;em&gt;make sense&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Since then, I’ve learned that both subqueries and CTEs are powerful tools—but they serve different purposes. Knowing when to use each is what separates beginner SQL users from confident data analysts.&lt;/p&gt;

&lt;p&gt;In this article, I’ll break down both concepts in a simple, practical way—based on what actually works in real-world data analysis.&lt;/p&gt;

&lt;p&gt;When working with SQL, you’ll eventually run into situations where a single query isn’t enough. You need to break down logic, reuse results, or simplify complex operations.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Understanding Subqueries (The “Quick Solution” Tool)
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;subquery&lt;/strong&gt; is simply a query inside another query. Think of it as asking SQL to first answer a smaller question before solving the main one.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;customer_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Customers&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Orders&lt;/span&gt;
    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;total_amount&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, SQL first finds customers with large orders, then uses that result to filter the main query.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 Types of Subqueries You’ll Encounter
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Single-Value Subqueries
&lt;/h3&gt;

&lt;p&gt;Used when you expect one result (e.g., averages).&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;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employees&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;salary&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Employees&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  2. Multi-Value Subqueries
&lt;/h3&gt;

&lt;p&gt;Return multiple results and are often used with &lt;code&gt;IN&lt;/code&gt;.&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;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Products&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;product_id&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;product_id&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Sales&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  3. Correlated Subqueries
&lt;/h3&gt;

&lt;p&gt;These are more dynamic—they run once for every row in the outer query.&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;SELECT&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;customer_name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Customers&lt;/span&gt; &lt;span class="k"&gt;c&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;EXISTS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Orders&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt;
    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;customer_id&lt;/span&gt; &lt;span class="o"&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;customer_id&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Powerful, but can be slow if not used carefully.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 When Subqueries Make Sense
&lt;/h2&gt;

&lt;p&gt;Subqueries are best when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need a quick filter&lt;/li&gt;
&lt;li&gt;The logic is simple&lt;/li&gt;
&lt;li&gt;You don’t need to reuse the result&lt;/li&gt;
&lt;li&gt;You’re working with aggregates like AVG or SUM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They’re great for &lt;strong&gt;straightforward problems&lt;/strong&gt;, but can get messy fast.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 CTEs: A More Structured Approach
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;CTE (Common Table Expression)&lt;/strong&gt; is like giving a name to a temporary result so you can use it in your query.&lt;/p&gt;

&lt;p&gt;It’s defined using the &lt;code&gt;WITH&lt;/code&gt; keyword.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WITH&lt;/span&gt; &lt;span class="n"&gt;HighValueCustomers&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;total_spent&lt;/span&gt;
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Orders&lt;/span&gt;
    &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;HighValueCustomers&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;total_spent&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of nesting queries, you separate the logic into steps—which makes everything easier to read.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 Types of CTEs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Simple CTE
&lt;/h3&gt;

&lt;p&gt;Used to simplify complex queries into readable steps.&lt;/p&gt;




&lt;h3&gt;
  
  
  2. Recursive CTE
&lt;/h3&gt;

&lt;p&gt;Useful for hierarchical data like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Organizational structures&lt;/li&gt;
&lt;li&gt;Category trees&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Multi-CTE Queries
&lt;/h3&gt;

&lt;p&gt;You can define multiple CTEs and combine them—very useful in real projects.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚖️ Subqueries vs CTEs: What Really Matters
&lt;/h2&gt;

&lt;p&gt;Let’s go beyond definitions and look at what actually matters in practice:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Subqueries&lt;/th&gt;
&lt;th&gt;CTEs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Readability&lt;/td&gt;
&lt;td&gt;Can become confusing quickly&lt;/td&gt;
&lt;td&gt;Much easier to follow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reusability&lt;/td&gt;
&lt;td&gt;One-time use&lt;/td&gt;
&lt;td&gt;Reusable within the query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Debugging&lt;/td&gt;
&lt;td&gt;Harder to isolate issues&lt;/td&gt;
&lt;td&gt;Easier to test step-by-step&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;Can be inefficient (especially correlated ones)&lt;/td&gt;
&lt;td&gt;Often optimized better&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best Use&lt;/td&gt;
&lt;td&gt;Simple filtering&lt;/td&gt;
&lt;td&gt;Complex logic&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🚀 Choosing the Right Approach
&lt;/h2&gt;

&lt;p&gt;Here’s a simple way to think about it:&lt;/p&gt;

&lt;h3&gt;
  
  
  Use Subqueries if:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The query is small and simple&lt;/li&gt;
&lt;li&gt;You only need the result once&lt;/li&gt;
&lt;li&gt;You’re filtering data&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Use CTEs if:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The query is getting hard to read&lt;/li&gt;
&lt;li&gt;You want to break logic into steps&lt;/li&gt;
&lt;li&gt;You need to reuse results&lt;/li&gt;
&lt;li&gt;You’re working on real-world data analysis&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📊 Real-World Perspective
&lt;/h2&gt;

&lt;p&gt;In real projects (especially dashboards or reporting):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subqueries are often used for &lt;strong&gt;quick checks&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;CTEs are used to &lt;strong&gt;structure complex transformations&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building something that others will read or maintain, CTEs are usually the better choice.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧾 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Subqueries and CTEs solve similar problems—but they do it in different ways.&lt;/p&gt;

&lt;p&gt;Subqueries are quick and compact.&lt;br&gt;
CTEs are structured and scalable.&lt;/p&gt;

&lt;p&gt;The real skill isn’t just knowing them—it’s knowing &lt;strong&gt;when to use each&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  📌 Key Takeaway
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;If your query is becoming hard to read, that’s your signal to switch to a CTE.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;✍️ Enock Kiprotich&lt;br&gt;&lt;br&gt;
Aspiring Data Analyst | SQL | Power BI | Python&lt;br&gt;&lt;br&gt;
📍 Open to Data Analyst Roles&lt;br&gt;&lt;br&gt;
🔗 linkedin.com/in/enock-kiprotich-30382a189&lt;/p&gt;

</description>
      <category>sql</category>
      <category>datascience</category>
      <category>businessintelligence</category>
      <category>dataanalytics</category>
    </item>
    <item>
      <title>Understanding Data Modeling in Power BI: Joins, Relationships, and Schemas Explained</title>
      <dc:creator>Enock Kiprotich</dc:creator>
      <pubDate>Sun, 29 Mar 2026 13:46:56 +0000</pubDate>
      <link>https://dev.to/enockdata/-understanding-data-modeling-in-power-bi-joins-relationships-and-schemas-explained-3944</link>
      <guid>https://dev.to/enockdata/-understanding-data-modeling-in-power-bi-joins-relationships-and-schemas-explained-3944</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Data modeling is a key step when working with Power BI. Before creating dashboards, data must be structured in a clear and logical way. A good data model improves performance, reduces errors, and makes analysis easier.&lt;/p&gt;

&lt;p&gt;This article explains data modeling, SQL joins, Power BI relationships, schemas, and how to create them step-by-step.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Data Modeling?
&lt;/h2&gt;

&lt;p&gt;Data modeling is the process of organizing data into tables and defining how those tables are connected.&lt;/p&gt;

&lt;p&gt;It involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structuring tables
&lt;/li&gt;
&lt;li&gt;Defining keys
&lt;/li&gt;
&lt;li&gt;Creating relationships
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why it matters
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Faster reports
&lt;/li&gt;
&lt;li&gt;Accurate calculations
&lt;/li&gt;
&lt;li&gt;Better organization
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  SQL Joins (With Diagrams)
&lt;/h2&gt;

&lt;p&gt;Assume two tables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customers (ID, Name)
&lt;/li&gt;
&lt;li&gt;Orders (ID, CustomerID)
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  1. INNER JOIN
&lt;/h3&gt;

&lt;p&gt;Returns only matching records.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Customers who made orders  &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.amazonaws.com%2Fuploads%2Farticles%2Fcuhd4bi3nf4iznyar26v.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.amazonaws.com%2Fuploads%2Farticles%2Fcuhd4bi3nf4iznyar26v.png" alt="INNER JOIN Diagram" width="800" height="726"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  2. LEFT JOIN
&lt;/h3&gt;

&lt;p&gt;Returns all records from the left table and matching ones from the right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; All customers, including those without orders  &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.amazonaws.com%2Fuploads%2Farticles%2Fdct0bzzeskmzl34g5g7b.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.amazonaws.com%2Fuploads%2Farticles%2Fdct0bzzeskmzl34g5g7b.png" alt="LEFT JOIN Diagram" width="800" height="858"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  3. RIGHT JOIN
&lt;/h3&gt;

&lt;p&gt;Returns all records from the right table and matching ones from the left.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; All orders, even if customer details are missing.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. FULL OUTER JOIN
&lt;/h3&gt;

&lt;p&gt;Returns all records from both tables.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; All customers and all orders  &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.amazonaws.com%2Fuploads%2Farticles%2Fxr421h3qy7knfuio91wl.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.amazonaws.com%2Fuploads%2Farticles%2Fxr421h3qy7knfuio91wl.png" alt="FULL OUTER JOIN Diagram" width="464" height="404"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  5. LEFT ANTI JOIN
&lt;/h3&gt;

&lt;p&gt;Returns rows from the left table with no match.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Customers who never ordered  &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.amazonaws.com%2Fuploads%2Farticles%2Fpr0ut74p3zlwe7q1isq2.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.amazonaws.com%2Fuploads%2Farticles%2Fpr0ut74p3zlwe7q1isq2.png" alt="LEFT ANTI JOIN Diagram" width="464" height="356"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  6. RIGHT ANTI JOIN
&lt;/h3&gt;

&lt;p&gt;Returns rows from the right table with no match.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Orders without customers  &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.amazonaws.com%2Fuploads%2Farticles%2Fojmpyg30sr8m27krwazs.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.amazonaws.com%2Fuploads%2Farticles%2Fojmpyg30sr8m27krwazs.png" alt="RIGHT ANTI JOIN Diagram" width="519" height="149"&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.amazonaws.com%2Fuploads%2Farticles%2F3h1kkfnqf9irf19qmoot.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.amazonaws.com%2Fuploads%2Farticles%2F3h1kkfnqf9irf19qmoot.png" alt=" " width="800" height="1040"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Joins in Power BI (Step-by-Step)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open Power BI Desktop
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Transform Data&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select a table
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Merge Queries&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select the second table
&lt;/li&gt;
&lt;li&gt;Choose matching columns
&lt;/li&gt;
&lt;li&gt;Select join type (Inner, Left, Right, Full, Anti)
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Expand columns
&lt;/li&gt;
&lt;/ol&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.amazonaws.com%2Fuploads%2Farticles%2F8cg3d59h7x749m4wr9gh.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.amazonaws.com%2Fuploads%2Farticles%2F8cg3d59h7x749m4wr9gh.png" alt="Merge Queries window showing join type selection" width="689" height="626"&gt;&lt;/a&gt;  &lt;/p&gt;




&lt;h2&gt;
  
  
  Power BI Relationships
&lt;/h2&gt;

&lt;p&gt;Relationships connect tables without merging them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Types of Relationships
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. One-to-Many (1:M)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
One record relates to many&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Example:&lt;/strong&gt; One customer → many orders  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Many-to-Many (M:M)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Both tables contain repeated values  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. One-to-One (1:1)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Each record matches exactly one  &lt;/p&gt;




&lt;h3&gt;
  
  
  Active vs Inactive
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Active: Used automatically
&lt;/li&gt;
&lt;li&gt;Inactive: Used only when specified
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Cardinality
&lt;/h3&gt;

&lt;p&gt;Defines how tables relate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One-to-many
&lt;/li&gt;
&lt;li&gt;Many-to-many
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Cross Filter Direction
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Single direction
&lt;/li&gt;
&lt;li&gt;Both directions
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Creating Relationships in Power BI (Step-by-Step)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Method 1: Model View
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;Model View&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Drag a column from one table to another
&lt;/li&gt;
&lt;/ol&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%2Flearn.microsoft.com%2Fen-us%2Fpower-bi%2Fguidance%2Fmedia%2Frelationships-many-to-many%2Fbank-account-customer-model-related-tables-1.svg" 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%2Flearn.microsoft.com%2Fen-us%2Fpower-bi%2Fguidance%2Fmedia%2Frelationships-many-to-many%2Fbank-account-customer-model-related-tables-1.svg" alt="Model view showing connected tables" width="808" height="486"&gt;&lt;/a&gt;  &lt;/p&gt;




&lt;h3&gt;
  
  
  Method 2: Manage Relationships
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Manage Relationships&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;New&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select tables
&lt;/li&gt;
&lt;li&gt;Select columns
&lt;/li&gt;
&lt;li&gt;Set cardinality
&lt;/li&gt;
&lt;li&gt;Choose cross-filter direction
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;📸 &lt;em&gt;Insert Screenshot:&lt;/em&gt; Relationship configuration dialog box&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fc221e174zprzpcqqiw8v.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.amazonaws.com%2Fuploads%2Farticles%2Fc221e174zprzpcqqiw8v.png" alt=" Relationship configuration dialog box" width="602" height="537"&gt;&lt;/a&gt;  &lt;/p&gt;




&lt;h2&gt;
  
  
  Joins vs Relationships
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Joins&lt;/th&gt;
&lt;th&gt;Relationships&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Combine tables&lt;/td&gt;
&lt;td&gt;Link tables&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power Query&lt;/td&gt;
&lt;td&gt;Model View&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Used in data preparation&lt;/td&gt;
&lt;td&gt;Used in analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Fact vs Dimension Tables
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fact Table
&lt;/h3&gt;

&lt;p&gt;Contains numeric data used for analysis.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sales
&lt;/li&gt;
&lt;li&gt;Revenue
&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Dimension Table
&lt;/h3&gt;

&lt;p&gt;Contains descriptive data.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer
&lt;/li&gt;
&lt;li&gt;Product
&lt;/li&gt;
&lt;li&gt;Date
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Data Schemas
&lt;/h2&gt;

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

&lt;ul&gt;
&lt;li&gt;One central fact table
&lt;/li&gt;
&lt;li&gt;Connected dimension tables
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use case:&lt;/strong&gt; Best for Power BI performance  &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%2Fcdn.prod.website-files.com%2F676a9690ef4ec151a69571ff%2F67c886dd231dbd74497b2887_Group%252023137332-min.avif" 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%2Fcdn.prod.website-files.com%2F676a9690ef4ec151a69571ff%2F67c886dd231dbd74497b2887_Group%252023137332-min.avif" alt="STAR SCHEMA Diagram" width="1765" height="1069"&gt;&lt;/a&gt;&lt;/p&gt;




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

&lt;ul&gt;
&lt;li&gt;Dimension tables split into smaller related tables
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use case:&lt;/strong&gt; Complex datasets&lt;br&gt;&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fzrex4ccybztjuju87c5o.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.amazonaws.com%2Fuploads%2Farticles%2Fzrex4ccybztjuju87c5o.png" alt="SNOWFLAKE SCHEMA" width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Flat Table (DLAT)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;All data in one table
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use case:&lt;/strong&gt; Small or simple datasets &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%2Fcdn.prod.website-files.com%2F65d605a3b4417479c154329f%2F65f024b6b51652f355e8fc55_Table-16-Zebra-Stripes-Chaos.svg" 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%2Fcdn.prod.website-files.com%2F65d605a3b4417479c154329f%2F65f024b6b51652f355e8fc55_Table-16-Zebra-Stripes-Chaos.svg" alt="FLAT TABLE Diagram" width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Role-Playing Dimensions
&lt;/h2&gt;

&lt;p&gt;A single dimension used multiple times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Order Date
&lt;/li&gt;
&lt;li&gt;Ship Date
&lt;/li&gt;
&lt;li&gt;Delivery Date
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Common Data Modeling Issues
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Duplicate keys
&lt;/li&gt;
&lt;li&gt;Incorrect relationships
&lt;/li&gt;
&lt;li&gt;Many-to-many confusion
&lt;/li&gt;
&lt;li&gt;Circular relationships
&lt;/li&gt;
&lt;li&gt;Poor performance
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use star schema
&lt;/li&gt;
&lt;li&gt;Keep models simple
&lt;/li&gt;
&lt;li&gt;Avoid unnecessary joins
&lt;/li&gt;
&lt;li&gt;Validate relationships
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Data modeling is the foundation of Power BI. Understanding joins, relationships, and schemas helps build accurate, efficient, and scalable reports.&lt;/p&gt;

</description>
      <category>powebi</category>
      <category>dataanalytics</category>
      <category>datamodeling</category>
    </item>
    <item>
      <title>From Spreadsheets to Insights: How Excel is Used in Real-World Data Analysis</title>
      <dc:creator>Enock Kiprotich</dc:creator>
      <pubDate>Tue, 24 Mar 2026 16:19:51 +0000</pubDate>
      <link>https://dev.to/enockdata/from-spreadsheets-to-insights-how-excel-is-used-in-real-world-data-analysis-2lbh</link>
      <guid>https://dev.to/enockdata/from-spreadsheets-to-insights-how-excel-is-used-in-real-world-data-analysis-2lbh</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In today’s digital world, data is everywhere. Organizations collect large amounts of information daily, but raw data alone has little value unless it is properly analyzed and interpreted. This is where Microsoft Excel becomes essential. Excel is more than just a spreadsheet tool—it is a practical solution used to transform raw data into meaningful insights that support decision-making.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Excel?
&lt;/h2&gt;

&lt;p&gt;Microsoft Excel is a spreadsheet application developed by Microsoft that allows users to organize, store, and analyze data in a structured format using rows and columns. It provides powerful features such as formulas, functions, and data visualization tools that make it easier to process and understand data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Applications of Excel
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Business and Financial Analysis
&lt;/h3&gt;

&lt;p&gt;In business environments, Excel is widely used to support financial decision-making. Organizations rely on it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track sales performance
&lt;/li&gt;
&lt;li&gt;Monitor expenses and budgets
&lt;/li&gt;
&lt;li&gt;Analyze profits and losses
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By using Excel, businesses can make informed decisions based on actual data rather than assumptions.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Healthcare Data Management
&lt;/h3&gt;

&lt;p&gt;In healthcare, Excel helps improve efficiency and organization by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Managing patient records
&lt;/li&gt;
&lt;li&gt;Tracking medical supplies and inventory
&lt;/li&gt;
&lt;li&gt;Generating reports for planning and resource allocation
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Accurate data management in Excel contributes to better service delivery.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Data Analysis and Reporting
&lt;/h3&gt;

&lt;p&gt;Excel is a key tool for data analysts. It is commonly used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clean and organize raw data
&lt;/li&gt;
&lt;li&gt;Identify trends and patterns
&lt;/li&gt;
&lt;li&gt;Create reports and dashboards
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows analysts to turn complex datasets into clear and actionable insights.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Government and Public Sector Use
&lt;/h3&gt;

&lt;p&gt;In public institutions, Excel supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data digitization and record keeping
&lt;/li&gt;
&lt;li&gt;Statistical analysis and reporting
&lt;/li&gt;
&lt;li&gt;Preparation of reports for decision-making
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It plays an important role in improving efficiency and transparency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features and Functions in Excel
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Basic Functions
&lt;/h3&gt;

&lt;p&gt;Excel provides essential functions that simplify calculations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;=SUM(A1:A10)&lt;/code&gt; – Adds a range of values
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;=AVERAGE(A1:A10)&lt;/code&gt; – Calculates the average
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;=COUNT(A1:A10)&lt;/code&gt; – Counts the number of entries
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Logical Functions
&lt;/h3&gt;

&lt;p&gt;Logical functions help automate decision-making:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;=IF(A1&amp;gt;=50,"Pass","Fail")&lt;/code&gt;
This formula evaluates a condition and returns a result.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Lookup Functions
&lt;/h3&gt;

&lt;p&gt;Lookup functions make it easy to retrieve specific data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;=VLOOKUP(A2, A1:C10, 2, FALSE)&lt;/code&gt;
This searches for a value and returns related data from a table.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Error Handling
&lt;/h3&gt;

&lt;p&gt;To handle errors in calculations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;=IFERROR(A1/B1,"Error")&lt;/code&gt;
This prevents formulas from displaying error messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Data Analysis Tools
&lt;/h3&gt;

&lt;p&gt;Excel also includes advanced tools such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pivot Tables for summarizing large datasets
&lt;/li&gt;
&lt;li&gt;Charts (bar, line, pie) for visualization
&lt;/li&gt;
&lt;li&gt;Sorting and filtering for organizing data
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Practical Example
&lt;/h2&gt;

&lt;p&gt;For instance, a business can use Excel to analyze monthly sales data. By applying functions like SUM and using Pivot Tables, the business can identify top-performing products and trends. This information helps managers make informed decisions and improve performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Microsoft Excel remains one of the most important tools for real-world data analysis. Its ability to organize, analyze, and visualize data makes it valuable across different industries. Whether in business, healthcare, or government, Excel helps transform raw data into meaningful insights that drive better decision-making.&lt;/p&gt;




&lt;h1&gt;
  
  
  Tags
&lt;/h1&gt;

&lt;h1&gt;
  
  
  excel #dataanalysis #beginners #luxdevhq.ai
&lt;/h1&gt;

</description>
    </item>
  </channel>
</rss>
