<?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: Rachel Muriuki</title>
    <description>The latest articles on DEV Community by Rachel Muriuki (@rachel_muriuki_c5062dd89a).</description>
    <link>https://dev.to/rachel_muriuki_c5062dd89a</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%2F3717489%2Fa90fccba-e7ec-4132-bc91-92f7a6223ef7.jpg</url>
      <title>DEV Community: Rachel Muriuki</title>
      <link>https://dev.to/rachel_muriuki_c5062dd89a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rachel_muriuki_c5062dd89a"/>
    <language>en</language>
    <item>
      <title>Mastering Joins and Window Functions in SQL</title>
      <dc:creator>Rachel Muriuki</dc:creator>
      <pubDate>Tue, 03 Mar 2026 18:54:45 +0000</pubDate>
      <link>https://dev.to/rachel_muriuki_c5062dd89a/mastering-joins-and-window-functions-in-sql-e5</link>
      <guid>https://dev.to/rachel_muriuki_c5062dd89a/mastering-joins-and-window-functions-in-sql-e5</guid>
      <description>&lt;h2&gt;
  
  
  Joins in SQL
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Joins&lt;/strong&gt; allow one to combine rows from two or more tables based a related column. This is important when data is stored across multiple tables. There are several types of joins:&lt;/p&gt;

&lt;h4&gt;
  
  
  a.INNER JOIN
&lt;/h4&gt;

&lt;p&gt;-Returns only the matching rows from both tables.&lt;br&gt;
&lt;em&gt;Syntax&lt;/em&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 columns
FROM table1
INNER JOIN table2
ON table1.common_column = table2.common_column;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Example&lt;/em&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_id, c.first_name, o.order_id,o.quantity
FROM customers AS C
INNER JOIN orders AS O
ON c.customer_id = o.customer_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This displays only customers who have placed an order.&lt;/p&gt;

&lt;h4&gt;
  
  
  b.LEFT JOIN (LEFT OUTER JOIN)
&lt;/h4&gt;

&lt;p&gt;-Returns all rows from the left table and only matching rows from the right table.&lt;br&gt;
-If there's no match, &lt;em&gt;NULL&lt;/em&gt; is returned on the right table columns.&lt;br&gt;
&lt;em&gt;Syntax&lt;/em&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 columns
FROM table1
LEFT JOIN table2
ON table1.common_column = table2.common_column;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Example&lt;/em&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_id, c.first_name, o.order_id, o.quantity
FROM customers AS C
LEFT JOIN orders AS O
ON c.customer_id = o.customer_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This displays all customers even those who didn't place an order.&lt;/p&gt;

&lt;h4&gt;
  
  
  c.RIGHT JOIN (RIGHT OUTER JOIN)
&lt;/h4&gt;

&lt;p&gt;-Returns all rows from the right table and only matching rows from the left table.&lt;br&gt;
-If there'so match, &lt;em&gt;NULL&lt;/em&gt; appears on the left table&lt;br&gt;
&lt;em&gt;Syntax&lt;/em&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 columns
FROM table1
RIGHT JOIN table2
ON table1.common_column = table2.common_column;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Example&lt;/em&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_id, c.first_name,o.order_id,o.quantity
FROM customers AS c
RIGHT JOIN orders AS O
ON c.customer_id = o.customer_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This displays all orders, even if there's no matching customer&lt;/p&gt;

&lt;h4&gt;
  
  
  d.FULL OUTER JOIN
&lt;/h4&gt;

&lt;p&gt;-Returns all rows from both tables, matching where possible and filling &lt;em&gt;NULL&lt;/em&gt; when there's no match.&lt;br&gt;
&lt;em&gt;Syntax&lt;/em&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 columns
FROM table1
FULL JOIN table2
ON table1.common_column = table2.common_column;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Example&lt;/em&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_id, c.first_name, o.order_id, o.quantity
FROM customers AS C
FULL OUTER JOIN orders AS O
ON c.customer_id = o.customer_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This displays all customers and orders, even unmatched ones.&lt;/p&gt;

&lt;h4&gt;
  
  
  e.CROSS JOIN
