<?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: Daniel Mutwiri Mbabu</title>
    <description>The latest articles on DEV Community by Daniel Mutwiri Mbabu (@daniel_mutwirimbabu).</description>
    <link>https://dev.to/daniel_mutwirimbabu</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%2F2745709%2F9f5f0b94-b3d9-4656-971f-349c9d997da1.jpeg</url>
      <title>DEV Community: Daniel Mutwiri Mbabu</title>
      <link>https://dev.to/daniel_mutwirimbabu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/daniel_mutwirimbabu"/>
    <language>en</language>
    <item>
      <title>Data Cleaning Broken Down</title>
      <dc:creator>Daniel Mutwiri Mbabu</dc:creator>
      <pubDate>Wed, 07 Oct 2026 08:01:19 +0000</pubDate>
      <link>https://dev.to/daniel_mutwirimbabu/data-cleaning-broken-down-9a0</link>
      <guid>https://dev.to/daniel_mutwirimbabu/data-cleaning-broken-down-9a0</guid>
      <description>&lt;h1&gt;
  
  
  Data Cleaning: The Bane of Our Existence and the Reason Analysis Works.
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Why the duality, you might ask?&lt;/p&gt;

&lt;p&gt;There is a strange irony in the world of data: &lt;strong&gt;the work that nobody wants to do is often the work that matters most.&lt;/strong&gt; Data cleaning is arguably the bane of every data professional's existence. We spend hours chasing missing values, hunting down duplicates, fixing inconsistent dates, correcting misspelled categories, and asking why a column that should contain numbers is suddenly full of text. It is repetitive, frustrating, and rarely the glamorous part of data analysis. Yet, beneath all that frustration lies its greatest importance: &lt;strong&gt;clean data is the foundation of trustworthy analysis.&lt;/strong&gt; The most sophisticated dashboard, the most advanced SQL query, or the most powerful machine-learning model cannot compensate for fundamentally flawed data. Thus, before any clean or meaningful insight, data cleaning is inevitable. &lt;/p&gt;

&lt;h2&gt;
  
  
  1. Then, What Is Data Cleaning?
&lt;/h2&gt;

&lt;p&gt;Data cleaning is the process of detecting, correcting, removing, or appropriately handling inaccurate, incomplete, inconsistent, duplicated, or improperly formatted data. It's literally cleaning data. Only that, in this case, we don't use water and soap. We use logic, formulas, and repetitive, annoying little adjustments here and there.&lt;/p&gt;

&lt;p&gt;What makes data dirty? There are several potential problems when dealing with any data; I will name a few:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Different Casing for the same item. &lt;/li&gt;
&lt;li&gt;Dates in different formats.&lt;/li&gt;
&lt;li&gt;Missing values&lt;/li&gt;
&lt;li&gt;Ambiguous values, such as a negative sale, which may be invalid or may represent a legitimate refund. Or an end date that comes before the start date.&lt;/li&gt;
&lt;li&gt;Duplicates, and again I say duplicates.&lt;/li&gt;
&lt;li&gt;Inconsistent data types... I am already tired. In a nutshell, there are so many reasons a data set can be dirty.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  2. The importance of Cleaning Data
&lt;/h2&gt;

&lt;p&gt;I will quote the famous principle:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Garbage in, garbage out.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If incorrect data enters an analytical process, even a sophisticated model can produce misleading results.&lt;/p&gt;

&lt;p&gt;Data cleaning is important because it improves:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Accuracy&lt;/strong&gt; - Corrects erroneous values and records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistency&lt;/strong&gt; - Ensures that the same concepts are represented in the same way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Completeness&lt;/strong&gt; - Identifies missing information and determines how it should be handled.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability&lt;/strong&gt; - Makes analytical results more trustworthy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Efficiency&lt;/strong&gt; - Clean and standardized data is easier to query, transform, visualize, and analyze.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decision-making&lt;/strong&gt; - Business decisions based on inaccurate data can result in incorrect conclusions, financial losses, operational problems, or poor strategic decisions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. How do we clean data becomes the next question.
&lt;/h2&gt;

&lt;p&gt;Tools will differ, but I would like to show the general data cleaning process. Whichever tool you may be using, these steps form the skeleton of data cleaning.&lt;/p&gt;

&lt;p&gt;I would follow these steps for any data cleaning task:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
1. Understand the data (Context) 
2. Profile the data  
3. Identify the problems 
4. Decide on a uniform and standard way of correcting the data  
5. Clean the data
6. Validate the data 
7. Document 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 1: Understanding the Data
&lt;/h3&gt;

&lt;p&gt;Before changing anything, we need to understand what the data represents. Understand the context of the data and the final purpose of cleaning the data. This step seems unnecessary, but it's very crucial. It will help you make the right decisions, know which data to keep, understand the dynamics of the purpose of analysis, and even make your work easier&lt;/p&gt;

