<?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: Michael Mwai</title>
    <description>The latest articles on Forem by Michael Mwai (@michaelmwai).</description>
    <link>https://forem.com/michaelmwai</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%2F3732855%2Fc0861f82-1003-4d46-b181-c633d8c74dbe.jpg</url>
      <title>Forem: Michael Mwai</title>
      <link>https://forem.com/michaelmwai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/michaelmwai"/>
    <language>en</language>
    <item>
      <title>Extract Transform Load vs Extract Load Transform (ETL vs ELT)</title>
      <dc:creator>Michael Mwai</dc:creator>
      <pubDate>Tue, 14 Apr 2026 15:57:04 +0000</pubDate>
      <link>https://forem.com/michaelmwai/extract-transform-load-vs-extract-load-transform-etl-vs-elt-ohe</link>
      <guid>https://forem.com/michaelmwai/extract-transform-load-vs-extract-load-transform-etl-vs-elt-ohe</guid>
      <description>&lt;p&gt;A data pipeline constitutes tools, steps and processes that automate movement of harvested data to a destination system. The destination system can be either for analysis or for storage of the data. &lt;br&gt;
A pipeline can be broken down into 3 broad processes namely:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Extraction&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Transfromation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Loading&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Extraction
&lt;/h2&gt;

&lt;p&gt;This is always the initial stage of any data pipeline. It is at this stage where data is gathered and harvested from different sources it is found. The data can be from more than one source. There are numerous sources of data and these include, but are not limited to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Files - Files in different formats likes CSVs, excel sheets, PDFs can contain raw data that can extracted.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Web scraping data - Data can be sourced by scraping a single or multiple websites with the relevant data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Databases - Databases are used by organisations to store data that they can consider raw data that they can use.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Transformation
&lt;/h2&gt;

&lt;p&gt;Raw data from the extraction stage is always considered messy. Messy in this context can mean a lot of different things depending on how the intended data is meant to look. Messy can mean data is in an usable format(eg. numerical data written in words), or has values in a unit the user does not prefer(eg.imperial units instead of metric units) or the data is full of errors(like spelling errors) and many other ways. It is at this stage that the data is manipulated and transformed to the desired state by the user.&lt;br&gt;
There are numerous processes that can be performed in this stage:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Data wrangling - This is the process of converting data from its raw form to a tidy format that has structure. Involves actions like converting names of countries to their abbreviations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data Cleaning - This is the process of removing data that does not meet some preset user defined rules for the task to ensure the data is accurate, consistent and relevant. An example would be removing data of people aged 60 and below if the scope of an analysis is on the 'elderly'. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data transformation - It is the process of converting raw from on one format and structure to another to make sure it is easy to use , integrate or analyze.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Loading
&lt;/h2&gt;

&lt;p&gt;This is the stage where data that has undergone transformation or also raw data is loaded into a system. The system can either be for storage like in data warehouses and databases or for analysis like in Power BI.&lt;/p&gt;

&lt;p&gt;It is the order of the transformation and loading stage after extraction that determines whether a pipeline is ELT or ETL. In ETL, the methodology is that the transformation comes prior to the loading while in ELT, the loading precedes the transformation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ETL&lt;/strong&gt;: Extract → Transform → Load&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ELT&lt;/strong&gt;: Extract → Load → Transform&lt;/p&gt;

&lt;h2&gt;
  
  
  ETL
&lt;/h2&gt;

&lt;p&gt;ETL methodology has been around for many years  and has been the standard way of operating a data pipeline. This approach was majorly driven by the historic high prices of memory(storage). With storage being a scarce resource, organizations could not afford to store data they considered junk. Only data that was useful could be stored and therefore data had to be wrangled, cleaned and transformed before it was stored. Tools that use this approach are substantial in number and have been perfected over the years to become reliable and robust. Examples of these are Talend and Informatica. &lt;/p&gt;

&lt;h2&gt;
  
  
  ELT
&lt;/h2&gt;

