<?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>Forem: Rachel Muriuki</title>
    <description>The latest articles on Forem by Rachel Muriuki (@rachel_muriuki_c5062dd89a).</description>
    <link>https://forem.com/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>Forem: Rachel Muriuki</title>
      <link>https://forem.com/rachel_muriuki_c5062dd89a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rachel_muriuki_c5062dd89a"/>
    <language>en</language>
    <item>
      <title>ETL vs ELT: Which One Should You Use and Why?</title>
      <dc:creator>Rachel Muriuki</dc:creator>
      <pubDate>Sun, 12 Apr 2026 14:57:50 +0000</pubDate>
      <link>https://forem.com/rachel_muriuki_c5062dd89a/etl-vs-elt-which-one-should-you-use-and-why-2npa</link>
      <guid>https://forem.com/rachel_muriuki_c5062dd89a/etl-vs-elt-which-one-should-you-use-and-why-2npa</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In today’s world, organizations generate massive amounts of data every second from website clicks, banking transactions and social media interactions. However, raw data on its own is usually messy, inconsistent and difficult to use for decision-making. This is where data integration processes come in.&lt;br&gt;
Data integration processes such as ELT and ETL combine data from different sources to be used for analysis and decision making.&lt;/p&gt;

&lt;h2&gt;
  
  
  1.What is ETL?
&lt;/h2&gt;

&lt;p&gt;ETL &lt;strong&gt;&lt;em&gt;(Extract, Transform, Load)&lt;/em&gt;&lt;/strong&gt; is the traditional approach used to integrate data where data is extracted, cleaned and transformed before storing only the final result&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%2F5h4qcugytxk56ngjufjs.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%2F5h4qcugytxk56ngjufjs.png" alt="ETL" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Extract
&lt;/h4&gt;

&lt;p&gt;Data, often messy and inconsistent, is pulled from multiple sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Databases - Structured Systems like MySQL, PostgreSQL, Oracle that store and organize business data such as customers, orders, transactions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;APIs - Used to pull data from external services such as payment systems, social media platforms, weather services&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Files - Static data stored in files such as CSV, Excel, JSON or XML files&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Logs - Automatic generated systems records such as website page visits, login attempts&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Transform
&lt;/h4&gt;

&lt;p&gt;Data is cleaned, filtered and aggregated before it is stored:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removing duplicates&lt;/li&gt;
&lt;li&gt;Handling missing values&lt;/li&gt;
&lt;li&gt;Standardizing formats (eg. currency, dates)&lt;/li&gt;
&lt;li&gt;Filtering unnecessary data&lt;/li&gt;
&lt;li&gt;Creating new calculated fields (eg. profit = revenue - cost)&lt;/li&gt;
&lt;li&gt;Joining data from multiple sources&lt;/li&gt;
&lt;li&gt;Aggregating data (eg. total sales per day)&lt;/li&gt;
&lt;li&gt;Validating data - to ensure it's correct &amp;amp; consistent&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Load
&lt;/h4&gt;

&lt;p&gt;The transfomed (cleaned and structured) data is moved into a storage system such as a data warehouse(eg. Snowflake, BigQuery, Redshift) , datalake or data marts, making it available for analysis, reporting and decision making.&lt;/p&gt;

&lt;h4&gt;
  
  
  Types of loading
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Full load&lt;/em&gt;&lt;/strong&gt;-It's mostly used during the initial setup of a system whereby the entire dataset is loaded into the system from scratch&lt;br&gt;
Example: Moving all historical sales data into a new warehouse for the first time&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Incremental load&lt;/em&gt;&lt;/strong&gt;-Only new or changed data is loaded after the initial load&lt;br&gt;
Example: Only today's new bank transactions are added to the warehouse instead of reloading all records&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Batch loading&lt;/em&gt;&lt;/strong&gt;-Data is loaded at scheduled intervals(hourly, daily, weekly)&lt;br&gt;
Example: An e-commerce company updates sales dashboards every night&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Real-time load&lt;/em&gt;&lt;/strong&gt;-Data is loaded continuously as it is generated&lt;br&gt;
Example: Fraud detection systems updating transaction data instantly&lt;/p&gt;

&lt;h3&gt;
  
  
  Example of ETL
&lt;/h3&gt;

&lt;p&gt;A bank collects customer details, transactions and card payments then verifies accuracy, cleans errors, ensures compliance and finally loads only trusted data into its system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why ETL was popular
&lt;/h3&gt;