&lt;/h4&gt;

&lt;p&gt;-Returns all possible combinations of both tables, where every row from one table is paired with every row from the other table.&lt;br&gt;
&lt;em&gt;Syntax&lt;/em&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 columns
FROM table1
CROSS JOIN table2;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Example&lt;/em&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.first_name, o.order_id
FROM customers AS C
CROSS JOIN orders AS O;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  f.SELF JOIN
&lt;/h4&gt;

&lt;p&gt;-Joins the same table to itself, to compare rows within the same table.&lt;br&gt;
&lt;em&gt;Syntax&lt;/em&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 a.column, b.column2
FROM table_name a
JOIN table_name b
ON a.common_column = b.related_column
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Example&lt;/em&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 
    c1.customer_name AS customer, 
    c2.customer_name AS referred_by
FROM customers c1
JOIN customers c2
ON c1.referred_by = c2.customer_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;c1 - represents the customer who was referred&lt;/em&gt;&lt;br&gt;
&lt;em&gt;c2 - represents the customer who did the referring&lt;/em&gt;&lt;br&gt;
This finds the rows where the &lt;em&gt;referred_by&lt;/em&gt; column of one customer (c1) matches the &lt;em&gt;customer_id&lt;/em&gt; of another (c2)&lt;/p&gt;
&lt;h2&gt;
  
  
  Window Functions in SQL
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Window Functions&lt;/strong&gt; perform calculations across a set of rows that are related to the current row.&lt;br&gt;
They are three types of window functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aggregate window functions&lt;/li&gt;
&lt;li&gt;Ranking window functions&lt;/li&gt;
&lt;li&gt;Value/Analytical window functions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Syntax&lt;/em&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 columns
     windowfunction_name(expression)
     OVER (
          [PARTITION BY column_name]
          [ORDER BY column_name]
FROM table_name;
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Partition By:&lt;/em&gt;-Divides the data into groups&lt;br&gt;
&lt;em&gt;Order By:&lt;/em&gt;-Specifies the order of rows within each group&lt;/p&gt;
&lt;h4&gt;
  
  
  1.Aggregate Window Functions
&lt;/h4&gt;

&lt;p&gt;-They compute totals, average, counts across rows.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MIN()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Shows the smallest value within a window&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT customer_id, order_id, total_amount,
     MIN(total_amount) 
     OVER(
        PARTITION BY customer_id) AS smallest_order,
FROM orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;MAX()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Shows the largest value within a window&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT customer_id, order_id, total_amount,
     MAX(total_amount) 
     OVER(
        PARTITION BY customer_id) AS biggest_order,
FROM orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;COUNT()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Counts rows but keeps all rows visible&lt;br&gt;
-Used for showing how many records are in a group without &lt;em&gt;GROUP BY&lt;/em&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 customer_id,
    COUNT(order_id) 
    OVER(
       PARTITION BY customer_id) AS total_orders
FROM orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This shows how many orders each customer has made&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AVG()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Gives the average value for a window of rows&lt;br&gt;
-Used to find average spend, average score, etc.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT customer_id, order_id, total_amount,
    AVG(total_amount) 
    OVER(
       PARTITION BY customer_id) AS avg_spending
FROM orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This shows the customer's average order value&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SUM()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Adds up values without grouping the rows&lt;br&gt;
-Used for running totals or cumulative sums&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT customer_id, order_id,
    SUM(total_amount) 
    OVER (
       PARTITION BY customer_id 
       ORDER BY order_date) AS running_total
FROM orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This calculates running totals per customer&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2.Ranking Window Functions
&lt;/h4&gt;

&lt;p&gt;-They assign ranks, row numbers or categories to each row within its partition. &lt;br&gt;
-Examples include &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ROW_NUMBER()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Assigns a unique number to each row&lt;br&gt;
-Used to find the first, second, third item in a list&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT customer_id, order_date,
     ROW_NUMBER() 
     OVER (
        PARTITION BY customer_id 
        ORDER BY order_date) AS order_number
FROM orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;In this example, each customer's first order gets 1, second gets 2...&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RANK()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Gives a rank number based on order, but skips numbers when there are ties&lt;br&gt;
-Used for ranking by price, score, sales&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT customer_id, total_amount,
    RANK() 
    OVER(
       PARTITION BY customer_id 
       ORDER BY total_amount DESC) AS order_rank
FROM orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;In this example, if two orders have the same amount, they both get the same rank and the next rank is skipped eg.1,2,2,4&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DENSE_RANK()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Similar to &lt;em&gt;RANK()&lt;/em&gt; but does not skip numbers&lt;br&gt;
-Used for ranking when you want continuous ranks eg.(1,2,2,3)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT customer_id, total_amount,
    DENSE_RANK() 
    OVER (
       PARTITION BY customer_id 
       ORDER BY total_amount DESC) AS dense_rank
FROM orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;NTILE()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Divides rows into n equal groups&lt;br&gt;
-Used for dividing data into quartiles or percentiles&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_id, total_amount,
    NTILE(4) 
    OVER (
       ORDER BY total_amount DESC) AS quartile
FROM orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;*In this example, orders are divided into 4 groups(top 25%, next 25%...)&lt;/p&gt;

&lt;h4&gt;
  
  
  3.Value/Analytical Window Functions
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;LAG()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Looks at the previous row's value&lt;br&gt;
-Used for comparing current and previous 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 customer_id, order_date, total_amount,
    LAG(total_amount) 
    OVER(
       PARTITION BY customer_id 
       ORDER BY order_date) AS prev_order
FROM orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This example shows what the previous order's amount was for each customer&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;LEAD()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-Looks at the next row's value&lt;br&gt;
-Used for comparing to the next record&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT customer_id, order_date, total_amount,
      LEAD(total_amount) 
      OVER(
         PARTITION BY customer_id 
         ORDER BY order_date) AS next_order
FROM orders;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This example shows what the next order's amount will be&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;Joins help us bring related data together from different tables while window functions allow us to perform advanced calculations like rankings and totals.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Transforming Messy Data into Reliable Insights Using Power BI</title>
      <dc:creator>Rachel Muriuki</dc:creator>
      <pubDate>Thu, 12 Feb 2026 09:17:17 +0000</pubDate>
      <link>https://dev.to/rachel_muriuki_c5062dd89a/transforming-messy-data-into-reliable-insights-using-power-bi-16a6</link>
      <guid>https://dev.to/rachel_muriuki_c5062dd89a/transforming-messy-data-into-reliable-insights-using-power-bi-16a6</guid>
      <description>&lt;h2&gt;
  
  
  How Analysts translate messy data, DAX and dashboards into action using Power BI
&lt;/h2&gt;

&lt;p&gt;In every organization, data is being generated from sales transactions, website clicks, customer feedback. However this data is often inconsistent, incomplete and scattered across multiple systems. An analyst can turn this messy data into insights that drive business actions using Power BI.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.Cleaning and Organizing Messy Data
&lt;/h3&gt;

&lt;p&gt;Since data often arrives being messy, analysts perform a process known as ETL in Power Query. It consists of;&lt;br&gt;
-Extracting data from multiple sources (Excel files, SQL databases)&lt;br&gt;
-Transforming it through cleaning, structuring data, adding logic&lt;br&gt;
-Loading it to Power BI for visualizing&lt;/p&gt;

&lt;h3&gt;
  
  
  2.Turning numbers into logic
&lt;/h3&gt;

&lt;p&gt;Analysts use DAX(Data Analysis Expressions) to create calculations that turn raw numbers into meaningful insights&lt;br&gt;
Example;&lt;/p&gt;

&lt;h4&gt;
  
  
  Customer Retention Rate
&lt;/h4&gt;

&lt;p&gt;Using filters and time intelligence functions, analysts can calculate how many customers make repeat purchases&lt;/p&gt;

&lt;h3&gt;
  
  
  3.Designing dashboards that drive decisions
&lt;/h3&gt;

&lt;p&gt;Dashboards are visual tools that show data in charts and graphs&lt;br&gt;
A good dashboard:&lt;br&gt;
-Highlights KPIs(Key Performance Indicators) which are the most important numbers&lt;br&gt;
-Allows one to click on charts to see details by region, product or time&lt;br&gt;
-Tells a story that guides the user to derive insights and make actions&lt;/p&gt;

&lt;h3&gt;
  
  
  4.From insight to actions
&lt;/h3&gt;

&lt;p&gt;Creating visuals helps businesses take action. &lt;br&gt;
How skills in Power BI translate into real impact:&lt;br&gt;
-Data Cleaning-Improves accuracy of reports and decisions&lt;br&gt;
-DAX Calculations-Quantifies performance, identifies trends and reveals root causes &lt;br&gt;
-Interactive Dashboards-Helps leaders see trends and act fast&lt;br&gt;
-Data modelling-Combines data from different departments into one view&lt;/p&gt;

&lt;h3&gt;
  
  
  5.Turning data into decisions
&lt;/h3&gt;

&lt;p&gt;Analysts take messy data, organize it, calculate key metrics and build dashboards that show managers what's working and what's not.&lt;/p&gt;

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

&lt;p&gt;Power BI is more than a reporting tool. It transforms data into insights that help organization measure results, understand key drivers and take informed actions.&lt;/p&gt;

</description>
      <category>powerbi</category>
      <category>dataanalysis</category>
      <category>datamodeling</category>
      <category>powerquery</category>
    </item>
    <item>
      <title>SCHEMAS AND DATA MODELLING IN POWER BI</title>
      <dc:creator>Rachel Muriuki</dc:creator>
      <pubDate>Mon, 02 Feb 2026 11:42:15 +0000</pubDate>
      <link>https://dev.to/rachel_muriuki_c5062dd89a/schemas-and-data-modelling-in-power-bi-1kjc</link>
      <guid>https://dev.to/rachel_muriuki_c5062dd89a/schemas-and-data-modelling-in-power-bi-1kjc</guid>
      <description>&lt;p&gt;PowerBI is a powerful tool for turning raw data into insightful reports.&lt;br&gt;
In power BI tables show what data you have, relationships show how it connects and schema shows why it all fits together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Model
&lt;/h2&gt;

&lt;p&gt;A data model defines how your tables connect and interact in Power BI. It tells Power BI:&lt;br&gt;
-Which tables hold raw facts eg. Sales&lt;br&gt;
-Which tables describe those facts eg. Products&lt;/p&gt;

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

&lt;p&gt;They store measurable, quantitative data such as Sales transactions.&lt;br&gt;
They contain numeric columns like Revenue, Quantity and contain foreign keys such as ProductID, CustomerID.&lt;/p&gt;

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

&lt;p&gt;They contain descriptive textual information that adds context to facts&lt;br&gt;
Examples of such columns:&lt;br&gt;
-Customers&lt;br&gt;
-ProductName&lt;br&gt;
-Category&lt;/p&gt;

&lt;h2&gt;
  
  
  Relationships
&lt;/h2&gt;

&lt;p&gt;PowerBI connects fact and dimension tables through relationships using shared keys like ProductID&lt;/p&gt;

&lt;h3&gt;
  
  
  Types oF relationships:
&lt;/h3&gt;

&lt;h3&gt;
  
  
  i)One-to-Many
