<?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: Adrian Mageto</title>
    <description>The latest articles on DEV Community by Adrian Mageto (@adrian_mageto).</description>
    <link>https://dev.to/adrian_mageto</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%2F4070904%2F9ae7b655-6643-43d1-b5bb-3a87d0ce00ac.png</url>
      <title>DEV Community: Adrian Mageto</title>
      <link>https://dev.to/adrian_mageto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adrian_mageto"/>
    <language>en</language>
    <item>
      <title>Data Modelling, Relationship and Joins</title>
      <dc:creator>Adrian Mageto</dc:creator>
      <pubDate>Wed, 16 Sep 2026 05:23:25 +0000</pubDate>
      <link>https://dev.to/adrian_mageto/data-modelling-relationship-and-joins-1a12</link>
      <guid>https://dev.to/adrian_mageto/data-modelling-relationship-and-joins-1a12</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Data modelling is the process of organizing, structuring and defining relationships between data tables to enable meaningful analysis. Think of it as designing the blueprint of a building without solid foundation, everything on top will be unstable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Data Modelling Matters for Your Power BI Reports
&lt;/h2&gt;

&lt;p&gt;Performance: Well-modelled data leads to faster report refresh times and responsive visuals. Reports that take 5minutes can be reduced to 30 seconds with proper modelling. &lt;/p&gt;

&lt;p&gt;Accuracy: Proper relationships ensure your calculations produce correct results, eliminating discrepancies between reports and source data.&lt;/p&gt;

&lt;p&gt;Scalability: Good models can grow with you business without requiring complete rebuilds, saving time and resources.&lt;/p&gt;

&lt;p&gt;Maintainability: Clean models are easier to update, troubleshoot and handoff to colleagues, reducing technical debt.&lt;/p&gt;

&lt;p&gt;Simple Reports: A  good model reduces the need for complicated formulas and makes visualizations easier to create.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Modelling in Power BI
&lt;/h2&gt;

&lt;p&gt;In power BI, data modelling involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ensuring data accuracy and consistency.&lt;/li&gt;
&lt;li&gt;Creating relationships between tables.&lt;/li&gt;
&lt;li&gt;Optimizing the structure of data for performance.&lt;/li&gt;
&lt;li&gt;Defining calculated columns and measures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1: Flat Table
&lt;/h2&gt;

&lt;p&gt;Single table where all the data needed for analysis is stored together rather than being separated to fact and dimension table.&lt;/p&gt;

&lt;p&gt;Example:&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%2Fco5v9hjzpl1p82lebkdy.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%2Fco5v9hjzpl1p82lebkdy.png" alt="Flat Table" width="800" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Simple to create and understand&lt;/li&gt;
&lt;li&gt;Easy to use for small datasets.&lt;/li&gt;
&lt;li&gt;Requires fewer relationships between tables&lt;/li&gt;
&lt;li&gt;Useful for quick analysis&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;DAX measures become complex and error-prone&lt;/li&gt;
&lt;li&gt;Duplicate data everywhere&lt;/li&gt;
&lt;li&gt;Slow report performance as data grow&lt;/li&gt;
&lt;li&gt;Hard to maintain when source data changes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Star schema
&lt;/h2&gt;

&lt;p&gt;A star schema organizes data into one central fact table surrounded by several dimension tables, each directly connected to the fact table by a single relationship.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Simplicity: Easy to understand and navigate for both technical and business users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performance: Fewer joins mean faster queries and report loading times.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DAX-Friendly: Calculations are straightforward and intuitive.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalability: Easy to add new dimensions without restructuring.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User Experience: Business users can navigate relationships naturally.&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;More tables: Data is split into fact and dimension tables, so the model can be more complex than a single flat table&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Requires relationship: You need to correctly create and manage relationships between the fact and dimension tables.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Requires proper planning: You need to understand things like granularity, keys, cardinality and filter direction to build the model correctly&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Can be confusing to beginners: Someone new to Power BI may initially find multiple related tables harder to understand than one flat table.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example of a star schema:&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%2F7h97yvxhxpkdsi48cg6o.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%2F7h97yvxhxpkdsi48cg6o.png" alt="Star schema" width="799" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The "CustomerID" column contains unique values in the DimCustomer table because each customer is represented only once. In this table, "CustomerID" acts as the primary key, uniquely identifying each customer.&lt;/p&gt;

&lt;p&gt;However, the same "CustomerID" can appear multiple times in the FactSales table because the fact table records individual sales transactions. A single customer may make multiple purchases, meaning their "CustomerID" will be repeated for each transaction.&lt;/p&gt;

&lt;p&gt;For example, if customer C001 makes three purchases, C001 will appear once in the "DimCustomer" table but three times in the "FactSales" table. This creates a one-to-many (1:*) relationship, where one customer in the dimension table can be associated with many sales transactions in the fact table.&lt;/p&gt;

&lt;p&gt;This structure allows Power BI to connect customer information with their transactions and perform analysis such as total sales per customer, number of purchases, or average spending.&lt;/p&gt;

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

&lt;p&gt;The snowflake schema normalises dimension tables into sub-dimensions, creating a more complex structure. &lt;/p&gt;

&lt;p&gt;STRUCTURE:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Central fact table.&lt;/li&gt;
&lt;li&gt;Dimension table broken into normalised sub-tables&lt;/li&gt;
&lt;li&gt;More relationships and joins required &lt;/li&gt;
&lt;li&gt;Reduced data redundancy&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example of a snowflake schema
&lt;/h3&gt;