&lt;p&gt;With the boom of the internet in the 2000s, it became an avenue for providing services and the amount of data handled by organizations grew exponentially. Data became even more important for some of these organizations because it could be used to derive more insights that can potentially increase revenue. Data quickly became the new gold and organizations needed more of it. Luckily, by around 2010, memory had become so inexpensive that the potential advantage of not storing what was considered junk(but could be useful in future) was no longer compelling. With memory being justifiably cheap, the only problem was scaling resources to handle the large amounts of data pouring in. We were in luck again because the rise of the cloud solved this challenge. With cloud services, you could scale operations and resources like storage easily, with flexibility and efficiently. Consequently, organizations no longer needed to transform data beforehand hence the adoption of ELT.&lt;/p&gt;

&lt;p&gt;So, when and in what situation does ETL make more sense than ELT and vice versa? To get there, we must understand the functional differences between ETL and ELT. The differences are as follows:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ETL&lt;/th&gt;
&lt;th&gt;ELT&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Raw data is lost after transformation&lt;/td&gt;
&lt;td&gt;Raw data is always preserved for re-transformation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reduces storage cost because raw data is not saved&lt;/td&gt;
&lt;td&gt;Higher storage costs because raw data takes more space in storage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Older methodology and therefore has a lot of robust tools&lt;/td&gt;
&lt;td&gt;New methodology and therefore needs powerful destination systems that can handle transformation - which are few in the market&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Slower iteration because re-runs require full re-extraction&lt;/td&gt;
&lt;td&gt;Allows iterate on transforms without re-ingestion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stronger compliance by filtering sensitive data early&lt;/td&gt;
&lt;td&gt;Sensitive data reaches the warehouse unfiltered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Schema changes break pipelines easily&lt;/td&gt;
&lt;td&gt;Schema changes don't affect the data pipeline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Does not scale with cloud warehouse compute — external processing layers hit capacity ceilings as data volumes grow&lt;/td&gt;
&lt;td&gt;Scale easily with cloud warehouse compute&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Use cases for ETL and ELT
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ETL&lt;/th&gt;
&lt;th&gt;ELT&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;When working with regulated sensitive data eg. financial information, HIPAA etc. The data must be masked or drop sensitive fields before they enter storage&lt;/td&gt;
&lt;td&gt;When you need to preserve raw data for auditing, debugging, or future re-modelling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;When the cost of storing raw data outweighs the benefit of preserving it&lt;/td&gt;
&lt;td&gt;When you want analysts and data teams to iterate on business logic without re-ingesting data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;When your destination is a legacy relational database with limited compute (MySQL, PostgreSQL, on-premise data warehouses)&lt;/td&gt;
&lt;td&gt;When you are on a modern cloud data warehouse (BigQuery, Snowflake, Redshift, Databricks) with scalable compute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data volume is modest and transformations are stable, well-understood, and unlikely to change often&lt;/td&gt;
&lt;td&gt;When data volumes are large and growing, and you favour ingestion speed over transformation speed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The choice of whether to use ETL or ELT is not a straight-forward answer. The choice is a function of organization needs, cost, the SOPs(standard operating procedures) of an organisation or institution, the existing regulation on data handled, destination of the data and many others. The merits and demerits of each system have to be weighed and the approach with the most benefits to the user or organization is picked. Organizations have also adapted by switching between ELT and ETL when conditions necessitate the switch. This has ensured flexibility and compliance in their operations.&lt;br&gt;
It is worth noting that the modern approach is ELT. The industry has shifted decisively toward ELT for most modern data workloads since they are implemented on the cloud. ETL is however going to be around for a long time because it has its unique use cases and there is room for both paradigms to coexist.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>beginners</category>
      <category>data</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>How to Connect PowerBI to a local and cloud-hosted postgreSQL database</title>
      <dc:creator>Michael Mwai</dc:creator>
      <pubDate>Sat, 21 Mar 2026 13:27:33 +0000</pubDate>
      <link>https://forem.com/michaelmwai/how-to-connect-powerbi-to-a-local-and-cloud-hosted-postgresql-database-38e</link>
      <guid>https://forem.com/michaelmwai/how-to-connect-powerbi-to-a-local-and-cloud-hosted-postgresql-database-38e</guid>
      <description>&lt;p&gt;PowerBI is a business analytics platform developed and maintained by Microsoft. It has gained traction for its simplicity and has increasingly become the go to software for business analytics by many small, medium and large businesses. Many, if not most, of these businesses have their data stored in databases because databases ensure the data is secure, has structure and can be stored and retrieved at anytime. Analytics platforms like powerBI therefore have to provide means through which analysts can access the company data that is housed in the databases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting PowerBI to a local postgres database