&lt;p&gt;Here are a few questions you can ask to understand the data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does each row represent?&lt;/li&gt;
&lt;li&gt;What does each column represent?&lt;/li&gt;
&lt;li&gt;What is the source of the data?&lt;/li&gt;
&lt;li&gt;What are the expected data types?&lt;/li&gt;
&lt;li&gt;What values are considered valid?&lt;/li&gt;
&lt;li&gt;What are the business rules?&lt;/li&gt;
&lt;li&gt;Which fields are mandatory?&lt;/li&gt;
&lt;li&gt;What constitutes a duplicate?&lt;/li&gt;
&lt;li&gt;Are negative values allowed?&lt;/li&gt;
&lt;li&gt;What date range should the data cover?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Profile the Data
&lt;/h3&gt;

&lt;p&gt;Data profiling means examining the dataset before cleaning it. This is a little different from Step 1. The main goal of this step is to categorize the data for a uniform kind of cleaning.&lt;/p&gt;

&lt;p&gt;Look at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Number of rows&lt;/li&gt;
&lt;li&gt;Number of columns&lt;/li&gt;
&lt;li&gt;Data types&lt;/li&gt;
&lt;li&gt;Missing values&lt;/li&gt;
&lt;li&gt;Unique values&lt;/li&gt;
&lt;li&gt;Duplicate records&lt;/li&gt;
&lt;li&gt;Minimum and maximum values&lt;/li&gt;
&lt;li&gt;Average and median&lt;/li&gt;
&lt;li&gt;Frequency distributions&lt;/li&gt;
&lt;li&gt;Outliers&lt;/li&gt;
&lt;li&gt;Invalid values&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, if an &lt;code&gt;Age&lt;/code&gt; column contains &lt;code&gt;-5&lt;/code&gt; and &lt;code&gt;150&lt;/code&gt;, this should immediately raise questions. But also does not mean you automatically delete them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; A value that looks unusual may actually be valid.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 3: Identify Data Quality Problems
&lt;/h3&gt;

&lt;p&gt;Identify common data-quality problems systematically. They include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Missing values&lt;/li&gt;
&lt;li&gt;Duplicate records&lt;/li&gt;
&lt;li&gt;Incorrect data types&lt;/li&gt;
&lt;li&gt;Inconsistent formatting&lt;/li&gt;
&lt;li&gt;Invalid values&lt;/li&gt;
&lt;li&gt;Outliers&lt;/li&gt;
&lt;li&gt;Spelling inconsistencies&lt;/li&gt;
&lt;li&gt;Incorrect dates&lt;/li&gt;
&lt;li&gt;Leading and trailing spaces&lt;/li&gt;
&lt;li&gt;Inconsistent categorical values&lt;/li&gt;
&lt;li&gt;Broken relationships between tables&lt;/li&gt;
&lt;li&gt;Incorrect units&lt;/li&gt;
&lt;li&gt;Calculation errors&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 4: Decide on a uniform and standard way of correcting the data
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Missing Values
&lt;/h4&gt;

&lt;p&gt;How do you treat unavailable information?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Rule of Thumb: Different data sets with missing values may need different handling of missing data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A Missing value can be in the form of: &lt;code&gt;NULL&lt;/code&gt;, Blank, Empty string, &lt;code&gt;N/A&lt;/code&gt;, &lt;code&gt;NA&lt;/code&gt;, &lt;code&gt;Unknown&lt;/code&gt;,&lt;code&gt;-&lt;/code&gt;&lt;code&gt;0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please note carefully that these &lt;strong&gt;CANNOT&lt;/strong&gt; be treated as equivalents. For Instance: &lt;strong&gt;0&lt;/strong&gt; means the value is actually zero.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Common missing values handling approaches include:&lt;/p&gt;

&lt;h5&gt;
  
  
  1. Remove
&lt;/h5&gt;

&lt;p&gt;Remove records when the missing information makes the record unusable.&lt;/p&gt;

&lt;h5&gt;
  
  
  2. Impute
&lt;/h5&gt;

&lt;p&gt;Replace the missing value using a reasonable estimate such as the mean, the median, or the mode for text. But always remember to document the logic used.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mean - for data with a normal distribution (no outliers)&lt;/li&gt;
&lt;li&gt;Median - for data with outliers(extremes)&lt;/li&gt;
&lt;li&gt;Mode - the most recurring text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10, 12, NULL, 14

and

10, 1000, NULL, -20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The missing value could potentially be replaced with the mean or median, respectively, depending on the situation.&lt;/p&gt;

&lt;h5&gt;
  
  
  3. Use a default value
&lt;/h5&gt;

&lt;p&gt;Some of the default values that can be used are: NULL, "Unknown", "Not Provided"&lt;/p&gt;

&lt;p&gt;Ensure the default value is uniform across a common set of data.&lt;br&gt;
.&lt;/p&gt;
&lt;h5&gt;
  
  
  4. Leave it missing
&lt;/h5&gt;

&lt;p&gt;Sometimes the best decision is to keep the missing value. The correct approach depends on the &lt;strong&gt;business meaning and analytical objective&lt;/strong&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Duplicate Data
&lt;/h4&gt;

