<?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: George Mathenge</title>
    <description>The latest articles on Forem by George Mathenge (@gigomkenya).</description>
    <link>https://forem.com/gigomkenya</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%2F3713790%2Fd89d3bb9-1813-4136-a900-6483947094e4.jpeg</url>
      <title>Forem: George Mathenge</title>
      <link>https://forem.com/gigomkenya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/gigomkenya"/>
    <language>en</language>
    <item>
      <title>Simple guides to table joins and window functions in SQL.</title>
      <dc:creator>George Mathenge</dc:creator>
      <pubDate>Mon, 02 Mar 2026 16:31:18 +0000</pubDate>
      <link>https://forem.com/gigomkenya/simple-guides-to-table-joins-and-window-functions-in-sql-1p06</link>
      <guid>https://forem.com/gigomkenya/simple-guides-to-table-joins-and-window-functions-in-sql-1p06</guid>
      <description>&lt;p&gt;The postgresql joins clause is used to combine records from two or more tables in a database.A join is a means for combining fields from two tables by using values common to each. &lt;br&gt;
There are five types of joins as shown below;&lt;/p&gt;

&lt;p&gt;1.The inner join.&lt;br&gt;
2.The cross join.&lt;br&gt;
3.The left outer join.&lt;br&gt;
4.The right outer join.&lt;br&gt;
5.The full outer join.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;THE INNER JOIN&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It creates a new result table by combining column values of two tables(A and B) based upon the join-predicate.&lt;/li&gt;
&lt;li&gt;The query compares each row of table A with each row of table B to find all pairs of rows, which satisfy the join predicate. &lt;/li&gt;
&lt;li&gt;When the join-predicate is satisfied, column values for each matched pair of rows of table A and table B are combined into  a result row.&lt;/li&gt;
&lt;li&gt;Its the most common type of join.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The syntax used to perform this kind of join is as shown below;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT A.column1,B.column2 ....
FROM A
INNER JOIN B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The image below shows how an in inner join works.&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%2Ffz43pqestcq5cdqcsmu1.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%2Ffz43pqestcq5cdqcsmu1.png" alt=" " width="582" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;THE CROSS JOIN&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It matches every row of the first table with every row of the second table.&lt;/li&gt;
&lt;li&gt;If the inputs in tables have x and y columns respectively, the resulting table will have x+y columns.&lt;/li&gt;
&lt;li&gt;Cross joins have the potential to generate extremely large tables and care has to be taken to use them in appropriate.
example of synatx used to perform cross joins;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT *
FROM Table1
CROSS JOIN Table2 ;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An image showing an example of a cross join;&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%2Fba609i4tgc16mdqvy2qc.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%2Fba609i4tgc16mdqvy2qc.png" alt=" " width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;THE LEFT OUTER JOIN&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Its an extension of the inner join. SQL standard defines three types of outer joins;LEFT,RIGHT and FULL outer join.
-In case of a left outer join an inner join is performed first then each row in table T1 that does not satisfy the join condition with any row in table T2,a joined row is added with null values in columns of T2.So the joined table has at least one row for each row in T1.
The following is an example of sql script used to perform left outer join;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT...
FROM Table1
LEFT OUTER JOIN Table 2
ON Conditional expression
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An image showing how left outer join operates;&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%2Fdleybtzx3jqtnrcdtjqu.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%2Fdleybtzx3jqtnrcdtjqu.png" alt=" " width="800" height="858"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;THE RIGHT OUTER JOIN&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For this first an inner join is performed, then for each row in a table T2 that does not satisfy the join condition with any row in table T1, a joined row is added with null values in column of T1.&lt;/li&gt;
&lt;li&gt;Its a converse of left outer join 
The following is a syntax for right outer join;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT...
FROM Table1 
RIGHT OUTER JOIN Table2
On conditional expression...

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The image below show a right outer join performed in a dataset;&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%2Fwbucc1ou3vsfc6z1osrk.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%2Fwbucc1ou3vsfc6z1osrk.png" alt=" " width="464" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FULL OUTER JOIN&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First, an inner join is performed  then for each row in table T1 that does not satisfy the join condition with any row in table T2, a joined row is added with null values i column of T2.&lt;/li&gt;
&lt;li&gt;For each row of T2 that does not satisfy the join condition with any row in T1, a joined row with null values in the columns of T1 is added.
The following is a syntax of full outer join;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT...
FROM Table1
FULL OUTER JOIN Table2
ON Conditional expression...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The following image shows a full outer join performed on a dataset;&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%2Fdgm7stu74h1stppt28tf.webp" 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%2Fdgm7stu74h1stppt28tf.webp" alt=" " width="800" height="957"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Windows functions in postgres sql.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;windows function are also known as analytic functions.&lt;/li&gt;
&lt;li&gt;They perform calculations across a set of table rows that are somehow related to the current row.&lt;/li&gt;
&lt;li&gt;They do not collapse rows into a single output instead they allow each row to retain its unique identity while including calculated value as an additional column.
Main types of window functions;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.&lt;em&gt;Ranking functions&lt;/em&gt;-These assign a rank or number to rows based on order.&lt;br&gt;
The following  re some of rank function under sql;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Row_Number(): Unique, sequential number for each row. syntax for row number function.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ROW_NUMBER() OVER (
    [PARTITION BY expr1, expr2,...]
    ORDER BY expr1 [ASC | DESC], expr2,...
    )
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Rank() : Ranks with gaps for ties (eg 1,2,2,4).syntax for rank function
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RANK() OVER (
    PARTITION BY &amp;lt;expr1&amp;gt;[{,&amp;lt;expr2&amp;gt;...}]
    ORDER BY &amp;lt;expr1&amp;gt; [ASC|DESC], [{,&amp;lt;expr2&amp;gt;...}]
        )
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Dense_Rank():Ranks without gaps for ties.syntax for dense rank
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DENSE_RANK() OVER (
   PARTITION BY expression1 [{,expression2...}]
   ORDER BY expression1 [ASC|DESC], [{,expression2...}]
    )
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;NTILE(n):It distributes rows of an ordered partition into a specified number of approximately equal groups, or buckets. The syntax of the NTILE() function is as follows:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
    NTILE(buckets) OVER (
    [PARTITION BY partition_expression, ... ]
    ORDER BY sort_expression [ASC | DESC], ...
    )

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;Aggregate window function&lt;/em&gt; -They are standard math functions used over  a window.
They are classified into five functions mainly;&lt;/li&gt;
&lt;li&gt;SUM()-used to calculate the total sum of values within a specified numeric column.It ignores NULL values in the column.syntax for sum is as follows.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; SELECT SUM(column_name) FROM table_name; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;AVERAGE AVG()-function returns the average value of a numeric column.It ignores the NULL values in the column. Syntax for average function is shown below;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT AVG(column_name)
     FROM table_name
     WHERE condition;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;COUNT ()-it returns the number of rows returned by a query. It counts duplicate rows and rows that contain null values. Syntax for count is as shown below;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT COUNT(column_name) FROM table_name;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;MIN ()- finds the smallest value in a numeric or date column. 