&lt;/h3&gt;

&lt;p&gt;One record in a dimension connects to many in a fact table&lt;br&gt;
Example: One Customer can make many orders&lt;/p&gt;

&lt;h3&gt;
  
  
  ii)Many-to-One
&lt;/h3&gt;

&lt;p&gt;Multiple records in one table are connected to a single record in another table&lt;br&gt;
Example:Multiple cities belong to one state &lt;/p&gt;

&lt;h3&gt;
  
  
  iii)Many-to-Many
&lt;/h3&gt;

&lt;p&gt;Used when both tables can have repeating values&lt;br&gt;
Example:  A student can take many courses and each course has many students&lt;/p&gt;

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

&lt;p&gt;Schema is how your tables are arranged and linked together&lt;/p&gt;

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

&lt;p&gt;It's simple, looks like a star and yet powerful&lt;br&gt;
One central fact table (eg. Sales) connects directly to dimension tables (eg.Customers, Products, Regions)&lt;br&gt;
It is easy to understand, performs fast, ideal for slicing and filtering&lt;/p&gt;

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

&lt;p&gt;It adds extra detail tables branching off the dimensions&lt;br&gt;
Used to avoid repeating data and save space&lt;br&gt;
The only limitations are that it involves more tables and relationships, resulting to slow performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Good Modelling Matters
&lt;/h2&gt;