&lt;p&gt;Below is a simplified representation of how a snowflake schema model looks&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%2Fxjiqw6zopuw6tp0km0de.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%2Fxjiqw6zopuw6tp0km0de.png" alt="Snowflake schema" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Difference between a Snowflake and a Star schema
&lt;/h2&gt;

&lt;p&gt;The difference is shown 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%2Fndst3l9rz2kdzgtd77o5.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%2Fndst3l9rz2kdzgtd77o5.png" alt="Difference " width="799" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Better for certain data warehousing scenarios&lt;/li&gt;
&lt;li&gt;Improves data integrity through normalization &lt;/li&gt;
&lt;li&gt;Supports detailed hierarchical drill-down&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Slower query performance due to additional joins&lt;/li&gt;
&lt;li&gt;More complex DAX calculations required &lt;/li&gt;
&lt;li&gt;Harder for business users to navigate and understand &lt;/li&gt;
&lt;li&gt;More complex relationships to manage &lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Every star (or snowflake) schema is built from two kinds of tables that play very different roles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fact Tables
&lt;/h3&gt;

&lt;p&gt;A fact table stores the measurable, numeric business events for report analysis. It usually contains metrics, measurements or business operation facts in addition to foreign keys.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Typically stored in a fact table&lt;/strong&gt;: foreign keys to related dimensions, numeric measures (Sales Amount, Quantity, Cost), and sometimes a degenerate identifier such as as a transaction number.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Grain/ granularity&lt;/strong&gt;: The grain of a fact table is the level of detail one row represents, for example, "one row per sales order line" versus "one row per order."&lt;br&gt;
Choosing the grain correctly up front is critical: too coarse a grain loses detail needed for analysis, while too fine a grain increases row counts and file size unnecessarily. All measures in a fact table should be defined at a single, consistent grain.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Common examples: FactSales, FactOrders, Fact Transactions, FactInventory&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Dimension Tables
&lt;/h3&gt;

&lt;p&gt;A dimension table is a database table that stores attributes  describing the facts in a fact table.&lt;/p&gt;

&lt;p&gt;The dimension plays an important role in its model because they provide reference information about a set of measurable events, found in the fact table.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;**  What is typically stored in a dimension table** : a unique key column, descriptive text attributes (names, categories, regions), and sometimes hierarchies &lt;/li&gt;
&lt;li&gt;Common examples: DimCustomer, Dim product, DimDate, DimLocation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Measures vs Descriptive Attributes
&lt;/h2&gt;

&lt;p&gt;Measures are quantitative values that can be aggregated-the raw numbers in your data that you want to analyze.&lt;/p&gt;

&lt;p&gt;Example of measures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sales amount ($)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quantity sold (units)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Revenue&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Transaction Count&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Page views&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click count&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Attributes
&lt;/h3&gt;

&lt;p&gt;Are descriptive characteristics or properties of data entities. They provide additional information about the data but aren't typically aggregated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;br&gt;
Customer attributes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;li&gt;Phone number&lt;/li&gt;
&lt;li&gt;Address&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Product Attributes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Color&lt;/li&gt;
&lt;li&gt;Size &lt;/li&gt;
&lt;li&gt;Brand 
-Category&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is a practical example of of FactSales and its Dimension:&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%2F12w1i43ho4bkqc7oztq8.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%2F12w1i43ho4bkqc7oztq8.png" alt="FactSales and its Dimension" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Power BI allow users to create data models by establishing relationships between related tables.&lt;/p&gt;

&lt;p&gt;These relationships connect tables through common columns and allow filter and calculations to work across the model. Power BI can automatically detect some relationship, while others can be created or modified manually.&lt;/p&gt;

&lt;h2&gt;
  
  
  Type of Table Relationship
&lt;/h2&gt;

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

&lt;p&gt;A value in one table can be related to multiple rows in another table. This is one of the most common relationship types in PowerBI.&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%2F52n8aqcprbkqiiv28elb.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%2F52n8aqcprbkqiiv28elb.png" alt="One-to-many relationship" width="756" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; One row in DimCustomer(CustomerID =1000) relates to many rows in FactSales&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;when not to use:&lt;/strong&gt; Avoid forcing a one to many relationship between  two tables that are actually both at a "many" grain - that scenario calls for a many-to-many relationship or a bridge table instead.&lt;/p&gt;

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

&lt;p&gt;Is a relationship setting that describes how two tables are related to each other. To put it simply, it means that for each unique value in one table, there is exactly one corresponding unique value in the other table, and vice versa.&lt;/p&gt;

&lt;p&gt;Imagine you have two tables: One containing a list of students and their Students IDs, and another containing a list of courses and their courses IDs. If you establish a one-to-one cardinality relationship between these tables based on the student ID and Course ID, it means each student is enrolled  in one and only one course, and each course is taken by one and only one student.&lt;/p&gt;

&lt;p&gt;If both tables could simply be combined into one without redundancy, a one-to-one relationship is usually unnecessary complexity, merging them is often cleaner.&lt;/p&gt;

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

