<?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: Leonard Mwilu</title>
    <description>The latest articles on DEV Community by Leonard Mwilu (@leonardmwilu139).</description>
    <link>https://dev.to/leonardmwilu139</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4078037%2F81636a58-5999-4abe-8599-924b51470c7b.jpg</url>
      <title>DEV Community: Leonard Mwilu</title>
      <link>https://dev.to/leonardmwilu139</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leonardmwilu139"/>
    <language>en</language>
    <item>
      <title>Data Modelling, Relationships &amp; Joins in Power BI</title>
      <dc:creator>Leonard Mwilu</dc:creator>
      <pubDate>Mon, 14 Sep 2026 18:02:15 +0000</pubDate>
      <link>https://dev.to/leonardmwilu139/data-modelling-relationships-joins-in-power-bi-54pf</link>
      <guid>https://dev.to/leonardmwilu139/data-modelling-relationships-joins-in-power-bi-54pf</guid>
      <description>&lt;h1&gt;
  
  
  Data Modelling in Power BI
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Data modelling in Power BI&lt;/strong&gt; is the process of connecting separate data sources, defining logical relationships between entities, establishing directional filter propagation paths and configuring metadata to transform raw transactional records into an analytical engine.&lt;br&gt;
Data Modeling helps in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reporting &amp;amp; Analytics&lt;/strong&gt;: Enables seamless aggregation across diverse business dimensions without requiring complex manual query rewrites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DAX Calculations&lt;/strong&gt;: Simplifies DAX expression logic, reducing the reliance on filter-overriding functions like CALCULATE, FILTER, or CROSSFILTER.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scalability &amp;amp; Maintainability&lt;/strong&gt;: Allows effortless additions &lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Comparison of Architectural Schemas
&lt;/h1&gt;

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

&lt;p&gt;&lt;strong&gt;Schema&lt;/strong&gt; refers to the logical structure of a database or data model that defines how tables are organized and related. In Power BI, schemas are used to optimize data storage, retrieval, and reporting.&lt;br&gt;
There are three primary types of schemas commonly used in Power BI:&lt;/p&gt;

&lt;h2&gt;
  
  
  Flat Table Schema
&lt;/h2&gt;

&lt;p&gt;This is a single denormalized data table containing all transactional attributes, metrics, keys, and lookup descriptors within one wide structure. It organizes all information, such as transactions, customer names, and product details, into a single, wide table with no external relationships.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structure:&lt;/strong&gt; All transactional measures and descriptive text fields are repeated for every row.&lt;br&gt;
&lt;strong&gt;Advantages&lt;/strong&gt;: Very simple to set up, requires zero data modeling effort and works well for small datasets.&lt;br&gt;
&lt;strong&gt;Disadvantages&lt;/strong&gt;: Massive data redundancy, bloated file sizes and high risk of update anomalies.&lt;br&gt;
&lt;strong&gt;Appropriate For&lt;/strong&gt;: Increases memory consumption and slows down performance on large datasets because repeated text bloats file size.&lt;br&gt;
&lt;strong&gt;Performance &amp;amp; Complexity&lt;/strong&gt;: Very low structural complexity but severely degrades performance and memory efficiency as row counts grow.&lt;br&gt;
A Flat Table Schema is as below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhkbpii0gp8e0l5z33s54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhkbpii0gp8e0l5z33s54.png" alt=" " width="799" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Star Schema
&lt;/h2&gt;

&lt;p&gt;A star schema is a more advanced approach to structuring and organizing quantitative, or measurable, data in Power BI. It allows for multiple tables to be connected through one central table, known as the &lt;strong&gt;fact table&lt;/strong&gt;. The fact table is linked to &lt;strong&gt;dimension tables&lt;/strong&gt; that contain records such as customers, employees, dates, and marketing campaigns etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of using Star Schema in Power BI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reduces Data Redundancy&lt;/strong&gt;: By separating facts and dimensions into distinct tables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boosts Query Performance&lt;/strong&gt;: More efficient querying and aggregation of data, as dimension tables are typically smaller and can be indexed to improve performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Easy to Understand&lt;/strong&gt;: The fact table serves as the focal point, and all other tables are linked to it through clear relationships&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages  of using Star Schema in Power BI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Lacks Flexibility&lt;/strong&gt;: Actions like adding new dimensions or modifying existing ones may require extensive changes to the schema.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Struggles with Complexity&lt;/strong&gt;: May not be suitable for handling complex relationships between dimensions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Star schema is structured as shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flkng5bx4rnfziqzilk5t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flkng5bx4rnfziqzilk5t.png" alt=" " width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Snowflake Schema
&lt;/h2&gt;

&lt;p&gt;A snowflake schema is an extension of the star schema. It breaks down the dimension tables into multiple related tables, forming a hierarchical structure that resembles a snowflake. This process, known as normalization, reduces data redundancy and improves data integrity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of using Snowflake Schema in Power BI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Efficient Storage&lt;/strong&gt;: Reduced data redundancy through normalization.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improved Data Integrity&lt;/strong&gt;: Better data integrity due to more focused tables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offers Scalability&lt;/strong&gt;: Greater flexibility in handling complex relationships between dimensions, as new tables can be easily added to accommodate new relationships.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disadvantages of using Snowflake Schema in Power BI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complex Data Analysis&lt;/strong&gt;: More difficult to perform data analysis because of the extra relationships.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Challenging to Understand and Manage&lt;/strong&gt;: The schema is harder to understand and maintain due to its complexity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slower Queries&lt;/strong&gt;: Multiple join operations may be required to retrieve data from the related tables, resulting in slower query performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Snowflake schema structure is as in the sample image below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fupn86uw25cm5i07dfzyh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fupn86uw25cm5i07dfzyh.png" alt=" " width="720" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Fact Tables and Dimension Tables
&lt;/h1&gt;