&lt;p&gt;This is when the same record appears more than once.&lt;/p&gt;

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

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Order ID&lt;/th&gt;
&lt;th&gt;Customer&lt;/th&gt;
&lt;th&gt;Sales&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1001&lt;/td&gt;
&lt;td&gt;John&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1002&lt;/td&gt;
&lt;td&gt;Mary&lt;/td&gt;
&lt;td&gt;700&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1001&lt;/td&gt;
&lt;td&gt;John&lt;/td&gt;
&lt;td&gt;500&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If each order should have a unique &lt;code&gt;Order ID&lt;/code&gt;, the second occurrence of order &lt;code&gt;1001&lt;/code&gt; may be a duplicate.&lt;/p&gt;

&lt;p&gt;It is, however, important to investigate duplicate-looking records before deleting.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;John | Kenya | 500
John | Kenya | 500
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;could represent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A duplicate transaction&lt;/li&gt;
&lt;li&gt;Two legitimate transactions&lt;/li&gt;
&lt;li&gt;Two separate orders with missing identifiers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Therefore:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Never remove duplicates simply because two rows look identical. Understand the business rules first.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Standardizing Text
&lt;/h4&gt;

&lt;p&gt;Text inconsistencies are extremely common, especially casing problems when representing the same category. For example: Kenya, kenya, KENYA, Kenya&lt;/p&gt;

&lt;p&gt;Cleaning text involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removing leading spaces&lt;/li&gt;
&lt;li&gt;Removing trailing spaces&lt;/li&gt;
&lt;li&gt;Standardizing casing (Lower/Upper/Proper cases)&lt;/li&gt;
&lt;li&gt;Correcting spelling&lt;/li&gt;
&lt;li&gt;Standardizing abbreviations&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Data Types
&lt;/h4&gt;

&lt;p&gt;Every field should have its appropriate data type. An Integer for an Integer, Decimal for Decimal...&lt;/p&gt;

&lt;p&gt;Correct data types are essential for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calculations&lt;/li&gt;
&lt;li&gt;Sorting&lt;/li&gt;
&lt;li&gt;Filtering&lt;/li&gt;
&lt;li&gt;Aggregation&lt;/li&gt;
&lt;li&gt;Joins&lt;/li&gt;
&lt;li&gt;Time-series analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consider this case:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Although it looks like a number, it may actually be stored as text. This creates problems when calculating:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1500 + 500
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similarly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"2026-05-01"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;may be stored as text instead of a date.&lt;/p&gt;

&lt;h4&gt;
  
  
  Date and Time Cleaning
&lt;/h4&gt;

&lt;p&gt;Dates are particularly problematic because different systems use different formats.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;01/05/2026
2026-05-01
2026/05/01
May 1, 2026
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These may represent the same date.&lt;/p&gt;

&lt;p&gt;However:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;01/05/2026
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;could mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 May 2026&lt;/li&gt;
&lt;li&gt;January 5, 2026&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;depending on the regional format.&lt;/p&gt;

&lt;p&gt;Dates should therefore be standardized and converted to an actual date data type whenever possible.&lt;/p&gt;

&lt;h4&gt;
  
  
  Outliers
&lt;/h4&gt;

&lt;p&gt;An outlier is a value that is unusually different from other observations.&lt;/p&gt;

&lt;p&gt;Suppose sales values are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;500
600
450
700
550
520
50000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;50,000&lt;/code&gt; is potentially an outlier.&lt;/p&gt;

&lt;p&gt;But an outlier isn't automatically an error.&lt;/p&gt;

&lt;p&gt;It could represent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A large legitimate transaction&lt;/li&gt;
&lt;li&gt;A special customer&lt;/li&gt;
&lt;li&gt;A data-entry error&lt;/li&gt;
&lt;li&gt;Fraud&lt;/li&gt;
&lt;li&gt;A one-time event&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Therefore:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Identify outliers; don't automatically delete them.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Step 5: Data Validation
&lt;/h3&gt;

&lt;p&gt;After cleaning, the data should be validated.&lt;/p&gt;

&lt;p&gt;Ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are duplicates gone?&lt;/li&gt;
&lt;li&gt;Are required fields populated?&lt;/li&gt;
&lt;li&gt;Are data types correct?&lt;/li&gt;
&lt;li&gt;Are values within acceptable ranges?&lt;/li&gt;
&lt;li&gt;Are categories standardized?&lt;/li&gt;
&lt;li&gt;Are dates valid?&lt;/li&gt;
&lt;li&gt;Are relationships between tables correct?&lt;/li&gt;
&lt;li&gt;Did the cleaning process accidentally remove valid data?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Validation ensures that cleaning didn't create new problems.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Data Cleaning is the foundation we build all our data systems upon. Get it right, and the pipelines, the analytics, and the business decisions become seamless and valuable; get it wrong, and we miss the mark!&lt;/p&gt;

