<?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>Forem: Ruto Kipkirui Robert</title>
    <description>The latest articles on Forem by Ruto Kipkirui Robert (@arapzruto).</description>
    <link>https://forem.com/arapzruto</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%2F3709626%2F1199ab50-eea2-45fb-a36f-87aaa814f730.png</url>
      <title>Forem: Ruto Kipkirui Robert</title>
      <link>https://forem.com/arapzruto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/arapzruto"/>
    <language>en</language>
    <item>
      <title>Master SQL Joins and Window Functions</title>
      <dc:creator>Ruto Kipkirui Robert</dc:creator>
      <pubDate>Mon, 02 Mar 2026 13:09:03 +0000</pubDate>
      <link>https://forem.com/arapzruto/master-sql-joins-and-window-functions-3gfc</link>
      <guid>https://forem.com/arapzruto/master-sql-joins-and-window-functions-3gfc</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Database management and querying practices cannot function without SQL joins and window functions. These are two distinct yet powerful mechanisms that facilitate data analysis and enable data scientists to retrieve the data they need efficiently. For instance, SQL joins combine two or more tables based on existing logical relationships and unique columns, including primary-foreign key relationships. Alternatively, a window function performs a calculation across a group of rows while keeping each row visible.&lt;br&gt;
&lt;strong&gt;SQL Joins&lt;/strong&gt;&lt;br&gt;
Joins are SQL clauses that combine rows from one or more tables based on a related column.&lt;br&gt;
SQL joins are crucial because they help.&lt;br&gt;
&lt;strong&gt;a)&lt;/strong&gt;  Retrieve connected data stored across multiple tables. &lt;br&gt;
&lt;strong&gt;b)&lt;/strong&gt;  Match table records based on standard columns. &lt;br&gt;
&lt;strong&gt;c)&lt;/strong&gt;  Improve data analysis by combining related information. &lt;br&gt;
&lt;strong&gt;d)&lt;/strong&gt;  Create meaningful result sets from separate tables.&lt;br&gt;
&lt;strong&gt;Types of SQL Joins&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;INNER JOIN&lt;/strong&gt;: Returns only rows that have matching values in both tables. It helps in combining records based on a related column.&lt;br&gt;
&lt;strong&gt;a)&lt;/strong&gt;  Returning only matching rows from both tables. &lt;br&gt;
&lt;strong&gt;b)&lt;/strong&gt;  Excluding non-matching data from the result set. &lt;br&gt;
&lt;strong&gt;c)&lt;/strong&gt;  Ensuring accurate data relationships between tables.&lt;br&gt;
Syntax:&lt;br&gt;
&lt;code&gt;SELECT table1.column1, table1.column2, table2.column1,... &lt;br&gt;
FROM table1  &lt;br&gt;
INNER JOIN table2 &lt;br&gt;
ON table1.matching_column = table2. matching_column;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LEFT (OUTER) JOIN&lt;/strong&gt;: Returns all rows from the left table, and only the matched rows from the right table. It helps in: &lt;br&gt;
&lt;strong&gt;a)&lt;/strong&gt;  Returning all records from the left table.&lt;br&gt;
&lt;strong&gt;b)&lt;/strong&gt;  Showing matching data from the right table. &lt;br&gt;
&lt;strong&gt;c)&lt;/strong&gt;  Displaying NULL values where no match exists in the right table. &lt;br&gt;
&lt;strong&gt;Syntax: **&lt;br&gt;
&lt;code&gt;SELECT table1.column1,table1.column2,table2.column1,....&lt;br&gt;
 FROM table1 &lt;br&gt;
LEFT JOIN table2 &lt;br&gt;
ON table1.matching_column = table2.matching_column;&lt;/code&gt;&lt;br&gt;
**RIGHT (OUTER) JOIN:&lt;/strong&gt; Returns all rows from the right table, and only the matched rows from the left table. It helps in: &lt;br&gt;
&lt;strong&gt;a)&lt;/strong&gt;  Returning all records from the right-side table. &lt;br&gt;
&lt;strong&gt;b)&lt;/strong&gt;  Showing matching data from the left-side table. &lt;br&gt;
&lt;strong&gt;c)&lt;/strong&gt;  Displaying NULL values where no match exists in the left table.&lt;br&gt;
&lt;strong&gt;Syntax **&lt;br&gt;
&lt;code&gt;SELECT table1.column1, table1.column2, table2.column1,.... &lt;br&gt;
FROM table1 &lt;br&gt;
RIGHT JOIN table2 &lt;br&gt;
ON table1.matching_column = table2.matching_column;&lt;/code&gt;&lt;br&gt;
**FULL (OUTER) JOIN:&lt;/strong&gt; Returns all rows when there is a match in either the left or right table. It helps in: &lt;br&gt;
&lt;strong&gt;a)&lt;/strong&gt;  Returning all rows from both tables. &lt;br&gt;
&lt;strong&gt;b)&lt;/strong&gt;  Showing matching records from each table. &lt;br&gt;
&lt;strong&gt;c)&lt;/strong&gt;  Displaying NULL values where no match exists in either table. &lt;br&gt;
&lt;strong&gt;Syntax&lt;/strong&gt;&lt;br&gt;
 &lt;code&gt;SELECT table1.column1,table1.column2,table2.column1,.... &lt;br&gt;