&lt;/h2&gt;

&lt;p&gt;The following steps outline how to connect PowerBI to a local postgres database:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Launch PowerBI on your computer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Blank report and from the Home tab click on '&lt;strong&gt;Get Data&lt;/strong&gt;'.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;More...&lt;/strong&gt; option on the Common Data Sources Wizard that appears&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%2F9r607bm8t4hmohnj0tqz.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%2F9r607bm8t4hmohnj0tqz.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On the &lt;strong&gt;Get Data&lt;/strong&gt; wizard box scroll down and locate &lt;strong&gt;PostgreSQL database&lt;/strong&gt; option and select it. Click on the green &lt;strong&gt;Connect&lt;/strong&gt; button at the bottom of the wizard.&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%2F30lmsn5t80ra0977vqo2.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%2F30lmsn5t80ra0977vqo2.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The PostgresSQL database wizard appears with fields &lt;strong&gt;server&lt;/strong&gt; and &lt;strong&gt;database&lt;/strong&gt; to be filled. Since the postgres database is locally hosted, fill the server filled with &lt;strong&gt;localhost&lt;/strong&gt;. You should also supply the &lt;strong&gt;port number&lt;/strong&gt; of choice for this connection. The &lt;strong&gt;server name&lt;/strong&gt; and &lt;strong&gt;port number&lt;/strong&gt; is separated by a &lt;strong&gt;colon (:)&lt;/strong&gt;. By convention, the port number for postgreSQL is 5432 and will be the default port number if the port number is not supplied. If 5432, is unvailable, it is standard to use 5433. The server field will therefore be filled by &lt;strong&gt;localhost:5432&lt;/strong&gt;&lt;br&gt;
Proceed to fill the Database field with the name of database you want to connect to.&lt;br&gt;
Proceed to Choose &lt;strong&gt;Data Connectivity Mode&lt;/strong&gt;. &lt;strong&gt;Import Mode&lt;/strong&gt; should be your go to connectivity mode if you want to do a full scale data analysis since it imports the data tables to your PowerBI allowing you to perfom EDA on the data.&lt;br&gt;
Click &lt;strong&gt;OK&lt;/strong&gt; to connect. &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%2F4vyubf5y1g306xvjrhfe.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%2F4vyubf5y1g306xvjrhfe.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A &lt;strong&gt;Navigator&lt;/strong&gt; wizard box appears upon successful connection showing your database on the left pane with the tables it holds under it. Select the tables you wish to use by checking the checking box next to it. &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%2F34kfvu14289gg575pcks.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%2F34kfvu14289gg575pcks.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Transform&lt;/strong&gt; if the data in the tables needs any transformation before use, otherwise, click &lt;strong&gt;Load&lt;/strong&gt; to load all tables into your model.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Connecting to a Postgres Database Hosted on the Cloud
&lt;/h2&gt;

