<?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: Timothy M Kariuki</title>
    <description>The latest articles on DEV Community by Timothy M Kariuki (@tim_kariuki325).</description>
    <link>https://dev.to/tim_kariuki325</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%2F4071710%2Fc9e5e590-fee8-45ee-977c-d58801bdb8df.jpg</url>
      <title>DEV Community: Timothy M Kariuki</title>
      <link>https://dev.to/tim_kariuki325</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tim_kariuki325"/>
    <language>en</language>
    <item>
      <title>Power BI Technical Article: Data Modelling, Relationships &amp; Joins</title>
      <dc:creator>Timothy M Kariuki</dc:creator>
      <pubDate>Sun, 20 Sep 2026 07:04:33 +0000</pubDate>
      <link>https://dev.to/tim_kariuki325/power-bi-technical-article-data-modelling-relationships-joins-j3j</link>
      <guid>https://dev.to/tim_kariuki325/power-bi-technical-article-data-modelling-relationships-joins-j3j</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Power BI transforms raw data into actionable dashboards and reports, but the quality of these outputs depends heavily on initial data preparation. Data modeling arranges tables, keys, and relationships so Power BI can efficiently process connections between dataset components. Building a proper model boosts report performance, streamlines DAX calculations, reduces redundancy, improves scalability, and makes the system easier to navigate. This article examines essential modeling schemas, fact and dimension tables, filter directions, and Power Query joins, while highlighting the key differences between merging tables in Power Query and establishing model relationships in Power BI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Modelling
&lt;/h2&gt;

&lt;p&gt;Data modeling in Power BI is the process of structuring tables and establishing relationships between them. Rather than consolidating everything into a single, massive flat table, data is divided into distinct logical entities linked by unique keys.&lt;br&gt;
For instance, a travel agency's dataset might be split into dedicated tables such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customers (demographics, contact details)&lt;/li&gt;
&lt;li&gt;Products (tour packages, flight options)&lt;/li&gt;
&lt;li&gt;Dates (booking dates, travel dates)&lt;/li&gt;
&lt;li&gt;Locations (destinations, departure points)&lt;/li&gt;
&lt;li&gt;Sales Transactions (revenue, payment status, bookings)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A high-quality data model ensures:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Accurate Reporting: Uniform results across all pages and visuals.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2.Cleaner DAX: No need for complicated formula workarounds.&lt;/p&gt;

&lt;p&gt;3.Peak Efficiency: Faster query execution and reduced memory usage.&lt;/p&gt;

&lt;p&gt;4.Growth Potential: Easy scaling for larger datasets and new requirements.&lt;/p&gt;

&lt;p&gt;5.Simple Maintenance: Easier troubleshooting, updates, and future enhancements.&lt;/p&gt;

&lt;p&gt;Power BI implements these data modelling designs using three core schema patterns: flat, star, and snowflake.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flat table
&lt;/h2&gt;

