<?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: Anthony Kibet</title>
    <description>The latest articles on DEV Community by Anthony Kibet (@anthony_kibet_4f0cc67d37f).</description>
    <link>https://dev.to/anthony_kibet_4f0cc67d37f</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%2F3819875%2Fab3d2429-efd3-4d45-9d3a-fcc6d9216f0d.png</url>
      <title>DEV Community: Anthony Kibet</title>
      <link>https://dev.to/anthony_kibet_4f0cc67d37f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anthony_kibet_4f0cc67d37f"/>
    <language>en</language>
    <item>
      <title>Why Statistics Is the Backbone of Data Science</title>
      <dc:creator>Anthony Kibet</dc:creator>
      <pubDate>Sat, 22 Aug 2026 18:30:18 +0000</pubDate>
      <link>https://dev.to/anthony_kibet_4f0cc67d37f/why-statistics-is-the-backbone-of-data-science-169a</link>
      <guid>https://dev.to/anthony_kibet_4f0cc67d37f/why-statistics-is-the-backbone-of-data-science-169a</guid>
      <description>&lt;p&gt;Statistics isn't a supporting subject in data science, it's the thing that makes the "science" part of data science actually mean something.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code Gives You Numbers. Statistics Tells You What They Mean.
&lt;/h2&gt;

&lt;p&gt;Anyone can write a few lines of code to calculate an average, plot a chart, or run a model. What statistics adds is the ability to know whether any of that actually means anything. Is a 3% increase in sales real, or just random noise? Is that correlation between two variables meaningful, or a coincidence dressed up as a pattern? Without a statistical foundation, it's easy to mistake noise for signal, and confidently draw the wrong conclusion.&lt;/p&gt;

&lt;p&gt;This is really the core value statistics brings: it's the discipline of reasoning carefully under uncertainty, instead of just reacting to whatever the numbers seem to say on the surface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Statistics Shows Up in the Data Science Workflow
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Exploratory data analysis.&lt;/strong&gt; Before any modeling happens, statistics is what helps you actually understand a dataset. Measures like mean, median, standard deviation, and distribution shape tell you what's typical, what's an outlier, and where your data might be skewed or messy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hypothesis testing.&lt;/strong&gt; When a company wants to know if a new website design actually increases conversions, or if a new drug actually works better than a placebo, statistical hypothesis testing is what separates "it looks like it worked" from "we can say with reasonable confidence that it worked."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sampling and inference.&lt;/strong&gt; Data scientists rarely have access to an entire population's data. Statistics provides the tools to draw a sample, and then make defensible conclusions about the broader population from that smaller slice, along with an honest sense of how much uncertainty comes with that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model evaluation.&lt;/strong&gt; Every machine learning model spits out predictions, but statistics is what tells you whether those predictions are actually good. Concepts like variance, bias, confidence intervals, and significance testing are what separate a model that works from one that just looks like it works on the surface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A/B testing.&lt;/strong&gt; This is statistics in its most visible business form. Comparing two versions of a product, email, or webpage isn't just about seeing which number is bigger, it's about determining whether the difference is statistically meaningful or just random fluctuation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters More as Machine Learning Gets Easier
&lt;/h2&gt;

&lt;p&gt;Ironically, as machine learning tools get more accessible, the need for solid statistical thinking goes up, not down. It's become genuinely easy to import a model, fit it to data, and get predictions out the other end, all without deeply understanding what's happening in between. That's exactly where statistics becomes protective.&lt;/p&gt;

&lt;p&gt;Someone with a strong statistical foundation understands why a model might be overfitting, why a certain metric is misleading for an imbalanced dataset, or why a "95% accurate" model might actually be nearly useless depending on the context. Without that grounding, it's dangerously easy to build something that performs well on paper and fails badly in the real world.&lt;/p&gt;

&lt;h2&gt;
  
  
  Statistics Protects Against Misleading Conclusions
&lt;/h2&gt;

&lt;p&gt;A huge part of a data scientist's job isn't building models, it's making sure the conclusions being drawn from data are actually justified. Statistics is full of built-in guardrails for this: understanding p-values and their limitations, recognizing confounding variables, knowing the difference between correlation and causation, and being aware of common biases in how data is collected.&lt;/p&gt;