&lt;p&gt;For this demonstration, I will showing how to connect to a postgres database hosted on Aiven. Aiven is an open source data platform that offers a variety of services including databases like MySQL and PostgreSQL.&lt;br&gt;
Ensure you have set up your postgres database on Aiven before taking the following steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sign in to your Aiven account&lt;/li&gt;
&lt;li&gt;After logging in, on the menu on the left, select &lt;strong&gt;services&lt;/strong&gt; to show the services under your account.&lt;/li&gt;
&lt;li&gt;Locate the postgres service and ensure it is running. If not, click on the &lt;strong&gt;Action&lt;/strong&gt; (&lt;strong&gt;'...'&lt;/strong&gt;)  button the farthest right of the service to restart the service. &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%2Fotw6qpu0m4763oiwq7nr.png" alt=" " width="800" height="449"&gt;
&lt;/li&gt;
&lt;li&gt;Click on your postgres services to view the connection details of your service like host, database name, port number, user, password.
&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%2Fttjixcrzwoqd2ljw9m0t.png" alt=" " width="800" height="449"&gt;
&lt;/li&gt;
&lt;li&gt;Open a blank PowerBI report, click &lt;strong&gt;Get Data&lt;/strong&gt; from the &lt;strong&gt;Home Tab&lt;/strong&gt; and then &lt;strong&gt;More...&lt;/strong&gt; option then &lt;strong&gt;PostgresSQL database&lt;/strong&gt; and click Connect. &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%2F09rvm4612ramrqvgefkk.png" alt=" " width="800" height="449"&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%2Fijnzyhtdj8r5gsxjurte.png" alt=" " width="800" height="449"&gt;
&lt;/li&gt;
&lt;li&gt;Populate the &lt;strong&gt;Server&lt;/strong&gt; and &lt;strong&gt;Database&lt;/strong&gt; fields with the information from the Connection details from Aiven. &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%2Fcgrzn392f3ka3d1k8wjs.png" alt=" " width="800" height="449"&gt;
Click connect and provide the &lt;strong&gt;Username&lt;/strong&gt;, &lt;strong&gt;password&lt;/strong&gt; and click connect.&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%2Fzyfbt4qbptdyajiqwc36.png" alt=" " width="800" height="449"&gt;
&lt;/li&gt;
&lt;li&gt;Select the tables to add to your Data Model and click &lt;strong&gt;Load&lt;/strong&gt; to load the tables or &lt;strong&gt;Transform&lt;/strong&gt; to transform the data before loading for use.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>database</category>
      <category>microsoft</category>
      <category>postgres</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Michael Mwai</dc:creator>
      <pubDate>Mon, 16 Mar 2026 16:53:31 +0000</pubDate>
      <link>https://forem.com/michaelmwai/-3f6</link>
      <guid>https://forem.com/michaelmwai/-3f6</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/the_nortern_dev" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F3630167%2F2e206d7e-04d3-484b-8a73-1f98d17a0e1a.png" alt="the_nortern_dev"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/the_nortern_dev/i-think-a-lot-of-developers-are-quietly-grieving-the-old-internet-3d8" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;I Think a Lot of Developers Are Quietly Grieving the Old Internet&lt;/h2&gt;
      &lt;h3&gt;NorthernDev ・ Mar 16&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#culture&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>discuss</category>
      <category>webdev</category>
      <category>programming</category>
      <category>culture</category>
    </item>
    <item>
      <title>How Analysts Translate Messy Data, DAX, and Dashboards into Action Using Power BI</title>
      <dc:creator>Michael Mwai</dc:creator>
      <pubDate>Mon, 09 Feb 2026 06:40:34 +0000</pubDate>
      <link>https://forem.com/michaelmwai/how-analysts-translate-messy-data-dax-and-dashboards-into-action-using-power-bi-2lkb</link>
      <guid>https://forem.com/michaelmwai/how-analysts-translate-messy-data-dax-and-dashboards-into-action-using-power-bi-2lkb</guid>
      <description>&lt;p&gt;With the importance of data in business being realized, the need and demand for adequate data has been rising exponentially. These businesses will try gather the data they need directly from source(the people) to increase its acccuracy but can also get such data from third parties.  The required information reaches the businesses in many forms, and part of a data analyst's job is making sure that information is organized in a way that's conducive for analysis. Power BI is one of the go-to software resources used to handle business data for analysis.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Data