FROM table1 &lt;br&gt;
FULL JOIN table2 &lt;br&gt;
ON table1.matching_column = table2.matching_column;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Window Functions&lt;/strong&gt;&lt;br&gt;
A window function is used to perform a calculation across a specific set of rows (the 'window' in question), defined by an OVER() clause.&lt;br&gt;
&lt;strong&gt;Syntax&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;SELECT column_1, column_2, column_3, function()&lt;br&gt;
OVER (PARTITION BY partition_expression ORDER BY order_expression) as output_column_name&lt;br&gt;
FROM table_name&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;In this syntax:&lt;/strong&gt;&lt;br&gt;
• &lt;strong&gt;&lt;em&gt;SELECT;&lt;/em&gt;&lt;/strong&gt; defines the columns to be selected from the table_name table.&lt;br&gt;
• &lt;strong&gt;&lt;em&gt;function ();&lt;/em&gt;&lt;/strong&gt; the window function applied.&lt;br&gt;
• &lt;strong&gt;&lt;em&gt;OVER;&lt;/em&gt;&lt;/strong&gt; defines the partitioning and ordering of rows in the window.&lt;br&gt;
• &lt;strong&gt;&lt;em&gt;PARTITION BY;&lt;/em&gt;&lt;/strong&gt; divides rows into partitions based on the specified partition_expression; if the partition_expression is not specified, the result set will be treated as a single partition.&lt;br&gt;
• &lt;strong&gt;&lt;em&gt;ORDER BY&lt;/em&gt;&lt;/strong&gt;: define the order in which rows are processed within each partition; if the order_expression is not specified, rows will be processed in an undefined order.&lt;br&gt;
• Finally, &lt;strong&gt;&lt;em&gt;output_column_name&lt;/em&gt;&lt;/strong&gt; is the name of your output column.&lt;br&gt;
&lt;strong&gt;_N/B.&lt;/strong&gt; Window functions are applied after the processing of WHERE, GROUP BY, and HAVING clauses. _&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of SQL window functions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aggregate window functions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;a)  &lt;strong&gt;AVG()&lt;/strong&gt; returns the average of the values in a group, ignoring null values.&lt;br&gt;
b)  &lt;strong&gt;MAX()&lt;/strong&gt; returns the maximum value in the expression.&lt;br&gt;
c)  &lt;strong&gt;MIN()&lt;/strong&gt; returns the minimum value in the expression.&lt;br&gt;
d)  &lt;strong&gt;SUM()&lt;/strong&gt; returns the sum of all the values, or only the DISTINCT values, in the expression.&lt;br&gt;
e)  &lt;strong&gt;COUNT()&lt;/strong&gt; returns the number of items found in a group.&lt;br&gt;
f)  &lt;strong&gt;STDEV()&lt;/strong&gt; returns the statistical standard deviation of all values in the specified expression.&lt;br&gt;
g)  &lt;strong&gt;STDEVP()&lt;/strong&gt; returns the statistical standard deviation for the population for all values in the specified expression.&lt;br&gt;
h)  &lt;strong&gt;VAR()&lt;/strong&gt; returns the statistical variance of all values in the specified expression; the OVER clause may follow it.&lt;br&gt;
i)  &lt;strong&gt;VARP()&lt;/strong&gt; returns the statistical variance for the population for all values in the specified expression.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ranking window functions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;a)  &lt;strong&gt;ROW_NUMBER()&lt;/strong&gt; assigns a unique sequential integer to rows within a partition of a result set.&lt;br&gt;
b)  &lt;strong&gt;RANK()&lt;/strong&gt; assigns a unique rank to each row within a partition with gaps in the ranking sequence when there are ties.&lt;br&gt;
c)  &lt;strong&gt;DENSE_RANK()&lt;/strong&gt; assigns a unique rank to each row within a partition without gaps in the ranking sequence when there are ties.&lt;br&gt;
d)  &lt;strong&gt;PERCENT_RANK()&lt;/strong&gt; calculates the relative rank of a row within a group of rows.&lt;br&gt;
e)  &lt;strong&gt;NTILE()&lt;/strong&gt; distributes rows in an ordered partition into a specified number of approximately equal groups.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Value window functions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;a)   &lt;strong&gt;LAG()&lt;/strong&gt; retrieves values from rows that precede the current row in the result set.&lt;br&gt;
b)  &lt;strong&gt;LEAD()&lt;/strong&gt; retrieves values from rows that follow the current row in the result set.&lt;br&gt;
c)  &lt;strong&gt;FIRST_VALUE()&lt;/strong&gt; returns the first value in an ordered set of values within a partition.&lt;br&gt;
d)  &lt;strong&gt;LAST_VALUE()&lt;/strong&gt; returns the last value in an ordered set of values within a partition.&lt;br&gt;
e)  &lt;strong&gt;NTH_VALUE()&lt;/strong&gt; returns the value of the nth row in the ordered set of values.&lt;br&gt;
f)  &lt;strong&gt;CUME_DIST()&lt;/strong&gt; returns the cumulative distribution of a value in a group of values.&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>database</category>
      <category>sql</category>
      <category>postgres</category>
    </item>
    <item>
      <title>How Analysts Translate Messy Data, DAX, and Dashboards into Action Using Power BI</title>
      <dc:creator>Ruto Kipkirui Robert</dc:creator>
      <pubDate>Mon, 09 Feb 2026 10:18:40 +0000</pubDate>
      <link>https://forem.com/arapzruto/how-analysts-translate-messy-data-dax-and-dashboards-into-action-using-power-bi-lk7</link>
      <guid>https://forem.com/arapzruto/how-analysts-translate-messy-data-dax-and-dashboards-into-action-using-power-bi-lk7</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Data analysts, data engineers, and data scientists often handle messy data characterized by duplicates, inconsistent attributes, and incomplete datasets. Power BI is a critical, widely used tool in modern business intelligence. Power offers detailed approaches for transforming raw data into engaging, interactive dashboards that provide actionable insights to stakeholders. Throughout this article, the focus is on exploring Power BI from the perspective of data cleaning, DAX measures, and the creation of interactive dashboards.&lt;br&gt;