&lt;p&gt;Older systems had limited storage&lt;br&gt;
Data warehouses were expensive &lt;br&gt;
Data had to be cleaned before storing&lt;/p&gt;

&lt;h3&gt;
  
  
  Advantages of ETL
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;High data quality&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Only cleaned, validated data is stored, reducing errors and inconsistencies in analytics&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Strong data governance&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Rules implemented during transformation ensure compliance, security and controlled data flow into storage systems&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Optimized storage usage&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Only processed and necessary data is loaded, reducing storage of raw or irrelevant information&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Faster analytics performance&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Since data is already transformed and structured before loading, queries run faster&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Suitable for regulatory environments&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Industries like finance and healthcare benefit because ETL supports strict validation and compliance before storage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disadvantages of ETL
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Slower&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Data must be fully transformed before loading, causing delays in accessing information&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Limited flexibility for analysis&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Since raw data is not stored, redoing analysis with new logic often requires re-running the entire ETL process&lt;br&gt;
&lt;strong&gt;&lt;em&gt;High pipeline complexity&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
ETL workflows require carefully designed transformation logic, making system design more complex&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Difficult to scale with Big Data&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
As data volume grows, transformation becomes an obstacle before loading, slowing down the entire pipeline.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Loss of raw data&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Because only transformed data is stored, original raw data may be unavailable for future analysis&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Expensive&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Can be costly to maintain over time &lt;/p&gt;

&lt;h2&gt;
  
  
  2.What is ELT?
&lt;/h2&gt;

&lt;p&gt;ELT &lt;strong&gt;&lt;em&gt;(Extract, Load, Transform)&lt;/em&gt;&lt;/strong&gt; is a modern approach mostly used in cloud data platforms where raw data is first extracted, loaded into a storage system, then transformed later when needed.&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%2Fetw6jlqn0q3bqljjzh2u.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%2Fetw6jlqn0q3bqljjzh2u.png" alt="ELT" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Extract
&lt;/h4&gt;

&lt;p&gt;Pulls raw data from different sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APIs eg. payment systems, weather services, social media platforms&lt;/li&gt;
&lt;li&gt;Databases eg. users, orders, inventory systems&lt;/li&gt;
&lt;li&gt;Logs - eg. session activity, uptime, system performance data&lt;/li&gt;
&lt;li&gt;Files eg. CSV, Excel, JSON&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Load
&lt;/h4&gt;

&lt;p&gt;Stores raw data that contains duplicates, missing values, inconsistencies directly into a cloud data warehouse (eg. Snowflake, BigQuery, Redshift) or data lakes (eg. Amazon S3, Google cloud storage, Azure data lake)&lt;/p&gt;

&lt;h4&gt;
  
  
  Transform
&lt;/h4&gt;

&lt;p&gt;Data is cleaned and processed inside the data warehouse using tools such as SQL, dbt(data build tool), python based workflows, built-in warehouse functions.&lt;br&gt;
Common transformations include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filtering unnecessary data&lt;/li&gt;
&lt;li&gt;Joining multiple datasets&lt;/li&gt;
&lt;li&gt;Aggregating metrics&lt;/li&gt;
&lt;li&gt;Building dashboards&lt;/li&gt;
&lt;li&gt;Cleaning missing or invalid values&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example of ELT
&lt;/h3&gt;

&lt;p&gt;A streaming platform like Netflix collect watch history, clicks, searches, device data then loads everything into a warehouse. Analysts later decide what to clean and analyze. This helps them run experiments and build recommendation systems&lt;/p&gt;

&lt;h3&gt;
  
  
  Why ELT became popular
&lt;/h3&gt;

&lt;p&gt;ELT grew with cloud platforms because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Storage became extremely cheap&lt;/li&gt;
&lt;li&gt;Warehouses became powerful enough to process raw data quickly&lt;/li&gt;
&lt;li&gt;Tools like dbt made transformation easier after loading&lt;/li&gt;
&lt;li&gt;Cloud platforms removed hardware limitations&lt;/li&gt;
&lt;li&gt;Businesses shifted toward real time analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advantages of ELT
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Faster data ingestion&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
ELT loads data immediately without transformation delays&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Highly flexible&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Raw data is preserved allowing analysts to interpret new transformations and insights at any time&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Easily scalable&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Cloud warehouses can handle massive volumes of raw data, making ELT ideal for large scale modern systems&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Preserves raw data&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Since data is stored in its original form, it can be reprocessed later with new business requirements&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Ideal for Machine Learning &amp;amp; AI&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Raw datasets help train models and build predictive systems&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Works well with cloud architecture&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
ELT is optimized for cloud platforms that support distributed computing and scalable storage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Disadvantages of ELT
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Requires powerful storage systems&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
ELT depends on powerful cloud warehouses capable of handling large volumes of unprocessed data.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Risk of messy data&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Since raw data is stored directly, poor governance can lead to inconsistent datasets&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Higher responsibility for data governance&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Data quality is not enforced beforehand, so organizations must manage standards after loading&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Security challenges&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Sensitive raw data may be stored before filtering, requiring strict access control&lt;br&gt;
&lt;strong&gt;Increased costs&lt;/strong&gt;*&lt;br&gt;
Storing large volumes of raw data and repeatedly transforming it can increase cloud compute costs&lt;/p&gt;