&lt;p&gt;It ensures accurate visuals and measures that show correct results&lt;br&gt;
It simplifies DAX queries and reduces processing time&lt;br&gt;
It's easy to add new data sources later&lt;br&gt;
It offers clarity to anyone reviewing your model&lt;br&gt;
It's easy to maintain incase of issues&lt;/p&gt;

&lt;p&gt;A well designed schema ensures reports load quickly, calculations stay accurate and business users can explore data confidently.&lt;/p&gt;

</description>
      <category>powerbi</category>
      <category>datamodelling</category>
      <category>dataanalysis</category>
      <category>dax</category>
    </item>
    <item>
      <title>SCHEMAS AND DATA MODELLING IN POWER BI</title>
      <dc:creator>Rachel Muriuki</dc:creator>
      <pubDate>Mon, 02 Feb 2026 11:42:15 +0000</pubDate>
      <link>https://dev.to/rachel_muriuki_c5062dd89a/schemas-and-data-modelling-in-power-bi-16bn</link>
      <guid>https://dev.to/rachel_muriuki_c5062dd89a/schemas-and-data-modelling-in-power-bi-16bn</guid>
      <description>&lt;p&gt;PowerBI is a powerful tool for turning raw data into insightful reports.&lt;br&gt;
In power BI tables show what data you have, relationships show how it connects and schema shows why it all fits together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Model
&lt;/h2&gt;