&lt;strong&gt;Data Cleaning&lt;/strong&gt;&lt;br&gt;
Data cleaning, shaping, and transformation of messy data are critical requirements before data analysis, dashboard preparation, and reporting in Power BI. Power BI is a crucial tool that bridges messy data with the actionable insights needed to inform every executive decision. However, to achieve a clean, analyzable dataset, Power BI provides a powerful tool, Power Query, that enables data analysts, data engineers, and data scientists to clean, transform, and shape the dataset before working with it. &lt;br&gt;
&lt;strong&gt;&lt;em&gt;Power Query&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
The Power Query Editor allows one to connect to and shape data sources based on immediate user needs. After detailed data shaping, it is loaded into Power BI Desktop for analysis, dashboard preparation, and reporting. &lt;br&gt;
&lt;strong&gt;To open Power Query Editor,&lt;/strong&gt; &lt;br&gt;
&lt;strong&gt;a)&lt;/strong&gt;  Click Home &lt;br&gt;
&lt;strong&gt;b)&lt;/strong&gt;  Transform Data to open the Power Query Editor. &lt;br&gt;
&lt;strong&gt;c)&lt;/strong&gt;  Select data source. &lt;br&gt;
&lt;strong&gt;d)&lt;/strong&gt;  Apply the transformation needed. &lt;br&gt;
&lt;strong&gt;Typical Data Cleaning Approaches&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Remove Unnecessary Columns&lt;/strong&gt;; Datasets can have columns that are not needed for the data analysis processes. In Power Query Editor, use the " Remove Unwanted Columns” option. The objective is to optimize query performance.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Rename Columns&lt;/strong&gt;. Rename columns to enhance the clarity of the dataset. In the Power Query Editor, right-click the column &amp;gt; Click Rename&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Split Columns&lt;/strong&gt;; In instances where data are stored in single columns, it is prudent to split them into multiple columns for enhanced query performance. In the Power Query edition, Select the Column &amp;gt; Click Split Column (by delimiter or number of characters).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Merge Columns&lt;/strong&gt;**: Combine different columns to achieve a specific objective. In Power Query Editor, select multiple columns &amp;gt; Click Merge Columns.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Change Text Cases&lt;/strong&gt;; For Consistency, ensure text is uniformly formatted. In Power Query Editor, select a text column &amp;gt; Click Transform &amp;gt; Format &amp;gt; Uppercase/Lowercase/Capitalize Each Word&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Handle Missing Data (Nulls&lt;/strong&gt;);For enhanced Power BI reports. 
**&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Remove Null Values**; Select the column &amp;gt; Click Remove Rows &amp;gt; Remove Blank Rows&lt;br&gt;
*&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Replace Nulls&lt;/em&gt;*; Select the column &amp;gt; Click Transform &amp;gt; Replace Values&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Handle Duplicates&lt;/strong&gt;; Select the column &amp;gt; Click Remove Duplicates&lt;br&gt;
&lt;strong&gt;DAX&lt;/strong&gt;&lt;br&gt;
Data Analysis Expressions (DAX) is Power BI’s formula and query language for creating and applying custom measures, calculated columns, and tables. DAX is efficient for complex calculations beyond MS Excel, including row and filter context. &lt;br&gt;
&lt;strong&gt;Measures&lt;/strong&gt;&lt;br&gt;
Core elements of DAX are crucial for aggregating data.&lt;br&gt;
Offers dynamic reports with filter and applied slicer support. &lt;br&gt;
Examples of measures include &lt;strong&gt;&lt;em&gt;SUM, AVERAGE, and COUN&lt;/em&gt;&lt;/strong&gt;T&lt;br&gt;
Measure calculation depends on the correct data types and clean data.&lt;br&gt;
&lt;strong&gt;Calculated Columns&lt;/strong&gt;&lt;br&gt;
Creates new fields for analysis based on derived values from the existing columns.&lt;br&gt;
Derived values are calculated row by row and stored in the data model.&lt;br&gt;
Crucial in instances where reports do not depend on filters and applied slicers.&lt;br&gt;
&lt;strong&gt;Time Intelligence&lt;/strong&gt;&lt;br&gt;
DAX provides time intelligence functions for analyzing and understanding data using time-based sets.&lt;br&gt;
Example time intelligence functions include &lt;strong&gt;&lt;em&gt;TOTALYTD, SAMEPERIODLASTYEAR, and DATEADD,&lt;/em&gt;&lt;/strong&gt; which enable period comparisons.&lt;br&gt;
Generates actionable insights from a time-series dataset.&lt;br&gt;
&lt;strong&gt;Best Practices to Optimize DAX Formulas&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;a)&lt;/strong&gt;  Ensure that every measure is applied to the calculated columns.&lt;br&gt;
&lt;strong&gt;b)&lt;/strong&gt;  If possible, avoid nested operations.&lt;br&gt;
&lt;strong&gt;c)&lt;/strong&gt;  Use simplified relationships.&lt;br&gt;
&lt;strong&gt;d)&lt;/strong&gt;  Optimize Cardinality.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;_Dashboards _&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Power BI can analyze and convert data into desired interactive visuals for reporting. A Power BI dashboard is a one-page chart summary designed to be explored interactively by the target users. In contrast, Reports are detailed, multipage, interactive documents for in-depth analysis and insights.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How To Create Dashboard&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;a)&lt;/strong&gt;  Import Data&lt;br&gt;
&lt;strong&gt;b)&lt;/strong&gt;  Explore Data&lt;br&gt;
&lt;strong&gt;c)&lt;/strong&gt;  Choose the correct Chart based on the questions&lt;br&gt;
&lt;strong&gt;d)&lt;/strong&gt;  Select the chart type based on the insight required: &lt;br&gt;
Question &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Type  Best Visualizations&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Comparison (Compare values across categories) &lt;strong&gt;&lt;em&gt;use&lt;/em&gt;&lt;/strong&gt;  Bar/Column Chart, Treemap, Table&lt;br&gt;
&lt;strong&gt;2.&lt;/strong&gt; Trend (Trends over time) &lt;strong&gt;&lt;em&gt;use&lt;/em&gt;&lt;/strong&gt; Line Chart, Area Chart, Ribbon Chart&lt;br&gt;
&lt;strong&gt;3.&lt;/strong&gt; Part-to-Whole (Composition) &lt;strong&gt;&lt;em&gt;use&lt;/em&gt;&lt;/strong&gt; Donut Chart, Pie Chart, Stacked Bar&lt;br&gt;
&lt;strong&gt;4.&lt;/strong&gt; Relationship (Correlation) &lt;strong&gt;&lt;em&gt;Use&lt;/em&gt;&lt;/strong&gt; Scatter Plot, Bubble Chart&lt;br&gt;
&lt;strong&gt;5.&lt;/strong&gt; Geographical (Location data) &lt;strong&gt;&lt;em&gt;Use&lt;/em&gt;&lt;/strong&gt; Map, Filled Map, Shape Map&lt;br&gt;
&lt;strong&gt;6.&lt;/strong&gt; Key Metric (Single number) &lt;strong&gt;&lt;em&gt;use&lt;/em&gt;&lt;/strong&gt; Card, KPI Visual, Gauge&lt;br&gt;
&lt;strong&gt;7.&lt;/strong&gt; Process (Steps/Flow) &lt;strong&gt;&lt;em&gt;use&lt;/em&gt;&lt;/strong&gt;   Funnel Chart, Waterfall Chart&lt;/p&gt;