&lt;/h3&gt;

&lt;p&gt;Power BI offers analysts a variety of data connectors, making it easy to pull and merge data from diverse sources like SQL databases, Excel workbooks, CSV files, and even PDFs. This makes it easy to source and combine data from different sources without leaving Power BI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Cleaning and Transformation
&lt;/h3&gt;

&lt;p&gt;Power BI utilizes Power Query to do transformation of data that is already loaded or about to be loaded. Power Query gives the business analyst power to transform the raw data to a desirable format that is usable in the analysis stage. These transfromations can include actions like removing duplicate data, adding or replacing missing values, make corrections on the present data, removing outliers. Also, parts of the data can be changed into a desirable structure eg. changing date format from MM-DD-YYYY to DD-MM-YYYY.&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Modelling
&lt;/h3&gt;

&lt;p&gt;This stages allows an analyst set the general outlay of the business data allowing for tables to organized as a star schema or snowflake schema. The various tables will be identified as the fact or dimensional tables.&lt;br&gt;
The relationship between the tables is also managed in this section ensuring data across the multiple tables is accessible.&lt;/p&gt;

&lt;h3&gt;
  
  
  DAX (Data Analysis Expressions)
&lt;/h3&gt;

&lt;p&gt;The DAX language was created specifically for the handling of data models, through the use of formulas and expressions. It is these expressions, formulas and functions that are used to do analysis operations on the data. Operations like aggregation, logical analysis, time and data analysis, statistical analysis, filter functions, financial calculations are used to evaluate the data. &lt;br&gt;
DAX uses diffirent operators to that indicate the kind of operation that will be done depending on predetermined preference value. The operators (from highest precedence to lowest) include: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;() - Parenthesis&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2.FN() -Scalar functions&lt;/p&gt;

&lt;p&gt;3.IN - Inclusive OR list&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;^ - Exponential&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sign - unary plus/minus eg.-1&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multiplication/division(*,/)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;addition/subtraction(+,-)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;amp; - Text Concatenation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;=, ==, &amp;lt;&amp;gt;, &amp;lt;, &amp;gt;, &amp;lt;=, &amp;gt;= - Comparison operators&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NOT - Logical negation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;amp;&amp;amp; - Logical AND&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;12 || - Logical OR&lt;/p&gt;

&lt;h3&gt;
  
  
  Data Visualizations
&lt;/h3&gt;

&lt;p&gt;It is easier for people to comprehend data presented graphically than numerically.For this reason, Power BI offers an assortment of data visualization tools like charts, graphs, cards, filters that are used to give the summary of the insights drawn from the data. Different type of graphs are used for different roles, for example, a line chart is used to show a trend while a bar graph is used to compare categorical data. &lt;br&gt;
The final visualization is the dashboard that shows the most important data summaries inform of charts, graphs, KPIs to inform the decision making process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reporting
&lt;/h3&gt;

&lt;p&gt;Power BI allows analysts to generate and publish reports that detail their findings that are shareable with the decision makers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Power BI is a powerful end to end analytics tool that allows an analysts to get data, clean and transform it, analyse it, visualize insights and publish a report all within the same application.&lt;br&gt;
Well communicated data-backed insights empower decision making teams to move away from guesswork and take decisive action based on empirical findings.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>data</category>
      <category>datascience</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Data Modelling and Scheming in PowerBI</title>
      <dc:creator>Michael Mwai</dc:creator>
      <pubDate>Mon, 02 Feb 2026 11:14:06 +0000</pubDate>
      <link>https://forem.com/michaelmwai/data-modelling-and-scheming-in-powerbi-1ma4</link>
      <guid>https://forem.com/michaelmwai/data-modelling-and-scheming-in-powerbi-1ma4</guid>
      <description>&lt;p&gt;Power BI is a data analytics and data visualization tool that can be useful to generate insights that will be used to make informed business decisions. Since is the source of these insights is the data, it has to be accurate, consistent and relevant in order to generate quality results that are usable in the decision making process. Data modelling and data scheming are concepts used to ensure the data quality is maintained, allowing for analysing and visualizing to be done quickly and efficiently. Data modelling is the process of structuring your data in tables, defining the relationships between the tables and defining calculations done data in the tables in form of expressions and formulas. Data scheming on the other hand is process of coming up with an architectural design pattern of your data tables to ensure analysis of data sourced from the different table is seamless and efficient.&lt;/p&gt;

