<?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: Jeff Oganga</title>
    <description>The latest articles on DEV Community by Jeff Oganga (@kujikaza).</description>
    <link>https://dev.to/kujikaza</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3849132%2F1cf56538-4742-414b-ac0b-f5c5e62fb443.jpg</url>
      <title>DEV Community: Jeff Oganga</title>
      <link>https://dev.to/kujikaza</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kujikaza"/>
    <language>en</language>
    <item>
      <title>What Beginners Should Know About Power BI Data Modeling</title>
      <dc:creator>Jeff Oganga</dc:creator>
      <pubDate>Mon, 30 Mar 2026 16:02:43 +0000</pubDate>
      <link>https://dev.to/kujikaza/what-beginners-should-know-about-power-bi-data-modeling-jmg</link>
      <guid>https://dev.to/kujikaza/what-beginners-should-know-about-power-bi-data-modeling-jmg</guid>
      <description>&lt;h3&gt;
  
  
  What Is Data Modeling?
&lt;/h3&gt;

&lt;p&gt;Imagine running a small online toy store. Customer details, product lists, and orders all live in separate files. Data modeling is the discipline of organizing these pieces so they connect logically, remain easy to interpret, and perform efficiently in analysis.&lt;/p&gt;

&lt;p&gt;A useful analogy is LEGO: each table is a brick, and data modeling is the instruction manual that determines how those bricks fit together into a coherent structure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Data Modeling Matters in Power BI
&lt;/h3&gt;

&lt;p&gt;Microsoft Power BI is only as effective as the model behind it.&lt;/p&gt;

&lt;p&gt;A poorly designed model leads to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slow, unresponsive reports&lt;/li&gt;
&lt;li&gt;Incorrect or inflated calculations&lt;/li&gt;
&lt;li&gt;Complex, fragile DAX formulas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A well-structured model delivers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fast, scalable dashboards&lt;/li&gt;
&lt;li&gt;Reliable metrics&lt;/li&gt;
&lt;li&gt;Simpler, maintainable logic&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Understanding Joins (Power Query)
&lt;/h3&gt;

&lt;p&gt;Before relationships, there are joins—the mechanism for combining tables based on a shared key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; In a school dataset, &lt;em&gt;Student ID&lt;/em&gt; links a student table to exam scores, allowing names and marks to appear together.&lt;/p&gt;

&lt;p&gt;Key join types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Inner Join:&lt;/strong&gt; returns only matching rows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Left Join:&lt;/strong&gt; keeps all rows from the left table, unmatched values become null&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Right Join:&lt;/strong&gt; keeps all rows from the right table, unmatched values become null&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full Outer Join:&lt;/strong&gt; keeps all rows from both tables&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Left/Right Anti Join:&lt;/strong&gt; isolates non-matching rows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These operations are performed in Power Query, where data is physically combined.&lt;/p&gt;

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

&lt;p&gt;Unlike joins, relationships connect tables without merging them.&lt;/p&gt;

&lt;h4&gt;
  
  
  Cardinality
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One-to-Many (1:M):&lt;/strong&gt; most common (e.g., one customer, many orders)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Many-to-Many (M:M):&lt;/strong&gt; risky; often requires a bridge table&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-to-One (1:1):&lt;/strong&gt; used for splitting data logically&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Cross-Filter Direction
&lt;/h4&gt;

&lt;p&gt;Controls how filters propagate between tables—critical for accurate reporting.&lt;/p&gt;

&lt;h4&gt;
  
  
  Active vs Inactive Relationships
&lt;/h4&gt;

&lt;p&gt;Only one relationship between two tables can be active.&lt;br&gt;
Example: an Orders table linked to a Date table via both &lt;em&gt;OrderDate&lt;/em&gt; and &lt;em&gt;DeliveryDate&lt;/em&gt;. One is active; the other requires &lt;code&gt;USERELATIONSHIP()&lt;/code&gt; in DAX.&lt;/p&gt;

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

&lt;p&gt;This distinction underpins all good models:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fact tables:&lt;/strong&gt; transactional data (e.g., orders, sales)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dimension tables:&lt;/strong&gt; descriptive context (e.g., customers, products)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A typical example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;DimCustomer&lt;/em&gt; → one row per customer&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;FactOrders&lt;/em&gt; → many rows per customer&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Data Schemas
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Star Schema (Best Practice)
&lt;/h4&gt;

&lt;p&gt;A central fact table surrounded by dimension tables—clean, efficient, and scalable.&lt;/p&gt;

&lt;h4&gt;
  
  
  Snowflake Schema
&lt;/h4&gt;

&lt;p&gt;A normalized extension of the star schema, where dimensions split into sub-tables.&lt;/p&gt;