&lt;h3&gt;
  
  
  When to use ETL
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;1.When data must be clean before storage&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Used when data needs to be validated, standardized and verified before it is stored, ensuring only accurate and trusted data enters the system.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;2.In Highly Regulated Industries&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
It's ideal for industries like finance, healthcare and government where strict compliance rules require data to be cleaned and audited before storage&lt;br&gt;
&lt;strong&gt;&lt;em&gt;3.When data accuracy is critical&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
If business decisions rely on highly accurate and consistent data, ETL ensures errors are removed early in the pipeline&lt;br&gt;
&lt;strong&gt;&lt;em&gt;4.When using traditional data warehouses&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Older data warehouses often require structured and processed data before loading, making ETL the preferred approach&lt;br&gt;
&lt;strong&gt;&lt;em&gt;5.When storage is limited or expensive&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
It reduces storage usage by filtering out unnecessary or redundant data before loading, which is useful in systems with storage limitations&lt;br&gt;
&lt;strong&gt;&lt;em&gt;6.For Batch Processing Workflows&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
It works well when data is processed at scheduled intervals (e.g., daily or weekly) rather than needing real-time updates&lt;br&gt;
&lt;strong&gt;&lt;em&gt;7.When you need strong data governance&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
ETL enforces strict control over data flow, making it easier to manage data quality, security and consistency across the organization&lt;/p&gt;

&lt;h3&gt;
  
  
  When to use ELT
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;1.Big data &amp;amp; analytics companies&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Organizations handling massive datasets benefit from ELT scalability&lt;br&gt;
&lt;strong&gt;&lt;em&gt;2.Data science &amp;amp; machine learning teams&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
ELT provides raw, unmodified data needed for training models and experimentation&lt;br&gt;
&lt;strong&gt;&lt;em&gt;3.Cloud-Native Systems&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Platforms like Snowflake, BigQuery and Redshift are designed specifically for ELT workflows&lt;br&gt;
&lt;strong&gt;&lt;em&gt;4.Real-Time analytics&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Companies needing fast data availability for dashboards and monitoring systems&lt;br&gt;
&lt;strong&gt;&lt;em&gt;5.Businesses with evolving requirements&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
When data questions change frequently and flexibility is important&lt;/p&gt;

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

&lt;p&gt;ETL and ELT each serve different purposes, and the right choice depends on your needs. ETL is best when data quality, structure and control are required before storage while ELT is ideal for flexibility, scalability and modern cloud-based analytics.&lt;br&gt;
As data continues to grow, many organizations combine both approaches to balance control with flexibility.&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>etl</category>
      <category>elt</category>
      <category>bigdata</category>
    </item>
    <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://forem.com/rachel_muriuki_c5062dd89a/mastering-joins-and-window-functions-in-sql-e5</link>
      <guid>https://forem.com/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://forem.com/rachel_muriuki_c5062dd89a/transforming-messy-data-into-reliable-insights-using-power-bi-16a6</link>
      <guid>https://forem.com/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://forem.com/rachel_muriuki_c5062dd89a/schemas-and-data-modelling-in-power-bi-1kjc</link>
      <guid>https://forem.com/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://forem.com/rachel_muriuki_c5062dd89a/schemas-and-data-modelling-in-power-bi-16bn</link>
      <guid>https://forem.com/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://forem.com/rachel_muriuki_c5062dd89a/intoduction-to-ms-excel-for-data-analytics-4ie7</link>
      <guid>https://forem.com/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://forem.com/rachel_muriuki_c5062dd89a/getting-started-with-git-and-github-using-ssh-keys-1pi</link>
      <guid>https://forem.com/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>