&lt;p&gt;A Flat Table schema combines all attributes, entities, and transactional measures into a single, massive table without establishing relationships across multiple entities. It is fully denormalized, meaning data repetition is intentionally accepted instead of splitting entities into separate lookup tables.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Table Structure&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Structure: A single table containing every column needed for analysis.&lt;/li&gt;
&lt;li&gt;Granularity: Each row represents a single atomic transaction or event alongside all contextual descriptive metadata.&lt;/li&gt;
&lt;li&gt;Redundancy: High textual redundancy across rows (e.g., customer names, addresses, product descriptions, and categories are repeated on every sales row).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advantages:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Simplicity: No relationships to manage, configure, or troubleshoot.&lt;/li&gt;
&lt;li&gt;Ease of Export: Ideal for simple reporting tools or CSV exports.&lt;/li&gt;
&lt;li&gt;Quick Setup: Fast to build for ad-hoc, single-purpose analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Disadvantages:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;High Memory Footprint: Duplicate text values inflate file size and memory usage significantly.&lt;/li&gt;
&lt;li&gt;Data Anomalies: Risks update, insert, and deletion anomalies (e.g., changing a customer's region requires updating thousands of rows).&lt;/li&gt;
&lt;li&gt;Slower Performance on Large Datasets: Large text fields reduce columnar compressional efficiency in analytical engines.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Appropriate Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Simple, single-topic reporting (e.g., exporting a basic Excel sheet into Power BI).&lt;/li&gt;
&lt;li&gt;Small datasets (&amp;lt; 100,000 rows) where model architecture optimization is unnecessary.&lt;/li&gt;
&lt;li&gt;Ad-hoc data exploration and prototyping before formal modeling.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;A Star Schema separates data into a central Fact Table (containing numerical, quantitative metrics) surrounded by Dimension Tables (containing descriptive context). The schema resembles a star, where the central fact connects directly to each surrounding dimension via single-key relationships.&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%2F05nmn6xkghnjntvk1h4q.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%2F05nmn6xkghnjntvk1h4q.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Fact Table Structure:
&lt;/h3&gt;

&lt;p&gt;Central table containing foreign keys and quantitative measurements (numerical facts like quantity, revenue, cost).&lt;br&gt;
Dimension Tables: Surrounding denormalized tables containing attributes used for filtering, slicing, and grouping (e.g., Customer, Product, Date, Location).&lt;br&gt;
Relationships: Direct 1-to-Many ($1:*$) single-directional relationships from Dimensions to Fact.&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%2Fm5ldvnqp5hm0sfx04api.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%2Fm5ldvnqp5hm0sfx04api.png" alt=" " width="237" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Optimal Performance: Designed specifically for Power BI’s VertiPaq engine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simplified DAX: Filter context flows naturally from dimensions to fact tables without complex code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;High Scalability: Scales effortlessly to tens or hundreds of millions of rows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Intuitive Design: Easy for business analysts and report developers to understand.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Disadvantages:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Minor Data Redundancy: Dimension tables contain denormalized hierarchies (e.g., Category stored in Product table).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Initial Prep Required: Requires data transformation in Power Query or the data warehouse prior to reporting.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Appropriate Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Standard enterprise analytics, business intelligence dashboards, and Power BI semantic models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Datasets of any medium-to-large size requiring fast visual cross-filtering and time intelligence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Standard practice for almost all Power BI reporting solutions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;A Snowflake Schema is a variation of the star schema where dimension tables are normalized into sub-dimension tables. Hierarchies (such as Category, Subcategory, Product) are split into separate physical tables to remove data redundancy across dimensions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Table StructureFact Table:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Central table with foreign keys and quantitative values.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Normalized Dimensions: Main dimension tables connect to secondary lookup tables rather than containing all attributes directly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Relationships: Chains of 1-to-Many relationships extending outward from the fact table.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Advantages:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;No Data Redundancy: Strictly normalized dimensions conserve storage space in traditional relational databases (SQL).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data Integrity: Updates to hierarchy attributes occur in a single place.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Disadvantages:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Increased Complexity: Multiple tables create a web of relationships that complicate the model diagram.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Slower Queries: Requires evaluating multiple relationship joins across tables to filter a single report visual.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Harder DAX: Complex relationship chains can complicate filter propagation and time intelligence metrics.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Appropriate Use Cases
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Enterprise data warehouses optimized strictly for relational database storage efficiency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scenarios with extremely complex, multi-level hierarchies shared across distinct business domain entities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When source systems enforce normalization and merging them into a Star Schema is unfeasible due to ETL constraints.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Fact Tables and Dimension Table
&lt;/h2&gt;

&lt;p&gt;The fact table sits at the center of a data model. Every time a business process occurs—such as a sale, a website click, or a bank deposit—a new row is added.&lt;br&gt;
Types of Data Stored:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Additive Metrics: Numeric values you can sum across any dimension (e.g., total sales revenue, units sold).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Foreign Keys: Numerical IDs that point directly to corresponding dimension tables.Example: In a tour company database, the FACT_SALES table records each transaction with columns like &lt;code&gt;TravelDateKey&lt;/code&gt;, &lt;code&gt;CustomerKey&lt;/code&gt;, &lt;code&gt;PackageKey&lt;/code&gt;, &lt;code&gt;AgentKey&lt;/code&gt;, and &lt;code&gt;HotelKey&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dimension Table&lt;br&gt;
Dimension tables surround the fact table. They contain descriptive, textual attributes that allow users to ask "who, what, where, when, and why" about the numerical data.&lt;br&gt;
Types of Data Stored:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Attributes &amp;amp; Hierarchies: Detailed text descriptions (e.g., Product Name, Subcategory, Category).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Primary Key: A unique identifier per row used to link to the fact table.Example: A &lt;code&gt;DIM_CUSTOM&lt;/code&gt;ER table holds distinct rows for every customer with details like &lt;code&gt;CustomerName&lt;/code&gt;, &lt;code&gt;Email&lt;/code&gt;, &lt;code&gt;Gender&lt;/code&gt;, &lt;code&gt;City&lt;/code&gt;, and &lt;code&gt;Country&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Relationships in PowerBI
&lt;/h2&gt;

&lt;p&gt;In Power BI, a relationship is a logical link established between two distinct tables based on a shared column . Instead of combining all attributes into one large, flat table, relationships define how rows in one table correspond to rows in another.&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%2Ft2f3oikunm6pkfox00r6.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%2Ft2f3oikunm6pkfox00r6.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Relationships Are Necessary Across Multiple Tables
&lt;/h3&gt;

&lt;p&gt;When data is normalized and split across multiple tables, relationships are required for the following reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Enables Cross-Filtering: Relationships allow filters applied in one table (e.g., selecting a country in Dim_Customer) to automatically flow and filter data in another table (e.g., updating the total revenue in &lt;code&gt;Fact_Sales&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Eliminates Data Redundancy: Storing descriptive data (like customer addresses ) in separate lookup tables saves massive amounts of memory compared to repeating that text across millions of transaction rows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simplifies DAX Calculations: Power BI's DAX engine relies on automatic filter context propagation through active relationships. Without them, every measure would require complex, manual lookup functions like &lt;code&gt;LOOKUPVALUE()&lt;/code&gt; or &lt;code&gt;TREATAS()&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Maintains Data Integrity: Separating core entities prevents update and deletion anomalies, ensuring a product name change only needs to happen in one place rather than thousands.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Relationship Cardinalities in Power BI
&lt;/h2&gt;

&lt;p&gt;Cardinality defines the numerical relationship between the unique values in the key columns of two tables.&lt;/p&gt;

&lt;h3&gt;
  
  
  One-to-Many (1:&lt;em&gt;) / Many-to-One (&lt;/em&gt;:1)
&lt;/h3&gt;

&lt;p&gt;How it Works &lt;br&gt;
One Side : Contains unique, non-duplicate values in the key column (Primary Key).Many Side ($*$): Contains repeating values in the corresponding key column (Foreign Key).Filter context naturally flows from the One side down to the Many side.&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%2F23hnbuc0ged1hmgd27ip.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%2F23hnbuc0ged1hmgd27ip.png" alt=" " width="799" height="207"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  One-to-One (1:1)
&lt;/h3&gt;

&lt;p&gt;How it Works&lt;br&gt;
Both connected columns contain only unique values, with no duplicates on either side.&lt;br&gt;
A row in Table A matches at most one corresponding row in Table B.&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%2F6xg1ddamqi0bp644np95.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%2F6xg1ddamqi0bp644np95.png" alt=" " width="799" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Many-to-Many (&lt;em&gt;:&lt;/em&gt;)
&lt;/h3&gt;

&lt;p&gt;How it Works&lt;br&gt;
Neither column contains unique values; duplicate keys exist on both sides of the relationship.&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%2Fhntataq82s71lszrj1l6.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%2Fhntataq82s71lszrj1l6.png" alt=" " width="800" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Power BI evaluates this relationship using a non-directional or bi-directional filter context where both tables can filter each other.&lt;/p&gt;

&lt;p&gt;Primary keys act as the unique, immutable identifiers for every row in a lookup table, establishing the target "One" side of a relationship so other tables can link directly to specific records without ambiguity. Foreign keys complement this structure by residing in fact or child tables, referencing those primary keys to allow filter context to flow seamlessly without repeating descriptive metadata across transaction rows. For these connections to work reliably, unique values are essential on the primary side, guaranteeing distinct dimension entities that eliminate relationship ambiguity and maximize Power BI’s columnar compression engine. Together, these elements determine the model's cardinality the specific ratio of unique keys between tables—which dictates how filters propagate across report visuals and directly impacts DAX logic, query speed, and RAM consumption. Maintaining strict referential integrity ensures every foreign key points to a valid primary key, preventing orphaned rows in fact tables and avoiding the generation of unwanted "Blank" categories in reports. Finally, relationships operate as either active or inactive: active relationships serve as the default pathway for automatic filter propagation across standard measures, while inactive relationships remain dormant to prevent circular dependencies, offering secondary analytical pathways that can be activated dynamically on demand using specific DAX measures.&lt;/p&gt;

&lt;h2&gt;
  
  
  PowerQuery Joins
&lt;/h2&gt;

&lt;p&gt;In Power Query, a join is an operation that combines two tables horizontally based on matching values in one or more key columns, producing a single merged table. This process is executed using the Merge Queries feature, where you select a primary (first) table and a secondary (second) table, specify the key columns to match on, and choose the appropriate join type to control which rows are retained.&lt;/p&gt;

&lt;h3&gt;
  
  
  Join Types in Power Query
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
Left Outer Join
How it Works: Keeps all rows from the left (first) table and matches them with corresponding rows from the right (second) table. If a row in the left table has no match in the right table, the expanded columns from the right table will display null values.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Case: Appending lookup information (e.g., bringing product names into a sales transaction table) while ensuring no sales records are lost, even if a product ID is missing from the product list.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Right Outer Join
How it Works: Keeps all rows from the right (second) table and matches them with corresponding rows from the left (first) table. Unmatched rows from the left table are omitted, and unmatched right table rows display null values for left-table columns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Case: Analyzing master data against transactions (e.g., keeping all registered products and checking which ones have sales data from a secondary table).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Full Outer Join
How it Works: Retains all rows from both tables, regardless of whether a match exists. Where rows match, data is combined; where no match exists, null values fill the missing side.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Case: Reconciling two comprehensive lists (e.g., comparing last month's customer database with this month's database to see new, remaining, and deleted records in a single view).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Inner Join
How it Works: Retains only the rows that have a matching key in both tables. Any row from either table that lacks a corresponding match in the other table is completely filtered out.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Case: Filtering a dataset to analyze strictly active interactions (e.g., keeping only sales transactions for customers who are active subscribers listed in a VIP membership table).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Left Anti Join
How it Works: Retains only the rows from the left table that DO NOT have a match in the right table.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Case: Identifying missing or orphaned records (e.g., finding sales transactions that reference invalid or deleted product IDs that don't exist in the main product catalog).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Right Anti Join
How it Works: Retains only the rows from the right table that DO NOT have a match in the left table.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use Case: Spotting unused entities or inactive master data (e.g., finding products in the inventory catalog that have zero sales recorded in the transaction table).&lt;/p&gt;

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

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

&lt;p&gt;For a typical business intelligence project, the optimal architectural choice is a Star Schema backed by strict One-to-Many (1:∗) single-directional relationships.&lt;br&gt;
While alternative structures like Flat Tables offer quick setup and Snowflake Schemas eliminate data duplication in source databases, the Star Schema strikes the ideal balance across every critical model dimension:&lt;/p&gt;

&lt;h3&gt;
  
  
  Query &amp;amp; Report Performance:
&lt;/h3&gt;

&lt;p&gt;Power BI’s VertiPaq engine is explicitly optimized for star schemas. Storing descriptive metadata in lookup dimensions and high-cardinality numeric metrics in central fact tables maximizes columnar compression and enables high-speed query execution with minimal memory usage.&lt;/p&gt;

&lt;h3&gt;
  
  
  DAX Simplicity &amp;amp; Filter Propagation:
&lt;/h3&gt;

&lt;p&gt;A Star Schema provides a clean, single-directional filter context that flows predictably from dimension tables down to fact tables. This eliminates the need for complex, performance-heavy DAX workarounds like &lt;code&gt;CALCULATE()&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Model Readability &amp;amp; Ease of Use:
&lt;/h3&gt;

&lt;p&gt;The straightforward "center-and-spokes" layout creates an intuitive visual diagram in Power BI's Model View. Report builders can easily identify where to source slicers and visual headers (Dimension tables) versus aggregated metrics (Fact tables).&lt;/p&gt;

&lt;h3&gt;
  
  
  Controlled Redundancy vs. Complexity:
&lt;/h3&gt;

&lt;p&gt;Unlike a Snowflake Schema, which introduces a complex web of normalized tables, a Star Schema accepts minor, controlled redundancy within dimension tables (e.g., keeping Category and Subcategory in a single Product table) to eliminate relationship complexity and streamline join processing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalability &amp;amp; Long-Term Maintainability:
&lt;/h3&gt;

&lt;p&gt;As datasets grow into tens of millions of rows, a Star Schema scales efficiently. New business domains can be integrated as standalone dimension tables without disrupting existing relationship logic, making the entire solution easier to audit, update, and maintain over time.&lt;/p&gt;

</description>
      <category>data</category>
      <category>database</category>
      <category>performance</category>
    </item>
    <item>
      <title>Building an Interactive Excel Dashboard for E-commerce Product Analysis: A Case Study of Jumia Products</title>
      <dc:creator>Timothy M Kariuki</dc:creator>
      <pubDate>Sat, 12 Sep 2026 14:13:33 +0000</pubDate>
      <link>https://dev.to/tim_kariuki325/building-an-interactive-excel-dashboard-for-e-commerce-product-analysis-a-case-study-of-jumia-2a2a</link>
      <guid>https://dev.to/tim_kariuki325/building-an-interactive-excel-dashboard-for-e-commerce-product-analysis-a-case-study-of-jumia-2a2a</guid>
      <description>&lt;p&gt;E-commerce sites like Jumia gather enormous volumes of data every day, including product ratings, prices, discounts, and customer reviews. However, this data only takes on significance when it is sufficiently processed and scrutinized to reveal trends that decision-makers may take action upon, such as improving pricing strategy, honing promotions, or enhancing user interaction with the platform.&lt;/p&gt;

&lt;p&gt;In order to investigate the relationship between pricing, discounts, and customer ratings and reviews, I looked at a dataset that included 115 raw Jumia product listings. My goal was to turn a raw dataset into a polished, interactive Excel display that leadership and management could use to inform actual business choices.&lt;/p&gt;

&lt;p&gt;This article walks through the process used to turn the dataset into a clean, analysis-ready Excel Table, using structured references, data-driven thresholds, and error-aware formulas throughout.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Starting Point: Cleaning and Converting a Range into a Table
&lt;/h2&gt;

&lt;p&gt;The first part was data cleaning by deleting all the duplicate values in the  excel sheet then converted the cleaned raw data range into a proper Excel Table called &lt;strong&gt;tblProducts&lt;/strong&gt; rather than working with plain cell ranges. I could reference columns by name instead of by letter e.g &lt;code&gt;tblProducts&lt;/code&gt; [Current Price] or &lt;code&gt;tblProducts![B2:B113]&lt;/code&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%2Fir3ikeyu1gqx1815vjxp.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%2Fir3ikeyu1gqx1815vjxp.png" alt=" " width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Categorization Using IF Formulae
&lt;/h2&gt;

&lt;p&gt;I wrote three IF-based formulas to flag rows worth a second look, each evaluated per row using the [@ColumnName] syntax:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Discount check: I used this to rank the discounts:
&lt;code&gt;=IF([@Discount]="","Missing",IF([@Discount]&amp;lt;20%,"Low Discount",IF([@Discount]&amp;lt;=40%,"Medium Discount","High Discount")))&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Price check: I added this because I wanted to catch cases where the current price was higher than the old price, which usually meant a data-entry reversal:
&lt;code&gt;=IF(B2&amp;gt;D2,"Check prices","OK")&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Missing rating check, combined with a rating-quality tier:
&lt;code&gt;=IF([@Rating]="","Missing",IF([@Rating]&amp;lt;3,"Poor",IF([@Rating]&amp;lt;=4.5,"Average","Excellent")))&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Top Rated and Least Rated Products
&lt;/h2&gt;

&lt;p&gt;In order to get the least rated or the top rated products I used the conditional formatting for top  or bottom 5 products:&lt;/p&gt;

&lt;p&gt;Summarizing the Key KPIs&lt;br&gt;
In order to get a summary of my data I used the formulas below to get: MAX, AVERAGE and COUNTS of different metrics.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=ROWS(tblProducts[Product])              ' total product count&lt;br&gt;
=AVERAGE(tblProducts[Current Price])     ' average price&lt;br&gt;
=AVERAGE(tblProducts[Discount])          ' average discount&lt;br&gt;
=AVERAGE(tblProducts[Rating])            ' average rating&lt;br&gt;
=SUM(tblProducts[Review])                ' total review volume&lt;br&gt;
=MAX(tblProducts[Current Price])         ' most expensive item&lt;br&gt;
=MIN(tblProducts[Current Price])         ' least expensive item&lt;/code&gt;&lt;br&gt;
 the results were as follows:&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%2F580pbyfo5ontk1t3bfde.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%2F580pbyfo5ontk1t3bfde.png" alt=" " width="799" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Graphs and Correlation
&lt;/h2&gt;

&lt;p&gt;I used the graphs to show the relationship between different table parameters and their relationships e.g:&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%2Fz2wr9m0f58p3c9nx5hxq.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%2Fz2wr9m0f58p3c9nx5hxq.png" alt=" " width="666" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the relationship questions, I calculated Pearson correlations directly against the Table and the results were as shown below:&lt;br&gt;
&lt;code&gt;=CORREL(tblproducts!G2:G113,tblproducts!H2:H113)&lt;br&gt;
=CORREL(tblproducts!I2:I113,tblproducts!H2:H113)&lt;br&gt;
=CORREL(tblproducts!B2:B113,tblproducts!I2:I113)&lt;/code&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%2Fx760z5nxjip36zaia4t3.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%2Fx760z5nxjip36zaia4t3.png" alt=" " width="797" height="80"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Pivot Tables
&lt;/h2&gt;

&lt;p&gt;PivotTables did the heavier lifting for the rating mix, discount mix, price-vs-rating, and top-10 lists by rating, discount, and reviews each connected to slicers on Rating Category, Discount Category, and Price Category so the dashboard stays interactive rather than static.&lt;br&gt;
Example: &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%2Fumfh7g8ra7zrgpuzl8oy.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%2Fumfh7g8ra7zrgpuzl8oy.png" alt=" " width="799" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Dashboard
&lt;/h2&gt;

&lt;p&gt;I kept the dashboard to a single screen: title and slicers at top, a KPI strip (total products, average price, average discount, average rating, total reviews), three ranked top-10 panels, three scatter plots (discount-vs-reviews, rating-vs-reviews, price-vs-rating), and a mix/insights row at the bottom.&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%2Fsa6nld6p45rulckkcx4x.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%2Fsa6nld6p45rulckkcx4x.png" alt=" " width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The discount-vs-review correlation of roughly -0.15 is close enough to zero that I can't call it a real pattern hence sellers shouldn't expect a bigger markdown to automatically generate more reviews. Moreover, Highly rated products receive slightly more customer reviews hence slight positive correlation. Finally, expensive products are rated higher than cheaper products hence slight positive correlation.&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>data</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Getting Started with Excel for Data Analytics: From Basics to Data Cleaning.</title>
      <dc:creator>Timothy M Kariuki</dc:creator>
      <pubDate>Fri, 28 Aug 2026 12:01:00 +0000</pubDate>
      <link>https://dev.to/tim_kariuki325/getting-started-with-excel-for-data-analytics-from-basics-to-data-cleaning-3jpi</link>
      <guid>https://dev.to/tim_kariuki325/getting-started-with-excel-for-data-analytics-from-basics-to-data-cleaning-3jpi</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;There is a joke that says "Never publicly boast you are good at excel, there are levels". (You will be humiliated by what others can do with it ) which I think is a show of how many capabilities excel has for one to master all; there is always something you haven't learnt. As society becomes increasingly data-driven, exploring a variety of data analysis tools is essential to effectively manage and interpret information. Microsoft Excel remains a fundamental and widely accessible tool for data collection, management and analysis. Despite the rise of Artificial Intelligence (AI) transforming large-scale data handling, Excel excels(pun in 10....) at organizing and processing data into clear, readable formats. This capability is essential for extracting insights that support research, business strategy, and various data-driven projects.&lt;br&gt;
Excel is often the first tool beginners learn in data analytics because it is visual, easy to understand, and widely used in workplaces. Whether you’re managing numerical data, such as budgets, or qualitative data, such as customer survey responses, Excel workbooks let you import and organize data effectively. &lt;/p&gt;

&lt;h2&gt;
  
  
  Components And Tools of Excel
&lt;/h2&gt;

&lt;p&gt;Excel uses a grid of numbered rows (↔) and lettered columns (↕). Every piece of data sits inside a cell, which is the basic building block of a spreadsheet. Each cell gets its address from its column letter followed by its row number—meaning A1 refers to the cell in Column A, Row 1.&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%2Fl0e1e4xwz0lb5zd6qmmo.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%2Fl0e1e4xwz0lb5zd6qmmo.png" alt=" " width="558" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Excel has a ribbon at the top that give options for data manipulation and editing within the workbooks; the clickable ribbon labels across the top (Home, Insert, Page Layout, Formulas, Data, Review, View).&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%2F1rrsiqzj5qh1rda9dokr.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%2F1rrsiqzj5qh1rda9dokr.png" alt=" " width="799" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Excel offers a variety of tools found within the ribbon for data analysis that help identify trends in large datasets, saving time compared to manual analysis. Key tools include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sort and Filter&lt;/strong&gt;: Create separate views with drop-down menus to filter data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conditional Formatting&lt;/strong&gt;: Highlights data for easy reference, such as numbers exceeding a threshold or cells containing specific words.&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%2Ff7zqm4uuchvrketfjkke.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%2Ff7zqm4uuchvrketfjkke.png" alt=" " width="643" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Moreover, At the bottom of the excel workbook we find the sheets tab where you can replicate or open a new tab to to inser new data.&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%2Fj5t0khapz1z9gj7l2o9m.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%2Fj5t0khapz1z9gj7l2o9m.png" alt=" " width="577" height="52"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Finding and Replacing Data
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Finding Data&lt;/strong&gt;: Use &lt;strong&gt;Ctrl + F&lt;/strong&gt; or head to Home &amp;gt; Editing &amp;gt; Find &amp;amp; Select &amp;gt; Find. Type what you are looking for into the Find what box and click Find Next or Find All.&lt;br&gt;
&lt;strong&gt;Replacing Data&lt;/strong&gt;: Use &lt;em&gt;Ctrl + H&lt;/em&gt; or navigate to Home &amp;gt; Editing &amp;gt; Find &amp;amp; Select &amp;gt; Replace. Enter the existing text in the Find what field, type the updated content in Replace with, and choose Replace or Replace All.&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%2Fpm5aml157w49bix4ogtj.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%2Fpm5aml157w49bix4ogtj.png" alt=" " width="754" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Excel Formulae
&lt;/h3&gt;

&lt;p&gt;Excel has formulas that perform calculations, manipulate text and test conditions. Every Excel formula begins with an equal sign (=). The formulas include: Math formulas, Text formulas, Logical formulas such as below:&lt;br&gt;
&lt;strong&gt;Math formula&lt;/strong&gt;: Perform arithimetic calculations on data.&lt;br&gt;
 &lt;code&gt;=SUM(A1:A10)&lt;/code&gt; — Adds all numbers in cells A1 through A10.&lt;br&gt;
&lt;strong&gt;Logical formula&lt;/strong&gt;: Evaluate conditions and return different values based on whether the condition is true or false.&lt;br&gt;
&lt;code&gt;=IF(C2&amp;gt;=50, "Pass", "Fail")&lt;/code&gt; -If student score in C2 is 50 or higher, displays "Pass"; otherwise, displays "Fail".&lt;br&gt;
&lt;strong&gt;Text Formula&lt;/strong&gt;: Combines, cleans, or alters text strings Example: UPPER / LOWER: =&lt;code&gt;UPPER(A2)&lt;/code&gt; — Converts text in A2 to uppercase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Process of Cleaning Data
&lt;/h2&gt;

&lt;p&gt;Cleaning data in excel involves a number if steps that help eliminate inconsistencies and provide data reliability as well as readability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Elimination of Duplicates&lt;/strong&gt;: After opening the excel, sheet choose your data range, select Data &amp;gt; Remove Duplicates. Select the columns to look for duplicate values in, then allow Excel to remove the rows that are repeated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix Texts&lt;/strong&gt;: Use UPPER()/LOWER()/PROPER() to standardize capitalization across text columns. This elps to make the data in the excel readable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Investigate Missing Data in Cells&lt;/strong&gt;: find empty cells, then decide whether to fill them with a default value, a formula, or delete the row entirely.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Standardize Texts Formats&lt;/strong&gt;: Ensure that dates, numbers, and currency are stored as actual values (not text) so that sorting and calculations function properly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fix Inconsistent Data&lt;/strong&gt;: Use Filters to correct inconsistent data labels (e.g Luxdev, LxDev, L.D) and use Find &amp;amp; Replace to standardize them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Identify, Investigate and Correct/Eliminate Outliers&lt;/strong&gt;: Use formulas (MIN, MAX, AVERAGE, IFERROR) to flag values that fall outside expected ranges or contain calculation errors.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adding Additional Fields&lt;/strong&gt;: If a new field is needed e.g Full name, use CONCATENATE() to merge(first and last name) fields together.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Proper Font Formats&lt;/strong&gt;: Use the official and agreed upon fonts to format your data and make it professional.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Excel remains a vital tool for managing data, but the quality of the data determines how powerful and accurate it can be. Effective data cleaning eliminates errors, standardizes formats, and ensures accurate analysis. In the end, clean data turns Excel from a being just a spreadsheet into a trustworthy tool for confident data analysis.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>My First GitHub Project: From a Local Folder to GitHub Using Git and SSH</title>
      <dc:creator>Timothy M Kariuki</dc:creator>
      <pubDate>Fri, 21 Aug 2026 13:30:09 +0000</pubDate>
      <link>https://dev.to/tim_kariuki325/-my-first-github-project-from-a-local-folder-to-github-using-git-and-ssh--2lgc</link>
      <guid>https://dev.to/tim_kariuki325/-my-first-github-project-from-a-local-folder-to-github-using-git-and-ssh--2lgc</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Walking into a new space of learning or career means you will hear vocabularies you haven't heard before. Well, when I joined the data Analytics class I didn't know Git and GitHub and perhaps one might think that Git is the short form for GitHub. Git is a powerful distributed version control system used by developers and coders to track and manage code changes locally with features like branching and merging while web-based platform that hosts Git repositories and enables collaboration through pull requests, issues and team management. Git operates mainly via command-line interface (CLI) with optional GUI tools while GitHub provides a web-based UI plus integrations along with Git command support.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installations, Configurations and Signup to the Environments
&lt;/h3&gt;

&lt;p&gt;I started by downloading and setting up the Gitbash terminal on my computer. After successful set up I typed &lt;code&gt;cd Desktop&lt;/code&gt; command to go to my desktop folder. then used &lt;code&gt;ls&lt;/code&gt; command to list the items on my desktop folder. Next, I created a folder and named it &lt;strong&gt;Kenya-Hospital-Records-Analysis&lt;/strong&gt; using the &lt;code&gt;mkdir Kenya-Hospital-Records-Analysis&lt;/code&gt; command then used the &lt;code&gt;cd My-First-Github-Project&lt;/code&gt; to move into the folder. I created another folder called data using &lt;code&gt;mkdir Data&lt;/code&gt; and a README file using &lt;code&gt;touch README.md&lt;/code&gt; command.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a GitHub Repository
&lt;/h3&gt;

&lt;p&gt;Since I had already created a GitHub account so I tapped the add button and created a new repository named &lt;strong&gt;Kenya-Hospital-Records-Analysis&lt;/strong&gt;.  I create an SSH authentication key used when pushing project from the computer to the Github Repository. I achieve this by running the &lt;code&gt;ssh-keygen-t ed25519 -c&lt;/code&gt; command and copied the key to GitHub, authenticated and tested the connection.&lt;/p&gt;

&lt;h3&gt;
  
  
  Uploading the Project to Github
&lt;/h3&gt;

&lt;p&gt;The Git initialization process involved the following steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To test whether my computer could successfully authenticate with GitHub using SSH I run the &lt;code&gt;$ ssh -T git@github.com&lt;/code&gt; command. and used the &lt;code&gt;cd Desktop command&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I initialized the git repository inside the folder using the: &lt;code&gt;git init&lt;/code&gt; command.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After initialization I run the &lt;code&gt;git add .&lt;/code&gt; to prepare the files in the &lt;strong&gt;Kenya-Hospital-Records-Analysis&lt;/strong&gt; directory for upload and then run the &lt;code&gt;git commit -m&lt;/code&gt; command.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then comes the steps to link the local folder to the repository&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The next step involved logging in to the github repository created a new repository to load the project.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I then copied the SSH key from github and used it to link the local folder to github as shown: &lt;code&gt;git remote add origin git@github.com:Timothy*****/Kenya-Hospital-Records-Analysis&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And finally to push the project to the repository I used the command: &lt;code&gt;git push -u origin main&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With those steps above the project was uploaded to the github repository and could be viewed by the public.&lt;/p&gt;

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

&lt;p&gt; In this exercise, I went through the complete process of taking a project from a local folder on my computer and publishing it to GitHub using Git and SSH. I started by creating a local project, initializing it as a Git repository, tracking our files, and creating our first commit. Understanding this workflow provides a strong foundation for working with Git and GitHub and I believe that continued practice will give me the confidence and skills to partake more complex tasks&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>git</category>
      <category>github</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
