<?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: Dennis Ogaka</title>
    <description>The latest articles on DEV Community by Dennis Ogaka (@dennis_ogaka_2d188ab5bef7).</description>
    <link>https://dev.to/dennis_ogaka_2d188ab5bef7</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%2F3708664%2Fc8d0e82f-69cf-4229-9dc4-049fa1e683d4.jpg</url>
      <title>DEV Community: Dennis Ogaka</title>
      <link>https://dev.to/dennis_ogaka_2d188ab5bef7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dennis_ogaka_2d188ab5bef7"/>
    <language>en</language>
    <item>
      <title>Guide to Connecting Power BI to SQL Databases: Local &amp; Cloud Workflows</title>
      <dc:creator>Dennis Ogaka</dc:creator>
      <pubDate>Tue, 10 Mar 2026 17:29:51 +0000</pubDate>
      <link>https://dev.to/dennis_ogaka_2d188ab5bef7/guide-to-connecting-power-bi-to-sql-databases-local-cloud-workflows-22of</link>
      <guid>https://dev.to/dennis_ogaka_2d188ab5bef7/guide-to-connecting-power-bi-to-sql-databases-local-cloud-workflows-22of</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is Power BI and How is it Used?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Power BI&lt;/strong&gt; stands at the forefront of transforming raw information into actionable strategy, which translates to ultimate competitive advantage. It is a collection of software services, apps, and connectors that work together to turn unrelated sources of data into coherent, visually immersive, and interactive insights.&lt;br&gt;
Power BI is used by data analysts and businesses to bridge the gap between data and decision-making. Its primary functions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Preparation:&lt;/strong&gt; Using Power Query to clean, transform, and shape messy data into a usable format.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual Exploration:&lt;/strong&gt; Creating interactive reports and dashboards that allow users to check into specifics, such as sales performance by region or inventory turnover.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Integration:&lt;/strong&gt; Pulling data from multiple sources, including spreadsheets, cloud services, and local databases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaborative Intelligence:&lt;/strong&gt; Sharing insights across an organization through the Power BI Service, ensuring everyone is looking at a "single version of the truth."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why Companies Connect Power BI to Databases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While Power BI can import static files like Excel or CSVs, true enterprise-grade business intelligence relies on SQL databases (like PostgreSQL, SQL Server, or MySQL). SQL databases are built to handle millions of transactions while maintaining data integrity (the assurance that your data remains accurate and consistent over time)&lt;br&gt;
Companies connect Power BI directly to these databases for several critical reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scalability:&lt;/strong&gt; SQL databases are designed to store and manage millions (or billions) of rows of analytical data efficiently which is far beyond the capabilities of a spreadsheet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Centralization:&lt;/strong&gt; Databases act as a "Single Source of Truth," ensuring that all departments are pulling from the same validated data repository.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Accuracy:&lt;/strong&gt; By connecting to a live database, Power BI reports can be refreshed automatically, providing leadership with real-time insights.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security and Governance:&lt;/strong&gt; Databases offer robust permission levels, ensuring that sensitive financial or customer data is only accessible to authorized users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why SQL Databases are Vital for Analytics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For a company to move to a competitive edge, they need a robust system to manage its analytical data. SQL databases provide three critical pillars for this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Security and Concurrency:&lt;/strong&gt; Unlike a shared Excel file that might get "locked" when one person opens it, SQL databases allow hundreds of users (and Power BI reports) to access the data simultaneously. They also offer granular security, ensuring that a junior analyst can see sales trends but not specific employee salaries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Relational Structure:&lt;/strong&gt; SQL databases organize data into tables with defined relationships. For example, a "Sales" table can link to a "Customers" table via a unique ID. This prevents data redundancy; you don't need to type a customer’s address every time they buy something (the database simply "relates" the sale to the existing customer record.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High-Performance Querying:&lt;/strong&gt; When Power BI asks for "Total Revenue by Region for Q3," the SQL database doesn't just hand over every file it has. It uses powerful indexing and optimization to find exactly those rows, calculate the sum, and send back only the result. This makes reporting fast, even with massive datasets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Connecting Power BI to SQL Databases for Analytics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To achieve data discovery, pattern recognition, and shared insights, fueling data-driven decision-making, Power BI excels at connecting to a diverse array of data sources, with SQL databases, like PostgreSQL, providing the reliable and organized foundation crucial for robust data analysis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connecting to a Local PostgreSQL Database&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Connecting Power BI to your local PostgreSQL instance is a straightforward process.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;**Launch Power BI Desktop: **Open your Power BI Desktop application and click “Blank report.” &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.amazonaws.com%2Fuploads%2Farticles%2Flnwu8qu9fgg2vc8cvahe.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%2Flnwu8qu9fgg2vc8cvahe.png" alt=" " width="780" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access "&lt;strong&gt;Get Data&lt;/strong&gt;": On the "Home" ribbon, locate and click the "Get Data" icon. &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.amazonaws.com%2Fuploads%2Farticles%2Fbqrsw9ptlmpfzpwujlps.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%2Fbqrsw9ptlmpfzpwujlps.png" alt=" " width="780" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Choose PostgreSQL:&lt;/strong&gt; A dialogue box with various data source categories will appear. Select "Database" on the left panel, and then choose "PostgreSQL database" from the list. &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.amazonaws.com%2Fuploads%2Farticles%2Fqy7e5cs5venrws2rjbtd.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%2Fqy7e5cs5venrws2rjbtd.png" alt=" " width="780" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enter Server Details:&lt;/strong&gt; In the PostgreSQL connection window:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For your local database, enter localhost (or your machine's IP address) in the "Server" field.&lt;/li&gt;
&lt;li&gt;Provide the "Database" name where your data resides.&lt;/li&gt;
&lt;/ul&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.amazonaws.com%2Fuploads%2Farticles%2F0dx94h3dbn5e1w4atjml.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%2F0dx94h3dbn5e1w4atjml.png" alt=" " width="780" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authenticate:&lt;/strong&gt; After clicking "OK," you'll be prompted for your PostgreSQL database credentials. Ensure you have the necessary username and password and enter them into the "Database" authentication method. &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.amazonaws.com%2Fuploads%2Farticles%2F3mr6f053loz5klxqkzn6.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%2F3mr6f053loz5klxqkzn6.png" alt=" " width="780" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Select and Load Tables:&lt;/strong&gt; Once authenticated, the Navigator window appears, displaying the databases and schemas within your PostgreSQL server. Expand your database and select the tables you need (e.g., assignment.customers, assignment.products, assignment.sales, assignment.inventory) by checking their respective boxes. A preview of the selected table's data will appear on the right. Finally, click "Load" to bring the data into Power BI.&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.amazonaws.com%2Fuploads%2Farticles%2Fntdwczgwcgbtrsujuvjt.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%2Fntdwczgwcgbtrsujuvjt.png" alt=" " width="780" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connecting to a Cloud PostgreSQL Database (e.g., Aiven)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many organizations store their data in cloud services like Aiven PostgreSQL, which requires specific security considerations, particularly SSL certificates. SSL (Secure Sockets Layer) ensures that all data transmitted between Power BI and your cloud database is encrypted, protecting sensitive information from potential interception.&lt;/p&gt;