</description>
      <category>powerquery</category>
      <category>powerbi</category>
      <category>python</category>
      <category>sql</category>
    </item>
    <item>
      <title>The Paradox of Git and GitHub: Version Control</title>
      <dc:creator>Daniel Mutwiri Mbabu</dc:creator>
      <pubDate>Wed, 12 Aug 2026 13:40:18 +0000</pubDate>
      <link>https://dev.to/daniel_mutwirimbabu/the-paradox-of-git-and-github-version-control-bkk</link>
      <guid>https://dev.to/daniel_mutwirimbabu/the-paradox-of-git-and-github-version-control-bkk</guid>
      <description>&lt;p&gt;Often we get caught in the crossfire of big technological terminology, and we have so little to do but get blasted. For me, and I bet many others, Git and GitHub must be one of those! But for how long can we sit by and feel absolutely clueless, yet we can armour up at our own will? That's what I intend to do with this article. Let's break down this paradox together!&lt;/p&gt;

&lt;h2&gt;
  
  
  So What is Git and GitHub?
&lt;/h2&gt;

&lt;p&gt;Are they branches of the same Franchise that chose different names? Certainly not. &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Term&lt;/th&gt;
&lt;th&gt;Definition&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Git&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;It's the tool that tracks your changes to your projects and runs locally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GitHub&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;It's a website that stores your Git history in the cloud for Collaboration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Git&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Git&lt;/strong&gt; is a version control system that runs on your local machine, tracking every change you make to your code over time. It allows you to go back to any previous state, and lets multiple people work on the same project at the same time without overwriting each other.&lt;/p&gt;

&lt;p&gt;Without Git, teams share code by emailing files or editing the same folder. Both approaches lead to the same outcome, but in this case, someone's work gets lost. Git solves this permanently.&lt;/p&gt;

&lt;p&gt;Every developer has the full project history on their own machine - not just the latest version.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;GitHub&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt; is the website that stores your git history/git repositories in the cloud. (It does not run locally on your machine). It stores repositories online to enable collaboration.&lt;/p&gt;

&lt;p&gt;Mainly used to share code, review changes, manage issues, and Continuous Integration and Continuous Delivery (CI/CD)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;In a nutshell&lt;/strong&gt;&lt;br&gt;
Git is like MS Word that tracks all the changes, while GitHub is the Google Drive where you upload the Word document for collaboration.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Common terminologies used in the Git/GitHub Environment...
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Term&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Repository (repo)&lt;/td&gt;
&lt;td&gt;It's a Git Project Folder that Git is tracking.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commit&lt;/td&gt;
&lt;td&gt;This is a saved snapshot/state of your project at a specific point in time.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Branch&lt;/td&gt;
&lt;td&gt;It's a parallel version of the project - you experiment here without touching the main code.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remote&lt;/td&gt;
&lt;td&gt;It's the online stored copy of the repo, usually on GitHub.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Push&lt;/td&gt;
&lt;td&gt;It's to send your commits/changes to GitHub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pull&lt;/td&gt;
&lt;td&gt;It's to bring others' commits down to your local machine.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  So how do you get started on Git and GitHub?...
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installing Git
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Linux (Ubuntu)
&lt;/h4&gt;

&lt;p&gt;Run the commands below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;git &lt;span class="nt"&gt;-y&lt;/span&gt;
git &lt;span class="nt"&gt;--version&lt;/span&gt;          &lt;span class="c"&gt;# confirm: git version 2.x.x&lt;/span&gt;

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

&lt;/div&gt;



&lt;h4&gt;
  
  
  Windows
&lt;/h4&gt;

&lt;p&gt;Download from &lt;a href="https://git-scm.com/download/win" rel="noopener noreferrer"&gt;https://git-scm.com/download/win&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Always run Git commands inside Git Bash CLI, not on other  CLIs such as Command Prompt or PowerShell.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  macOS
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;xcode-select &lt;span class="nt"&gt;--install&lt;/span&gt;    &lt;span class="c"&gt;# installs Git via Xcode CLI tools&lt;/span&gt;
&lt;span class="c"&gt;# OR if you have Homebrew:&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; After the installation. A first-time configuration is necessary to connect your local Git to GitHub (Remote).&lt;/p&gt;

&lt;h4&gt;
  
  
  Opening Git Bash CLI for Windows and first-time configuration.
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Create a New Folder (Location? Upto you)&lt;/li&gt;
&lt;/ul&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%2Fxr5pgh7zhchalitxa85k.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%2Fxr5pgh7zhchalitxa85k.png" alt=" " width="777" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Right-click the newly created Folder to select more options if you cannot view "Open Git Bash Here".&lt;/li&gt;
&lt;/ul&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%2Fzdy2bef1yk8tdd49m0du.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%2Fzdy2bef1yk8tdd49m0du.png" alt=" " width="542" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Git Bash will open, and you have to initialize Git to do any Configurations. To initialize Git, run the command:
&lt;code&gt;git init&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&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%2Fsezx8i7g6wffsszxiae3.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%2Fsezx8i7g6wffsszxiae3.png" alt=" " width="694" height="39"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assuming you already have a GitHub account set up, run these commands in Git Bash for the first-time configuration.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name  &lt;span class="s2"&gt;"Your Full Name"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"you@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Where: "Your Full Name" = "GitHub Account Name"&lt;br&gt;
       "&lt;a href="mailto:you@example.com"&gt;you@example.com&lt;/a&gt;" = "Email address to the GitHub Account Name"&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Creating Your GitHub Account
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://github.com" rel="noopener noreferrer"&gt;https://github.com&lt;/a&gt; and click Sign up&lt;/li&gt;
&lt;li&gt;Choose a professional username&lt;/li&gt;
&lt;li&gt;Verify your email address&lt;/li&gt;
&lt;li&gt;Add a profile picture and a short bio&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;
  
  
  Quick Question
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;After configuring Git, how does the actual information flow between local (Git) and remote (GitHub)?&lt;/em&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Answer.
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;SSH / HTTPS &lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  The Communication Channels.
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;SSH&lt;/strong&gt; (Secure Shell Protocol) uses a key pair to prove your identity without ever sending a password across the network.&lt;br&gt;
&lt;strong&gt;HTTPS&lt;/strong&gt; is an application layer protocol responsible for securely transporting the Git communication between your computer and GitHub. &lt;/p&gt;
&lt;h4&gt;
  
  
  SSH vs HTTPS.