&lt;p&gt;A data model defines how your tables connect and interact in Power BI. It tells Power BI:&lt;br&gt;
-Which tables hold raw facts eg. Sales&lt;br&gt;
-Which tables describe those facts eg. Products&lt;/p&gt;

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

&lt;p&gt;They store measurable, quantitative data such as Sales transactions.&lt;br&gt;
They contain numeric columns like Revenue, Quantity and contain foreign keys such as ProductID, CustomerID.&lt;/p&gt;

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

&lt;p&gt;They contain descriptive textual information that adds context to facts&lt;br&gt;
Examples of such columns:&lt;br&gt;
-Customers&lt;br&gt;
-ProductName&lt;br&gt;
-Category&lt;/p&gt;

&lt;h2&gt;
  
  
  Relationships
&lt;/h2&gt;

&lt;p&gt;PowerBI connects fact and dimension tables through relationships using shared keys like ProductID&lt;/p&gt;

&lt;h3&gt;
  
  
  Types oF relationships:
&lt;/h3&gt;

&lt;h3&gt;
  
  
  i)One-to-Many
&lt;/h3&gt;

&lt;p&gt;One record in a dimension connects to many in a fact table&lt;br&gt;
Example: One Customer can make many orders&lt;/p&gt;

&lt;h3&gt;
  
  
  ii)Many-to-One
&lt;/h3&gt;

&lt;p&gt;Multiple records in one table are connected to a single record in another table&lt;br&gt;
Example:Multiple cities belong to one state &lt;/p&gt;

&lt;h3&gt;
  
  
  iii)Many-to-Many
&lt;/h3&gt;

&lt;p&gt;Used when both tables can have repeating values&lt;br&gt;
Example:  A student can take many courses and each course has many students&lt;/p&gt;

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

&lt;p&gt;Schema is how your tables are arranged and linked together&lt;/p&gt;

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

&lt;p&gt;It's simple, looks like a star and yet powerful&lt;br&gt;
One central fact table (eg. Sales) connects directly to dimension tables (eg.Customers, Products, Regions)&lt;br&gt;
It is easy to understand, performs fast, ideal for slicing and filtering&lt;/p&gt;

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