&lt;h4&gt;
  
  
  Flat Table
&lt;/h4&gt;

&lt;p&gt;All data in one table. While simple, it introduces redundancy.&lt;br&gt;
Example: repeating “Alice Kamau – Kenya – Laptop” across multiple rows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Role-Playing Dimensions
&lt;/h3&gt;

&lt;p&gt;A single dimension serving multiple purposes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A Date table used for both &lt;em&gt;OrderDate&lt;/em&gt; and &lt;em&gt;DeliveryDate&lt;/em&gt; in the same model.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common Modeling Pitfalls
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ambiguous relationships:&lt;/strong&gt; multiple filter paths confuse Power BI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Many-to-many errors:&lt;/strong&gt; lead to inflated totals&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duplicate keys:&lt;/strong&gt; break 1:M assumptions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flat table overload:&lt;/strong&gt; slows performance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing relationships:&lt;/strong&gt; filters fail&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overusing bidirectional filters:&lt;/strong&gt; introduces ambiguity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each issue typically traces back to poor structure rather than calculation errors.&lt;/p&gt;




&lt;h3&gt;
  
  
  End-to-End Example: ShopEasy
&lt;/h3&gt;

&lt;p&gt;Consider &lt;em&gt;ShopEasy&lt;/em&gt;, an East African e-commerce company operating across Kenya, Uganda, Tanzania, and Rwanda.&lt;/p&gt;

&lt;p&gt;A proper model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Separates transactions into a fact table&lt;/li&gt;
&lt;li&gt;Uses dimension tables for customers, products, and dates&lt;/li&gt;
&lt;li&gt;Connects them in a star schema&lt;/li&gt;
&lt;li&gt;Applies role-playing dimensions for multiple date analyses&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Final Takeaways
&lt;/h3&gt;

&lt;p&gt;Effective data modeling in Power BI is less about complexity and more about discipline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prioritize the &lt;strong&gt;star schema&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Keep fact tables lean, dimension tables descriptive&lt;/li&gt;
&lt;li&gt;Avoid unresolved many-to-many relationships&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;single-direction filtering&lt;/strong&gt; by default&lt;/li&gt;
&lt;li&gt;Shape data in Power Query, not in the model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ultimately, a clean model is what transforms raw data into insight—reliably, repeatedly, and at scale.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>beginners</category>
      <category>data</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>My Journey With Excel</title>
      <dc:creator>Jeff Oganga</dc:creator>
      <pubDate>Sun, 29 Mar 2026 11:50:34 +0000</pubDate>
      <link>https://dev.to/kujikaza/my-journey-with-excel-3f5e</link>
      <guid>https://dev.to/kujikaza/my-journey-with-excel-3f5e</guid>
      <description>&lt;p&gt;Microsoft Excel is commonly described as a spreadsheet. In practice, it is a tool used to organise, calculate, and analyse data. It is widely used by accountants, auditors, analysts, administrators, and teachers.&lt;/p&gt;

&lt;p&gt;Lol.. just about anyone with rows of data to analyze or summarize.&lt;/p&gt;

&lt;p&gt;At a basic level, Excel is a grid made up of rows and columns. Each cell can contain data such as numbers, dates, or text, or it can contain formulas that calculate values from other cells. Around this grid, Excel provides functions for calculations, tools for cleaning data, and features for creating charts and summaries.&lt;/p&gt;

&lt;p&gt;It is used in finance for modelling, in human resources for payroll, in universities for grading, and in many other areas where data is involved.&lt;/p&gt;

&lt;p&gt;I did not learn Excel in university, and I still don't think there's a Kenyan university teaching Excel as an undergraduate course. I learned it at work, when I had tasks to complete and data to handle.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;The Audit Desk: Where It Started&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
In audit work, accuracy is required. Figures must match, and calculations must be correct. When I started working with client data, Excel became necessary.&lt;/p&gt;

&lt;p&gt;At this stage, I used basic functions such as SUM and AVERAGE, along with simple arithmetic. I also learned how to link worksheets so that values in one sheet could update another automatically.&lt;/p&gt;

&lt;p&gt;Example — Tax Computation Across Linked Sheets&lt;/p&gt;

&lt;p&gt;Gross Revenue: 4,820,000&lt;br&gt;
Allowable Deductions: 1,340,000&lt;/p&gt;

&lt;p&gt;Taxable Income:&lt;br&gt;
= Revenue – Deductions → 3,480,000&lt;/p&gt;

&lt;p&gt;Tax (30%):&lt;br&gt;
= 3,480,000 × 0.30 → 1,044,000&lt;/p&gt;

&lt;p&gt;Net Profit:&lt;br&gt;
= Revenue – Tax → 3,776,000&lt;/p&gt;