&lt;/h4&gt;

&lt;p&gt;Which one do I use? Both are secure communication methods. You should not think SSH is secure and HTTPS is not. With HTTPS, GitHub uses a personal access token (PAT) or a credential manager rather than your GitHub account password.&lt;/p&gt;

&lt;p&gt;Ideally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use SSH if it's your own machine, and you use GitHub regularly.&lt;/li&gt;
&lt;li&gt;Use HTTPS if you're on a machine/network where SSH setup is inconvenient, restricted, or temporary.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SSH&lt;/th&gt;
&lt;th&gt;HTTPS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Authentication Automatic - key pair handles it silently&lt;/td&gt;
&lt;td&gt;Requires a Personal Access Token (not your password - GitHub removed that in 2021)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup effort   15 minutes once per machine&lt;/td&gt;
&lt;td&gt;Token needed for each machine; expires and must be refreshed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Daily use  Push and pull with no prompts at all&lt;/td&gt;
&lt;td&gt;Prompted for credentials unless you store the token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for   Personal machines, servers, daily work&lt;/td&gt;
&lt;td&gt;One-off cloning; environments where SSH port is blocked&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  THE CORE FLOW
&lt;/h2&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                   YOUR COMPUTER
            ┌─────────────────────┐
            │                     │
            │   Working Directory │
            │          ↓          │
            │        git add      │
            │          ↓          │
            │   Staging Area      │
            │          ↓          │
            │       git commit    │
            │          ↓          │
            │   Local Repository  │
            │                     │
            └─────────┬───────────┘
                      │
                   git push
                      │
                      ▼
            ┌─────────────────────┐
            │       GitHub        │
            │                     │
            │ Remote Repository   │
            └─────────────────────┘
                      │
                   git pull
                      │
                      ▼
            ┌─────────────────────┐
            │   Local Repository  │
            └─────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;To break this down,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Create/change a file locally&lt;/strong&gt;&lt;br&gt;
Suppose your GitHub repository is:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;You clone it onto your computer:&lt;br&gt;
&lt;code&gt;git clone git@github.com:Danielmutwiri/JCARS.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You will have all the files related to JCARS, e.g., the README.md file, etc&lt;/p&gt;

&lt;p&gt;Git creates a &lt;strong&gt;local repository&lt;/strong&gt; containing the project's history and also remembers where the remote repository is.&lt;/p&gt;

&lt;p&gt;To verify,&lt;br&gt;
&lt;code&gt;git remote -v&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You will see&lt;/p&gt;

&lt;p&gt;&lt;code&gt;origin  git@github.com:Danielmutwiri/JCARS.git (fetch)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;origin  git@github.com:Danielmutwiri/JCARS.git (push)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Origin&lt;/strong&gt; is the conventional name given to a GitHub repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. You modify a file&lt;/strong&gt;&lt;br&gt;
Suppose you modify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Git will see README.md (Modified), but GitHub knows nothing about this change yet. Changing a file does not automatically change your Git repository or GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. &lt;code&gt;git add&lt;/code&gt; moves the change to staging&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git add README.md&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The change moves from the working directory to the staging area&lt;br&gt;
It's like saying:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Git, I want this particular change to be included in my next commit."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To verify, use this command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. &lt;code&gt;git commit&lt;/code&gt; stores the change locally&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;git commit -m "Update README.md"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Git creates a &lt;strong&gt;commit&lt;/strong&gt; in your local repository. But GitHub still hasn't received the commit yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. &lt;code&gt;git push&lt;/code&gt; sends your commits to GitHub&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;git push origin main&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is where the actual communication with GitHub occurs. Git transfers the necessary Git commit information to the remote repository. GitHub then updates its remote branch, and now they are in sync.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. What happens if some other developer changes GitHub?&lt;/strong&gt;&lt;br&gt;
On their computer, a change has happened, say 'change A'. Also, GitHub is updated, but your local PC is lagging. Use &lt;code&gt;git fetch&lt;/code&gt;/&lt;code&gt;git pull&lt;/code&gt; to retrieve information from GitHub and get your local PC up to speed.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git fetch origin&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Git will contact GitHub and retrieve information about changes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;fetch&lt;/code&gt; is relatively safe: it downloads information but does not automatically modify your working files.&lt;code&gt;git pull&lt;/code&gt; however, goes one step further.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;git pull origin main&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Git will perform: git fetch + git merge. Your local branch is then brought up to date. Modern Git can also be configured to use rebase instead of merge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finally
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub is not the "master copy" of Git itself.&lt;/strong&gt; Your local repository contains the full Git history too. GitHub is a &lt;strong&gt;remote repository&lt;/strong&gt; that provides collaboration, backup, hosting, and pull requests. Now you have the power to go and do some version control.&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>versioncontrol</category>
    </item>
    <item>
      <title>Connecting Power BI to a SQL Database</title>
      <dc:creator>Daniel Mutwiri Mbabu</dc:creator>
      <pubDate>Thu, 23 Jul 2026 08:53:03 +0000</pubDate>
      <link>https://dev.to/daniel_mutwirimbabu/connecting-power-bi-to-a-sql-database-1nek</link>
      <guid>https://dev.to/daniel_mutwirimbabu/connecting-power-bi-to-a-sql-database-1nek</guid>
      <description>&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%2Fwdmm0qgyhrky1lmcdbj9.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%2Fwdmm0qgyhrky1lmcdbj9.png" alt=" " width="799" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Oftentimes we need to clean, model, and report insights from data stored in databases. Sometimes the data can be stored in a local SQL database or in a cloud-based SQL database. Today we will dive into the nitty-gritty of this endeavor using Power BI as your reporting tool and a SQL database as our storage.&lt;/p&gt;