&lt;p&gt;Without these guardrails, it's easy to fall into traps that feel intuitive but are statistically wrong, like assuming a relationship between two variables means one causes the other, or trusting a small sample size as if it represents the whole population.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;Data science borrows tools from computer science, but its judgment comes from statistics. Code is what lets you process and manipulate data at scale, but statistics is what lets you trust, question, and correctly interpret what that data is actually telling you. A data scientist without statistical grounding can still produce charts and models, but a data scientist with it can tell you whether those charts and models deserve to be believed in the first place. That distinction is, in a lot of ways, the entire point of the field.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>data</category>
      <category>datascience</category>
      <category>science</category>
    </item>
    <item>
      <title>Linux in Real-World Data Engineering</title>
      <dc:creator>Anthony Kibet</dc:creator>
      <pubDate>Fri, 21 Aug 2026 11:01:13 +0000</pubDate>
      <link>https://dev.to/anthony_kibet_4f0cc67d37f/linux-in-real-world-data-engineering-2fid</link>
      <guid>https://dev.to/anthony_kibet_4f0cc67d37f/linux-in-real-world-data-engineering-2fid</guid>
      <description>&lt;p&gt;Linux is the one most people never see at all, even though it's running underneath almost everything in modern data engineering. Servers, databases, pipelines, cloud infrastructure: a huge share of it runs on Linux, quietly, in the background. For anyone moving from writing scripts to actually engineering data systems, understanding Linux stops being optional pretty quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Data Engineering Runs on Linux
&lt;/h2&gt;

&lt;p&gt;Linux dominates this space for a few practical reasons. It's stable, it's free and open-source, and it's built to run unattended for long stretches without needing a GUI or constant babysitting. Cloud providers like AWS, Google Cloud, and Azure run the overwhelming majority of their infrastructure on Linux, which means the pipelines, databases, and servers data engineers build almost always live on it too.&lt;/p&gt;

&lt;p&gt;It's also the default environment for the tools data engineers rely on daily. Things like Apache Spark, Airflow, Kafka, and PostgreSQL were built with Linux environments in mind, and documentation, community support, and production setups almost always assume you're working in one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Scenarios Where Linux Shows Up
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hosting databases and data warehouses.&lt;/strong&gt; Systems like PostgreSQL, MySQL, and MongoDB are commonly deployed on Linux servers, whether that's an on-premises machine or a cloud instance. Data engineers regularly SSH into these servers to manage configurations, check logs, or troubleshoot performance issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Running scheduled data pipelines.&lt;/strong&gt; ETL and ELT jobs, the processes that extract, transform, and load data between systems, are often scheduled and executed on Linux machines using tools like cron jobs or orchestration platforms like Airflow, which itself typically runs on Linux.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud infrastructure and containers.&lt;/strong&gt; Most cloud virtual machines default to a Linux distribution, and container technologies like Docker are built directly on Linux's architecture. A data engineer spinning up a containerized pipeline is, under the hood, working with Linux whether they realize it or not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log monitoring and debugging.&lt;/strong&gt; When a pipeline fails at 2 a.m., the first stop is usually a Linux server's log files. Being comfortable navigating the command line to find, filter, and read logs is often the difference between a five-minute fix and a multi-hour outage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automating repetitive tasks.&lt;/strong&gt; Shell scripting lets data engineers automate things like moving files, cleaning up old logs, or kicking off a data job on a schedule, without needing a full application to do it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Skills and Tools That Do the Heavy Lifting
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The command line (Bash).&lt;/strong&gt; This is the foundation. Navigating directories with &lt;code&gt;cd&lt;/code&gt; and &lt;code&gt;ls&lt;/code&gt;, moving and copying files with &lt;code&gt;mv&lt;/code&gt; and &lt;code&gt;cp&lt;/code&gt;, and managing permissions with &lt;code&gt;chmod&lt;/code&gt; are everyday actions, not occasional ones. A huge share of data engineering work happens through a terminal rather than a graphical interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;grep and text processing.&lt;/strong&gt; Searching through massive log files or datasets for specific patterns is a constant need. &lt;code&gt;grep&lt;/code&gt; lets you filter for a specific error message across thousands of lines almost instantly, and pairing it with tools like &lt;code&gt;awk&lt;/code&gt; and &lt;code&gt;sed&lt;/code&gt; allows for quick text transformations directly from the command line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Piping and redirection.&lt;/strong&gt; The &lt;code&gt;|&lt;/code&gt; operator lets you chain commands together, feeding the output of one directly into another. For example, listing files, filtering them by name, and counting the results, all in a single line, without writing a script.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cron jobs.&lt;/strong&gt; Cron is Linux's built-in job scheduler, and it's the classic way to automate recurring tasks, like running a data pipeline every night at midnight or cleaning up temporary files every week. A single line in a crontab file can replace a task someone would otherwise have to remember to do manually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File permissions and ownership.&lt;/strong&gt; Understanding &lt;code&gt;chmod&lt;/code&gt; and &lt;code&gt;chown&lt;/code&gt; matters more than it seems, especially in shared environments where multiple services or team members interact with the same files. Getting permissions wrong can silently break a pipeline or expose sensitive data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SSH.&lt;/strong&gt; Secure Shell is how engineers connect to remote servers to manage them. Almost all cloud-based data work involves SSHing into a machine at some point, whether to check on a job, install software, or debug an issue directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Environment variables and .env files.&lt;/strong&gt; Storing credentials and configuration outside of actual code is a standard practice, and Linux environments make this straightforward to manage, keeping sensitive information like database passwords out of version control.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It All Comes Together
&lt;/h2&gt;