&lt;p&gt;It adds extra detail tables branching off the dimensions&lt;br&gt;
Used to avoid repeating data and save space&lt;br&gt;
The only limitations are that it involves more tables and relationships, resulting to slow performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Good Modelling Matters
&lt;/h2&gt;

&lt;p&gt;It ensures accurate visuals and measures that show correct results&lt;br&gt;
It simplifies DAX queries and reduces processing time&lt;br&gt;
It's easy to add new data sources later&lt;br&gt;
It offers clarity to anyone reviewing your model&lt;br&gt;
It's easy to maintain incase of issues&lt;/p&gt;

&lt;p&gt;A well designed schema ensures reports load quickly, calculations stay accurate and business users can explore data confidently.&lt;/p&gt;

</description>
      <category>powerbi</category>
      <category>datamodelling</category>
      <category>dataanalysis</category>
      <category>dax</category>
    </item>
    <item>
      <title>Intoduction to MS Excel for Data Analytics</title>
      <dc:creator>Rachel Muriuki</dc:creator>
      <pubDate>Sun, 25 Jan 2026 15:13:02 +0000</pubDate>
      <link>https://dev.to/rachel_muriuki_c5062dd89a/intoduction-to-ms-excel-for-data-analytics-4ie7</link>
      <guid>https://dev.to/rachel_muriuki_c5062dd89a/intoduction-to-ms-excel-for-data-analytics-4ie7</guid>
      <description>&lt;p&gt;Microsoft Éxcel is one of the most beginner friendly tools for cleaning, visualizing and analyzing data.&lt;br&gt;
In this article, we'll go through the basics of using Excel for data analytics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Importing and Viewing Data
&lt;/h2&gt;

&lt;p&gt;Loading your dataset into Excel can be done into two ways;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy and paste data directly into a worksheet&lt;/li&gt;
&lt;li&gt;Go to Data → Get Data → From Text/CSV → Select file to import data from → Load dataset&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%2Fp8atjnh3krdpifs5j6qw.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%2Fp8atjnh3krdpifs5j6qw.png" alt="Loading data" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Each column represents a variable (like "ID", "Name" or "Gender") and each row represents a record.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Cleaning Data
&lt;/h2&gt;

&lt;p&gt;Raw data is usually messy, containing missing values, duplicates, data type errors, extra spaces or wrong alignment. Excel has simple tool to handle that:&lt;/p&gt;

&lt;h3&gt;
  
  
  Remove Duplicates:
&lt;/h3&gt;

&lt;p&gt;Select your whole data(Ctrl+A) → Go to Data → Remove Duplicates&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%2F8jtxdt7mzuckx02l8a2n.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%2F8jtxdt7mzuckx02l8a2n.png" alt="Removing duplicates" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Types:
&lt;/h3&gt;

&lt;p&gt;Select column → Right Click → Format Cells&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%2F2c7aow5j3jn5f1ht7m7b.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%2F2c7aow5j3jn5f1ht7m7b.png" alt="Formatting data types" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
*Unique numbers such as ID, Phone-numbers, Postal addresses should be formatted as Texts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Alignment:
&lt;/h3&gt;

&lt;p&gt;Numbers and Dates should be right-aligned while Texts should be left-aligned&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3:Exploring with Sorting and Filtering
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Sorting:Arrange data in ascending/descending order.
&lt;/h4&gt;

&lt;p&gt;Select column → Go to Home → Sort &amp;amp; Filter → Sort A to Z or Sort Z to A&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%2Fr42xub9bwwb7s7erilmc.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%2Fr42xub9bwwb7s7erilmc.png" alt="Sorting" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Filtering:Allows one to display only the rows that meet a certain criteria.
&lt;/h4&gt;

&lt;p&gt;Select column → Go to Home → Sort &amp;amp; Filter → Turn on Filter, then select drop-down arrow to show only relevant records&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%2F2pef4c47mtuzyn4fwfoi.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%2F2pef4c47mtuzyn4fwfoi.png" alt="Filtering" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
To replace blanks;&lt;br&gt;
  Select column → Go to Data → Under Data Tools → Click Data Validation → Set Allow to List → In the source box, type the values you want to allow(separated by commas) → Click OK&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%2Fhxd7wm72c6iflycdx034.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%2Fhxd7wm72c6iflycdx034.png" alt="Data Validation" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