&lt;p&gt;To connect to an Aiven PostgreSQL database:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Retrieve Connection Details:&lt;/strong&gt; In your Aiven dashboard, navigate to your PostgreSQL service and copy the following connection information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Host&lt;/li&gt;
&lt;li&gt;Port&lt;/li&gt;
&lt;li&gt;Database Name&lt;/li&gt;
&lt;li&gt;User Name&lt;/li&gt;
&lt;li&gt;Password&lt;/li&gt;
&lt;/ul&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.amazonaws.com%2Fuploads%2Farticles%2Flj9phvyxyqq0lb4tj8bb.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%2Flj9phvyxyqq0lb4tj8bb.png" alt=" " width="780" height="244"&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%2F44pcu8fxu43jd7wa1sc6.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%2F44pcu8fxu43jd7wa1sc6.png" alt=" " width="780" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Download the SSL Certificate:&lt;/strong&gt; Power BI requires the service's SSL certificate to establish a secure connection. Look for the "Download" or "SSL Certificate" option on your Aiven service dashboard and save the certificate file locally. &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.amazonaws.com%2Fuploads%2Farticles%2Fxfv717de3av5zvfwogrc.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%2Fxfv717de3av5zvfwogrc.png" alt=" " width="780" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Initiate Power BI Connection:&lt;/strong&gt; Follow steps 1-3 from the local PostgreSQL section. When entering the connection details for your Aiven database, provide the retrieved Host, Port, and Database Name.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Incorporate the SSL Certificate:&lt;/strong&gt; Power BI might prompt you about encryption during the initial connection or authentication. Depending on your driver configuration (PostgreSQL ODBC or ADO.NET), you may need to import the SSL certificate into your system's certificate store or provide the path to the certificate file. The exact method can vary slightly. Ensure your connection properties specify using SSL and potentially point to the downloaded CA certificate file.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once properly configured with SSL, Power BI will securely connect to your cloud-based Aiven PostgreSQL database, allowing you to select and load tables as previously described.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In essence, knowing SQL gives Power BI analysts a strong toolkit that allows them to work with data sources more directly and complete data preparation chores more quickly, producing analytics solutions that are richer, more accurate, and more effective. Any data professional can benefit greatly from combining the powerful data retrieval and manipulation capabilities of SQL with the data exploration and visualization capabilities of Power BI.&lt;/p&gt;