&lt;p&gt;A typical real-world scenario might look like this: a data pipeline is scheduled to run every night via a cron job on a Linux server. It pulls data from an API, and if something goes wrong, the engineer SSHes into the server, uses &lt;code&gt;grep&lt;/code&gt; to scan the log files for the specific error, checks file permissions to make sure the script had access to what it needed, and pushes a fix, all without ever touching a graphical interface. None of these steps are exotic on their own, but together they represent a huge share of what keeps real-world data systems running smoothly behind the scenes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;Linux doesn't get talked about the way flashy data tools do, but it's the environment almost everything else sits on top of. Learning the command line, basic scripting, and how to navigate a Linux system isn't a side skill for data engineers, it's close to a prerequisite. The pipelines, databases, and cloud infrastructure that modern data work depends on are, more often than not, quietly running on Linux the entire time.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>dataengineering</category>
      <category>infrastructure</category>
      <category>linux</category>
    </item>
    <item>
      <title>Understanding Data Modeling in Power BI</title>
      <dc:creator>Anthony Kibet</dc:creator>
      <pubDate>Thu, 20 Aug 2026 18:52:43 +0000</pubDate>
      <link>https://dev.to/anthony_kibet_4f0cc67d37f/understanding-data-modeling-in-power-bi-2i3n</link>
      <guid>https://dev.to/anthony_kibet_4f0cc67d37f/understanding-data-modeling-in-power-bi-2i3n</guid>
      <description>&lt;p&gt;Data modeling is the part of Power BI that separates people who can build a chart from people who can build a dashboard that actually holds up. It's less flashy than a slick visual, but it's the foundation everything else sits on. Get it wrong, and your numbers quietly lie to you. Get it right, and the rest of the report practically builds itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Data Modeling Actually Is
&lt;/h2&gt;

&lt;p&gt;At its core, data modeling is the process of organizing your data tables and defining how they relate to each other so that a tool like Power BI can pull accurate, consistent answers out of them. Instead of dumping every column into one giant table, you break data into logical, connected pieces, then tell Power BI how those pieces fit together.&lt;/p&gt;

&lt;p&gt;Think of it like organizing a filing cabinet. You could throw every document into one folder, but finding anything would be painful, and duplicates would pile up fast. Instead, you create separate folders (tables) for customers, orders, and products, then create a system for cross-referencing them. That cross-referencing system is essentially what relationships do in Power BI.&lt;/p&gt;

&lt;p&gt;Good data modeling makes reports faster, calculations more accurate, and the whole system easier to maintain as your data grows.&lt;/p&gt;

&lt;h2&gt;
  
  
  All Six SQL Joins, With Real-Life Examples
&lt;/h2&gt;

&lt;p&gt;Joins are how you combine rows from two or more tables based on a related column. Even though Power BI handles a lot of this visually through relationships, understanding joins at the SQL level makes everything about Power BI's relationship system click faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. INNER JOIN&lt;/strong&gt; — Returns only the rows that match in both tables.&lt;br&gt;
&lt;em&gt;Example:&lt;/em&gt; You have a &lt;code&gt;Customers&lt;/code&gt; table and an &lt;code&gt;Orders&lt;/code&gt; table. An inner join returns only customers who've actually placed an order, leaving out anyone who signed up but never bought anything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. LEFT JOIN (LEFT OUTER JOIN)&lt;/strong&gt; — Returns everything from the left table, plus matching rows from the right table. Unmatched rows from the right table show up as null.&lt;br&gt;
&lt;em&gt;Example:&lt;/em&gt; Pulling all customers, even ones with zero orders, so you can identify inactive accounts. Customers without a matching order still appear, just with empty order details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. RIGHT JOIN (RIGHT OUTER JOIN)&lt;/strong&gt; — The mirror image of a left join: everything from the right table, plus matches from the left.&lt;br&gt;
&lt;em&gt;Example:&lt;/em&gt; If you flip the query around and start from &lt;code&gt;Orders&lt;/code&gt;, a right join back to &lt;code&gt;Customers&lt;/code&gt; would return all orders, even ones where the customer record was somehow deleted, with blank customer info for those.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. FULL OUTER JOIN&lt;/strong&gt; — Returns everything from both tables, matched where possible, with nulls filling in the gaps on either side.&lt;br&gt;
&lt;em&gt;Example:&lt;/em&gt; Comparing a list of registered employees against a list of building badge swipes, to catch both employees who never badged in and badge swipes with no matching employee record.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. CROSS JOIN&lt;/strong&gt; — Returns every possible combination of rows between two tables, with no matching condition at all.&lt;br&gt;
&lt;em&gt;Example:&lt;/em&gt; Combining a list of 5 products with a list of 12 months to generate every product/month pairing, useful for building a complete forecasting template even before actual sales numbers exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. SELF JOIN&lt;/strong&gt; — A table joined to itself, useful when rows in a table reference other rows in that same table.&lt;br&gt;
&lt;em&gt;Example:&lt;/em&gt; An &lt;code&gt;Employees&lt;/code&gt; table with a &lt;code&gt;ManagerID&lt;/code&gt; column that refers back to another employee's ID. A self join lets you list each employee next to their manager's name, even though both live in the same table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Power BI Relationships: Cardinality, Cross-Filter Direction, and Active vs. Inactive
&lt;/h2&gt;