syntax for min function is shown below;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT MIN(column_name) FROM table_name;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;MAX() -finds the largest value in a numeric or date column. 
syntax for max function is shown below;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT MAX(column_name) FROM table_name; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;VALUE(Navigation)functions_These functions help to access other rows within the result in the window,therefore helping in comparisons based on the data returned in the column.The following are functions classified under the value functions;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Lag function&lt;/em&gt;  provides access to a row at a specified physical offset which comes before the current row.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can access data of the previous row, or from the second row before the current row, or from the third row before current row, and so on.&lt;br&gt;
The following illustrates the syntax of the LAG() function:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LAG(return_value [,offset[, default_value ]]) OVER (
    PARTITION BY expr1, expr2,...
    ORDER BY expr1 [ASC | DESC], expr2,...
   )
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;first /last value&lt;/em&gt; function_It returns data from the first value dispalyed in the window while the last returns data from the last cell displayed in the window. syntax for first value is shown below;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FIRST_VALUE ( [ scalar_expression ] ) [ IGNORE NULLS | RESPECT NULLS ]
    OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>datascience</category>
      <category>dataanalytics</category>
      <category>postgres</category>
    </item>
    <item>
      <title>How Analysts Translate Messy Data, DAX, and Dashboards into Action Using Power BI</title>
      <dc:creator>George Mathenge</dc:creator>
      <pubDate>Mon, 09 Feb 2026 14:52:46 +0000</pubDate>
      <link>https://forem.com/gigomkenya/how-analysts-translate-messy-data-dax-and-dashboards-into-action-using-power-bi-36oo</link>
      <guid>https://forem.com/gigomkenya/how-analysts-translate-messy-data-dax-and-dashboards-into-action-using-power-bi-36oo</guid>
      <description>&lt;p&gt;A data analyst main goal is to clean  data and assist in decision making. They assist in spotting trends performance and communicate insights faster from provided by the data. For one to perform all this the analyst uses a strong software  and one of them is the power BI( business intelligence)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Power BI (Business Intelligence) is a Microsoft analytics platform that transforms raw data from various sources into interactive reports and dashboards, enabling users to visualize trends, gain insights, and make data-driven decisions without extensive coding.&lt;br&gt;