&lt;p&gt;Refers to a relationship between two tables where multiple values in one table can be associated with multiple values in another table.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt;
Imagine you have two tables in your Power BI project: One for "students" and another for "courses." If a student can enroll in multiple courses, and a course can have multiple students, you have a "Many-to-Many" relationship.
In this scenario, each student is associated with multiple courses, and each course is associated with many students.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;When not to use:&lt;/strong&gt;&lt;br&gt;
Many-to-Many relationship should not be used as a quick fix for poor key design; can produce double-counted aggregation if not modelled carefully, and a proper bridge table is usually a safer alternative.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keys, Cardinality and Integrity
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Keys
&lt;/h3&gt;

&lt;p&gt;Relational databases form the backbone of modern data management, ensuring data integrity and seamless relationships between datasets.&lt;br&gt;
Two critical concepts that make this possible are &lt;strong&gt;Primary Keys&lt;/strong&gt; and &lt;strong&gt;Foreign Keys&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Primary Key
&lt;/h2&gt;

&lt;p&gt;A primary key is a column (or a set of columns) in a table that uniquely identifies each row in that table . It ensures that no two rows have the same identifier, and it cannot contain null values.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key characteristics of Primary Key:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Uniqueness:&lt;/strong&gt; Ensures no duplicate values&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Non-nullability:&lt;/strong&gt; Guarantees that every row has a valid identifier.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Foreign Key
&lt;/h2&gt;

&lt;p&gt;A Foreign Key is a column (set of columns) in one table that references the Primary Key of another table. It establishes a relationship between the two tables and enforces referential integrity, ensuring that the data in the foreign key column matches data in the referenced primary key column.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Characteristics of Foreign Key
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;References a Primary Key in another table.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensures relationships between data sets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prevents invalid entries by enforcing constraints.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why Do We Need Primary Keys and Foreign Keys
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Data Integrity&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A primary Key ensures that every record is unique and identifiable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Foreign Keys ensures that relationships between tables are valid, preventing orphaned records or invalid references.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Avoid Data Redundancy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By splitting data into multiple tables and using keys to connect them, we avoid duplicating data unnecessarily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Ease of Querying Data&lt;/strong&gt;&lt;br&gt;
Keys make it easy to write queries that join tables and retrieve related data efficiently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Enforcing Business Rules&lt;/strong&gt;&lt;br&gt;
Foreign keys enforce rules such as "a student cannot enroll in a course unless they exist in a student's table"&lt;/p&gt;

&lt;h2&gt;
  
  
  Unique Values
&lt;/h2&gt;

&lt;p&gt;a dimension's key column should contain unique values so that Power BI can use it as the “one” side of a one-to-many relationship; this is precisely why CustomerID appears once per customer in DimCustomer but many times in FactSales — DimCustomer stores one description of each customer, while FactSales logs every transaction that customer generated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cardinality
&lt;/h2&gt;

&lt;p&gt;Cardinality specifies how the rows in one table are related to the rows in another table. &lt;br&gt;
Cardinality is a crucial concept in data modelling because it helps define how data from different tables can be combined and used in visualizations  and calculations.&lt;/p&gt;

&lt;p&gt;Imagine that you have a big box with only red cups and blue cups, you have a cardinality of two because there are two different kinds. But if you have a box with red, blue green and yellow cups, you have a cardinality of four because there are of different kinds.&lt;/p&gt;

&lt;p&gt;In Power BI, cardinality is important because it helps you understand how diverse your data is. It tells you how many unique values there are in a column or a set of data. This information is useful for creating charts, graphs and reports to see patterns and make decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrity
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Referential Integrity
&lt;/h3&gt;

&lt;p&gt;Is a rule that ensures that the relationships between tables in a relational database remain valid and consistent. It guarantees that a foreign key value always point to an existing valid record inn another table, thus preventing orphaned records or broken links within the data.&lt;/p&gt;

&lt;p&gt;Referential integrity ensures that every foreign key value has a corresponding primary key value in the related table.&lt;br&gt;
For example, if a foreign key in a table references a Customer ID in a customer table, referential integrity ensures that the customer ID exists.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Referential Integrity Matters
&lt;/h3&gt;

&lt;p&gt;Inconsistent or invalid relationships between tables can lead to various issues in data analysis, reporting, and application functionality. Without referential integrity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Orphaned record may exist, leading to in accurate data insights.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Applications that rely on relational  data can encounter errors or unexpected behavior.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data quality deteriorates, making it harder to maintain trust in the system.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Active and Inactive Relationships
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Active relationship
&lt;/h3&gt;

&lt;p&gt;The active relationship is the primary relationship that is used by Power BI to calculate and filter data automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inactive Relationship
&lt;/h3&gt;

&lt;p&gt;An inactive relationship is a secondary relationship activated with the Power BI DAX function temporarily whenever there is a need to perform a specific calculation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Filter Direction
&lt;/h2&gt;

&lt;p&gt;It refers to the way filters propagate between related tables in your power BI data model.&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%2F0fbmd0oqwqwd4251osmq.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%2F0fbmd0oqwqwd4251osmq.png" alt="Demonstration on selecting a value from a dimension can filter records in FactSale" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Single Direction&lt;/strong&gt;&lt;br&gt;
Filter flow in one direction, from one table to another.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Both Direction (Bi-Directional)&lt;/strong&gt;&lt;br&gt;
Filter flow in both directions between the two tables.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Filter Direction Matters
&lt;/h2&gt;