&lt;p&gt;Relationships are how Power BI replicates the effect of SQL joins, but instead of writing a join every time you query, you define the relationship once, and Power BI applies it automatically across your visuals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cardinality&lt;/strong&gt; describes the type of relationship between two tables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One-to-many (1:*)&lt;/strong&gt; — the most common type. One row in a table (like &lt;code&gt;Products&lt;/code&gt;) relates to many rows in another (like &lt;code&gt;Sales&lt;/code&gt;). One product, many sales transactions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Many-to-one (*:1)&lt;/strong&gt; — the same relationship, just viewed from the other direction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-to-one (1:1)&lt;/strong&gt; — each row in one table relates to exactly one row in another, like an &lt;code&gt;Employees&lt;/code&gt; table and a separate &lt;code&gt;EmployeeContactDetails&lt;/code&gt; table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Many-to-many (&lt;em&gt;:&lt;/em&gt;)&lt;/strong&gt; — rows in both tables can relate to multiple rows in the other, like &lt;code&gt;Students&lt;/code&gt; and &lt;code&gt;Courses&lt;/code&gt;, where a student takes many courses and a course has many students.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cross-filter direction&lt;/strong&gt; controls which way filtering flows through the relationship:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single direction&lt;/strong&gt; — filtering flows one way only, typically from the "one" side to the "many" side. This is the default and the safest choice for most models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Both (bidirectional)&lt;/strong&gt; — filtering flows both ways. This can be useful in specific cases but often causes ambiguous filtering and performance issues if overused, so it's usually best used sparingly and intentionally.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Active vs. inactive relationships:&lt;/strong&gt; Power BI only allows one &lt;em&gt;active&lt;/em&gt; relationship between two tables at a time, shown as a solid line in the model view. Any additional relationship between the same two tables becomes &lt;em&gt;inactive&lt;/em&gt;, shown as a dashed line, and won't apply automatically. Inactive relationships still exist and can be used deliberately inside a DAX formula using the &lt;code&gt;USERELATIONSHIP&lt;/code&gt; function, which is exactly how role-playing dimensions get handled.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fact Tables vs. Dimension Tables
&lt;/h2&gt;

&lt;p&gt;This distinction is central to how Power BI models are structured.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fact tables&lt;/strong&gt; hold the measurable, numeric events of your business, things that happened: sales transactions, website visits, shipments. They tend to be long (lots of rows) and narrow (fewer columns), and they usually contain foreign keys linking out to dimension tables.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dimension tables&lt;/strong&gt; hold the descriptive context around those events: who, what, where, when. A &lt;code&gt;Customers&lt;/code&gt; table, a &lt;code&gt;Products&lt;/code&gt; table, and a &lt;code&gt;Date&lt;/code&gt; table are all dimensions. They tend to be shorter in row count but wider in columns, full of descriptive attributes used for filtering and grouping.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Example:&lt;/em&gt; A &lt;code&gt;Sales&lt;/code&gt; fact table might just have a date, a product ID, a customer ID, and a quantity sold. The &lt;code&gt;Products&lt;/code&gt; dimension table then holds the product name, category, and price, so you're not repeating that information across thousands of sales rows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Star, Snowflake, and Flat Table Schemas
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Star schema&lt;/strong&gt; is the gold standard for most Power BI models. A single fact table sits in the center, directly connected to multiple dimension tables around it, like points on a star. It's simple, fast, and easy for both Power BI and the people building reports to understand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snowflake schema&lt;/strong&gt; takes the star schema a step further by normalizing dimension tables into additional related sub-tables. For example, instead of one flat &lt;code&gt;Products&lt;/code&gt; table, you might split it into &lt;code&gt;Products&lt;/code&gt; and a separate &lt;code&gt;ProductCategories&lt;/code&gt; table. This reduces data duplication but adds complexity and can slow down performance, since Power BI has to traverse more relationships to pull the same information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flat table schema&lt;/strong&gt; dumps everything into a single wide table, no separate fact or dimension tables at all. It's the simplest to look at, but it scales poorly, duplicates data constantly, and makes calculations messier as the dataset grows. It's generally something to avoid once a model gets beyond a very small, simple use case.&lt;/p&gt;