&lt;p&gt;*&lt;strong&gt;&lt;em&gt;Effective dashboards answer three key questions: *&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;a)&lt;/strong&gt;  What happened? &lt;br&gt;
&lt;strong&gt;b)&lt;/strong&gt;  Why did it happen? &lt;br&gt;
&lt;strong&gt;c)&lt;/strong&gt;  What action should be taken?&lt;br&gt;
&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Translating messy data before actual data analysis is critical in every analytics process. Power BI offers a clean platform for transforming data and generating actionable insights that inform every organizational decision-making process.&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>powerbi</category>
      <category>dashboards</category>
      <category>reporting</category>
    </item>
    <item>
      <title>#Data analytics #Data Science #Power Bi</title>
      <dc:creator>Ruto Kipkirui Robert</dc:creator>
      <pubDate>Sun, 01 Feb 2026 19:23:21 +0000</pubDate>
      <link>https://forem.com/arapzruto/data-analytics-data-science-power-bi-78k</link>
      <guid>https://forem.com/arapzruto/data-analytics-data-science-power-bi-78k</guid>
      <description>&lt;p&gt;&lt;strong&gt;Schemas And Data Modelling in Power BI&lt;br&gt;
Introduction&lt;/strong&gt;&lt;br&gt;
• This article explores data modeling concepts often used to achieve high performance and accurate data analytics in Power BI. &lt;br&gt;
The article focuses on key schema types in Power BI and on how detailed data modelling improves reporting accuracy. &lt;br&gt;
• Data modelling refers to the procedures used by data analysts, data scientists, and data engineers to structure data in tables based on defined relationships and a logical framework. The objective of data modelling is to achieve effective data cleansing, build accurate calculations, and prepare detailed business intelligence reports. &lt;br&gt;
• A schema refers to the structure and defined relationships of data within a designed data model. Schemas shape how data analysis interacts with the database, influencing dashboard load times and decision-making efficiency. &lt;br&gt;
• The two primary database schemas in Power BI are the star and snowflake schemas.&lt;br&gt;
&lt;strong&gt;Star Schema&lt;/strong&gt;&lt;br&gt;
• A star schema is a data modeling approach in which a central fact table is directly connected to multiple dimension tables.&lt;br&gt;
• A star schema consists of a fact table and multiple dimension tables. &lt;br&gt;
• Tables in a star schema are connected via one-to-many relationships. Every dimension table is on the ‘one’ side, while the fact table is on the ‘many’ side, as indicated in the table 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.amazonaws.com%2Fuploads%2Farticles%2Frj2ll55f5w5adwq04d64.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.amazonaws.com%2Fuploads%2Farticles%2Frj2ll55f5w5adwq04d64.png" alt=" " width="775" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In Star Schemas;&lt;/strong&gt;&lt;br&gt;
_Dimension tables _&lt;br&gt;
• Represent all business entities, the things being modelled. For example, in a product, place, or people dimension table, there is a key column that serves as a unique identifier. Other columns are used for filtering and grouping data.&lt;br&gt;
• Dimension tables hold data based on the defined categorical fields in the fact table. &lt;br&gt;
• It does contain duplicates. &lt;br&gt;
_Fact tables &lt;br&gt;
_•    It’s the man of the data.&lt;br&gt;
• store quantitative transactional data, such as sales orders, quantities sold, and related details. &lt;br&gt;
• The fact table contains dimensionally columns that relate to the dimension tables and numeric measure columns. &lt;br&gt;
• Fact tables have dimension key columns that directly relate to the dimension tables. Here, the dominant columns determine the table's dimensionality. Alternatively, dimension key values determine the table's granularity. &lt;br&gt;
• Facts are likely to have duplicates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Concepts for Star Schemas.&lt;/strong&gt;&lt;br&gt;
Normalization;&lt;br&gt;&lt;br&gt;
• Splitting data into multiple related tables reduces duplication and improves data integrity.&lt;br&gt;
• “One fact, one place.”&lt;br&gt;
• Used to describe how data is stored to ensure that there is no immediate repetition. &lt;br&gt;
• For example, in a sales table with a product key, it is considered normal because it stores only keys.&lt;br&gt;
Denormalization;&lt;br&gt;
• The process of combining tables to reduce joins and simplify analysis.&lt;br&gt;
• “Put related data together.”&lt;br&gt;
&lt;strong&gt;Snowflake Schema&lt;/strong&gt;&lt;br&gt;
• Snowflake refers to a data modelling approach in which a central fact table is connected to multiple dimensions, with one or more dimension tables subdivided into sub-dimension tables.&lt;br&gt;
• A snowflake schema consists of a single fact table and multiple dimension tables.&lt;br&gt;
• Snowflake schemas are unique because dimension tables are normalized, i.e., they are broken down into smaller sub-tables.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Key Difference between Star Schema and Snowflake Schema&lt;/strong&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.amazonaws.com%2Fuploads%2Farticles%2Fs22xugahua4e1tgngt95.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.amazonaws.com%2Fuploads%2Farticles%2Fs22xugahua4e1tgngt95.png" alt=" " width="800" height="481"&gt;&lt;/a&gt;&lt;br&gt;
Relationships&lt;br&gt;
• Relationships determine how Power BI connects and interacts with tables. &lt;br&gt;
• A relationship definition shows how tables are connected using key columns.&lt;br&gt;
• Typically, power employs one-to-many relationships, where dimension tables are on the ‘one’ side and fact tables are on the ‘many’ side.&lt;br&gt;
• Relationships are characterized by filter directions that control how data flows between tables. &lt;br&gt;
• Proper relationships enhance accurate aggregations and consistent reports. &lt;br&gt;
&lt;strong&gt;Why Good Modelling Is Critical for Performance and Accurate Reporting&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Enhance query performance. &lt;/li&gt;
&lt;li&gt; A star schema compresses data. &lt;/li&gt;
&lt;li&gt; Fact and dimension tables minimize data duplicates and improve model efficiency.&lt;/li&gt;
&lt;li&gt; Correct relationships enhance accurate aggregations.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>MS Excel Data Analysis: Foundational Basics</title>
      <dc:creator>Ruto Kipkirui Robert</dc:creator>
      <pubDate>Sun, 25 Jan 2026 12:57:20 +0000</pubDate>
      <link>https://forem.com/arapzruto/ms-excel-data-analysis-foundational-basics-2p5b</link>
      <guid>https://forem.com/arapzruto/ms-excel-data-analysis-foundational-basics-2p5b</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Data analysis is one of the in-demand skills in modern technology-driven organizational setups.&lt;br&gt;