&lt;p&gt;Separating tables into Facts and Dimensions is the foundation of dimensional modeling. &lt;strong&gt;Fact tables&lt;/strong&gt; capture business measurements, events, and transactions, while &lt;strong&gt;Dimension tables&lt;/strong&gt; store the context, descriptive attributes, and filtering hierarchies.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fact tables&lt;/strong&gt; consists of the measurements, metrics, or facts of a business process. In other words, they hold quantifiable measurable data. They represent numerical business actions that can be summed, averaged, or counted. Example: &lt;em&gt;order id&lt;/em&gt;, &lt;em&gt;product id&lt;/em&gt;, &lt;em&gt;product price&lt;/em&gt;, &lt;em&gt;quantity&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dimension tables&lt;/strong&gt; are typically textual fields and provide descriptive attributes related to fact data. They contain textual attributes, categorical groupings, hierarchies and primary surrogate keys. Dimension tables are linked to the fact table and include things such as &lt;em&gt;date&lt;/em&gt;, &lt;em&gt;employee&lt;/em&gt;, &lt;em&gt;sales&lt;/em&gt;, and &lt;em&gt;product data&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The below image shows a practical example of how a single Fact Table can be linked to several Dimension Tables.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc93y3nfskm3g9movs979.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc93y3nfskm3g9movs979.png" alt=" " width="587" height="579"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Relationships in Power BI
&lt;/h1&gt;

&lt;p&gt;Relationships establish logical connections between physical tables in the data model based on matching key columns. They govern how filter context propagates across tables when report visuals evaluate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Relationship Cardinalities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One-to-Many (1:&lt;em&gt;) / Many-to-One (&lt;/em&gt;:1)&lt;/strong&gt;
A single distinct key value in the dimension table maps to zero, one, or many identical key instances in the fact table.
&lt;strong&gt;Practical Example&lt;/strong&gt;: DimCustomer&lt;a href="https://dev.to1"&gt;CustomerKey&lt;/a&gt; connected to FactSales&lt;a href="https://dev.to*"&gt;CustomerKey&lt;/a&gt;.
&lt;em&gt;This is the recommended primary relationship pattern for analytical modeling.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8p023uftezh19mrutell.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8p023uftezh19mrutell.png" alt=" " width="422" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One-to-One (1:1)&lt;/strong&gt;
A single row in Table A maps to exactly one corresponding row in Table B.
&lt;strong&gt;Practical Example&lt;/strong&gt;: DimUser[UserID] connected to DimUserProfile[UserID].
&lt;strong&gt;Usage&lt;/strong&gt;: Rarely needed. One should prefer merging both tables into a single table in Power Query, unless separating highly sensitive security attributes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ij6h715frn32g4gy9de.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ij6h715frn32g4gy9de.png" alt=" " width="394" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Many-to-Many (&lt;em&gt;:&lt;/em&gt;)&lt;/strong&gt;
In this kind of relationship, neither table contains unique key values; keys repeat across both sides of the relationship.
&lt;strong&gt;Practical Example&lt;/strong&gt;: Linking sales targets set at a high product category level directly to transactional sales containing product line items.
&lt;strong&gt;Usage guidance&lt;/strong&gt;: It is advisable to avoid this relationship where possible. It introduces non-deterministic visual calculations. Use a table with two &lt;em&gt;1:*&lt;/em&gt; relationships instead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flgy2jzkv1bss7io4bfwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flgy2jzkv1bss7io4bfwz.png" alt=" " width="416" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Relational Concepts&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Key (PK)&lt;/strong&gt;: A column in a dimension table containing strictly unique values that definitively identify each row (e.g., DimCustomer[CustomerKey]).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foreign Key (FK)&lt;/strong&gt;: A column in a fact table that references a Primary Key column in a dimension table (e.g., FactSales[CustomerKey]).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unique Values&lt;/strong&gt;: A strict requirement for the '1' side of any &lt;em&gt;1:* relationship&lt;/em&gt;; duplicate values on the 1 side, trigger modeling errors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Referential Integrity&lt;/strong&gt;: Ensures that every &lt;em&gt;foreign key value&lt;/em&gt; in a fact table correctly matches an existing &lt;em&gt;primary key&lt;/em&gt; in the corresponding dimension table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active vs. Inactive Relationships&lt;/strong&gt;: Only ONE active relationship path can exist between two tables to prevent ambiguous paths. Additional relationships (e.g., FactSales[OrderDate] vs FactSales[ShipDate] linking to DimDate[Date]) must remain inactive and activated dynamically using USERELATIONSHIP() in DAX.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Filter Direction &amp;amp; Propagation
&lt;/h1&gt;

&lt;p&gt;When a user selects an item in a slicer or visual, Power BI establishes a Filter Context. This filter automatically propagates along active relationships between related tables.&lt;/p&gt;

&lt;h2&gt;
  
  
  Single-Direction vs. Both/Bidirectional Filtering
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Single-Direction Filtering (1 -&amp;gt; *)&lt;/strong&gt;: Filters propagate exclusively from the '1' side (Dimension) to the '*' side (Fact). Selecting &lt;em&gt;DimProduct[Category]&lt;/em&gt; = &lt;em&gt;'Bikes'&lt;/em&gt; automatically filters &lt;em&gt;FactSales&lt;/em&gt; down to rows containing bike sales. Selecting values in FactSales does NOT filter DimProduct.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Both / Bidirectional Filtering (&amp;lt;-&amp;gt;)&lt;/strong&gt;: Filters propagate in both directions across the relationship. Filtering &lt;em&gt;FactSales&lt;/em&gt; automatically filters &lt;em&gt;DimProduct&lt;/em&gt;, and vice versa.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Risks of Bidirectional Filtering&lt;/strong&gt;: Bidirectional relationships can create circular, ambiguous filter paths in non-trivial models. They cause unexpected measure calculation results, prevent efficient query plan caching, and significantly degrade execution performance. The best practice is to keep relationships single-direction and activating cross-filtering explicitly via &lt;em&gt;DAX (CROSSFILTER)&lt;/em&gt; only when required.&lt;/p&gt;

&lt;h1&gt;
  
  
  Joins in Power Query
&lt;/h1&gt;

&lt;p&gt;Power Query utilizes Merge Queries to physically combine two tables side-by-side during the ETL extraction and transformation phase. Rows are matched based on specified key columns from both tables.&lt;/p&gt;