This prevents invalid data entry or flags errors during processing  &lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Using Basic Function Formulas
&lt;/h2&gt;

&lt;p&gt;The formulas let you summarize and analyze data efficiently&lt;br&gt;
Functions are grouped into;&lt;/p&gt;

&lt;h3&gt;
  
  
  i)Text Functions
&lt;/h3&gt;

&lt;p&gt;They're used to manipulate, extract or clean text in cells.&lt;br&gt;
=LEFT(text,num_chars)&lt;br&gt;
num_chars returns the first characters from a text string&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%2Fgjikej9hirm226g4q4i2.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%2Fgjikej9hirm226g4q4i2.png" alt="Text Function" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Other useful text functions: RIGHT(),MID(),LEN(),TRIM(),PROPER(),UPPER(),LOWER()&lt;/p&gt;

&lt;h3&gt;
  
  
  ii)Aggregate Functions
&lt;/h3&gt;

&lt;p&gt;They perform calculations on a range of numbers.&lt;br&gt;
=SUM(range) -Adds up all numbers in a range&lt;br&gt;
=AVERAGE(range) -Finds the mean value of numbers in a range&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%2Fe0e9e1bzx2kcqzyuk4nn.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%2Fe0e9e1bzx2kcqzyuk4nn.png" alt="Aggregate Function" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Other useful aggregate functions: MAX(),MIN(),COUNT()&lt;/p&gt;

&lt;h3&gt;
  
  
  iii)Date &amp;amp; Time Functions
&lt;/h3&gt;

&lt;p&gt;They allow you to calculate, format or extract information from dates and times&lt;br&gt;
=TODAY() -Returns today's date&lt;br&gt;
=DATEDIF(start_date,end_date,"unit") -Calculates the difference between two dates in days, months or years&lt;/p&gt;

&lt;p&gt;Other useful functions: NOW(),DAY(),MONTH(),YEAR()&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5:Summarizing &amp;amp; Visualizaing the Data
&lt;/h2&gt;

&lt;p&gt;Visual data such as charts help us visualize trends or comparisons&lt;br&gt;
i)Select your dataset&lt;br&gt;
ii)Go to Insert → PivotTable → From Table/Range → Click on a New Worksheet → OK&lt;br&gt;
iii)On the PivotTable Fields → Drag fields into Rows, Columns and values&lt;br&gt;
iv)Go to Insert → Recommended Charts&lt;br&gt;
v)Choose from column, line, pie or bar charts&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%2Flfuwxhnr57huhh2usj38.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%2Flfuwxhnr57huhh2usj38.png" alt="Types of PivortCharts" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl1og2qcbco16bcnspxu4.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%2Fl1og2qcbco16bcnspxu4.png" alt="PivotTable and Chart summarizing salary by gender" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>excel</category>
      <category>dataanalytics</category>
      <category>datascience</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Getting Started with Git and GitHub using SSH Keys</title>
      <dc:creator>Rachel Muriuki</dc:creator>
      <pubDate>Sun, 18 Jan 2026 08:31:17 +0000</pubDate>
      <link>https://dev.to/rachel_muriuki_c5062dd89a/getting-started-with-git-and-github-using-ssh-keys-1pi</link>
      <guid>https://dev.to/rachel_muriuki_c5062dd89a/getting-started-with-git-and-github-using-ssh-keys-1pi</guid>
      <description>&lt;p&gt;If you're just starting your developer journey, learning Git and Github is one of the best decisions you can make.&lt;br&gt;
In this article, i'll show you how to set up Git, configure it with your name &amp;amp; email and connect it securely to GitHub using SSH.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Git?
&lt;/h2&gt;

&lt;p&gt;Git is a version control tool that runs locally on your computer.&lt;br&gt;
It let's you;&lt;br&gt;
-Track file changes&lt;br&gt;
-Create 'checkpoints' called commits&lt;br&gt;
-Work on branches (separate copy) without affecting the main project&lt;/p&gt;
&lt;h2&gt;
  
  
  What is GitHub