MS Excel is a powerful tool for data analysis that facilitates &lt;br&gt;
 Data processing&lt;br&gt;
 Data manipulation&lt;br&gt;
 Data visualization.&lt;/p&gt;

&lt;h1&gt;
  
  
  Data Preparation
&lt;/h1&gt;

&lt;p&gt;Data cleaning is a critical requirement before any data analysis. MS Excel is a fundamental tool for ensuring that missing values and duplicates are corrected.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Clean Data in Excel
&lt;/h2&gt;

&lt;p&gt;Remove Duplicates: Use Data &amp;gt; Remove Duplicates to eliminate redundancy. &lt;br&gt;
 Use TRIM and CLEAN Functions: &lt;br&gt;
 TRIM removes unnecessary spaces.&lt;br&gt;
 CLEAN removes non-printable characters. &lt;br&gt;
 Sort and Structure Data: Convert your dataset into an Excel Table (Insert &amp;gt; Table) for better organization.&lt;/p&gt;

&lt;h1&gt;
  
  
  Basic Data Analysis Methods.
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Charts and Visualization&lt;/em&gt;&lt;br&gt;
Charts make it easier to identify trends and relationships in your data:&lt;br&gt;
• Select your dataset and go to Insert &amp;gt; Charts.&lt;br&gt;
• Choose from bar charts, line charts, or pie charts.&lt;br&gt;
• Customize the chart for clarity and impact.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Conditional Formatting&lt;/em&gt;&lt;br&gt;
Go to Home &amp;gt; Conditional Formatting.&lt;br&gt;
Select any column from the table. Here we are going to select a Quarter column. After that, go to the Home tab on the ribbon, then in the Styles group choose Conditional Formatting, and then in the Highlight Cells rule select the Greater Than option.&lt;br&gt;
Then a greater than dialog box appears. First, write the quarter value and then select the color. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Sorting Data&lt;/em&gt;&lt;br&gt;
Sorting data makes it easier to immediately view and comprehend your data, organize and locate the facts you need, and ultimately help you make better decisions.&lt;br&gt;
A list of names may be arranged alphabetically, a list of sales numbers can be arranged from highest to lowest, or rows can be sorted by colors or icons.&lt;br&gt;
Using text, numbers, dates, and times, you can sort data in one or more columns by custom list, format, cell color, font color, or icon set.&lt;br&gt;
Step 1: Select Data &amp;gt; Data Tab&amp;gt; Sort&lt;br&gt;
Select any column from the table. Here we are going to select a Month column. After that, go to the data tab at the top of the ribbon, then in the Sort &amp;amp; Filter group, choose Sort.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 2: Select the Order&lt;br&gt;
Then a sort dialog box appears. First, select the column, then choose Sort on, and then Order. After that, click OK.&lt;/p&gt;