&lt;p&gt;It impacts how your visuals and calculations behave in Power BI. It determines:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Filtering:&lt;/strong&gt;&lt;br&gt;
Which rows are included or excluded in your reports based on related data .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance:&lt;/strong&gt;&lt;br&gt;
Single-Direction filters are generally more efficient, while bi-directional filters can increase complexity and computational load.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cross-Filtering relationships:&lt;/strong&gt;&lt;br&gt;
Whether interactions between tables are undirectional or bidirectional.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;When to use Bi-Directional Filtering&lt;/strong&gt;&lt;br&gt;
Useful in scenarios like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Many-to-Many relationship&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating detailed reporting where multiple table need simultaneous filtering.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Solving  specific modelling challenges where single-direction filters don't suffice.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use &lt;strong&gt;Single-Direction filters&lt;/strong&gt; by default for simplicity and performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apply &lt;strong&gt;bi-directional filters&lt;/strong&gt; only when necessary  and with caution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Always test your model to ensure filter directions work as intended without causing errors or performance degradation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Power query is a key tool for Power BI users. It help transform and combine data from different sources. With its simple features, it facilitates  cleaning, formatting, and restructuring data before intergration into Power BI.&lt;/p&gt;

&lt;p&gt;Aa major function of the power query is the ability to perform joins between tables.&lt;br&gt;
Joins are crucial for uniting data from various sources. They allow you to create coherent and useful data for your analyses.&lt;/p&gt;

&lt;h3&gt;
  
  
  Different Types of Joins in Power Query
&lt;/h3&gt;

&lt;p&gt;Power Query allows combining data from different sources. There are several types of joins. Each type has its own uses.&lt;/p&gt;

&lt;p&gt;1.&lt;strong&gt;Left Outer Join&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The left outer join includes all record from the left table. Records without a match have null values for the right table.&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt;Right Outer Join&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The right outer join includes all records from the right table. Records without a match have null values for the left table.&lt;/p&gt;

&lt;p&gt;3.&lt;strong&gt;Full Outer Join&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The full outer joins combines the results of left and right outer joins. It includes all records from both tables. Records without a match have null values.&lt;/p&gt;

&lt;p&gt;4.&lt;strong&gt;Inner Join&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The inner join is widely used. It combines records from two tables by a common key&lt;br&gt;
Only matching row included.&lt;/p&gt;

&lt;p&gt;5.&lt;strong&gt;Left Anti Join&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It returns only the contents that are contained in the lef table.&lt;/p&gt;

&lt;p&gt;6.&lt;strong&gt;Right Anti Join&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It returns only the contents that are contained in the right table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Power Query Joins vs Power BI Relationship
&lt;/h2&gt;