&lt;p&gt;There are several types of Joins and to explain them better it would be good to use a practical example for ease of understanding and reference.&lt;br&gt;
&lt;strong&gt;Practical Scenario Datasets&lt;/strong&gt;&lt;br&gt;
Consider two sample tables, Customers (Left Table) and Orders (Right Table) as show in the image below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr6xiywa51sc22c2uccrb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr6xiywa51sc22c2uccrb.png" alt=" " width="625" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Join Type Breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Left Outer Join&lt;/strong&gt;: Retains ALL rows from the Left table (Customers) and matching rows from the Right table (Orders). Unmatched right attributes appear as null.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right Outer Join&lt;/strong&gt;: Retains ALL rows from the Right table (Orders) and matching rows from the Left table (Customers). Unmatched left attributes appear as null.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full Outer Join&lt;/strong&gt;: Retains ALL rows from BOTH tables. Unmatched rows on either side are filled with null values.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inner Join&lt;/strong&gt;: Retains ONLY rows where matching keys exist in BOTH tables (e.g., CustomerID 1 and 2).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Left Anti Join&lt;/strong&gt;: Retains ONLY rows from the Left table that have NO match in the Right table (e.g., CustomerID 3 - Charlie).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right Anti Join&lt;/strong&gt;: Retains ONLY rows from the Right table that have NO match in the Left table (e.g., OrderID 103 - CustID 4).&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Power Query Joins vs Power BI Relationships
&lt;/h1&gt;

&lt;p&gt;Understanding the architectural distinction between merging tables in Power Query and creating relationships in the Power BI Data Model is essential for efficient Power BI design.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fej59j41odlwelvnjmxws.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fej59j41odlwelvnjmxws.png" alt=" " width="627" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Recommended Power BI Architectural Standard
&lt;/h1&gt;

&lt;p&gt;After doing deep research, I strongly recommend a Star Schema utilizing Single-Direction One-to-Many (1:&lt;em&gt;) relationships.&lt;br&gt;
**Justification&lt;/em&gt;*:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Query &amp;amp; Report Performance: Maximizes VertiPaq columnar dictionary encoding and segment compression, ensuring visuals render in sub-seconds.&lt;/li&gt;
&lt;li&gt;DAX Simplicity: Measures evaluate over clean, single-direction filter propagation paths, eliminating the need for complex filter-overriding functions.&lt;/li&gt;
&lt;li&gt;Model Readability: Provides an intuitive visual structure where fact tables sit in the center surrounded by clean dimension lookup tables.&lt;/li&gt;
&lt;li&gt;Scalability: New transactional fact tables (e.g., FactBudget or FactForecast) can immediately integrate with existing dimensions without refactoring.&lt;/li&gt;
&lt;li&gt;Maintainability: Prevents circular relationship paths, ambiguous filter routes, and unnecessary memory consumption.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Learning is a continuous thing and I am learning, leave a comment on sites I can use to learn  in this journey of becoming a Data Scientist&lt;/em&gt;&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>data</category>
      <category>database</category>
    </item>
    <item>
      <title>Jumia Product Performance &amp; Pricing Dashboard</title>
      <dc:creator>Leonard Mwilu</dc:creator>
      <pubDate>Sat, 05 Sep 2026 17:47:07 +0000</pubDate>
      <link>https://dev.to/leonardmwilu139/jumia-product-performance-pricing-dashboard-3cb9</link>
      <guid>https://dev.to/leonardmwilu139/jumia-product-performance-pricing-dashboard-3cb9</guid>
      <description>&lt;p&gt;This is an end-to-end Jumia e-commerce data analysis and interactive Microsoft Excel dashboard project; analyzing product pricing, promotional discounts, customer ratings, and engagement metrics for Jumia listings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;Jumia and its marketplace sellers require data-driven insights into how pricing strategies, promotional discounts, and customer ratings impact overall engagement. Because direct sales volume and revenue figures are not present in the dataset, &lt;strong&gt;in the provided dataset I assumed that review counts indicated customer engagement&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this project I processed raw Jumia product data, performed data quality audits, standardized messy records, enriched the dataset with logical categories and performance flags, evaluated linear correlations, and build an interactive, single-screen Microsoft Excel dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Questions I used to drive my Analysis
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Are larger promotional discounts associated with higher customer engagement (reviews)?&lt;/li&gt;
&lt;li&gt;Do highly rated products attract stronger customer interaction?&lt;/li&gt;
&lt;li&gt;Do current price points move together with average customer ratings?&lt;/li&gt;
&lt;li&gt;Which products represent top catalog performers versus underperforming promotional risks?&lt;/li&gt;
&lt;li&gt;What specific pricing or marketing adjustments should sellers execute?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  PivotTable and analysis workflow
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Data Audit Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Total Raw Records: 115 rows&lt;/li&gt;
&lt;li&gt;Duplicate Records: 3 full duplicate rows identified and removed (reducing clean catalog count to 112 unique products).&lt;/li&gt;
&lt;li&gt;Price Ranges: Evaluated and converted to midpoints on row 39 for consistent numeric analysis while preserving auditable source text.&lt;/li&gt;
&lt;li&gt;Missing Values: 58 missing values in ratings and reviews were treated as "uncaptured data" rather than converted to zeros.
Below is a snippet of the audit summary.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frr0rht71tnfamo5couj7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frr0rht71tnfamo5couj7.png" alt=" " width="799" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Cleaning &amp;amp; Transformation Rules
&lt;/h3&gt;