&lt;p&gt;Step 3: Preview Results&lt;br&gt;
As you can see, the months column is now arranged alphabetically.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;Filtering Data&lt;/em&gt;
Filtering to pull information from a given Range or table that satisfies the specified criteria in Excel data analysis.
Step 1: Select your dataset and go to Data &amp;gt; Filter
Select any column from the table. Here we are going to select a Sales column. After that, go to the data tab at the top of the ribbon, then in the Sort &amp;amp; Filter group, choose Filter.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 2: Select the Filter Option&lt;br&gt;
The values in the sales column are then shown in a drop-down box. Here, we will select several filters and then use the greater-than operator.&lt;/p&gt;

&lt;p&gt;Step 3: Select the Options&lt;br&gt;
Then a custom auto-filler dialog box appears. Here, we are going to set the sales value to greater than 70, then click OK.&lt;/p&gt;

&lt;p&gt;Step 4: Preview Results&lt;br&gt;
As you can see, only rows greater than 70 are shown.&lt;/p&gt;

&lt;h1&gt;
  
  
  Essential Excel Functions for Data Analysis
&lt;/h1&gt;

&lt;p&gt;=AND    -Returns TRUE or FALSE based on two or more conditions &lt;br&gt;
=AVERAGE    -Calculates the average (arithmetic mean) &lt;br&gt;
=AVERAGEIF-Calculates the average of a range based on a TRUE or FALSE condition &lt;br&gt;
=AVERAGEIFS-Calculates the average of a range based on one or more TRUE/FALSE conditions&lt;br&gt;
 =CONCAT-Links together the content of multiple cells &lt;br&gt;