&lt;/h2&gt;

&lt;p&gt;GitHub is a cloud platform where you can store your Git repositories online, share them with others and collaborate on projects.&lt;br&gt;
It let's you;&lt;br&gt;
-Upload your code(push)&lt;br&gt;
-Download updates(pull)&lt;br&gt;
-Work together with others in real time&lt;/p&gt;
&lt;h2&gt;
  
  
  1.Setting up Git
&lt;/h2&gt;

&lt;p&gt;How to install and configure Git.&lt;/p&gt;
&lt;h3&gt;
  
  
  For Windows
&lt;/h3&gt;

&lt;p&gt;Download Git (&lt;a href="https://git-scm.com/install/windows" rel="noopener noreferrer"&gt;Install for Windows&lt;/a&gt;)&lt;br&gt;
Run the installer and choose "Git default editor" as your terminal&lt;br&gt;
Once installed, open Git Bash and type:&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;You should see something like:&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 2.xx.x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  For macOS
&lt;/h3&gt;

&lt;p&gt;Open terminal and run:&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 Git isn't installed, macOS will prompt you to install it via Xcode tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  For Linux (Ubuntu/Debian)
&lt;/h3&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
sudo apt install git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2.Configure your Git identity
&lt;/h2&gt;

&lt;p&gt;Before you start using Git, tell it who you are by using your name and email which you used to create your GitHub account.&lt;br&gt;
Run these commands replacing with your details:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global user.name "Your Name"
git config --global user.email "Your Email" 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To confirm your details:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  3.Connecting Git to GitHub Using SSH Keys
&lt;/h2&gt;

&lt;p&gt;SSH(Secure Shell) Keys let you connect to GitHub without typing your password every time.&lt;br&gt;
How to set up:&lt;/p&gt;
&lt;h3&gt;
  
  
  (i).Generate a New SSH key
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh-keygen -t ed25519 -C "Your Email"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Press Enter to save it in the default path.&lt;/p&gt;
&lt;h3&gt;
  
  
  (ii).Generate SSH Agent
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;eval "$(ssh-agent -s)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  (iii).Add Key to the Agent
&lt;/h3&gt;


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

&lt;/div&gt;

&lt;h3&gt;
  
  
  (iv).Copy your Public Key
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat ~/.ssh.id_ed25519.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Copy the whole key that starts with&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  (v).Add the Key to GitHub
&lt;/h3&gt;

&lt;p&gt;1.Go to GitHub → Settings → SSH and GPG keys&lt;br&gt;
2.Click New SSH key&lt;br&gt;
3.Paste your copied key&lt;br&gt;
4.Save it&lt;/p&gt;
&lt;h3&gt;
  
  
  (vi).Test the Connection
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh -T git@github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If you see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hi yourusername! You've successfully authenticated.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You're all set.&lt;/p&gt;

&lt;h2&gt;
  
  
  4.Using Version Control with Git
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Initialize a Repository
&lt;/h3&gt;

&lt;p&gt;Go to your project folder and intialize 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;This creates a hidden &lt;strong&gt;.git&lt;/strong&gt;folder.&lt;/p&gt;

&lt;h3&gt;
  
  
  Track changes
&lt;/h3&gt;

&lt;p&gt;Check what's changed:&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;Add files to be tracked:&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;Commit (save) the 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 commit"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Push code to GitHub
&lt;/h3&gt;

&lt;p&gt;1.Create a new repository on GitHub&lt;br&gt;
2.Copy the repo's SSH url&lt;br&gt;
3.Connect it to your local repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add origin git@github.com:username/repo.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4.Push your code:&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 -u origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now your project is on GitHub.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pull updates from GitHub
&lt;/h3&gt;

&lt;p&gt;When you make changes on GitHub, pull them locally:&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;h3&gt;
  
  
  See your commit history
&lt;/h3&gt;

&lt;p&gt;To view your project's history:&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;To see a short summary:&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 --oneline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>git</category>
      <category>github</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