&lt;p&gt;All data transformations were executed cleanly in Cleaned_Data (tblProducts) and documented in the workbook Data_Dictionary:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Product Name:&lt;/em&gt; Standardized using =TRIM().&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Prices:&lt;/em&gt; Cleaned of text characters (KSh, commas) and converted to numeric currency (KSh #,##0.00). Range values were resolved using midpoints: (Min + Max) / 2.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Discounts:&lt;/em&gt; Stripped of % signs, converted to decimals, and formatted as Percentage (0%).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Reviews:&lt;/em&gt; Converted negative values to absolute whole numbers via =ABS().&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Ratings:&lt;/em&gt; Extracted numeric values by removing " out of 5" and converted to decimals.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Calculated &amp;amp; Enriched Fields
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Discount Amount:&lt;/em&gt; Old Price - Current Price&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Price Category:&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Low Price: KSh 493.00 (First Quartile) &lt;/p&gt;

&lt;p&gt;Medium Price: KSh 493.01 – KSh 1,669.50 (First Quartile to Third Quartile) &lt;/p&gt;

&lt;p&gt;High Price: &amp;gt; KSh 1,669.50 (Third Quartile)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Discount Category:&lt;/em&gt; Low (&amp;lt;20%), Medium (20% - 40%), High (&amp;gt;40%)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Rating Category:&lt;/em&gt;  Poor (&amp;lt;3.0), Average (3.0 - 4.5), Excellent (&amp;gt;4.5)&lt;/p&gt;
&lt;h2&gt;
  
  
  Excel formulas I used
&lt;/h2&gt;

&lt;p&gt;I used several Excel formulas in this project and below is a list of most of the Formulas.&lt;br&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=VALUE(SUBSTITUTE(SUBSTITUTE(B2,"KSh",""),",",""))
=VALUE(SUBSTITUTE(D2,"%",""))/100
=IF(E2="","",ABS(VALUE(E2)))
=IF(F2="","",VALUE(SUBSTITUTE(F2," out of 5","")))

Total products  =ROWS(tblProducts[Product])     
Average current price   =AVERAGE(tblProducts[Current Price])        
Average old price   =AVERAGE(tblProducts[Old Price])        
Average discount    =AVERAGE(tblProducts[Discount])     
Average rating  =AVERAGE(tblProducts[Rating])       
Total reviews   =SUM(tblProducts[Review])       
Most expensive price    =MAX(tblProducts[Current Price])        
Least expensive price   =MIN(tblProducts[Current Price])        

Discount Amount: =[@[Old Price]]-[@[Current Price]]     
Rating Category: =IF([@Rating]="","Missing",IF([@Rating]&amp;lt;3,"Poor",IF([@Rating]&amp;lt;=4.5,"Average","Excellent")))

Discount Category: =IF([@Discount]="","Missing",IF([@Discount]&amp;lt;0.2,"Low Discount",IF([@Discount]&amp;lt;=0.4,"Medium Discount","High Discount")))

Price Category =IF([@[Current Price]]="","Missing",IF([@[Current Price]]&amp;lt;=Price_Q1,"Low Price",IF([@[Current Price]]&amp;lt;=Price_Q3,"Medium Price","High Price")))

Validation Check : =IF(OR([@Rating]&amp;lt;0,[@Rating]&amp;gt;5),"Check rating",IF(OR([@Discount]&amp;lt;0,[@Discount]&amp;gt;1),"Check discount",IF([@[Current Price]]&amp;gt;[@[Old Price]],"Check prices","OK")))       

=CORREL(tblProducts[Discount],tblProducts[Review])
=CORREL(tblProducts[Rating],tblProducts[Review])
=CORREL(tblProducts[Current Price],tblProducts[Rating])

=QUARTILE.INC(tblProducts[Current Price],1)
=QUARTILE.INC(tblProducts[Current Price],3)

=IF([@[Current Price]]="","Missing",IF([@[Current Price]]&amp;lt;=Price_Q1,"Low Price",IF([@[Current Price]]&amp;lt;=Price_Q3,"Medium Price","High Price")))

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

&lt;/div&gt;



&lt;p&gt;Below is a snippet image of the cleaned data table (tblproducts) achieved after data cleaning and addition of relevant columns(Enriched Fields).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fup6cy5ms9jlvc9exdpcv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fup6cy5ms9jlvc9exdpcv.png" alt=" " width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After completing clean-up and analysis these are the total sheets I had in my Excel workbook.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fij7pnftjgt0nzk14oht8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fij7pnftjgt0nzk14oht8.png" alt=" " width="800" height="35"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I finally generated PivotTables and charts which I later used to build my dashboard. Below is an image of the PivotTables  in one sheet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs875vsr8mn2j00rwde0k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs875vsr8mn2j00rwde0k.png" alt=" " width="800" height="733"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using this PivotTables I was able to generate Pie Chart and Column Charts for ease of building the Dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi9gt6smrysi3zrg2nk6h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi9gt6smrysi3zrg2nk6h.png" alt=" " width="800" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Dashboard design and slicer connections
&lt;/h2&gt;

&lt;p&gt;To build a seamless, audit-ready presentation, I designed the Dashboard tab as a single-screen analytical hub that isolates reporting from underlying data logic. &lt;br&gt;
The visual layout features &lt;strong&gt;high-level KPI cards&lt;/strong&gt;, &lt;strong&gt;dynamic charts&lt;/strong&gt;, and &lt;strong&gt;assumptions &amp;amp; recommendations sections&lt;/strong&gt;, all driven by interactive Slicers connected across multiple PivotTables. &lt;br&gt;
Using Excel's Report Connections, selecting a filter—such as Rating Category, Discount Category, or Price Category—instantly updates all visuals and summary metrics simultaneously, allowing stakeholders to cross-analyze product performance without altering the core dataset.&lt;/p&gt;

&lt;p&gt;Below are the slicers I used.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbxlu94vkfh2ad6cptza2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbxlu94vkfh2ad6cptza2.png" alt=" " width="705" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The steps involved in connecting the Slicers with all the PivotTables are; right click on the Slicer, click &lt;em&gt;report connections&lt;/em&gt;,on the pop-up min-window that comes up, tick all the boxes in the list and then click OK. This steps are as shown in the below image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzb90w3yatm3j3u1w7zsv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzb90w3yatm3j3u1w7zsv.png" alt=" " width="799" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below is the dashboard I came up with at the end of the project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftjaluz4vwxl8oyokkx8z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftjaluz4vwxl8oyokkx8z.png" alt=" " width="800" height="715"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Findings &amp;amp; Correlation Analysis
&lt;/h2&gt;

&lt;p&gt;Linear relationships were evaluated across complete paired observations using Pearson correlation (=CORREL()):&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8duers6fb6p43lf6u4ng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8duers6fb6p43lf6u4ng.png" alt=" " width="476" height="78"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5x9r8k29bv5252d29z3u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5x9r8k29bv5252d29z3u.png" alt=" " width="325" height="177"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Business Recommendations
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;Optimize Discount Bands:&lt;/em&gt; Products in the Medium Discount group (20%–40%) generate higher average engagement (15.26 reviews) than items in the High Discount group (&amp;gt;40%, averaging 11.13 reviews). &lt;/li&gt;
&lt;li&gt;Sellers should avoid slashing prices beyond 40% as it destroys margin without boosting sales volume.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Audit Low-Rated, High-Discount Listings:&lt;/em&gt; 10 products pair high discounts (&amp;gt;40%) with poor ratings (&amp;lt;3.0). Deep price cuts on low-quality products harm brand reputation; Jumia should inspect these items for quality defects or inaccurate descriptions.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Promote Catalog Star Performers:&lt;/em&gt; 6 listings achieve both Strong Engagement (greater or equal to 14 reviews) and Excellent Ratings (&amp;gt;4.5). Sellers should feature these items in sponsored ad campaigns to capture high conversion rates.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Fix Average-Rated High-Volume Listings:&lt;/em&gt; 6 items generate high engagement (greater or equal to 14 reviews) but possess mediocre satisfaction ratings (3.0–4.5). Sellers should inspect buyer feedback to fix minor packaging or product flaws.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Data Limitations &amp;amp; Analytical Challenges
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Engagement Proxy:&lt;/em&gt; Review count is used as a proxy for customer engagement. The dataset omits direct sales units, page views, and financial revenue.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Listing Age &amp;amp; Visibility:&lt;/em&gt; Review totals may reflect how long a product has been active on Jumia or its placement algorithm rather than price responsiveness.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Correlation vs. Direct link:&lt;/em&gt; Observed statistical correlations do not establish direct cause-and-effect relationships.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Some of the Key Lessons I Learned while doing the project
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Audit-Trail Data Cleaning:&lt;/strong&gt; Cleaning raw e-commerce data requires preserving source inputs alongside normalized values. Converting price ranges to midpoints while keeping original text ensuring data integrity and traceability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Types and Regional Formatting:&lt;/strong&gt; Unstructured text strings (e.g., "KSh", ",", " out of 5", "%") break Excel numerical functions. Stripping formatting artifacts early prevents downstream &lt;em&gt;#VALUE!&lt;/em&gt; errors in PivotTables and Formulas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Percentile-Based Performance Thresholds:&lt;/strong&gt; Applying objective mathematical cutoffs (such as using Price_Q1/Price_Q3 for 1st and 3rd Quartiles) eliminates subjective bias when categorizing catalog items. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Separation of Architecture &amp;amp; Presentation:&lt;/strong&gt; Structuring the Excel workbook into dedicated functional layers (Raw_Data -&amp;gt; Cleaned_Data -&amp;gt;tblproducts -&amp;gt;Data Dictionary -&amp;gt; Analysis -&amp;gt; Pivot_Tables -&amp;gt; Dashboard) maintains readability, prevents circular references, and simplifies troubleshooting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Repository Structure I used
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jumia-product-performance-dashboard/

├── README.md

├── data/

│   └── Excel_jumia_dataset.csv

├── dashboard/

│   └── jumia_product_dashboard.xlsx

└── images/

         ├── raw-data.png

         ├── cleaned-data.png

         ├── pivot-tables.png

         └── dashboard.png 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Github repository link: &lt;em&gt;&lt;a href="https://github.com/Immeleo/jumia-product-performance-dashboard" rel="noopener noreferrer"&gt;https://github.com/Immeleo/jumia-product-performance-dashboard&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>data</category>
      <category>product</category>
    </item>
    <item>
      <title>Getting Started with Excel for Data Analytics: From Basics to Data Cleaning</title>
      <dc:creator>Leonard Mwilu</dc:creator>
      <pubDate>Sat, 29 Aug 2026 18:33:11 +0000</pubDate>
      <link>https://dev.to/leonardmwilu139/getting-started-with-excel-for-data-analytics-from-basics-to-data-cleaning-17l4</link>
      <guid>https://dev.to/leonardmwilu139/getting-started-with-excel-for-data-analytics-from-basics-to-data-cleaning-17l4</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbvf5pdi42gvxt57mowfw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbvf5pdi42gvxt57mowfw.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;3rd week into Data Science and Analytics with Lux Dev Academy. This week we started a two-week learning module on the use of Microsoft Excel to clean and analyze data. &lt;/p&gt;

&lt;p&gt;In the modern data-driven landscape, organizational decision-making hinges on the ability to transform raw, unstructured inputs into clear and actionable insights. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Garbage in, garbage out" (GIGO) remains the defining axiom of data engineering. Statistical models, pivot tables, and visualization dashboards are only as reliable as the underlying data clean-up routines. Data cleaning is not a preliminary administrative chore; it is the core analytical step where data validity and structural integrity are established.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Excel Use Cases
&lt;/h2&gt;

&lt;p&gt;Some of the common area/scopes where Excel is used are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Data Entry&lt;/li&gt;
&lt;li&gt;Data Analysis&lt;/li&gt;
&lt;li&gt;Data Cleaning&lt;/li&gt;
&lt;li&gt;Reporting (using dashboards &amp;amp; Pivots).&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Navigating the Excel Interface &amp;amp; Understanding Data Types
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Navigating the Excel Interface
&lt;/h2&gt;

&lt;p&gt;We started by learning most if not all the components and features of Microsoft Excel. Below images show most important sections of the Microsoft excel, indicated on an open blank sheet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsju96jxslyq0t3cns82j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsju96jxslyq0t3cns82j.png" alt=" " width="443" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The core interface components are:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ribbon&lt;/strong&gt;: this is the top navigation toolbar organize into tabs which include Home, Insert, Data, Formulas, Reviews and Help.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formula bar&lt;/strong&gt;: Displays and also can be used to edit the cell value or the underlying formula active in a selected cell.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name Box&lt;/strong&gt;: Displays the name or the defined name of the currently selected cell or range.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Worksheet Grid&lt;/strong&gt;: This is the primary worksheet made up of rows(numbered 1 - 10000...) and columns(lettered A-X...)&lt;/li&gt;
&lt;li&gt;** Cells**: this is the intersection of a row and a column where data, text, or formulas are entered.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sheet Tabs&lt;/strong&gt;: this a located at the bottom and enables one to switch between different worksheets within a single excel workbook file. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status Bar&lt;/strong&gt;: this is bar at the bottom of the worksheet that shows the real-time information or calculations like count of values in selected cells, sum of values in a selected range. Highlighted in yellow in the below image.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzwe2c7bimlwpj553e2ch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzwe2c7bimlwpj553e2ch.png" alt=" " width="465" height="212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Other important sections of excel can be found once you click the &lt;strong&gt;file tab&lt;/strong&gt; at the top left corner. This sections include Home(button to return to worksheet), New(for creating new workbook), Open (to open an existing excel file from the laptop/host machine),info, print, export ( can be used to convert the file into other formats like pdf), close, recent, Favorites and more. This appears as shown in the image below.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi84860rj55lm8qq9amtx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi84860rj55lm8qq9amtx.png" alt=" " width="619" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Types
&lt;/h2&gt;

&lt;p&gt;Excel categorizes data entering a cell into distinct underlying visuals and mathematical data types. Understanding how Excel stores and processes these data types is important since mismatched data types result in execution errors during analysis.&lt;br&gt;
Some the Excel data types include the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Numeric(Values)&lt;/strong&gt;; these are right-aligned and are floating-point numbers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text(Strings)&lt;/strong&gt;; these are left-aligned and are alphanumeric sequences(cannot be evaluated mathematically)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Date &amp;amp; Times&lt;/strong&gt;; also Right-aligned and are sequential serial numbers where Day 1 is 1/1/1900. Time is represented by fractional values.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Boolean(Logical)&lt;/strong&gt;; they are centered on a cell and restricted to uppercase binary values: &lt;code&gt;TRUE&lt;/code&gt; or &lt;code&gt;FALSE&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formulas &amp;amp; Errors&lt;/strong&gt;; expressions starting with &lt;code&gt;=&lt;/code&gt;. They yield dynamic data or error states.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Conditional Formatting
&lt;/h1&gt;

&lt;p&gt;Learned about conditional formatting which is a feature of Microsoft Excel that automatically  changes how a cell looks based on the data inside it. Instead of manually applying colors or styles to individual cells, you set rules (conditions) and the software formats the cells automatically when those conditions are met. &lt;br&gt;
Conditional formatting can be applied on both text and numbers. When working with conditional format there as many options and functions provided in Microsoft Excel. Some of this options are highlighted in the below image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdzyrf48sdexiagky6q41.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdzyrf48sdexiagky6q41.png" alt=" " width="237" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sample of data with conditional formatting applied is as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdqbqyqmnz5b1wuon0u65.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdqbqyqmnz5b1wuon0u65.png" alt=" " width="717" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How it works: You select the cells you want to monitor, define the rule, and the forma updates automatically.&lt;/p&gt;

&lt;p&gt;One important function during conditional formatting of data in Excel is the &lt;strong&gt;Find and Replace tool&lt;/strong&gt;. You can access it instantly using keyboard shortcuts: &lt;br&gt;
     - &lt;code&gt;Ctrl + F&lt;/code&gt; opens the Find tab directly.&lt;br&gt;
     - &lt;code&gt;Ctrl + H&lt;/code&gt; opens the Replace tab directly.&lt;/p&gt;

&lt;p&gt;Below is how it appears once open in an Excel sheet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwpbpry5b6w94hlr9x3g5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwpbpry5b6w94hlr9x3g5.png" alt=" " width="466" height="212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Formulas, Functions, and References: The Calculation Engine.
&lt;/h1&gt;

&lt;p&gt;Formulas represent the foundational syntax of Excel analytics. Every formula begins with an equals sign &lt;code&gt;=&lt;/code&gt;, signaling to the calculation engine to evaluate the subsequent expression rather than treating it as a literal string.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mathematical Operators and Order of Operations.
&lt;/h2&gt;

&lt;p&gt;Excel adheres to the standard algebraic order of operations &lt;code&gt;PEMDAS: Parentheses, Exponents, Multiplication/Division, Addition/Subtraction.&lt;/code&gt; While using Excel we face situations where we use one or all of these operations and there its very crucial to understand how to apply and use them properly. When building analytical sheets, one is required to structure complex algebraic expressions logically. The symbols used for the different operations are as shown below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Addition &amp;amp; Subtraction: &lt;code&gt;+&lt;/code&gt; and &lt;code&gt;-&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Multiplication &amp;amp; Division: &lt;code&gt;*&lt;/code&gt; and &lt;code&gt;/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Exponentiation:&lt;code&gt;^ (e.g., =10^2 yields 100)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Comparison Operators: &lt;code&gt;=, &amp;lt;&amp;gt; (Not equal to), &amp;gt;, &amp;lt;, &amp;gt;=, &amp;lt;=&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mastering Cell References: Relative vs. Absolute vs. Mixed
&lt;/h2&gt;

&lt;p&gt;Understanding cell referencing is very important for one to become proficient data analyst. When formulas are copied from one row or columns to another, cell references adapt based on the presence of dollar sign &lt;code&gt;$&lt;/code&gt; anchors.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Relative References&lt;/strong&gt;: Cell references are &lt;strong&gt;relative by default&lt;/strong&gt;. For a formula containing &lt;em&gt;=A1+10&lt;/em&gt; in cell B1 is dragged down to B2, it automatically shifts to &lt;em&gt;=A2+10&lt;/em&gt;. The formula stores the relative offset rather than a fixed address.

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Absolute References&lt;/strong&gt;: Adding a dollar sign &lt;code&gt;$&lt;/code&gt; before both the column letter and row numbers locks the reference completely. For example if &lt;em&gt;=$A$4*.001&lt;/em&gt; is copied from cell L1 down to L10, every single cell will evaluate against cell &lt;em&gt;A4&lt;/em&gt;. This is very essential for central parameters like discount factors, tax rates or KPI targets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mixed References&lt;/strong&gt;: This lock either the row or the column, leaving the other free to adjust dynamically. eg $A10 and B$10.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Core Statistic Functions
&lt;/h2&gt;

&lt;p&gt;The foundation of initial exploratory data analysis relies on fundamental aggregation functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;=SUM(range)&lt;/strong&gt;: used to calculate the total arithmetic sum of a numeric range.&lt;/li&gt;
&lt;li&gt;=AVERAGE(range): used to compute the arithmetic mean.&lt;/li&gt;
&lt;li&gt;=COUNT(range): used to count cells containing numeric values only.&lt;/li&gt;
&lt;li&gt;=COUNTA(range): used to count non-empty cells (includes text, numbers, logical values &lt;code&gt;TRUE/FALSE&lt;/code&gt; and errors).&lt;/li&gt;
&lt;li&gt;=COUNTBLANK(range): Counts empty cells within a specified range.&lt;/li&gt;
&lt;li&gt;=MIN(range) or =MAX(range): used get the minimum or maximum value in a range of  values.
Other statistical functions we covered included:
=COUNTIF()&amp;amp; =COUNTIFS(), =SUMIF() &amp;amp; =SUMIFS(), =AVERAGEIF() and =AVERAGEIFS().&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Structured Data: Working with Excel Tables.
&lt;/h1&gt;

&lt;p&gt;The single most impactful practice for modern analytics in Excel is converting &lt;strong&gt;raw data blocks&lt;/strong&gt; into official &lt;strong&gt;Excel Tables&lt;/strong&gt;(Keyboard Shortcut: &lt;code&gt;Ctrl + T&lt;/code&gt;).&lt;br&gt;
Some of the advantages of using Structured data are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Dynamic Auto-Expansion&lt;/em&gt;: When new rows or columns are added directly adjacent to a Table, the table automatically expands to encompass the new data, automatically extending formulas, formatting, and data validation rules.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Structured references&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Calculated Columns&lt;/em&gt;: Entering a formula in a single cell of a table column automatically fills down the entire column instantly.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Integrated Filter Controls&lt;/em&gt;: Automatic addition of sorting and filtering drop-downs on the header row&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Data Preparation &amp;amp; Data Cleaning Techniques.
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Data cleaning&lt;/strong&gt; is the process of detecting, correcting or removing corrupt, inaccurate, incomplete, improperly formatted or duplicate records from a dataset. Below are some of the methodologies we covered for execution with Excel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Text Cleaning &amp;amp; Manipulation Functions
&lt;/h2&gt;

&lt;p&gt;Uncleaned text files often contain leading or trailing whitespaces, non-breaking spaces, merged text strings or inconsistent casing.&lt;br&gt;
Some of the functions for cleaning text we covered are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;=TRIM(text)&lt;/strong&gt;: removes all leading &amp;amp; trailing spaces and reduces multiple internal spaces to a single space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;=CLEAN(text)&lt;/strong&gt;: removes all non-printable ASCII characters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;=UPPER(text)&lt;/strong&gt; and &lt;strong&gt;=LOWER(text)&lt;/strong&gt;: standardizes text strings into uniform uppercase or lowercase for case-sensitive comparisons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;=PROPER(text)&lt;/strong&gt;: Capitalizes the first letter of each word in a text string. It is useful for names and addresses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;=LEN(text)&lt;/strong&gt;: Used to count the total characters in a text string. One of the use cases would be when validating Fixed-length IDs.
These functions can be used together when need arises. e.g =LOWER(CONCAT(text1,text2,text3,..))&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Substring Extraction: LEFT, RIGHT, MID, and FIND.
&lt;/h2&gt;

&lt;p&gt;Data fields frequently combine multiple pieces of data into single alphanumeric codes, for example &lt;em&gt;Transaction ID is &lt;code&gt;TXN-88492-2026&lt;/code&gt;&lt;/em&gt;. To extract individual variables, you combine string positional functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;=LEFT(text, [number of characters])&lt;/strong&gt;: used to extract characters from the start of a string.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;=RIGHT(text, [number of characters])&lt;/strong&gt;: used to extract characters from the end of a string.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;=MID(text, start number, number of characters)&lt;/strong&gt;: used to extracts characters from any starting position within the string.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;=FIND(find_text, within_text)&lt;/strong&gt;: Returns the 1-based index position of a specific character sequence  and it is case-sensitive.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Mastering Microsoft Excel for data analytics is not about memorizing isolated functions but it is about building robust, repeatable data processing pipelines. We established the baseline mechanism required to operate within the spreadsheet efficiently. understanding cell layout, controlling relative and absolute reference framing, using official Excel Tables, and applying string extraction and text-cleaning functions to sanitize messy real-world inputs.&lt;/p&gt;

&lt;p&gt;_ Never replace blank cells with guesses but you can replace them with a keyword like "Unknown"._&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>datacleaning</category>
      <category>excel</category>
      <category>careergrowth</category>
    </item>
    <item>
      <title>My First GitHub Project: From a Local Folder to GitHub Using Git and SSH</title>
      <dc:creator>Leonard Mwilu</dc:creator>
      <pubDate>Thu, 20 Aug 2026 18:32:22 +0000</pubDate>
      <link>https://dev.to/leonardmwilu139/my-first-github-project-from-a-local-folder-to-github-using-git-and-ssh-2o97</link>
      <guid>https://dev.to/leonardmwilu139/my-first-github-project-from-a-local-folder-to-github-using-git-and-ssh-2o97</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In my 2nd Week in Data Science &amp;amp; AI Analytics at LUX Academy we dive more into Git Bash and GitHub interactions and operations by doing our first project and publishing it on GitHub using &lt;code&gt;push&lt;/code&gt; , &lt;code&gt;commit&lt;/code&gt; and &lt;code&gt;remote origin&lt;/code&gt; commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps from start to publishing on GitHub
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Gathering Information
&lt;/h3&gt;

&lt;p&gt;The data for this project was provided as Excel forms both &lt;code&gt;.xlsx&lt;/code&gt; and &lt;code&gt;.csv&lt;/code&gt; files, by the instructor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Creation of local folders
&lt;/h3&gt;

&lt;p&gt;I created my local folder in my laptop's Desktop folder using git bash commands. In Git Bash, using the &lt;code&gt;cd&lt;/code&gt; command I navigated to my Desktop which was located inside OneDrive folder. &lt;em&gt;cd ~/OneDrive/Desktop/&lt;/em&gt;&lt;br&gt;
Inside the Desktop folder, I created a new folder and named it after my project &lt;em&gt;Kenya-Hospital-Health-Records-Analysis&lt;/em&gt; using the &lt;code&gt;mkdir&lt;/code&gt; command.&lt;br&gt;
I then used &lt;code&gt;cd Kenya-Hospital-Health-Records-Analysis&lt;/code&gt; to move into the new folder(directory). Inside this folder, I created a new subfolder called data using &lt;code&gt;cd data&lt;/code&gt;, to hold my files. I then created the README file which holds information about my project and is a crucial part of any GitHub repository. Here I used the &lt;code&gt;touch&lt;/code&gt; command   i.e &lt;code&gt;touch README.md&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Moving files from Downloads to my project data folder
&lt;/h3&gt;

&lt;p&gt;Since the data I was provided with was shared via WhatsApp, I downloaded the files into my laptop's Downloads folder and I had to move them to my project folder(data).&lt;br&gt;
Using git bash commands I easily moved my file from Downloads to data folder. Command for moving files in git is &lt;code&gt;mv /sourceFolder/filename.file_extension /destinationFolder&lt;/code&gt;. In my case all i did to do was&lt;br&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mv&lt;/span&gt; ~/Downloads/Kenyan_Hospital_Health_Records.xlsx ~/OneDrive/Desktop/Kenya-Hospital-Health-Records-Analysis/data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that my folder and data were set, I was ready to push and publish on GitHub.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Creation of GitHub Repository
&lt;/h3&gt;

&lt;p&gt;In order to push from my local folder to GitHub, I needed to create a repository on my GitHub account. I logged into my GitHub account, navigated to Repositories(&lt;em&gt;appears once you click the profile icon at top right corner&lt;/em&gt;) and then clicked &lt;strong&gt;NEW&lt;/strong&gt;. I then type my repository name &lt;em&gt;Kenya Hospital Health Records Analysis&lt;/em&gt;, entered a short description about it, and then clicked &lt;strong&gt;Create repository&lt;/strong&gt;. Once my repository was ready I copied the SSH address.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Connecting Local folder and GitHub repository
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;First I used &lt;code&gt;ssh -T git@github.com&lt;/code&gt; to test my connection which was successful. &lt;/li&gt;
&lt;li&gt;Using &lt;code&gt;git init&lt;/code&gt; I created the hidden &lt;em&gt;.git&lt;/em&gt; folder that lets git to track the files in my working directory(folder). &lt;/li&gt;
&lt;li&gt;Using &lt;code&gt;git branch -M main&lt;/code&gt; I ensured that my local branch was named main to align with GitHub defaults.&lt;/li&gt;
&lt;li&gt;using &lt;code&gt;git add .&lt;/code&gt; and &lt;code&gt;git commit -m "adding my kenya health records analysis project"&lt;/code&gt; I added my files to the staging area and created my baseline snapshot.&lt;/li&gt;
&lt;li&gt;I then linked my local repository with GitHub repository via SSH using &lt;code&gt;git remote add &amp;lt;SSH_address copied from GitHub earlier&amp;gt;&lt;/code&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Pushing my project to GitHub
&lt;/h3&gt;

&lt;p&gt;Using &lt;code&gt;git push -u origin main&lt;/code&gt; I uploaded my commits and set the default upstream tracking branch.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Verifying Successful Push
&lt;/h3&gt;

&lt;p&gt;I then returned to my GitHub  account, and after refreshing the page, my project had successfully been uploaded to my GitHub repository and the content of my &lt;strong&gt;README.md&lt;/strong&gt; was on display.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;_ I am so happy that after a few challenges with git bash commands I successfully managed to complete my first project. I am ready for the next challenge as we dive deep into Data Science_&lt;/p&gt;

</description>
      <category>github</category>
      <category>luxacademy</category>
      <category>beginners</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Starting My Journey with Data Science and AI Analytics: What I've Learned So Far</title>
      <dc:creator>Leonard Mwilu</dc:creator>
      <pubDate>Sun, 16 Aug 2026 08:47:04 +0000</pubDate>
      <link>https://dev.to/leonardmwilu139/starting-my-journey-with-data-science-and-ai-analytics-what-ive-learned-so-far-2dcf</link>
      <guid>https://dev.to/leonardmwilu139/starting-my-journey-with-data-science-and-ai-analytics-what-ive-learned-so-far-2dcf</guid>
      <description>&lt;p&gt;Hello DEV Community! 👋&lt;/p&gt;

&lt;p&gt;I'm starting a new chapter in my career journey and wanted to document my progress here. I recently enrolled in &lt;strong&gt;LUXDEV (Data Science and AI Analytics Cohort 9 2026)&lt;/strong&gt;, and I'm excited to share my first updates!&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Why I Enrolled
&lt;/h2&gt;

&lt;p&gt;I wanted to build a rock-solid foundation in Data Science and get certified instead of learning randomly without structure. My goal is to understand data analysis, structuring and how to deduce information from cleaned data, using this to make predictions and decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 What We've Covered So Far
&lt;/h2&gt;

&lt;p&gt;Here is a quick summary of what I've tackled in the first couple of modules:&lt;br&gt;
**1st Week: Software Installation and Initial Setups&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Git and GitHub:&lt;/strong&gt; Installed and set up Git on my laptop  and linked it with my existing GitHub account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DBeaver and Postgress:&lt;/strong&gt; Installed Postgress and DBeaver. Used DBeaver to create DB on Postgress.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aiven:&lt;/strong&gt; Created an account on Aiven Site. Created two services &lt;code&gt;MySQl&lt;/code&gt; and &lt;code&gt;Postgress&lt;/code&gt;. Linked both database with DBeaver for ease management.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;DBeaver is a Open Source Database management tool&lt;/li&gt;
&lt;li&gt;Aiven is a online(cloud) platform for creating database and more and gives free usage for 1 DB at a time for learning purposes.&lt;/li&gt;
&lt;li&gt;Learned about this site &lt;code&gt;DEV&lt;/code&gt; &lt;em&gt;Its the first time to hear about it&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 What's Next
&lt;/h2&gt;

&lt;p&gt;This 2nd week we dive into the real deal now that we are set.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'd love to connect with others currently taking Data Science &amp;amp; AI Analytics or learning Data Engineering. Leave a comment below or drop your favorite learning tips!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>github</category>
      <category>dbeaver</category>
      <category>postgress</category>
    </item>
  </channel>
</rss>