=COUNT-Counts cells with numbers in a range&lt;br&gt;
 =COUNTA-Counts all cells in a range that have values, both numbers and letters =COUNTBLANK-Counts blank cells in a range &lt;br&gt;
=COUNTIF-Counts cells as specified &lt;br&gt;
=COUNTIFS-  Counts cells in a range based on one or more TRUE or FALSE conditions =IF-Returns values based on a TRUE or FALSE condition&lt;br&gt;
 =IFS-Returns values based on one or more TRUE or FALSE conditions &lt;br&gt;
=LEFT-Returns values from the left side of a cell&lt;br&gt;
 =LOWER-Reformats content to lowercase &lt;br&gt;
=MAX-Returns the highest value in a range &lt;br&gt;
=MEDIAN-Returns the middle value in the data &lt;br&gt;
=MIN-Returns the lowest value in a range&lt;br&gt;
 =MODE-Finds the number seen most times. The function always returns a single number &lt;br&gt;
=OR-Returns TRUE or FALSE based on two or more conditions &lt;br&gt;
=RIGHT-Returns values from the right side of a cell &lt;br&gt;
=SUM    -Adds together numbers in a range &lt;br&gt;
=SUMIF-Calculates the sum of values in a range based on a TRUE or FALSE condition &lt;br&gt;
=SUMIFS-Calculates the sum of a range based on one or more TRUE or FALSE conditions&lt;br&gt;
 =TRIM-Removes irregular spacing, leaving one space between each value &lt;br&gt;