&lt;p&gt;For most real-world Power BI projects, star schema is the recommended approach: fast, clean, and scalable.&lt;/p&gt;

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

&lt;p&gt;A role-playing dimension is a single dimension table that logically applies to a fact table in more than one way. The classic example is a &lt;code&gt;Date&lt;/code&gt; table.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Example:&lt;/em&gt; A &lt;code&gt;Sales&lt;/code&gt; fact table might have an &lt;code&gt;OrderDate&lt;/code&gt;, a &lt;code&gt;ShipDate&lt;/code&gt;, and a &lt;code&gt;DeliveryDate&lt;/code&gt;. All three dates logically relate back to the same &lt;code&gt;Date&lt;/code&gt; dimension table, but Power BI only allows one active relationship between two tables at a time. So one relationship (say, to &lt;code&gt;OrderDate&lt;/code&gt;) stays active, while the other two become inactive.&lt;/p&gt;

&lt;p&gt;To actually use those inactive relationships, you write DAX measures using &lt;code&gt;USERELATIONSHIP&lt;/code&gt;, explicitly telling a calculation which relationship to use for that specific measure, like calculating total sales by ship date instead of order date.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Modeling Mistakes (and How to Fix Them)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Using a flat, single-table model.&lt;/strong&gt; It feels easier at first, but it causes duplicated data and messy calculations down the line. &lt;em&gt;Fix:&lt;/em&gt; break the data into proper fact and dimension tables and connect them with relationships.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overusing bidirectional filtering.&lt;/strong&gt; It's tempting to set every relationship to "both" to avoid filtering issues, but this often creates ambiguous results and hurts performance. &lt;em&gt;Fix:&lt;/em&gt; default to single-direction relationships, and only use bidirectional filtering when there's a clear, specific reason.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating many-to-many relationships unintentionally.&lt;/strong&gt; This usually happens when a supposed "dimension" table actually has duplicate values in its key column. &lt;em&gt;Fix:&lt;/em&gt; check for and remove duplicates in dimension tables, or build a proper bridge table if a true many-to-many relationship is unavoidable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Missing or incomplete date tables.&lt;/strong&gt; Relying on the dates buried inside a fact table instead of a dedicated date table limits your ability to do time intelligence calculations properly. &lt;em&gt;Fix:&lt;/em&gt; build a dedicated &lt;code&gt;Date&lt;/code&gt; table and mark it as a date table in Power BI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snowflaking unnecessarily.&lt;/strong&gt; Normalizing dimensions when there's no real need adds complexity without much benefit. &lt;em&gt;Fix:&lt;/em&gt; default to a star schema unless there's a specific storage or data integrity reason to snowflake.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not marking active vs. inactive relationships intentionally.&lt;/strong&gt; Letting Power BI pick relationships by default, without understanding which one is active, can silently produce wrong numbers on a report. &lt;em&gt;Fix:&lt;/em&gt; review relationships in the model view and consciously decide which should be active, using &lt;code&gt;USERELATIONSHIP&lt;/code&gt; in DAX for the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step-by-Step: Applying These Concepts in Power BI
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Building a relationship between two tables&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Power BI Desktop and go to the &lt;strong&gt;Model&lt;/strong&gt; view (the icon on the left sidebar that looks like connected tables).&lt;/li&gt;
&lt;li&gt;Drag a field from one table (usually the foreign key, like &lt;code&gt;ProductID&lt;/code&gt; in the &lt;code&gt;Sales&lt;/code&gt; table) onto the matching field in another table (&lt;code&gt;ProductID&lt;/code&gt; in the &lt;code&gt;Products&lt;/code&gt; table).&lt;/li&gt;
&lt;li&gt;In the dialog that appears, confirm or adjust the cardinality (Power BI usually detects it automatically) and set the cross-filter direction.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt;. The relationship now appears as a line connecting the two tables in the model view.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Setting cardinality and cross-filter direction manually&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In Model view, double-click an existing relationship line to open its settings.&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Cardinality&lt;/strong&gt;, choose the correct option (one-to-many, one-to-one, etc.) based on your data.&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Cross-filter direction&lt;/strong&gt;, choose &lt;strong&gt;Single&lt;/strong&gt; or &lt;strong&gt;Both&lt;/strong&gt; depending on your needs, defaulting to Single unless you have a specific reason otherwise.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; to save.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Creating an inactive relationship for role-playing dimensions&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create the relationship as usual between your fact table and dimension table (for example, &lt;code&gt;Sales[ShipDate]&lt;/code&gt; to &lt;code&gt;Date[Date]&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;If an active relationship already exists between these two tables through another column, Power BI will automatically make this new one inactive, shown as a dashed line.&lt;/li&gt;
&lt;li&gt;To use it, go to a new measure in the &lt;strong&gt;Data&lt;/strong&gt; or &lt;strong&gt;Report&lt;/strong&gt; view and write a DAX formula using &lt;code&gt;USERELATIONSHIP&lt;/code&gt;, for example:
&lt;code&gt;Sales by Ship Date = CALCULATE(SUM(Sales[Amount]), USERELATIONSHIP(Sales[ShipDate], 'Date'[Date]))&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Building a star schema&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identify your fact table (the one with transactional, numeric data).&lt;/li&gt;
&lt;li&gt;Identify your dimension tables (descriptive tables like &lt;code&gt;Customers&lt;/code&gt;, &lt;code&gt;Products&lt;/code&gt;, &lt;code&gt;Date&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;In Model view, connect each dimension table directly to the fact table using one-to-many relationships, avoiding chains where dimensions connect to other dimensions.&lt;/li&gt;
&lt;li&gt;Arrange the tables visually with the fact table in the middle and dimensions around it, purely for clarity, though Power BI doesn't require this layout to function.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Creating and marking a proper Date table&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Modeling&lt;/strong&gt; tab and select &lt;strong&gt;New Table&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Use a DAX formula like &lt;code&gt;Date = CALENDAR(DATE(2020,1,1), DATE(2026,12,31))&lt;/code&gt; to generate a continuous date range.&lt;/li&gt;
&lt;li&gt;Add extra columns as needed, like Year, Month, or Quarter, using DAX functions such as &lt;code&gt;YEAR()&lt;/code&gt; and &lt;code&gt;FORMAT()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Select the new table, go to the &lt;strong&gt;Table tools&lt;/strong&gt; tab, and click &lt;strong&gt;Mark as date table&lt;/strong&gt;, then select the date column.&lt;/li&gt;
&lt;li&gt;Connect this table to your fact table's date columns as needed.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;Data modeling in Power BI isn't just a technical setup step, it's the difference between a report that gives trustworthy answers and one that quietly produces the wrong numbers with total confidence. Understanding joins, relationships, schema types, and common pitfalls gives you the foundation to build models that are accurate, fast, and easy to maintain as your data grows. Visuals get the attention, but the model underneath is what makes them worth trusting.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>data</category>
      <category>database</category>
    </item>
    <item>
      <title>Excel in Real-World Data Analysis</title>
      <dc:creator>Anthony Kibet</dc:creator>
      <pubDate>Wed, 19 Aug 2026 08:23:18 +0000</pubDate>
      <link>https://dev.to/anthony_kibet_4f0cc67d37f/-excel-in-real-world-data-analysis-still-the-workhorse-2608</link>
      <guid>https://dev.to/anthony_kibet_4f0cc67d37f/-excel-in-real-world-data-analysis-still-the-workhorse-2608</guid>
      <description>&lt;h3&gt;
  
  
  Why Excel Still Matters
&lt;/h3&gt;

&lt;p&gt;Part of it is accessibility. Nearly every business, from a five-person startup to a multinational corporation, has Excel installed somewhere. It doesn't need a server, a coding environment, or a dedicated data team to get value out of it. Someone in finance, marketing, or operations can open a spreadsheet, drop in some numbers, and start finding answers within minutes.&lt;/p&gt;

&lt;p&gt;The other part is flexibility. Excel isn't just a place to store data, it's a full workspace for cleaning, exploring, calculating, visualizing, and presenting it, all in one file. That combination is hard to beat for quick, everyday analysis, even in companies that also use heavier tools for larger-scale work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-World Scenarios Where Excel Shows Up
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Financial reporting and budgeting.&lt;/strong&gt; Finance teams build monthly and quarterly reports in Excel constantly, tracking revenue, expenses, and variances against budget. Formulas handle the math, formatting highlights what needs attention, and the same template gets reused month after month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sales and performance tracking.&lt;/strong&gt; Sales teams use Excel to monitor pipeline, commissions, and quota attainment. A regional manager might pull a report from a CRM, drop it into Excel, and use it to break down performance by rep, product line, or region.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inventory and operations.&lt;/strong&gt; Small and mid-sized businesses often manage stock levels, reorder points, and supplier data in Excel, especially before they've invested in dedicated inventory software. It's common to see formulas flagging low-stock items automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data cleaning before deeper analysis.&lt;/strong&gt; Even in companies that eventually move data into Python or a database, Excel is frequently the first stop. Analysts use it to scan for obvious errors, missing values, and formatting issues before anything gets pushed downstream.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ad hoc analysis and one-off questions.&lt;/strong&gt; Not every question needs a full pipeline. When a manager asks "how did this product perform last quarter compared to the one before it," Excel is often the fastest way to get an answer, since the data's usually already sitting in a spreadsheet somewhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  Formulas and Features That Do the Heavy Lifting
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;VLOOKUP / XLOOKUP.&lt;/strong&gt; These are the classic tools for pulling matching data from another table, like grabbing a customer's region based on their ID. XLOOKUP is the newer, more flexible version, handling both directions of lookup and dealing with errors more gracefully than VLOOKUP ever did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pivot Tables.&lt;/strong&gt; Arguably Excel's most powerful feature for analysis. Pivot tables let you summarize thousands of rows into a digestible table in seconds, grouping data by category, calculating totals or averages, and reshaping it without touching a single formula. A sales dataset with 10,000 transactions can become a clean summary of revenue by month and region in just a few clicks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IF statements and nested logic.&lt;/strong&gt; Conditional formulas like &lt;code&gt;IF&lt;/code&gt;, &lt;code&gt;IFS&lt;/code&gt;, and &lt;code&gt;SUMIF&lt;/code&gt;/&lt;code&gt;SUMIFS&lt;/code&gt; let analysts apply business logic directly into the data. For example, flagging orders as "Late" or "On Time" based on a shipping date, or summing revenue only for a specific product category.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;COUNTIF / COUNTIFS.&lt;/strong&gt; These handle quick counting tasks, like figuring out how many transactions fall into a certain category or how many days a metric stayed above a threshold, without needing a full pivot table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conditional Formatting.&lt;/strong&gt; This turns raw numbers into visual signals, coloring cells red for underperformance or green for hitting a target. It's a small feature, but it dramatically speeds up how quickly someone can scan a report and spot what matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Validation.&lt;/strong&gt; Used to control what gets entered into a spreadsheet in the first place, like restricting a column to a dropdown list of approved categories. This matters more than it sounds, since messy input at the source is one of the biggest causes of bad analysis down the line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Charts and sparklines.&lt;/strong&gt; Built-in charting tools let analysts turn a table of numbers into a trend line or bar chart without leaving the spreadsheet, which is often enough for a quick internal report or presentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It All Comes Together
&lt;/h2&gt;

&lt;p&gt;A typical real-world Excel workflow might look like this: pull raw data from an internal system, clean it up using &lt;code&gt;IF&lt;/code&gt; and data validation to catch inconsistencies, use &lt;code&gt;XLOOKUP&lt;/code&gt; to merge in reference data from another sheet, build a pivot table to summarize the numbers by category, apply conditional formatting to highlight outliers, and finish with a chart summarizing the trend for a report or meeting. None of these steps requires advanced technical skill on their own, but combined, they cover a huge share of what "data analysis" actually means in most workplaces.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Takeaway
&lt;/h3&gt;

&lt;p&gt;Excel doesn't get the same spotlight as newer data tools, but it's still where a massive amount of real-world analysis actually happens. It's not about being the most powerful tool available, it's about being fast, familiar, and flexible enough to handle the everyday questions businesses need answered. Learning it well, formulas, pivot tables, and all, isn't just a stepping stone to "real" data analysis. For a lot of roles, it is the real analysis.&lt;/p&gt;

</description>
      <category>analysis</category>
      <category>analytics</category>
      <category>data</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Understanding Data Modelling in Power BI: Joins, Relationships, and Schemas Explained</title>
      <dc:creator>Anthony Kibet</dc:creator>
      <pubDate>Mon, 30 Mar 2026 09:19:34 +0000</pubDate>
      <link>https://dev.to/anthony_kibet_4f0cc67d37f/understanding-data-modelling-in-power-bi-joins-relationships-and-schemas-explained-5528</link>
      <guid>https://dev.to/anthony_kibet_4f0cc67d37f/understanding-data-modelling-in-power-bi-joins-relationships-and-schemas-explained-5528</guid>
      <description>&lt;p&gt;Data modeling is like building a well-organized library 📚. It helps us connect different pieces of information in a way that makes analysis easy and meaningful. In Power BI, data modeling is the process of defining how tables relate to each other, making sure data flows smoothly for reporting and insights. It involves creating &lt;strong&gt;relationships&lt;/strong&gt;, understanding &lt;strong&gt;joins&lt;/strong&gt;, and designing &lt;strong&gt;schemas&lt;/strong&gt; — all to turn raw data into useful stories.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is Data Modeling?
&lt;/h2&gt;

&lt;p&gt;Imagine collecting data from different sources: sales data, customer info, products, and more. Data modeling arranges these data pieces in a logical way. Instead of having all data jumbled together, it structures it so you can analyze relationships: who bought what, when, and why? In Power BI, this is achieved through establishing &lt;strong&gt;relationships&lt;/strong&gt; between tables, which allows you to filter, aggregate, and drill down into your data efficiently.&lt;/p&gt;




&lt;h2&gt;
  
  
  SQL Joins: (Data Combination)
&lt;/h2&gt;

&lt;p&gt;SQL joins are ways to combine data from two or more tables based on related columns. Let's explore the common joins with simple examples:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. INNER JOIN
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it does:&lt;/strong&gt; Only shows rows with matching values in both tables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Find customers who made purchases. Only customers with sales records appear.
-&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgyfot4ditn4086xf6xzl.webp" alt="alt text" width="502" height="329"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. LEFT JOIN (or LEFT OUTER JOIN)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it does:&lt;/strong&gt; Shows all rows from the left table, plus matches from the right table. If there's no match, you still see the left table row, but with blank info on the right.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; List all customers, even those who didn't buy anything (show blank for sales).
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuk76v8y7qx00pf5kt0jg.png" alt="alt text" width="400" height="205"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. RIGHT JOIN (or RIGHT OUTER JOIN)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it does:&lt;/strong&gt; Opposite of LEFT JOIN; shows all rows from the right table plus matched rows from the left.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u03hufpbowogmt8r62y.png" alt="alt text" width="500" height="215"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. FULL OUTER JOIN
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it does:&lt;/strong&gt; Combines everything from both tables; shows all matches and non-matches from both sides.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa8di6cdxboksrj26whnl.webp" alt="alt text" width="749" height="421"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. LEFT ANTI JOIN
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it does:&lt;/strong&gt; Shows rows from the left table &lt;strong&gt;that do not&lt;/strong&gt; have a match in the right.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Customers who haven't made any purchase.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. RIGHT ANTI JOIN
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it does:&lt;/strong&gt; Rows from the right table with no match in the left.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Sales records with no customer info.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Power BI Relationships: Building Connections 🌐
&lt;/h2&gt;

&lt;p&gt;Unlike SQL joins, Power BI relationships are persistent links between tables that don't change unless you edit them. Here’s what you need to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cardinality:&lt;/strong&gt; How many related records exist:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1:M (One-to-Many):&lt;/strong&gt; One record in the first table relates to many in the second. (e.g., one customer → many orders)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;M:M (Many-to-Many):&lt;/strong&gt; Multiple records related to multiple. Requires bridging tables.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1:1 (One-to-One):&lt;/strong&gt; One record relates to only one record.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;&lt;strong&gt;Active vs Inactive Relationships:&lt;/strong&gt; Active relationships are used by default when you analyze data, while inactive ones are stored but not automatically used. You can activate an inactive link when needed.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Cross-Filter Direction:&lt;/strong&gt; How filters flow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Single direction: filters go one way.&lt;/li&gt;
&lt;li&gt;Both directions: filters flow both ways, useful for complex models.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Fact and Dimension Tables: The Building Blocks
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fact Tables:&lt;/strong&gt; Store measurable data, like sales amount, quantity sold. Usually large.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dimension Tables:&lt;/strong&gt; Store descriptive info, like customer names, product categories. Usually smaller.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Schemas:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Star Schema:&lt;/strong&gt; Fact table connected directly to dimension tables. Used for simplicity and fast querying.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Snowflake Schema:&lt;/strong&gt; Dimension tables normalized into sub-tables, reducing data redundancy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flat Table (DLat):&lt;/strong&gt; All data in one big table, but less efficient and harder to maintain.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Role-Playing Dimensions: Multiple Uses of a Single Dimension
&lt;/h2&gt;

&lt;p&gt;Some dimensions, like &lt;strong&gt;Date&lt;/strong&gt;, can be used to filter sales date, ship date, or invoice date. In Power BI, you relate the same Date table to multiple date fields to reuse.&lt;/p&gt;




</description>
      <category>productivity</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