&lt;p&gt;A robust data model by the current standards has to have 2 types of tables:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A fact table&lt;/li&gt;
&lt;li&gt;A dimension table&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The fact table is the primary and central table in a data model. It used to store quantitative and measurable data like transactions and orders. &lt;br&gt;
A dimensional table is one that has descriptive information about the data. Thereby giving more context about the data. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;Relationships&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Relationships are conceptual ideas that serve to indicate how data between different tables is related or connected. This is achieved through the use of a primary and a foreign key. The primary is located in dimensional tables while the foreign key is the fact table. &lt;br&gt;
There are several types of relationships:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;One-to-Many: This is the most common relationship, where one record in the dimension table relates to multiple records in the fact table.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One-to-One: Where one record in the dimension table relates to one record in the fact table.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Many-to-Many: Where more than one record in a table is related to more than one record in another table.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;Schemas&lt;/em&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Star Schema&lt;br&gt;
This schema involves have a central table that serves as the fact table and other tables radiate from it and make up the dimensional tables. This organization forms a start like representation hence the name star schema. &lt;br&gt;
Star schema’s strength lay in its simplicity and performance. The performance is guaranteed since few joins are needed to aggregate the data from multiple data tables. For these reasons, start schema stand to be the most widely used and recommended schema in Power BI.   &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Snowflake Schema&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The snowflake schema extends the star schema by introducing more dimension tables. Instead of a single product dimension, you can break it into separate tables for products, categories, and subcategories. &lt;br&gt;
Although this reduces data redundancy and mirrors traditional database design principles, it comes with trade-offs in Power BI like slower queries due to the necessity for more joins. The higher number of joins is as a result of the additional relationship chains that the engine must navigate, potentially slowing down the query performance. Additionally, it is hard to manage as it makes DAX calculations complicated and makes models more difficult for business users to understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;Why Modeling Quality Matters&lt;/em&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Performance: Poor data modelling not only slows down reports but can also produce incorrect results thereby reducing productivity. On the other hand, A well-designed model model minimizes the number of joins required for calculations, significantly speeding up report generation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Accuracy and Reliability:  A well-structured data model can also make automation a seamless process well defined relationships allow Power BI to efficiently handle daily, hourly, or scheduled data refreshes, preventing "timeout errors" common in un-modeled, flat, or chaotic datasets. Clear relationships and distinct fact/dimension tables also prevent calculation errors and ensure that filters apply correctly. Ambiguous relationships or a flat, denormalized table can lead to incorrect aggregations and misleading insights.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Usability and Maintainability: A logical and intuitive data model is easier for report developers to understand and build upon. It simplifies DAX calculations and reduces the likelihood of introducing errors. It also makes the model easier to maintain and extend as business requirements evolve.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalability: A well-designed schema can handle growing data volumes without a proportional drop in performance. This is vital as organizations collect more and more data over time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In conclusion, poorly done data modelling and data scheming can result in reduced productivity arising from slow calculations, inaccurate calculations and delayed reports.&lt;br&gt;&lt;br&gt;
Since data is business specific, it is prudent that one organizes data tables into clear relationships that mirror the actual operations of the business to improve conciseness and reduce ambiguity.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>data</category>
      <category>dataengineering</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Introduction to Linux for Data Engineers, Including Practical Use of Vi and Nano with Examples</title>
      <dc:creator>Michael Mwai</dc:creator>
      <pubDate>Mon, 26 Jan 2026 12:12:46 +0000</pubDate>
      <link>https://forem.com/michaelmwai/introduction-to-linux-for-data-engineers-including-practical-use-of-vi-and-nano-with-examples-1f25</link>
      <guid>https://forem.com/michaelmwai/introduction-to-linux-for-data-engineers-including-practical-use-of-vi-and-nano-with-examples-1f25</guid>
      <description>&lt;p&gt;It is an undeniable fact that linux powers the biggest portion of the world’s computing infrastructure; and there is enough statistical data to back this up. This is attributed to linux’s reputation of being stable and secure.  In this era where data is the new gold mine, a lot of this data flows through these systems that are powered by linux operating system. It is therefore paramount for any data engineer to have a good grasp of linux OS, its concepts and its most basic commands to ensure they are productive while working with these systems. These basic commands include but not limited to:&lt;br&gt;