It functions as a collective of different software collection of software services, apps, and connectors that work together to turn unrelated data sources into coherent, visually immersive reports and dashboards&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it functions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;-Data transformation: It has a data transformation interface where one can  connect to various data source e.g.. excel ,sql etc.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Business Intelligence (BI): Helps businesses understand performance, spot opportunities, and monitor health through live data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Self-Service Analytics: Offers tools for users with varying data skills (even Excel users) to analyze and share data easily.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Actionable Insights: Makes complex data understandable for business users, empowering them to make informed decisions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The image below show the data transformation interface:&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%2Fzfmpll0ec24itvyg9ndl.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%2Fzfmpll0ec24itvyg9ndl.png" alt=" " width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Messy data&lt;/strong&gt;&lt;br&gt;
Its simply raw unformatted data, or inconsistent data sources—such as Excel files or databases—that contain errors, missing values, duplicates, or improper structures. This prevents accurate analysis, requiring cleaning via Power Query to transform it into a structured, usable format.&lt;/p&gt;

&lt;p&gt;commonly used solutions in power bi:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Power query- its a powerful Microsoft data transformation and extraction (ETL) engine used to connect, clean, and reshape data from various sources. Integrated into Excel and Power BI, it enables users to automate data preparation without coding, allowing for easy updates to data, such as merging files or unpivoting tables, which saves significant time. &lt;/li&gt;
&lt;li&gt;DAX (Data Analysis Expressions): Used to create calculated columns and measures to fix data logic issues. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3.Unpivot Columns: Used to turn columns into rows for proper modeling. &lt;/p&gt;