&lt;h1&gt;
  
  
  Understanding Data Connectivity Modes
&lt;/h1&gt;

&lt;p&gt;To connect a reporting and analysis tool such as Power BI to a SQL Database, understanding how it connects to the database is crucial. There are three primary connection modes. Each serves a different purpose depending on your reporting needs.&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt; Import Mode&lt;/li&gt;
&lt;li&gt; Direct Query&lt;/li&gt;
&lt;li&gt; Live Connection&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;1. Import Mode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works&lt;/strong&gt;&lt;br&gt;
Power BI imports all selected data into its in-memory VertiPaq engine.&lt;br&gt;
Reports query the imported data instead of the SQL database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ideal when&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data changes daily or a few times per day.&lt;/li&gt;
&lt;li&gt;You need high-performance dashboards.&lt;/li&gt;
&lt;li&gt;Complex calculations and relationships are required.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Example&lt;/em&gt;&lt;br&gt;
&lt;em&gt;A sales database updates overnight, and management reviews reports each morning.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. DirectQuery Mode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works&lt;/strong&gt;&lt;br&gt;
No data is stored in Power BI (except metadata and optional cache).&lt;br&gt;
Every filter, slicer, or visual generates a SQL query against the database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ideal when&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data changes every few minutes.&lt;/li&gt;
&lt;li&gt;Databases contain hundreds of millions of rows.&lt;/li&gt;
&lt;li&gt;Data cannot be copied due to compliance or storage constraints.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Example&lt;/em&gt;&lt;br&gt;
&lt;em&gt;A call center dashboard showing live customer support activity.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Performance Tips&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create indexes on frequently filtered columns.&lt;/li&gt;
&lt;li&gt;Use star schema design.&lt;/li&gt;
&lt;li&gt;Minimize calculated columns in Power BI.&lt;/li&gt;
&lt;li&gt;Reduce visual complexity.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;3.Live Connection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works&lt;/strong&gt;&lt;br&gt;
Instead of connecting directly to SQL, Power BI connects to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQL Server Analysis Services (SSAS)&lt;/li&gt;
&lt;li&gt;Azure Analysis Services (AAS)&lt;/li&gt;
&lt;li&gt;Another Power BI semantic model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The semantic model handles calculations, relationships, and security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ideal when&lt;/strong&gt;&lt;br&gt;
An organization has a centralized BI team managing enterprise models.&lt;br&gt;
Multiple reports should use the same governed data model.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Scenario&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Recommended Mode&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Fast executive dashboards&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Import&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Real-time operational dashboards&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;DirectQuery&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Very large databases&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;DirectQuery&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise semantic model already exists&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Live Connection&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Need both speed and fresh data&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Composite Model&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  Connecting Power BI to a Local SQL Database
&lt;/h1&gt;

&lt;p&gt;A local SQL Database runs on your local machine. Therefore, connecting to it is easy!&lt;br&gt;
&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQL Server installed (e.g., SQL Server Express, Developer, or Standard Edition)&lt;/li&gt;
&lt;li&gt;SQL Server service is running&lt;/li&gt;
&lt;li&gt;You know:&lt;/li&gt;
&lt;li&gt;Server name&lt;/li&gt;
&lt;li&gt;Database name&lt;/li&gt;
&lt;li&gt;Authentication method (Windows or SQL Server Authentication)&lt;/li&gt;
&lt;li&gt;Power BI Desktop is installed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Open Power BI Desktop&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launch Power BI Desktop.&lt;/li&gt;
&lt;li&gt;Click Get Data on the Home ribbon.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flodreg37p5anf1bp2s5q.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%2Flodreg37p5anf1bp2s5q.png" alt=" " width="782" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select SQL Server. (In this case, we are using a Postgres Server)&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb2217jk8gdoz00htnlk5.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%2Fb2217jk8gdoz00htnlk5.png" alt=" " width="800" height="768"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Connect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Enter Connection Details&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You'll be prompted for:&lt;/p&gt;