</description>
      <category>database</category>
      <category>microsoft</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Expanding the Dataset: A Comprehensive Guide to SQL Joins and Window Functions</title>
      <dc:creator>Dennis Ogaka</dc:creator>
      <pubDate>Mon, 02 Mar 2026 20:25:33 +0000</pubDate>
      <link>https://dev.to/dennis_ogaka_2d188ab5bef7/expanding-the-dataset-a-comprehensive-guide-to-sql-joins-and-window-functions-gg7</link>
      <guid>https://dev.to/dennis_ogaka_2d188ab5bef7/expanding-the-dataset-a-comprehensive-guide-to-sql-joins-and-window-functions-gg7</guid>
      <description>&lt;p&gt;&lt;strong&gt;Joins and Window Functions in SQL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Joins and Window Functions in SQL are two concepts that significantly elevate querying skills. These tools allow you to combine datasets and perform advanced calculations without collapsing your data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PART 1: JOINS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Join combines rows from two or more tables based on a related column between them (usually a primary key and a foreign key).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Types of Joins&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. INNER JOIN&lt;/strong&gt;&lt;br&gt;
Returns only matching records from both tables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Customers
customer_id | name
1           | Alice
2           | Bob
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Orders
order_id | customer_id | amount
101      | 1           | 500
102      | 3           | 300
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Query
SELECT c.name, o.amount
FROM Customers c
INNER JOIN Orders o
    ON c.customer_id = o.customer_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





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

&lt;/div&gt;



&lt;p&gt;Bob is excluded because he has no matching order.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. LEFT JOIN (LEFT OUTER JOIN)&lt;/strong&gt;&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT c.name, o.amount
FROM Customers c
LEFT JOIN Orders o
    ON c.customer_id = o.customer_id;

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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Result
Alice | 500
Bob   | NULL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bob appears with NULL because he has no orders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. RIGHT JOIN&lt;/strong&gt;&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Customers
customer_id name
1           Alice
2           Bob
3           Carol

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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Orders
order_id  customer_id         amount
101        1             500
102        1             200
103        4             300
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Query
SELECT 
    c.name,
    o.order_id,
    o.amount
FROM Customers c
RIGHT JOIN Orders o
    ON c.customer_id = o.customer_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Result
name    order_id  amount
Alice     101      500
Alice     102      200
NULL      103      300
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Orders 101 and 102 match Alice.&lt;br&gt;
Order 103 has customer_id 4 → no match in Customers.&lt;br&gt;
Because it's a RIGHT JOIN, all Orders are kept.&lt;br&gt;
Since there’s no customer for id 4 → name becomes NULL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. FULL JOIN&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Returns all records when there is a match in either table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Query
SELECT 
    c.name,
    o.order_id,
    o.amount
FROM Customers c
FULL JOIN Orders o
    ON c.customer_id = o.customer_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Result