&lt;p&gt;lets look at how DAX operates ;&lt;br&gt;
&lt;strong&gt;DAX&lt;/strong&gt;-Data Analysis Expressions (DAX) is a formula language used in Power BI to create custom, dynamic calculations and enhance data analysis capabilities.&lt;br&gt;
operates on the data model that is already loaded into Power BI, enabling users to transform raw data into meaningful insights.&lt;br&gt;
DAX formulas are used in various categories in power BI to create new data model;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Measures: Dynamic calculations (e.g., total sales, average profit) used in visuals that aggregate data based on the current filter context. &lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;calculated columns: New columns added to existing tables whose values are computed and stored in the data model at data refresh time. These are best for static, row-level categories or attributes.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Commonly used functions in DAX;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Aggregation functions&lt;/strong&gt;  they summarize multiple rows of data into a single, scalar value, such as total sales, average, or count. They enable data analysis by condensing large datasets into meaningful, actionable insights for reports and visualizations, typically used in measures or calculated columns. Examples SUM,SUMX, AVERAGE,MIN, MAX etc.
 &lt;strong&gt;Total Sales = SUM(Sales[Amount]&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Filter Functions&lt;/strong&gt; - These control the data context for calculations. Key functions include CALCULATE, FILTER, ALL, RELATED, and VALUES. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Text Functions&lt;/strong&gt;- Used for manipulating text strings. Functions include CONCATENATE, LEFT/RIGHT/MID, UPPER/LOWER, TRIM, and SUBSTITUTE. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Time Intelligence Functions&lt;/strong&gt; - Used for time-based calculations, such as TOTALYTD/TOTALMTD, SAMEPERIODLASTYEAR, DATEADD, and DATESBETWEEN. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Table Manipulation Functions&lt;/strong&gt; -These functions return a table. Examples are SUMMARIZE, ADDCOLUMNS, TOPN, and DISTINCT. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;*&lt;em&gt;Logical Functions&lt;/em&gt; -These handle conditional logic. Examples are IF, SWITCH, AND/OR/NOT, and IFERROR. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Information Functions&lt;/strong&gt; -These check the type or state of a value, such as ISBLANK, ISNUMBER/ISTEXT/ISLOGICAL, and USERELATIONSHIP. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;DASHBOARDS&lt;/strong&gt;&lt;br&gt;
After cleaning and adding the right KPI'S in your data then it comes the visualization part. Power bi uses dashboard to easen easy understanding of the data.&lt;/p&gt;

&lt;p&gt;What are dashboards in power BI;&lt;br&gt;
a single-page interactive canvas in the Power BI service that summarizes key metrics, known as KPIs, using visual tiles pinned from various reports. The main aspects of a dashboard are as follows;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Real-time Data: Dashboards update in real-time, providing the latest data without requiring user interaction. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Interactivity: visuals are linked; clicking one takes you to the underlying report for detailed analysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Single Page Only: Unlike reports which can have multiple pages, a dashboard is limited to one page ("canvas").&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An example of dashboard created from an already analyzed data table:&lt;/p&gt;

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

&lt;p&gt;When creating dashboards avoid the following;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Too many visuals: Do not cram every chart onto one page. Limit to about        3–5 key visuals to avoid overwhelming viewers.&lt;/li&gt;
&lt;li&gt;Unnecessary Complexity: Avoid overly complex charts that require training to understand.&lt;/li&gt;
&lt;li&gt;Ignoring Key Metrics: Failing to highlight the most important KPIs immediately.&lt;/li&gt;
&lt;li&gt;Too Many Slicers: Using too many filters/slicers on a page slows down report&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;5.Missing Labels: Never leave axes, titles, or legends unlabeled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CONCLUSION&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Translating messy data before actual data analysis is critical in every analytics.PowerBi offers clean platform and easy visualization of data to assist in decison making.&lt;/p&gt;

&lt;p&gt;kindly share your views and areas of rectification in the comment section.&lt;br&gt;
kind regards.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>data</category>
      <category>datascience</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Schemas and Data Modelling in Power BI - Core Concepts:</title>
      <dc:creator>George Mathenge</dc:creator>
      <pubDate>Sun, 08 Feb 2026 18:37:08 +0000</pubDate>
      <link>https://forem.com/gigomkenya/power-bi-data-modelling-and-data-modelling-concepts-3den</link>
      <guid>https://forem.com/gigomkenya/power-bi-data-modelling-and-data-modelling-concepts-3den</guid>
      <description>&lt;p&gt;what's data modelling;&lt;br&gt;
Its a concept used in power bi in organizing tables and defining relationships between them. Its the art of analyzing defining of different data types where relationships between bits of da ta are created.&lt;br&gt;
 Some of the benefits of data modelling:             &lt;/p&gt;

&lt;p&gt;1.&lt;strong&gt;saving time and money&lt;/strong&gt;&lt;br&gt;
      It  saves time and lots of process in investments through appropriate planning.&lt;br&gt;
2.&lt;strong&gt;Well structured data system&lt;/strong&gt;&lt;br&gt;
  With data modelling one is able to connect between business and able to do analysis easily.&lt;br&gt;
3.&lt;strong&gt;Reducing errors&lt;/strong&gt;&lt;br&gt;
   it reduces errors by ensuring non redundant data doesn't enter in your data system.&lt;/p&gt;

&lt;p&gt;4.&lt;strong&gt;Tracking and setting target.&lt;/strong&gt;&lt;br&gt;
  Give's  indicators and timely tailored performances targets to your business objectives. &lt;/p&gt;

&lt;p&gt;An example of data modeling in power BI as shown in the diagram 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%2Fs1q1qvgm1uv3tm225jjn.jpeg" 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%2Fs1q1qvgm1uv3tm225jjn.jpeg" alt=" " width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SCHEMAS&lt;/strong&gt;&lt;br&gt;
They are logical framework and organization of tables, relationships and data structure with a sematic model acting as the blue print.&lt;br&gt;
We have different types of schemas; &lt;/p&gt;

&lt;p&gt;1.&lt;strong&gt;Star Schema&lt;/strong&gt;&lt;br&gt;
 This most used type of schema used in powerbi.Star schema is a mature modeling approach widely adopted by relational data warehouses. It requires modelers to classify their model tables as either dimension or fact.&lt;br&gt;
An example of star schema.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fco3vtq6xi64jww7m46zr.webp" 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%2Fco3vtq6xi64jww7m46zr.webp" alt=" " width="308" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a fact table&lt;/strong&gt;;&lt;br&gt;
A fact table contains dimension key columns that relate to dimension tables, and numeric measure columns. The dimension key columns determine the dimensionality of a fact table, while the dimension key values determine the granularity of a fact table.&lt;br&gt;
Generally, dimension tables contain a relatively small number of rows. Fact tables, on the other hand, can contain a large number of rows and continue to grow over time.&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt;Snow flake schema&lt;/strong&gt; &lt;br&gt;
 snowflake schema is a type of data modeling technique used in data warehousing to represent data in a structured way that is optimized for querying large amounts of data efficiently It is a variant of the star schema, where the centralized fact table is connected to multiple dimensions. It has several key characteristics;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hierarchical Structure: The schema has a hierarchical structure organized around a central fact table.&lt;/li&gt;
&lt;li&gt;Multiple Levels: The schema can have multiple levels of dimension tables, allowing for more granular analysis of data.&lt;/li&gt;
&lt;li&gt;Joins: The schema typically requires more complex SQL queries involving multiple table joins.
-Joins: The schema typically requires more complex SQL queries involving multiple table joins. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example of a snowflake kind of schema.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsq6vyahftlwfsd1e2xnt.webp" 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%2Fsq6vyahftlwfsd1e2xnt.webp" alt=" " width="301" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;schema patterns between star and snow flake schemas.&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%2Foahmrr8w1bf3kie0py4e.webp" 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%2Foahmrr8w1bf3kie0py4e.webp" alt=" " width="373" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Among the two the most used is the star schema is the most used as its easy to do understand and its well defined to allow faster querying and smooth report interaction.&lt;/p&gt;

</description>
      <category>powerbi</category>
      <category>developer</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Beginners guide to version control with Git and GitHub.</title>
      <dc:creator>George Mathenge</dc:creator>
      <pubDate>Sun, 18 Jan 2026 09:03:02 +0000</pubDate>
      <link>https://forem.com/gigomkenya/beginners-guide-to-version-control-with-git-and-github-4kek</link>
      <guid>https://forem.com/gigomkenya/beginners-guide-to-version-control-with-git-and-github-4kek</guid>
      <description>&lt;p&gt;Git is a strong and powerful version control system which developers track changes in their codes. They do also collaborate with others ad manage projects efficiently. Version control so important because it allows you keep a history of work done and revert to previous versions and work with teams with necessarily overwriting each other code. For starters you need to install GitBash.GitBash provides a command line interface that allows you to interact with Git easily.You then connect Git Bash with your git hub account for easy storage of your codes and collaborating with others.&lt;br&gt;
You start pushing code to GitHub by saving your changes and uploading them to a remote repository. Its ensures your work is backed up and easily accessible from anywhere. You can also pull a code from GitHub to download updates made to a repository keeping you local project upto date.&lt;br&gt;
Git also make it easy for one to trac changes done. It records what was modified and when it was changed and why, helping one understand the project and its evolution.&lt;/p&gt;

</description>
      <category>developer</category>
    </item>
  </channel>
</rss>