&lt;p&gt;Server and Database information. &lt;br&gt;
For a local connection, input the server credentials as: &lt;code&gt;127.0.0.1:5432&lt;/code&gt;&lt;br&gt;
  &lt;em&gt;where th 5432 is the port number&lt;/em&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%2Fiwjfxe0k5k8qx54hhd2b.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%2Fiwjfxe0k5k8qx54hhd2b.png" alt=" " width="783" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Choose Connectivity Mode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You'll have two options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Import (recommended)&lt;/li&gt;
&lt;li&gt;DirectQuery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Authentication&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows Authentication (Most Common)&lt;/strong&gt;&lt;br&gt;
Uses your Windows login credentials.&lt;/p&gt;

&lt;p&gt;Select: Windows &amp;gt; Then click Connect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SQL Server Authentication (Authentication details you input while installing your local SQL server)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Choose: Database &amp;gt; Enter: 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%2Fcpvctmal4eq6xub0ordn.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%2Fcpvctmal4eq6xub0ordn.png" alt=" " width="743" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Connect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Select Tables&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Power BI will display all tables and views. Select the tables you need. Click Load to import them or Transform Data to clean them in Power Query before loading.&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%2F5qao4k606l8cuclw7771.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%2F5qao4k606l8cuclw7771.png" alt=" " width="800" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Connecting Power BI to a Cloud-based SQL Database
&lt;/h1&gt;

&lt;p&gt;For this, the cloud service provider is Aiven.&lt;/p&gt;

&lt;p&gt;Cloud databases like Aiven PostgreSQL offer scalable and flexible data storage but require secure internet-based connections. To protect data in transit, they use encryption. Before Power BI can connect, the local machine must trust the cloud provider's Certificate Authority (CA), allowing it to verify the database server's identity and establish a secure connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Collect Aiven Connection Details&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Log in to your Aiven Console and open your PostgreSQL service. Note the following:&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%2Fzz35b3e8iyokox0n1j39.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%2Fzz35b3e8iyokox0n1j39.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Host (e.g., pg-12345-project.aivencloud.com)&lt;/li&gt;
&lt;li&gt;Port (usually 12345 or 5432)&lt;/li&gt;
&lt;li&gt;Database name&lt;/li&gt;
&lt;li&gt;Username&lt;/li&gt;
&lt;li&gt;Password&lt;/li&gt;
&lt;li&gt;CA Certificate&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Install the PostgreSQL ODBC/Npgsql Driver (if required)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Power BI uses PostgreSQL drivers to connect. &lt;/li&gt;
&lt;li&gt;Download and install the latest PostgreSQL (Npgsql) driver.&lt;/li&gt;
&lt;li&gt;Restart Power BI Desktop after installation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Trust the Aiven CA Certificate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since Aiven uses SSL encryption, Windows must trust the Certificate Authority. This helps Power BI trust the Aiven Postgres server.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; &lt;em&gt;To connect Power BI to the Database without the certificate, this error occurs.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&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%2F1okmx7qfkt8j9z5dkr69.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%2F1okmx7qfkt8j9z5dkr69.png" alt=" " width="592" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Locate the downloaded ca.pem file.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F24sbpbk6ac5lywe57lnr.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%2F24sbpbk6ac5lywe57lnr.png" alt=" " width="800" height="49"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Import it into the Windows Trusted Root Certification Authorities:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fpa9pybjvh0rlxaa4fn8w.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%2Fpa9pybjvh0rlxaa4fn8w.png" alt=" " width="452" height="400"&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%2F9l4tuwfmuv6ko2pgjyqf.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%2F9l4tuwfmuv6ko2pgjyqf.png" alt=" " width="780" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Import&amp;gt; In the import wizard, click Next&amp;gt; Browse for the downloaded  CA file&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%2Fxbv81pykea8ttu18ip29.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%2Fxbv81pykea8ttu18ip29.png" alt=" " width="670" height="662"&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%2Faffa79vk8y1v1ve59ip5.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%2Faffa79vk8y1v1ve59ip5.png" alt=" " width="670" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add Certificates for the Computer Account.&lt;/li&gt;
&lt;/ul&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%2F4ptrvwo7n31ne1wy54ei.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%2F4ptrvwo7n31ne1wy54ei.png" alt=" " width="617" height="592"&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%2Fzbu3kj74ovfxhbliluiu.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%2Fzbu3kj74ovfxhbliluiu.png" alt=" " width="641" height="637"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Open Power BI Desktop&lt;/strong&gt; &lt;em&gt;( Same as for local connection steps 1 to 3)&lt;/em&gt;&lt;br&gt;
Select Home → Get Data → Choose PostgreSQL database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Enter the Server Details&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fill in the fields as per the data on your Aiven service page:&lt;br&gt;
&lt;em&gt;Server:    hostname:port (pg-12345-project.aivencloud.com:12345)&lt;br&gt;
Database: Database name (defaultdb)&lt;/em&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%2Fmmi5skdgjuu743cuw5lk.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%2Fmmi5skdgjuu743cuw5lk.png" alt=" " width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click OK.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Authenticate&lt;/strong&gt; - if connecting first time&lt;/p&gt;