name      order_id           amount
Alice       101                500
Alice       102                200
Bob           NULL         NULL
Carol       NULL             NULL
NULL        103                300
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alice matches orders.&lt;br&gt;
Bob and Carol have no orders → NULL for order columns.&lt;br&gt;
Order 103 has no customer → NULL for name.&lt;br&gt;
A full join keeps everything from both tables.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PART 2: WINDOW FUNCTIONS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Window Function performs calculations across a set of rows related to the current row without grouping the result into fewer rows.&lt;br&gt;
While Joins combine different tables, Window Functions perform calculations across a set of rows that are related to the current row. Window functions don't "collapse" your data into a single row; they keep the individual row detail intact while adding an analytical layer.&lt;br&gt;
The secret sauce is the &lt;strong&gt;OVER ()&lt;/strong&gt; clause, which defines the "window" of data the function looks at. You can further refine this with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;PARTITION BY:&lt;/strong&gt; Breaks the data into logical groups (like buckets).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;ORDER BY:&lt;/strong&gt; Defines the sequence within those buckets.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Basic Syntax
FUNCTION_NAME() OVER (
    PARTITION BY column
    ORDER BY column
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Common Window Functions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. ROW_NUMBER ()&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Assigns a unique sequential number to rows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT 
    name,
    department,
    ROW_NUMBER() OVER (
        PARTITION BY department
        ORDER BY salary DESC
    ) AS rank_in_department
FROM Employees;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ranks employees by salary within each department.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. RANK()&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Similar to ROW_NUMBER, but handles ties differently.&lt;br&gt;
If two employees have the same salary; Both get rank 1, and the next rank becomes 3&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. DENSE_RANK()&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Like RANK but without skipping numbers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. SUM() as a Window Function&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Running totals example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT 
    order_date,
    amount,
    SUM(amount) OVER (
        ORDER BY order_date
    ) AS running_total
FROM Orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This calculates cumulative sales over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. AVG() Over Partition&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT 
    department,
    name,
    salary,
    AVG(salary) OVER (
        PARTITION BY department
    ) AS department_avg
FROM Employees;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each row shows the employee salary and department average without grouping.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Difference: GROUP BY(GB) vs Window Function(WF)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GB&lt;/strong&gt; - Collapses rows, &lt;strong&gt;WF&lt;/strong&gt; - Keeps all rows&lt;br&gt;
&lt;strong&gt;GB&lt;/strong&gt; - One result per group, &lt;strong&gt;WF&lt;/strong&gt; - One result per row&lt;br&gt;
&lt;strong&gt;GB&lt;/strong&gt; - Used for summaries, &lt;strong&gt;WF&lt;/strong&gt; - Used for ranking, running totals, comparisons&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample Combined Example (Join + Window Function)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT 
    c.customer_name,
    o.order_date,
    o.amount,
    SUM(o.amount) OVER (
        PARTITION BY c.customer_name
        ORDER BY o.order_date
    ) AS customer_running_total
FROM Orders o
JOIN Customers c
    ON o.customer_id = c.customer_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Joins customers to orders&lt;/li&gt;
&lt;li&gt;Calculates cumulative spending per customer&lt;/li&gt;
&lt;li&gt;This is powerful for customer lifetime value analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Joins merge different tables based on a shared column. They change the width of your data.&lt;/li&gt;
&lt;li&gt;Window Functions calculate values (like rankings or running totals) based on other rows in the same result set. They change the depth of your insight without losing row-level detail.&lt;/li&gt;
&lt;li&gt;Joins are for relationship building; Window Functions are for trend and comparative analysis.&lt;/li&gt;
&lt;li&gt;If Joins are about combining data, Window functions are about analyzing data intelligently.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Jumia Product Performance Dashboard: Analyzing Pricing, Discounts, and Customer Reviews.</title>
      <dc:creator>Dennis Ogaka</dc:creator>
      <pubDate>Sat, 07 Feb 2026 23:33:30 +0000</pubDate>
      <link>https://dev.to/dennis_ogaka_2d188ab5bef7/jumia-product-performance-dashboard-analyzing-pricing-discounts-and-customer-reviews-844</link>
      <guid>https://dev.to/dennis_ogaka_2d188ab5bef7/jumia-product-performance-dashboard-analyzing-pricing-discounts-and-customer-reviews-844</guid>
      <description>&lt;p&gt;The dataset had 115 rows and six columns. Customer rating was out of 5. I carried out data cleaning and analysis and created the dashboard. This is how I categorized the rating and discount:&lt;br&gt;
Rating Category:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Poor&lt;/em&gt;&lt;/strong&gt; for ratings below 3&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Average&lt;/em&gt;&lt;/strong&gt; for ratings between 3 and 4.4&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Excellent&lt;/em&gt;&lt;/strong&gt; for ratings of 4.5 and above&lt;br&gt;
Discount Category:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Low&lt;/em&gt;&lt;/strong&gt; Discount for discounts below 20%&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Medium&lt;/strong&gt;&lt;/em&gt; Discount for discounts between 20% and 40%&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;High&lt;/em&gt;&lt;/strong&gt; Discount for discounts above 40%&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.amazonaws.com%2Fuploads%2Farticles%2Fskd0xfkitdhs8hmobxsa.jpg" 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%2Fskd0xfkitdhs8hmobxsa.jpg" alt=" " width="588" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How Analysts Translate Messy Data, DAX, and Dashboards into Action Using Power BI</title>
      <dc:creator>Dennis Ogaka</dc:creator>
      <pubDate>Sat, 07 Feb 2026 23:10:47 +0000</pubDate>
      <link>https://dev.to/dennis_ogaka_2d188ab5bef7/how-analysts-translate-messy-data-dax-and-dashboards-into-action-using-power-bi-2imf</link>
      <guid>https://dev.to/dennis_ogaka_2d188ab5bef7/how-analysts-translate-messy-data-dax-and-dashboards-into-action-using-power-bi-2imf</guid>
      <description>&lt;p&gt;Data professionals are always given data sets with missing numbers, inconsistent formats, duplicate records, and unclear business definitions. Organizations anticipate reliable insights and timely decisions from the data presented.&lt;br&gt;
Any data professional must be able to give comprehensive, clear, and instructive data insights to support decision-making in the face of such organizational expectations, and Power BI is the solution to help do this. Strong data modeling and DAX logic in Power BI allow analysts to transform disorganized raw data into useful dashboards that impact organizational choices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Understanding the Business Question Before the Data&lt;/strong&gt;&lt;br&gt;
Proactive analysts align on the decision to be made, the audience, and the metrics that define success. Without this context, even the cleanest dashboard can fail.&lt;br&gt;
For example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sales want to know why revenue is declining.&lt;/li&gt;
&lt;li&gt;The executive wants to reduce cost leakages.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;- Translating Messy Data into Structured Models&lt;/strong&gt;&lt;br&gt;
Messy data includes missing values, duplicates, incorrect data types, and inconsistent naming. Power Query is used to clean, standardize, and stage data for analysis.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Data Type Handling:&lt;/em&gt;&lt;/strong&gt; One of the first steps in data cleaning is ensuring that each column has the correct data type. A column containing text should have the data type “text”, and so on. Power Query provides intuitive options to change data types.&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%2Fr4dfp8ukham61ajw933n.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%2Fr4dfp8ukham61ajw933n.png" alt=" " width="800" height="623"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Removing Duplicates:&lt;/em&gt;&lt;/strong&gt; Duplicate records can skew analysis results and lead to inaccuracies. Power Query simplifies identifying and removing duplicates with just a few clicks, ensuring your dataset remains in perfect condition.&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%2Fb8s8s0wh5x1d86qipxwt.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%2Fb8s8s0wh5x1d86qipxwt.png" alt=" " width="800" height="525"&gt;&lt;/a&gt;&lt;br&gt;
To remove duplicates, right-click on the column of interest and choose &lt;strong&gt;“Remove Duplicates.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Data Modeling: Turning Tables into Insight Engines&lt;/strong&gt;&lt;br&gt;
Using star schema principles, analysts design fact and dimension tables with proper relationships to ensure accurate calculations and 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg7mwcpa077wgnw9qtzh.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%2Fhg7mwcpa077wgnw9qtzh.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- DAX: Turning Data into Business Logic&lt;/strong&gt;&lt;br&gt;
DAX encodes business rules such as profit, margin, growth, and performance comparisons using context-aware measures. With DAX, dashboards become analytical &lt;br&gt;
Examples: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Gross Profit = Revenue – Cost&lt;/li&gt;
&lt;li&gt;Selling Price = Yield*Market Price&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%2Fyma30kluhf6v9g7ddbiw.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%2Fyma30kluhf6v9g7ddbiw.png" alt=" " width="800" height="32"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- From Numbers to Narratives: Dashboard Design&lt;/strong&gt;&lt;br&gt;
Dashboards focus on KPIs, trends, and exceptions, guiding decision-makers toward action rather than overwhelming them with data. Analysts achieve this by removing unnecessary visuals, conflicting colors, and redundant labels.&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%2Fu4g2cq6vyxbnx21nhhow.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%2Fu4g2cq6vyxbnx21nhhow.png" alt=" " width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Translating Dashboards into Action&lt;/strong&gt;&lt;br&gt;
Effective dashboards influence real decisions such as pricing changes, cost control, and resource allocation. This is where data becomes a decision-making tool, not just a mere report.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Power BI bridges the gap between raw data and decisions for the company. The analyst's job is to convert facts into recommendations that lead to outputs.&lt;br&gt;
As a result, a Power BI analyst's real worth is found in converting unstructured data into useful metrics, facilitating better decision-making, and effectively presenting insights. Organizations can only maintain their leadership in corporate advancement and decision-making by doing this.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>data</category>
      <category>datascience</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>An Overview of Schemas and Data Modelling in Power BI</title>
      <dc:creator>Dennis Ogaka</dc:creator>
      <pubDate>Mon, 02 Feb 2026 19:04:38 +0000</pubDate>
      <link>https://dev.to/dennis_ogaka_2d188ab5bef7/an-overview-of-schemas-and-data-modelling-in-power-bi-3d18</link>
      <guid>https://dev.to/dennis_ogaka_2d188ab5bef7/an-overview-of-schemas-and-data-modelling-in-power-bi-3d18</guid>
      <description>&lt;p&gt;Data modeling in Power BI refers to how data tables are organized, connected through relationships, and optimized for calculations and reporting.&lt;br&gt;
In simple language, a data model is the engine in Power BI. Efficient data modeling transforms raw, messy data into a high-performance analytical structure. This article explains key concepts such as fact tables, dimension tables, star schema, snowflake schema, relationships, and why good modelling is critical for performance and accurate reporting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fact and Dimension Tables&lt;/strong&gt;&lt;br&gt;
Before choosing a schema, you must categorize your data into two distinct table types.&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%2Fv2fvivuozo2vk8i6zi1i.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%2Fv2fvivuozo2vk8i6zi1i.png" alt=" " width="758" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fact Tables&lt;/strong&gt;&lt;br&gt;
A fact table contains quantitative, measurable data related to business events such as Sales, Orders, Revenue, and Discount.&lt;br&gt;
Usually contain millions of rows, many foreign keys, and numeric columns meant for aggregation (Sum, Average).&lt;br&gt;
Example: A Sales table containing &lt;code&gt;OrderID&lt;/code&gt;, &lt;code&gt;DateKey&lt;/code&gt;, &lt;code&gt;ProductKey&lt;/code&gt;, and &lt;code&gt;SalesAmount&lt;/code&gt;.&lt;br&gt;
Fact table answers these questions: &lt;strong&gt;“how much”&lt;/strong&gt; or &lt;strong&gt;“how many”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dimension Tables&lt;/strong&gt;&lt;br&gt;
A dimension table has descriptive attributes. It provides the context for the facts on the who, what, where, and when.&lt;br&gt;
The dimension tables are characterized by a smaller size, text, or categorical data used for filtering and grouping, and apply one record per entity.&lt;br&gt;
Example: A product table containing productName, Category, and Color.&lt;br&gt;
Dimension tables answer these questions &lt;strong&gt;”who,what,where,when.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of Schemas in Power BI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Star Schema&lt;/strong&gt;&lt;br&gt;
The Star Schema is the recommended modeling pattern for Power BI. In this setup, a central &lt;strong&gt;Fact table&lt;/strong&gt; is surrounded by multiple &lt;strong&gt;Dimension tables&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frrw3o59q3pte1r14apwe.jpg" 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%2Frrw3o59q3pte1r14apwe.jpg" alt=" " width="800" height="781"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dimension tables are not connected to each other.&lt;br&gt;
It is the best option for Power BI due to the simple relationships, ease of understanding and maintenance, and its compatibility with DAX calculations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snowflake Schema&lt;/strong&gt;&lt;br&gt;
A Snowflake schema occurs when a dimension table is normalized, meaning a dimension table connects to another dimension table rather than the fact table.&lt;br&gt;
Example: A &lt;code&gt;Product&lt;/code&gt;(Fact) table connects to &lt;code&gt;Product&lt;/code&gt;(Dim), which then connects to a separate &lt;code&gt;Category&lt;/code&gt;(Dim) table.&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%2Fqujlycu5nr2nlnb5c37p.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%2Fqujlycu5nr2nlnb5c37p.png" alt=" " width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While this saves a tiny amount of storage by reducing redundancy, it creates complex relationship chains. This forces Power BI to work harder to filter data, often leading to slower report performance. In short they are not ideal for Power BI reporting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Managing Relationships&lt;/strong&gt;&lt;br&gt;
Relationships define how data flows between tables. In Power BI, you must pay attention to two specific settings because correct relationships ensure that filters and slicers behave correctly across visuals.&lt;br&gt;
These are the relationships in Power BI:&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Why Modeling is Critical&lt;/strong&gt;&lt;br&gt;
A poor model isn't just a technical annoyance; it leads to broken data and unwanted errors.&lt;br&gt;
Why Good Data Modelling Is Critical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Performance&lt;/strong&gt;
A well-designed model reduces memory usage, improves query speed and makes visuals load faster&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Accurate Reporting&lt;/strong&gt;
Good modelling ensures filters propagate correctly and measures calculate as expected&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Simpler DAX Measures&lt;/strong&gt;
Clean models lead to shorter DAX formulas, easier debugging and fewer calculation errors&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Scalability and Maintenance&lt;/strong&gt;
A good model is easy to extend with new data and easier for other analysts to understand. It supports long-term reporting needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best Practices for Power BI Data Modelling&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Use star schema whenever possible&lt;/li&gt;
&lt;li&gt;  Separate facts and dimensions clearly&lt;/li&gt;
&lt;li&gt;  Avoid bi-directional relationships unless necessary&lt;/li&gt;
&lt;li&gt;  Create a dedicated Date dimension&lt;/li&gt;
&lt;li&gt;  Remove unused columns&lt;/li&gt;
&lt;li&gt;  Keep column names business-friendly&lt;/li&gt;
&lt;li&gt;  Validate totals against source systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Effective Power BI reporting is built on data modeling. Understanding fact tables, dimension tables, relationships, star schemas, and snowflake schemas allows you to construct models that are fast, accurate, and easy to manage. In Power BI, good visualizations start with good models. Performance, dependability, and confidence in your reports are all enhanced by devoting time to accurate data modeling.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>github</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Introduction to MS Excel for Data Analytics</title>
      <dc:creator>Dennis Ogaka</dc:creator>
      <pubDate>Sun, 25 Jan 2026 11:35:20 +0000</pubDate>
      <link>https://dev.to/dennis_ogaka_2d188ab5bef7/introduction-to-ms-excel-for-data-analytics-56pb</link>
      <guid>https://dev.to/dennis_ogaka_2d188ab5bef7/introduction-to-ms-excel-for-data-analytics-56pb</guid>
      <description>&lt;p&gt;&lt;strong&gt;1. What Is MS Excel?&lt;/strong&gt;&lt;br&gt;
Microsoft Excel is a spreadsheet application used to store, organize, analyze, and visualize data. It is widely used in data analytics because it is easy to learn and capable of performing basic to intermediate data analysis tasks.&lt;/p&gt;

&lt;p&gt;In Excel, data is stored in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rows (horizontal)&lt;/li&gt;
&lt;li&gt;Columns (vertical)&lt;/li&gt;
&lt;li&gt;Cells (intersection of rows and columns)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each cell can store text, numbers, or formulas.&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%2Fbx8u8oxmbilbbu1t573k.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%2Fbx8u8oxmbilbbu1t573k.png" alt=" " width="748" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Understanding the Excel Interface&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before analyzing data, it is important to understand the main parts of Excel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ribbon – Contains tabs like Home, Insert, Data, and Formulas&lt;/li&gt;
&lt;li&gt;Worksheet – The working area where data is entered&lt;/li&gt;
&lt;li&gt;Formula Bar – Shows formulas entered in a cell&lt;/li&gt;
&lt;li&gt;Sheet Tabs – Used to navigate between worksheets&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.amazonaws.com%2Fuploads%2Farticles%2Fchuk2v87kb35te9toxft.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%2Fchuk2v87kb35te9toxft.png" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Entering and Organizing Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Excel&lt;/li&gt;
&lt;li&gt;Enter column headers in Row 1&lt;/li&gt;
&lt;li&gt;Enter data in the rows below
Good data organization is important for analysis.&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%2F8vkgi7s3ezdpx5bt5kgw.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%2F8vkgi7s3ezdpx5bt5kgw.png" alt=" " width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Basic Calculations Using Formulas&lt;/strong&gt;&lt;br&gt;
Excel allows you to perform calculations using formulas.&lt;br&gt;
Calculating Total:&lt;br&gt;
Add a new column called Total.&lt;br&gt;
Formula:&lt;br&gt;
=Units * Unit Cost&lt;br&gt;
Example:&lt;br&gt;
=E2*F2&lt;br&gt;
Press Enter, then drag the formula down to apply it to other rows.&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%2F9lhg8xthkcjeabjo6ycj.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%2F9lhg8xthkcjeabjo6ycj.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Using Basic Excel Functions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;SUM Function&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Used to add values.&lt;br&gt;
Example:&lt;br&gt;
=SUM(G2:G44)&lt;br&gt;
This calculates total sales for all products.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;AVERAGE Function&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Used to calculate the average value.&lt;br&gt;
Example:&lt;br&gt;
=AVERAGE(G2:G44)&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%2Fltijwkoa5hm87madinag.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%2Fltijwkoa5hm87madinag.png" alt=" " width="800" height="893"&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%2Fzaetsrwire7d84pusa73.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%2Fzaetsrwire7d84pusa73.png" alt=" " width="800" height="801"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Sorting and Filtering Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sorting and filtering help you analyze data more easily.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Sorting&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Select the dataset&lt;br&gt;
Go to Data → Sort&lt;br&gt;
Sort by units or Total&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Filtering&lt;/strong&gt;&lt;/em&gt;&lt;br&gt;
Select the header row&lt;br&gt;
Click Data → Filter&lt;br&gt;
Use dropdown arrows to filter specific products&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%2Fimi5j8zoe8gs47t9d9jj.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%2Fimi5j8zoe8gs47t9d9jj.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Creating Simple Charts&lt;/strong&gt;&lt;br&gt;
Charts help visualize data and identify patterns.&lt;br&gt;
Creating a Column Chart&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select Item and Total columns&lt;/li&gt;
&lt;li&gt;Go to Insert → Column Chart&lt;/li&gt;
&lt;li&gt;Choose a simple column chart&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Excel will automatically generate a chart.&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%2F3yxgg497cpk7oxthr158.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%2F3yxgg497cpk7oxthr158.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Using Conditional Formatting&lt;/strong&gt;&lt;br&gt;
Conditional formatting highlights important information automatically.&lt;br&gt;
Example:&lt;br&gt;
Highlight high total values&lt;br&gt;
Steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select Total column&lt;/li&gt;
&lt;li&gt;Go to Home → Conditional Formatting
&lt;/li&gt;
&lt;li&gt;Choose Color Scales
This example shows the top 5 totals in yellow.&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%2F1hr6vsyd4sqp69qmw6c5.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%2F1hr6vsyd4sqp69qmw6c5.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Why Excel Is Useful for Data Analytics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Excel is useful for beginners because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy to learn&lt;/li&gt;
&lt;li&gt;No programming required&lt;/li&gt;
&lt;li&gt;Supports calculations, charts, and summaries&lt;/li&gt;
&lt;li&gt;Widely used in businesses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Excel is often the first step before moving to advanced tools like SQL, Python, or Power BI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Microsoft Excel is an essential tool for basic data analytics. By learning how to enter data, use formulas, apply functions, sort and filter information, and create charts, beginners can quickly start analyzing data and making informed decisions.&lt;br&gt;
For anyone new to data analytics, Excel is an excellent starting point.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>github</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Git for Beginners</title>
      <dc:creator>Dennis Ogaka</dc:creator>
      <pubDate>Sat, 17 Jan 2026 19:36:47 +0000</pubDate>
      <link>https://dev.to/dennis_ogaka_2d188ab5bef7/git-for-beginners-3l5n</link>
      <guid>https://dev.to/dennis_ogaka_2d188ab5bef7/git-for-beginners-3l5n</guid>
      <description>&lt;p&gt;If you are learning programming or working with code, you will hear the word Git everywhere. Git can feel confusing at first, but once you understand the basics, it becomes one of the most powerful tools in your developer toolkit.&lt;/p&gt;

&lt;p&gt;This article explains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What Git and version control are&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How Git tracks changes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to push and pull code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A simple Git workflow you can follow confidently&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't need any prior experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. What Is Version Control?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Version control&lt;/strong&gt; is a system that helps you track changes made to files over time.&lt;/p&gt;

&lt;p&gt;Think of it like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You wrote some code today&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tomorrow you change it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next week, something breaks, and you want the old version back&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Version control solves this problem by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Keeping a history of every change&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allowing you to go back to previous versions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Making it easy for multiple people to work on the same project&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. What Is Git?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git&lt;/strong&gt; is a &lt;strong&gt;version control system&lt;/strong&gt; used to track code changes.&lt;/p&gt;

&lt;p&gt;Key things Git does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Tracks file changes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Records who made a change and when&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allows collaboration without overwriting each other’s work&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Works locally on your computer (even without internet)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Git is different from GitHub:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git&lt;/strong&gt; → the tool&lt;/p&gt;

&lt;p&gt;GitHub / GitLab / Bitbucket → online platforms that store Git repositories&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. What Is a Repository?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;repository (repo)&lt;/strong&gt; is a project folder that Git tracks.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Your project files (code, images, docs)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A hidden .git folder that stores version history&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are two types:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Local repository → on your computer&lt;/li&gt;
&lt;li&gt;Remote repository → online (for example, on GitHub)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;4. How Git Tracks Changes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Git tracks changes in three main areas:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Working Directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where you edit files normally. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index.html
style.css
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this stage, Git sees changes but hasn’t recorded them yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Staging Area&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The staging area is where you prepare changes before saving them permanently.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add filename
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or add everything:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Think of this as saying:&lt;/p&gt;

&lt;p&gt;"&lt;em&gt;These are the changes I want Git to remember.&lt;/em&gt;"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Commit History&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;commit&lt;/strong&gt; is a snapshot of your project at a specific time.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "Describe what changed"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A commit includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The changes&lt;/li&gt;
&lt;li&gt;Your message&lt;/li&gt;
&lt;li&gt;Date and author&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Git Change Flow (Very Important)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Edit files Stage changes Commit

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. Installing Git&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Check if Git is installed:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;If not installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows: Download from git-scm.com&lt;/li&gt;
&lt;li&gt;macOS: Install via Homebrew or Xcode tools&lt;/li&gt;
&lt;li&gt;Linux: Use your package manager&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Creating Your First Git Repository&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Navigate to your project folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Initialize Git:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Now your folder is a Git repository.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Checking File Status&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use this command often:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;It tells you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which files are modified&lt;/li&gt;
&lt;li&gt;Which files are staged&lt;/li&gt;
&lt;li&gt;What is ready to commit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;8. Making Your First Commit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Step 1: Add files to staging&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Step 2: Commit changes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "Initial project setup"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You have now saved your first version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Understanding Push and Pull&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What Is Push?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Push&lt;/strong&gt; sends your local commits to a remote repository (like GitHub).&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Meaning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Push → send changes&lt;/li&gt;
&lt;li&gt;origin → remote repository&lt;/li&gt;
&lt;li&gt;main → branch name&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You use push when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want to upload your work&lt;/li&gt;
&lt;li&gt;You want others to see your changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What Is Pull?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pull&lt;/strong&gt; downloads the latest changes from the remote repository to your local machine.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git pull origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You use pull when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Someone else updated the code&lt;/li&gt;
&lt;li&gt;You want the latest version before working&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Important Rule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Always pull before you start working to avoid conflicts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. Understanding Branches (Beginner Level)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;branch&lt;/strong&gt; is a separate line of development.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Main (or master) → stable code&lt;/li&gt;
&lt;li&gt;Feature branches → new features or experiments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Create a new branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git branch feature-login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Switch to it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout feature-login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or both in one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout -b feature-login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Branches let you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Experiment safely&lt;/li&gt;
&lt;li&gt;Avoid breaking main code&lt;/li&gt;
&lt;li&gt;Work in parallel with others&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;11. A Simple Daily Git Workflow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is a beginner-friendly workflow you can follow every day:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pull latest changes
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git pull origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Make code changes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check status&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Stage changes
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Commit changes
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "Add login validation"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Push to remote
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;12. Viewing Commit History&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;See past commits:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;This helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand project history&lt;/li&gt;
&lt;li&gt;Identify when bugs were introduced&lt;/li&gt;
&lt;li&gt;Revert changes if needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;13. Common Beginner Mistakes&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Forgetting to commit changes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Writing unclear commit messages&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Not pulling before pushing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Editing directly on the main branch&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Panicking when seeing merge conflicts (they are normal)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;14. Why Git Is Essential&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Git is used by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solo developers&lt;/li&gt;
&lt;li&gt;Large companies&lt;/li&gt;
&lt;li&gt;Open-source projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Work confidently&lt;/li&gt;
&lt;li&gt;Recover from mistakes&lt;/li&gt;
&lt;li&gt;Collaborate professionally&lt;/li&gt;
&lt;li&gt;Build real-world projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;15. Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Git may feel overwhelming at first, but you only need a few commands to be productive:&lt;/p&gt;

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

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

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

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

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

&lt;p&gt;Master these, and you already understand the core of Git and version control.&lt;/p&gt;

&lt;p&gt;The best way to learn Git is to use it daily. Make mistakes, explore, and keep practicing.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>github</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