&lt;p&gt;Linking sheets meant that when one figure changed, all related calculations updated automatically. This reduced errors and saved time.&lt;/p&gt;

&lt;p&gt;This was my first clear lesson: Excel is not just for calculations. It shows how values are connected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;II. Payroll: Learning Lookups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Later, I worked with payroll data for over 400 employees. Each employee had records such as salary, deductions, and tax details.&lt;/p&gt;

&lt;p&gt;Sometimes, information was missing in one sheet but available in another. Manually searching for matches would have been slow and error-prone. This is where VLOOKUP was useful.&lt;/p&gt;

&lt;p&gt;Example — Retrieving Missing Data&lt;/p&gt;

&lt;p&gt;=VLOOKUP(A2, HR_Master!A:E, 4, FALSE)&lt;/p&gt;

&lt;p&gt;This formula:&lt;/p&gt;

&lt;p&gt;Takes a staff ID&lt;br&gt;
Searches for it in another sheet&lt;br&gt;
Returns the matching value (e.g., KRA PIN)&lt;/p&gt;

&lt;p&gt;This reduced manual work significantly.&lt;/p&gt;

&lt;p&gt;More importantly, it showed that data must be structured properly. For lookups to work, there must be a common identifier, such as a staff ID. Without it, data cannot be matched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;III. Teaching: Working with Large Tables&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I moved into teaching, I used Excel to manage student results.&lt;/p&gt;

&lt;p&gt;The challenge was not complex calculations, but handling long tables of data. With many rows and columns, it was easy to lose track of what each column represented.&lt;/p&gt;

&lt;p&gt;The Freeze Panes feature solved this by keeping headers visible while scrolling.&lt;/p&gt;

&lt;p&gt;The average shows overall performance. The standard deviation shows how spread out the scores are.&lt;/p&gt;

&lt;p&gt;This helped in understanding not just the result, but how students performed as a group.&lt;/p&gt;

&lt;p&gt;Teaching also highlighted another point: numbers need context. A value is more useful when compared to something else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IV. Data Analytics: Cleaning Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In data analytics training, I worked with larger and less structured datasets.&lt;/p&gt;

&lt;p&gt;Real data often has problems:&lt;/p&gt;

&lt;p&gt;Duplicate records&lt;br&gt;
Missing values&lt;br&gt;
Incorrect formats&lt;br&gt;
Numbers stored as text&lt;/p&gt;

&lt;p&gt;Before analysis, this data must be cleaned.&lt;/p&gt;

&lt;p&gt;Example — Data Cleaning&lt;/p&gt;

&lt;p&gt;Remove duplicates:&lt;/p&gt;

&lt;p&gt;Use “Remove Duplicates” tool&lt;/p&gt;

&lt;p&gt;Identify blanks:&lt;br&gt;
=IF(ISBLANK(B2), "Missing", B2)&lt;/p&gt;

&lt;p&gt;Convert text to date:&lt;br&gt;
=DATEVALUE(A2)&lt;/p&gt;

&lt;p&gt;Convert text to number:&lt;br&gt;
=VALUE(C2)&lt;/p&gt;

&lt;p&gt;These steps ensure that Excel reads the data correctly.&lt;/p&gt;

&lt;p&gt;After cleaning, Pivot Tables can be used to summarise data quickly. They allow you to group and analyse information without writing many formulas.&lt;/p&gt;

&lt;p&gt;A pivot table does not give answers directly. It helps organise data so that patterns can be seen.&lt;/p&gt;

&lt;p&gt;What Excel Taught Me&lt;/p&gt;

&lt;p&gt;Learning Excel did more than improve my technical skills. It changed how I think about data.&lt;/p&gt;

&lt;p&gt;At first, I saw numbers as fixed facts. Over time, I learned that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data depends on how it is collected&lt;/li&gt;
&lt;li&gt;Errors often come from poor data, not formulas&lt;/li&gt;
&lt;li&gt;Missing or inconsistent data affects results&lt;/li&gt;
&lt;li&gt;Numbers need context to be meaningful&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;A failed lookup may indicate missing records&lt;br&gt;
A wide variation in scores may show uneven learning&lt;br&gt;
Incorrect date formats can prevent proper analysis&lt;/p&gt;

&lt;p&gt;These are not software issues. They are data issues.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;I started using Excel without formal training. I learned it through work in audit, payroll, teaching, and data analysis.&lt;/p&gt;

&lt;p&gt;Excel itself is just a tool. What matters is the way it encourages you to think:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where did the data come from?&lt;/li&gt;
&lt;li&gt;Is it correct?&lt;/li&gt;
&lt;li&gt;How is it connected?&lt;/li&gt;
&lt;li&gt;What does it show, and what does it not show?
That is the main value I took from working with it.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