&lt;p&gt;Choose Database Authentication: Username &amp;gt; 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%2Fw39t42jlsbwxsx5fqbia.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%2Fw39t42jlsbwxsx5fqbia.png" alt=" " width="797" height="55"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Connect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: Select Tables&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Power BI will display the PostgreSQL schema. Choose the required tables or views.&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%2Fs2xaxopws0s1aocd5i83.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%2Fs2xaxopws0s1aocd5i83.png" alt=" " width="800" height="705"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Load to import the data or Transform Data to clean it in Power Query before loading.&lt;/p&gt;

&lt;h1&gt;
  
  
  Parting Shot...
&lt;/h1&gt;

&lt;p&gt;Every dashboard begins with a connection. This is where the strength of Power BI comes in: Interconnectivity! Whether your data resides on a local server or in the cloud, mastering secure database connectivity equips you to spend less time troubleshooting and more time discovering the stories hidden within your data. After all, data only becomes valuable when it is transformed into meaningful insights.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>database</category>
      <category>powerfuldevs</category>
      <category>dbeaver</category>
    </item>
    <item>
      <title>How Excel is Used in Real-World Data Analysis</title>
      <dc:creator>Daniel Mutwiri Mbabu</dc:creator>
      <pubDate>Sun, 07 Jun 2026 14:58:01 +0000</pubDate>
      <link>https://dev.to/daniel_mutwirimbabu/how-excel-is-used-in-real-world-data-analysis-226g</link>
      <guid>https://dev.to/daniel_mutwirimbabu/how-excel-is-used-in-real-world-data-analysis-226g</guid>
      <description>&lt;p&gt;The eagle first learns to walk before it masters the sky. In the world of data analysis, Excel is often the starting point of that journey. It helps us clean, organize, analyze, and visualize data in ways that reveal valuable patterns and opportunities. What begins as simple rows, columns, and calculations soon transforms into a powerful analytical tool that enables users to uncover trends, solve problems, and make informed decisions based on data rather than assumptions.&lt;/p&gt;

&lt;p&gt;I recently joined an official Microsoft Excel class. Although I had used Excel before and was required to learn it on the job due to its importance in business, I quickly discovered that there is always something new to learn. I joined the class believing I had a solid understanding of Excel, but I soon realized that beneath its simplicity lies remarkable sophistication. This balance between simplicity and power is what makes Excel such an indispensable tool.&lt;/p&gt;

&lt;p&gt;One of the key lessons I have learned is that data analysis is not just about mastering formulas and features; it is also about understanding the business environment and the problem being solved. A good data analyst should possess both technical and business knowledge. Understanding what questions to ask is just as important as knowing how to manipulate and analyze the data.&lt;/p&gt;

&lt;p&gt;Excel plays a vital role in several real-world applications.** In business decision-making,** organizations collect large amounts of data from sales, operations, customers, and employees. Analysts use Excel to identify trends, determine which products generate the most revenue, evaluate branch performance, and forecast future demand. These insights help businesses make informed decisions regarding inventory management, staffing, and investments.&lt;br&gt;
Excel is also widely used in &lt;strong&gt;financial reporting&lt;/strong&gt;. Organizations use it to compare actual spending against budgets, forecast revenues, evaluate investments, and identify potential financial risks. These analyses provide management with the information needed to make sound financial decisions.&lt;br&gt;
In &lt;strong&gt;marketing&lt;/strong&gt;, Excel helps measure the effectiveness of advertising campaigns, social media activities, and customer engagement efforts. By analyzing metrics such as website traffic, conversion rates, and customer acquisition costs, organizations can determine which strategies are delivering the best results and allocate resources more effectively.&lt;/p&gt;

&lt;p&gt;One of the most valuable skills I have learned is data cleaning. Clean data forms the foundation of reliable analysis. Excel provides numerous tools and functions that support this process, including&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;COUNTIFS(), TRIM(), VALUE(), DATEDIF(), YEAR(), TODAY(), NOW(), IFERROR(), and SUMIFS().
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Features such as &lt;em&gt;Find and Replace, Conditional Formatting, Data Validation, Multi-Sort, and handling blanks&lt;/em&gt; help ensure data accuracy and consistency. Data cleaning also involves &lt;em&gt;checking whether data is realistic and free from errors, such as identifying impossible employee ages or inconsistent entries.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Learning Excel has greatly increased my appreciation for data-driven decision-making. Whether in business, finance, marketing, or personal projects, I now recognize the importance of relying on data rather than assumptions. Excel has transformed the way I see information by showing me how raw data can be organized, analyzed, and converted into actionable insights. As I continue learning, I appreciate even more how a tool that appears simple on the surface can become a powerful means of solving complex real-world problems.&lt;/p&gt;

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