&lt;p&gt;Merging in Power Query and creating a relationship in the data model solve similar-sounding problems — combining information from two tables — but they work at different stages of the Power BI workflow and have very different consequences for the model.&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%2F1947s82in7z1nl3v4usq.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%2F1947s82in7z1nl3v4usq.png" alt=". A Power Query merge physically combines columns into one table; a model relationship keeps tables separate and links them logically." width="800" height="389"&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%2F4jjx03xufcx9cv6fndt7.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%2F4jjx03xufcx9cv6fndt7.png" alt="A simplified description of joins and power query" width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Excessive merging pushes a model back toward the flat-table pattern discussed in Section 1: every merge duplicates columns from one table across another, increasing redundancy and file size while making the model harder to maintain (a change to a customer's name would need to be re-merged everywhere it was copied). Keeping fact and dimension tables separate and joined only by relationships preserves the storage efficiency of the star schema, keeps each table focused on a single business concept, and lets Power BI's engine optimise filtering between them — something it cannot do once the data has already been flattened into one table by a merge.&lt;/p&gt;

&lt;p&gt;In short: use a merge in Power Query only when a query genuinely needs columns from two sources combined at the row level (for example, enriching a staging table before it is split into proper fact and dimension tables); use a relationship in the model for everything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recommended Power BI Model
&lt;/h2&gt;

&lt;p&gt;For a typical business intelligence project, a star schema, connected by one-to-many relationships filtering in a single direction from dimensions to the fact table, is the recommended design.&lt;br&gt;
A good Power BI model often follows the Star Schema. That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;One central fact table&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Several surrounding dimension tables&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All relationships are one-to-many, going from dimension to fact&lt;/p&gt;

&lt;p&gt;Why do we like this structure?&lt;/p&gt;

&lt;p&gt;✅ Better performance&lt;/p&gt;

&lt;p&gt;✅ Easier to understand and visualize&lt;/p&gt;

&lt;p&gt;✅ Works well with how Power BI handles filter context and measures&lt;/p&gt;

&lt;p&gt;Think of it like this: your fact table holds the numbers (sales, events, transactions), while your dimension tables give those numbers meaning (products, dates, customers).&lt;/p&gt;

&lt;p&gt;Avoid the “Snowflake Schema” unless you really need it. It might look neat with all those normalized layers, but it adds complexity, slows things down, and makes debugging harder.&lt;/p&gt;

&lt;p&gt;When in doubt, keep it simple. A star is all you need.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>database</category>
    </item>
    <item>
      <title>Getting started with Excel for Data Analytics: From Basics to Data Cleaning</title>
      <dc:creator>Adrian Mageto</dc:creator>
      <pubDate>Sat, 29 Aug 2026 23:57:19 +0000</pubDate>
      <link>https://dev.to/adrian_mageto/getting-started-with-excel-for-data-analytics-from-basics-to-data-cleaning-3ecg</link>
      <guid>https://dev.to/adrian_mageto/getting-started-with-excel-for-data-analytics-from-basics-to-data-cleaning-3ecg</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Excel is a program developed by Microsoft. Excel is used to organize data in column and rows and allows you to do mathematical functions.&lt;/p&gt;

&lt;p&gt;Excel is typically used for :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cleaning data&lt;/li&gt;
&lt;li&gt;Data entry &lt;/li&gt;
&lt;li&gt;Visuals and graphs&lt;/li&gt;
&lt;li&gt;Financial modeling&lt;/li&gt;
&lt;li&gt;Data analysis&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This chapter is to give you an overview of Excel. Excel is made up of the Ribbon and the Sheet.&lt;/p&gt;

&lt;p&gt;At the picture below, the ribbon is marked with a red rectangle and the sheet is marked with a green rectangle:&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%2F0fjilfi55jp7ubcnbko9.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%2F0fjilfi55jp7ubcnbko9.png" alt="Excel spreadsheet showing the ribbon highlighted in a red rectangle" width="799" height="417"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Ribbon
&lt;/h2&gt;

&lt;p&gt;The ribbon contains App launcher, Tabs ,Commands as shown in the picture 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%2F2d07oaw4es9zckjqeubm.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%2F2d07oaw4es9zckjqeubm.png" alt=" " width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Sheet Explained
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Sheet&lt;/strong&gt; is a set of row and columns. It forms the same pattern as we have in math exercise books, the rectangle boxes formed by the pattern are called cells.&lt;br&gt;
Have a look at the picture below. Hello World was typed in cell &lt;em&gt;C4&lt;/em&gt;. The reference can be found by clicking on the relevant cell and seeing the reference in the &lt;strong&gt;Name Box&lt;/strong&gt; to the left, which tells you the cell address is &lt;em&gt;C4&lt;/em&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%2Feuv9hlc8kem9yrcc103n.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%2Feuv9hlc8kem9yrcc103n.png" alt=" " width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Text: Aligned to the left by default.&lt;/li&gt;
&lt;li&gt;Numbers: Aligned to the right by default used in numeric calculations.&lt;/li&gt;
&lt;li&gt;Currency: Formatted numbers displaying currency symbols or standard calender dates.&lt;/li&gt;
&lt;li&gt;Percentanges: Decimal values  displayed as parts of 100.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Data Organization :Sorting, Filtering and Tables
&lt;/h2&gt;

&lt;p&gt;This allows for quick exploration without changing the original values. &lt;/p&gt;

&lt;h2&gt;
  
  
  Sorting and Filtering
&lt;/h2&gt;

&lt;p&gt;Ranges can be sorted using the*&lt;em&gt;Sort Ascending&lt;/em&gt;* and &lt;strong&gt;Sort Descending&lt;/strong&gt; commands.&lt;br&gt;
&lt;strong&gt;Sort Ascending&lt;/strong&gt;: from smallest to largest.&lt;br&gt;
&lt;strong&gt;Sort Descending&lt;/strong&gt;: from largest to smallest.&lt;br&gt;
The sort command work for text too, using A-Z order.&lt;br&gt;
The commands are found in the Ribbon under the &lt;strong&gt;Sort &amp;amp; Filter&lt;/strong&gt; menu.&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%2Fwdhdj14qkkxnx3p9pyca.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%2Fwdhdj14qkkxnx3p9pyca.png" alt="Excel spreadsheet showing how data is sorted" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This also means that numbers can also be sorted according to the formatted data type whether: dates, currency or age.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filtering
&lt;/h3&gt;

&lt;p&gt;Filter is similar to formatting a table, but it can be applied and deactivated.&lt;br&gt;
The menu is accessed in the default Ribbon view or in the data section in the navigation bar. &lt;br&gt;
Filters are applied by selecting a range and clicking the filter command.&lt;br&gt;
It is important to have a row of headers when applying filters. Having headers is useful to make the data understandable.&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%2Fxkuv7f5mut2srr1lxfkl.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%2Fxkuv7f5mut2srr1lxfkl.png" alt="An excel mock dataset used to show how to filter the data" width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Cleaning Tools
&lt;/h2&gt;

&lt;p&gt;Important Data Cleaning techniques:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Handle missing values: Filter to isolate blank cells, or highlight them.&lt;/li&gt;
&lt;li&gt;Removing Duplicates: Select your table go to Data&amp;gt; Remove Duplicates, and choose key columns.&lt;/li&gt;
&lt;li&gt;Trimming Extra Spaces: Using the function &lt;code&gt;=TRIM(cell address)&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Using the Find &amp;amp; Replace command&lt;code&gt;(CTRL+H)&lt;/code&gt;to swap out typos or unnecessary additional texts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;###Excel Conditional Formatting&lt;br&gt;
Conditional formatting is used to change the appearance of cells in range based on your specified &lt;strong&gt;conditions&lt;/strong&gt;.&lt;br&gt;
The conditions are rules based on specified numerical values or matching text.&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%2F2ojjrk47cs6n8o65x40j.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%2F2ojjrk47cs6n8o65x40j.png" alt="Built-in conditions and appearances " width="439" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conditional formatting is used to :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Highlight duplicate cells.&lt;/li&gt;
&lt;li&gt;Highlight blank cells.&lt;/li&gt;
&lt;li&gt;Highlight values above or below a certain number.&lt;/li&gt;
&lt;li&gt;Can be used to create data bars and set icons.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Data Validation
&lt;/h2&gt;

&lt;p&gt;Feature used to control and restrict the type of data entered into a cell.&lt;br&gt;
Data Validation can be used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create drop-down lists&lt;/li&gt;
&lt;li&gt;Allow only whole numbers within a specific range.&lt;/li&gt;
&lt;li&gt;Restrict entries  to dates or specific texts lengths.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  PivotTable
&lt;/h2&gt;

&lt;p&gt;Is a functionality in Excel which helps you organize and analyze data.&lt;br&gt;
It lets you add and remove values, perform calculations, and filter and sort data sets.&lt;br&gt;
To create one ;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on a data set, and select &lt;code&gt;Insert &amp;gt; PivotTable&lt;/code&gt;.
PivotTables have components:&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Columns
&lt;/h3&gt;

&lt;p&gt;Columns are vertical tabular data.&lt;br&gt;
The column includes the unique header, which is on the top.&lt;br&gt;
The header defines which data you are seeing listed downwards. &lt;/p&gt;

&lt;h3&gt;
  
  
  Rows
&lt;/h3&gt;

&lt;p&gt;Rows are horizontal tabular data.&lt;br&gt;
Data in the same row are related.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filters
&lt;/h3&gt;

&lt;p&gt;Filters are used to select what data you see.&lt;/p&gt;

&lt;h3&gt;
  
  
  Values
&lt;/h3&gt;

&lt;p&gt;Values define how you present the data.&lt;br&gt;
You can define how you Summarize and Show values.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fields and layout
&lt;/h2&gt;

&lt;p&gt;The TablePivot is displayed how by your settings.&lt;br&gt;
The PivotTable Fields panel is used to change how you see the data.&lt;br&gt;
The settings can be separated in two: Fields and Layout.&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%2Fpx7twkejyrafcrkuambz.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%2Fpx7twkejyrafcrkuambz.png" alt="Data set showing the pivottable field layout" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Fields
&lt;/h3&gt;

&lt;p&gt;The checkboxes can be selected or unselected to display or change the property of the data.&lt;/p&gt;

&lt;p&gt;In this example, the checkbox for Speed is selected.&lt;/p&gt;

&lt;p&gt;Speed is now displayed in the table.&lt;/p&gt;

&lt;p&gt;![ ](&lt;a href="https://dev-to-uploads.s3.us-east-2.amazonaws.com" rel="noopener noreferrer"&gt;https://dev-to-uploads.s3.us-east-2.amazonaws.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can click the downwards arrow to change how the data is presented.&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%2F69gedk5opneqn3yl6qn4.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%2F69gedk5opneqn3yl6qn4.png" alt=" " width="463" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Layout
&lt;/h3&gt;

&lt;p&gt;Drag and drop fields to the boxes to the right to display data in the table.&lt;/p&gt;

&lt;p&gt;You can drag them to the four different boxes that we mentioned earlier (four main components):&lt;/p&gt;

&lt;p&gt;Filters&lt;br&gt;
Rows&lt;br&gt;
Columns&lt;br&gt;
Values&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%2Fuykclb145msyj4dmi1il.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%2Fuykclb145msyj4dmi1il.png" alt=" " width="444" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Excel Functions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AVERAGE Function
&lt;/h3&gt;

&lt;p&gt;The AVERAGE function is a premade function in Excel, which calculates the average (arithmetic mean).&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=AVERAGE()&lt;/code&gt;&lt;br&gt;
`&lt;br&gt;
It adds the range and divides it by the number of observations.&lt;/p&gt;

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

&lt;p&gt;The average of (2, 3, 4) is 3.&lt;br&gt;
3 observations (2, 3 and 4)&lt;br&gt;
The sum of the observations (2 + 3 + 4 = 9)&lt;br&gt;
(9 / 3 = 3)&lt;br&gt;
The average is 3&lt;/p&gt;

&lt;h3&gt;
  
  
  CONCAT function
&lt;/h3&gt;

&lt;p&gt;CONCAT is a function in Excel and is short for concatenate.&lt;/p&gt;

&lt;p&gt;The CONCAT function is used to link multiple cells without adding any delimiters between the combined cell values.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=CONCAT()&lt;/code&gt;&lt;br&gt;
`&lt;/p&gt;

&lt;h3&gt;
  
  
  COUNT Function
&lt;/h3&gt;

&lt;p&gt;The COUNT function is a premade function in Excel, which counts cells with numbers in a range.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=COUNT()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note: The COUNT function only counts cells with numbers, not cells with letters. &lt;/p&gt;

&lt;h3&gt;
  
  
  COUNTA Function
&lt;/h3&gt;

&lt;p&gt;The COUNTA function is a premade function in Excel, which counts all cells in a range that has values, both numbers and letters.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=COUNTA()&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  COUNTBLANK Function
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;COUNTBLANK&lt;/strong&gt; function is a premade function in Excel, which counts blank cells in a range.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=COUNTBLANK()&lt;/code&gt;&lt;br&gt;
`&lt;br&gt;
&lt;strong&gt;Note&lt;/strong&gt;: The &lt;strong&gt;COUNTBLANK&lt;/strong&gt; function is helpful to find empty cells in a range.&lt;/p&gt;

&lt;h3&gt;
  
  
  COUNTIF Function
&lt;/h3&gt;

&lt;p&gt;The COUNTIF function is a premade function in Excel, which counts cells as specified.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=COUNTIF()&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  COUNTIFS
&lt;/h3&gt;

&lt;p&gt;The COUNTIFS function is a premade function in Excel, which counts cells in a range based on one or more true or false condition.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=COUNTIFS&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2], ...)&lt;/code&gt;&lt;br&gt;
The conditions are referred to as critera1, criteria2, .. and so on, which can check things like:&lt;/p&gt;

&lt;p&gt;If a number is greater than another number &amp;gt;&lt;br&gt;
If a number is smaller than another number &amp;lt;&lt;br&gt;
If a number or text is equal to something =&lt;br&gt;
The criteria_range1, criteria_range2, and so on, are the ranges where the function check for the conditions.&lt;/p&gt;

&lt;h3&gt;
  
  
  SUMIF Function
&lt;/h3&gt;

&lt;p&gt;The SUMIF function is a premade function in Excel, which calculates the sum of values in a range based on a true or false condition.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=SUMIF&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=SUMIF(range, criteria, [sum_range])&lt;br&gt;
&lt;/code&gt;The condition is referred to as criteria, which can check things like:&lt;/p&gt;

&lt;p&gt;If a number is greater than another number &amp;gt;&lt;br&gt;
If a number is smaller than another number &amp;lt;&lt;br&gt;
If a number or text is equal to something =&lt;br&gt;
The [sum_range] is the range where the function calculates the sum.      &lt;/p&gt;

&lt;h3&gt;
  
  
  SUMIFS Function
&lt;/h3&gt;

&lt;p&gt;The SUMIFS function is a premade function in Excel, which calculates the sum of a range based on one or more true or false condition.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=SUMIFS&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2] ...)&lt;/code&gt;&lt;br&gt;
The conditions are referred to as criteria1, criteria2, and so on, which can check things like:&lt;/p&gt;

&lt;p&gt;If a number is greater than another number &amp;gt;&lt;br&gt;
If a number is smaller than another number &amp;lt;&lt;br&gt;
If a number or text is equal to something =&lt;br&gt;
The criteria_range1, criteria_range2, and so on, are the ranges where the function check for the conditions.&lt;/p&gt;

&lt;p&gt;The [sum_range] is the range where the function calculates the sum.&lt;/p&gt;

&lt;h3&gt;
  
  
  SUM Function
&lt;/h3&gt;

&lt;p&gt;The SUM function is a premade function in Excel, which adds numbers in a range.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=SUM&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note: The &lt;code&gt;=SUM&lt;/code&gt; function adds cells in a range, both negative and positive.&lt;/p&gt;

&lt;p&gt;How to use the &lt;code&gt;=SUM&lt;/code&gt; function:&lt;/p&gt;

&lt;p&gt;Select a cell&lt;br&gt;
Type &lt;code&gt;=SUM&lt;/code&gt;&lt;br&gt;
Double click the SUM command&lt;br&gt;
Select a range&lt;br&gt;
Hit enter&lt;/p&gt;

&lt;h3&gt;
  
  
  MAX Function
&lt;/h3&gt;

&lt;p&gt;The MAX function is a premade function in Excel, which finds the highest number in a range.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=MAX&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  MIN Function
&lt;/h3&gt;

&lt;p&gt;The MIN function is a premade function in Excel, which finds the lowest number in a range.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=MIN&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  MODE Function
&lt;/h3&gt;

&lt;p&gt;The MODE function is a premade function in Excel, which is used to find the number seen most times.&lt;/p&gt;

&lt;p&gt;This function always returns a single number.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=MODE.SNGL&lt;/code&gt;&lt;br&gt;
It returns the most occurring number in a range or array.&lt;/p&gt;

&lt;h3&gt;
  
  
  MEDIAN Function
&lt;/h3&gt;

&lt;p&gt;The MEDIAN function is a premade function in Excel, which returns the middle value in the data.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=MEDIAN&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  LOWER Function
&lt;/h3&gt;

&lt;p&gt;The LOWER function is used to lowercase text in a cell.&lt;/p&gt;

&lt;p&gt;Changing the letter case of your cell values can be great when there is a lot of case inconsistency among the cell inputs or when preparing your dataset for case-sensitive usage.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=LOWER&lt;/code&gt;&lt;br&gt;
If you want to use the function on a single cell, write:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=LOWER(cell)&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  RIGHT Function
&lt;/h3&gt;

&lt;p&gt;The RIGHT function is used to retrieve a chosen amount of characters, counting from the right side of an Excel cell. The chosen number has to be greater than 0 and is set to 1 by default.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=RIGHT&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  LEFT Function
&lt;/h3&gt;

&lt;p&gt;The LEFT function is used to retrieve a chosen amount of characters, counting from the left side of an Excel cell. The chosen number has to be greater than 0 and is set to 1 by default.&lt;/p&gt;

&lt;p&gt;It is typed &lt;code&gt;=LEFT&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CONCLUSION
&lt;/h2&gt;

&lt;p&gt;Excel is a useful tool for data analytics, especially for beginners. It helps users clean, organize, analyze, and visualize data efficiently. By mastering functions and features such as data validation, conditional formatting, and data cleaning, users can turn raw data into meaningful insights.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>MY FIRST GITHUB PROJECT</title>
      <dc:creator>Adrian Mageto</dc:creator>
      <pubDate>Sat, 22 Aug 2026 15:16:04 +0000</pubDate>
      <link>https://dev.to/adrian_mageto/my-first-github-project-268j</link>
      <guid>https://dev.to/adrian_mageto/my-first-github-project-268j</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In this article I will explain my practical experience of creating Git repository,connecting it to GitHub using SSH,commiting my files and pushing the project to a remote repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 :Creating My Local Project
&lt;/h2&gt;

&lt;p&gt;The first step is to create a folder through file explorer which as the best option for me and name it (my-project)&lt;br&gt;
Next step was to open GitBash and run the command &lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd my- project&lt;/code&gt;&lt;br&gt;
To open the file directory&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2 : Initializing Git
&lt;/h2&gt;

&lt;p&gt;This is to tell Git that my my-project folder should  become a Git repository.&lt;br&gt;
To initialize Git I ran the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git init&lt;/code&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  Step 3:Repository Status Check
&lt;/h2&gt;

&lt;p&gt;After initializing Git, I used :&lt;/p&gt;

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

&lt;p&gt;This command is very useful as it can be used throughout the process  it tells what's happening inside my repository.&lt;br&gt;
At some point people may encounter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;On branch main
Nothing to commit, working on a tree clean
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It could seem like an error,however I learned that this means Git has checked my project and found no changes that need to be committed.&lt;/p&gt;

&lt;p&gt;Another situation that I encountered is where Git told me that the older my project was already initialized .This taught me to use the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git status&lt;/code&gt;&lt;br&gt;
To understand the current status of my project.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 4:Connecting GitHub Using SSH
&lt;/h2&gt;

&lt;p&gt;The next thing I learnt was on how to generate SSH key which will be used to connect my computer securely to GitHub.&lt;br&gt;
To generate an SSH key I ran the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ssh-keygen -t ed25519 -C "your_email@example.com"&lt;/code&gt;&lt;br&gt;
Under the double quotes use the email used for your GitHub account.&lt;/p&gt;

&lt;p&gt;Then press entre to save it on the default location.&lt;br&gt;
You'll then be told to enter passphrase which is simply a password,create a simple one which you can memorize easily like 1234.Then entre it again when asked.&lt;/p&gt;

&lt;p&gt;You then start the SSH agent &lt;br&gt;
Run;&lt;br&gt;
&lt;code&gt;eval "$(ssh-agent -s)"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then add your SSH keyy&lt;br&gt;
Run:&lt;br&gt;
&lt;code&gt;ssh-add ~/ .ssh/id_ed2559&lt;/code&gt;&lt;br&gt;
It will ask you to entre the passphrase you created.&lt;br&gt;
Copy your public key y running the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat ~ .ssh/id_ed25519 .pub&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add the entire line generated by coping it then go on GitHub-Settings-SSH and GPG keys-New SSH key,give it a title and paste the public key and save it.&lt;/p&gt;

&lt;p&gt;Then test the connection ack in Git Bash through the command:&lt;br&gt;
&lt;code&gt;ssh -T git@ithub.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 5:Creating a Repository on GitHub&lt;/p&gt;

&lt;p&gt;Log in to your GitHub account on the far right click on your profile scroll down to repositories press the option.&lt;/p&gt;

&lt;p&gt;After that create your repository,give it a title, add a small description about it ,choose its visibility to public finally press create repository.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 5:Adding Files
&lt;/h2&gt;

&lt;p&gt;This means to prepare the files and add changes in the current directory.&lt;/p&gt;

&lt;p&gt;To do this one runs the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git add .&lt;/code&gt;&lt;br&gt;
I could then check the status again:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git status&lt;/code&gt;&lt;br&gt;
The files would appear as changes ready to be committed.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 6:Create a Commit
&lt;/h2&gt;

&lt;p&gt;This stage is like a saved checkpoint in my project.&lt;br&gt;
To create a Commit run the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git commit -m "Initial commit"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The message "Initial commit" is just a commit statement which can be different to your preference.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 7:Connect the Local Repository to GitHub
&lt;/h2&gt;

&lt;p&gt;I connected my local repository to GitHub &lt;br&gt;
Firstly one should open GitHub go to where he repository you created is click on it then copy the SSH which is used as a location key.&lt;br&gt;
Then using the command :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git remote add origin (paste the SSH key copied from GitHub)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then to check whether the connection was established we use the command :&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git remote -v&lt;/code&gt;&lt;br&gt;
Then to ensure your current branch is called main use the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git branch -M main&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 8:Push the Project to GitHub
&lt;/h2&gt;

&lt;p&gt;To push the folder&lt;/p&gt;

&lt;p&gt;I used:&lt;br&gt;
&lt;code&gt;git push -u origin main&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The -u option sets the remote ranch as the upstream branch .This means that later I can usually use:&lt;/p&gt;

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

&lt;p&gt;Then go to your GitHub and click on your repository, you will find the folder my-project inside your online GitHub repository.&lt;/p&gt;
&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Creating my first GitHub project helped me move from simply  having  files on my computer to managing a project using a professional development workflow.&lt;/p&gt;

&lt;p&gt;To understand the Git command projects I came up with my own mnemonic "I See All Commits Reach Big Places"&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
git status 
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit&lt;span class="s2"&gt;"commit statement"&lt;/span&gt;
git remote add origin &amp;lt;repository-url&amp;gt;
git branch &lt;span class="nt"&gt;-M&lt;/span&gt; main
git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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