ls  - List files and folders in a directory&lt;br&gt;
cd – Change directry&lt;br&gt;
pwd – Show the current working directory&lt;br&gt;
man – Used to look up any command in the manual&lt;br&gt;
mv – Used to move or rename files&lt;br&gt;
cp – Used to make a copy of a file.&lt;br&gt;
chmod – Used to change the file permissions&lt;br&gt;
chown – Used to change the ownership of a file&lt;/p&gt;

&lt;p&gt;It is important to be aware of the flags/options that go with these commands for the purpose of allowing the commands to behave differently or to enable additional functionality.&lt;/p&gt;

&lt;p&gt;Linux Text Editors&lt;/p&gt;

&lt;p&gt;a. nano&lt;br&gt;
nano is an easy to use text editor that is quite easy to grasp.&lt;br&gt;
To open a file on nano, type nano and the filename afterwards and press enter. &lt;br&gt;
Useful commands in nano are:&lt;br&gt;
Ctrl + C – Show cursor position in the editor&lt;br&gt;
Ctrl + X – Exit the editor&lt;br&gt;
Ctrl +  G – Display the help screen&lt;br&gt;
Ctrl + O – Write to a file&lt;/p&gt;

&lt;p&gt;Eg.&lt;br&gt;
nano configs.txt → Opens the file configs.txt if it exists.  If it doesn’t exist, nano creates it and opens it.&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%2Fvk3kulrlcltkdw9kpjjp.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%2Fvk3kulrlcltkdw9kpjjp.png" alt=" " width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;b. Vi&lt;br&gt;
Vi provides 3 modes in which keys perform different actions depending on the mode vi is in. The modes are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Command mode
It is the default mode. In this mode, each key is an editor command, that is, any keyboard stroke is interpreted as a command that can modify the files contents.&lt;/li&gt;
&lt;/ol&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%2Fioqs2lpsass9uvks1juo.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%2Fioqs2lpsass9uvks1juo.png" alt=" " width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Insert mode
You type “i” to switch to insert mode from command mode. It is indicated by an “?INSERT?” at the bottom of the screen.
Insert mode is used to enter(insert) text into a file.
To exit insert mode, you press Esc key and by default go back to command mode.&lt;/li&gt;
&lt;/ol&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%2Fxir5ycjgeq6no12m1bbz.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%2Fxir5ycjgeq6no12m1bbz.png" alt=" " width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Line mode
One types : to switch to the line mode from command mode.
In this mode, each key is an external command. These are actions like writing the file contents to the disk or exiting.
To exit insert mode, you press Esc key and by default go back to command mode.&lt;/li&gt;
&lt;/ol&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%2Fx2dopluij15yynglminl.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%2Fx2dopluij15yynglminl.png" alt=" " width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Linux mastery is a must have skill for a data engineer because it is the foundational operating system for the majority of data infrastructure, cloud computing platforms, and production environments.&lt;br&gt;
Text editors like vi and nano are useful utility softwares used in linux for many tasks such as creating or modifying system configuration files, writing scripts, developing source code hence the need to know how to use and navigate through them.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cli</category>
      <category>dataengineering</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