=VLOOKUP-Allows vertical searches for values in a table &lt;br&gt;
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])&lt;br&gt;
• Lookup_value: Choose the cell that will be used to input the search criteria.&lt;br&gt;
• Table_array: The whole table range, which includes every cell.&lt;br&gt;
• Col_index_num: The information being searched for. The column's number, starting from the left, is the input.&lt;br&gt;
• Range_lookup: FALSE if text (0), TRUE if numbers (1).&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>data</category>
      <category>microsoft</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Git and Git Bash for Beginners</title>
      <dc:creator>Ruto Kipkirui Robert</dc:creator>
      <pubDate>Sun, 25 Jan 2026 12:52:51 +0000</pubDate>
      <link>https://forem.com/arapzruto/git-and-git-bash-for-beginners-377a</link>
      <guid>https://forem.com/arapzruto/git-and-git-bash-for-beginners-377a</guid>
      <description>&lt;p&gt;Git and Git Bash for Beginners&lt;br&gt;
Introduction to Git Bash&lt;br&gt;
Git Bash is a command-line tool that provides Git command-line functionality. &lt;br&gt;
It enables developers to work in a Bash-like terminal environment while efficiently managing Git repositories. &lt;br&gt;
 It supports core Git operations such as cloning repositories, committing changes, pushing and pulling updates, and managing branches. &lt;br&gt;
Overview of Git&lt;br&gt;
Git is a distributed version control system (DVCS). &lt;br&gt;
Git is a tool that helps you: &lt;br&gt;
• save and manage different versions of your files and code. &lt;br&gt;
• work with others, keep track of changes, and undo mistakes.&lt;br&gt;
 Git allows each developer to maintain a complete copy of a repository, including its full history, on their local machine. &lt;br&gt;
This decentralized model improves performance, reliability, and collaboration. &lt;br&gt;
Developers can work offline, experiment freely, and merge changes efficiently.&lt;br&gt;
Why Use Git Bash?&lt;br&gt;
Git Bash is widely used because of its compatibility, flexibility, and power. &lt;br&gt;
It is fully compatible with Git and supports all Git commands. &lt;br&gt;
Git Bash also offers a familiar environment for users transitioning from Linux or macOS to Windows, reducing the learning curve.&lt;br&gt;
Installing Git Bash on Windows&lt;br&gt;
Installing Git Bash involves downloading the Git for Windows installer and following a guided setup process. Users can select components, choose an installation directory, and complete the installation. Once installed, Git Bash can be launched from the Start menu or desktop shortcut.&lt;br&gt;
Basic Git Bash Commands&lt;br&gt;
Git Bash supports Git commands that help users navigate directories, manage files, and control version history.&lt;br&gt;
Common Navigation Commands: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ls – Lists files and directories &lt;/li&gt;
&lt;li&gt;cd  – Changes the current directory &lt;/li&gt;
&lt;li&gt;pwd – Displays the current working directory
Common Git Commands: &lt;/li&gt;
&lt;li&gt;git init – Initializes a Git repository &lt;/li&gt;
&lt;li&gt;git status – Displays repository status &lt;/li&gt;
&lt;li&gt;git add. – Stages all changes &lt;/li&gt;
&lt;li&gt;git commit -m "message" – Commits changes &lt;/li&gt;
&lt;li&gt;git log – Displays commit history
Using Git Bash: Basic Workflow
Using Git Bash begins by configuring Git with a username and email address. After configuration, users navigate to a project directory, initialize a repository, stage files, and commit changes.
Key Commands:
git config --global user.name "Your Name"
git config --global user.email "&lt;a href="mailto:you@example.com"&gt;you@example.com&lt;/a&gt;"
Connecting Local Repositories to GitHub
Git Bash allows users to link local repositories to remote GitHub repositories. This enables pushing local changes to GitHub and pulling updates from collaborators.
Key Commands:
git remote add origin 
git push origin master
Branch Management in Git Bash
Branches allow multiple developers to work on different features independently. Git Bash supports creating, switching, listing, and deleting branches.
Key Commands: &lt;/li&gt;
&lt;li&gt;git branch – Lists branches &lt;/li&gt;
&lt;li&gt;git branch branch_name – Creates a new branch &lt;/li&gt;
&lt;li&gt;git checkout -b branch_name – Creates and switches to a branch
Merging and Cloning Repositories
Merging combines changes from one branch into another, ensuring code integration. Cloning creates a local copy of a remote repository.
Key Commands:
git merge branch_name
git clone 
Undoing Commits
Git Bash allows users to modify the most recent commit using the --amend option. This is useful when files are missed or commit messages need correction.
Key Command:
git commit --amend
Conclusion
Git Bash is a powerful and flexible tool that enables.
It supports version control, collaboration, automation, and branch management. 
With its combination of Git commands and Bash utilities, Git Bash remains an essential tool for developers seeking efficiency and control in modern software development environments.&lt;/li&gt;
&lt;/ul&gt;

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