<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: JOAN NJOKI</title>
    <description>The latest articles on DEV Community by JOAN NJOKI (@njokijoan003commits).</description>
    <link>https://dev.to/njokijoan003commits</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%2F3709635%2F1535ee7f-c547-4f48-ada9-5997b34a88f9.png</url>
      <title>DEV Community: JOAN NJOKI</title>
      <link>https://dev.to/njokijoan003commits</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/njokijoan003commits"/>
    <language>en</language>
    <item>
      <title>Connecting Power BI to an SQL database</title>
      <dc:creator>JOAN NJOKI</dc:creator>
      <pubDate>Sat, 21 Mar 2026 12:05:09 +0000</pubDate>
      <link>https://dev.to/njokijoan003commits/connecting-power-bi-to-an-sql-database-5goh</link>
      <guid>https://dev.to/njokijoan003commits/connecting-power-bi-to-an-sql-database-5goh</guid>
      <description>&lt;p&gt;In this article, we'll explore how to connect Power BI to a PostgreSQL database, a popular open-source relational database management system. We'll cover both local and cloud-based PostgreSQL connections, discuss data modeling, and highlight the importance of SQL skills for Power BI analysts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Power BI and Why is it Used?&lt;/strong&gt;&lt;br&gt;
Power BI is a business analytics tool that allows you to analyze data, create compelling visualizations, and share insights across your organization. It's used for data analysis, business intelligence (BI), and creating interactive reports and dashboards. Power BI enables data professionals to connect to a wide range of data sources, transform and clean the data, and build data models.&lt;/p&gt;

&lt;p&gt;Connecting Power BI directly to databases is essential for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-Time Data Analysis using Dashboards&lt;/li&gt;
&lt;li&gt;Efficiently storing and managing vast amounts of data&lt;/li&gt;
&lt;li&gt;Centralized Data Management&lt;/li&gt;
&lt;li&gt;Managing complex Data Relationships&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SQL databases (like PostgreSQL) are fundamental for storing and managing analytical data because they provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structured data that ensures data consistency and accuracy.&lt;/li&gt;
&lt;li&gt;Efficient querying with SQL for powerful and efficient data retrieval and manipulation.&lt;/li&gt;
&lt;li&gt;Scalability to accommodate growing datasets and increasing user demands.&lt;/li&gt;
&lt;li&gt;Data integrity to maintain data reliability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Connecting Power BI to a Local PostgreSQL Database&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1. Open Power BI&lt;/strong&gt;&lt;br&gt;
Launch the Power BI Desktop application and click on the "Get Data" button on the "Home" ribbon&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%2Fvaottjnxzmg2ac2vyhax.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%2Fvaottjnxzmg2ac2vyhax.png" alt=" " width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Choose PostgreSQL&lt;/strong&gt;&lt;br&gt;
From the list of choices, click on more and select PostgreSQL Database and click on connect&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%2Flumoiez29ucjdzuzystl.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%2Flumoiez29ucjdzuzystl.png" alt=" " width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Enter Server Details&lt;/strong&gt;&lt;br&gt;
Enter the local database details from your pgAdmin 4: server as localhost and the specific name of the database you are connecting to.&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%2Flh7lnzjt3gynnww9p4em.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%2Flh7lnzjt3gynnww9p4em.png" alt=" " width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Provide Credentials&lt;/strong&gt;&lt;br&gt;
Enter your Username and Password as set up during your PostgreSQL installation.&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%2F9fd1ddg39u08focunxsy.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%2F9fd1ddg39u08focunxsy.png" alt=" " width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Load Tables&lt;/strong&gt;&lt;br&gt;
After successfully authenticating, a "Navigator" window will appear, displaying all the tables and views in your database. Select the relevant tables (e.g., customers, products, sales, inventory) and click "Load."&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%2Fq1yymebpupjrgpa76rkp.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%2Fq1yymebpupjrgpa76rkp.png" alt=" " width="800" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After loading your data, choose the table view to view your data in table format or the model view to see the relationships and create 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%2Fxcfcdax0f2s0salg8rgp.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%2Fxcfcdax0f2s0salg8rgp.png" alt=" " width="800" height="468"&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%2Fxksgwaphotsv7lzw2vdq.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%2Fxksgwaphotsv7lzw2vdq.png" alt=" " width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connecting Power BI to a Cloud Database (Aiven PostgreSQL)&lt;/strong&gt;&lt;br&gt;
Aiven, a cloud database service, provides a secure PostgreSQL environment&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Obtain Connection Details from Aiven&lt;/strong&gt;&lt;br&gt;
Log in to your Aiven account and locate your postgreSQL service&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%2F4xffzexzr1umz3xphb1v.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%2F4xffzexzr1umz3xphb1v.png" alt=" " width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the dashboard, you will find information on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host name
Port number
Database name
Username
Password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F8mfej94aw1odprq7rv8c.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%2F8mfej94aw1odprq7rv8c.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Download the SSL Certificate&lt;/strong&gt;&lt;br&gt;
In the Aiven console, under the "Overview" or "Connection Information" section for your service, you will see an option to download the "CA Certificate" or "SSL Certificate." &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Establish the Connection in Power BI&lt;/strong&gt;&lt;br&gt;
Launch the Power BI Desktop application and click on the "Get Data" button on the "Home" ribbon&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%2Fvaottjnxzmg2ac2vyhax.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%2Fvaottjnxzmg2ac2vyhax.png" alt=" " width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Choose PostgreSQL&lt;/strong&gt;&lt;br&gt;
From the list of choices, click on more and select PostgreSQL Database and click on connect&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%2Flumoiez29ucjdzuzystl.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%2Flumoiez29ucjdzuzystl.png" alt=" " width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Enter Server Details&lt;/strong&gt;&lt;br&gt;
Enter the database details from your aiven service with the server details as &lt;code&gt;Host:Port&lt;/code&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%2Fsnwgp74127gu24xclxv4.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%2Fsnwgp74127gu24xclxv4.png" alt=" " width="800" height="415"&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%2Fcmyh5s5slucoro7qrz1z.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%2Fcmyh5s5slucoro7qrz1z.png" alt=" " width="800" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Preview the data and load 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%2Fqi26fige7bp4k59igikf.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%2Fqi26fige7bp4k59igikf.png" alt=" " width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read the data in table view to clean and remove duplicates or report view to establish relationships between the 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%2Ffm4m1fo5ykzlf0aiiwrf.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%2Ffm4m1fo5ykzlf0aiiwrf.png" alt=" " width="800" height="504"&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%2Faga1lr95353nxagftk7i.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%2Faga1lr95353nxagftk7i.png" alt=" " width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Modeling&lt;/strong&gt;&lt;br&gt;
Data modeling in Power BI involves creating a logical structure for your data, ensuring that Power BI understands how different tables interact. The fundamental concept is establishing relationships between tables using common columns (keys).&lt;br&gt;
To create a new relationship, open model view in power BI and click on manage relationships&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%2Ffi1nwhq6bjily45ol9mf.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%2Ffi1nwhq6bjily45ol9mf.png" alt=" " width="800" height="390"&gt;&lt;/a&gt;&lt;br&gt;
Select &lt;code&gt;+New relationship&lt;/code&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%2Fn7h8pcavsc6feo079rjt.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%2Fn7h8pcavsc6feo079rjt.png" alt=" " width="800" height="662"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the tables with similar primary keys that you want to 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%2Fuawnt7xftfu33v81i0ym.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%2Fuawnt7xftfu33v81i0ym.png" alt=" " width="695" height="716"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on save and close to view the new relationship&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%2Fbyl85alkhtrhakhma3fq.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%2Fbyl85alkhtrhakhma3fq.png" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The importance of data modelling in Power BI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Relationships are critical for calculating correct results in visualizations. When you create a chart showing sales by product category (where sales and product details are in different tables), Power BI uses the defined relationship to aggregate the sales data accurately according to the product category.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They allow for dynamic filtering. If you select a specific customer in one chart, all other linked charts and tables in your report will automatically filter to show data only for that selected customer. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why SQL Skills are Important for Power BI Analysts&lt;/strong&gt;&lt;br&gt;
While Power BI provides a robust user interface for connecting to and importing data, proficiency in SQL is highly beneficial for Power BI analysts for several key reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data Retrieval: Analysts can write custom SQL queries (using Power BI's "Advanced options" or "SQL statement" field during the connection phase) to retrieve only the required data. This avoids importing irrelevant or excessive data, significantly improving report performance.&lt;/li&gt;
&lt;li&gt;Filtering: complex filtering conditions can be applied directly in the SQL query, moving the data filtering load to the database server itself, which is often more efficient.&lt;/li&gt;
&lt;li&gt;Aggregations: SQL allows for pre-aggregating data (e.g., calculating daily sales summaries instead of importing every individual sales transaction). This creates a smaller, more optimized dataset for Power BI to handle.&lt;/li&gt;
&lt;li&gt;Data Transformation: Basic data cleaning, transformations (like formatting dates or combining columns), and calculations can be done using SQL functions before the data even enters Power BI. This leads to a cleaner and simpler data model within Power BI itself.&lt;/li&gt;
&lt;li&gt;Query Performance Tuning: If a Power BI report is slow to refresh, understanding the underlying SQL queries can help analysts identify and optimize inefficient database access patterns.&lt;/li&gt;
&lt;li&gt;DirectQuery Mode: Power BI's "DirectQuery" mode sends queries directly to the database in real-time. Crafting optimal SQL queries is absolutely essential for acceptable performance when using this mode with large datasets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Connecting Power BI to PostgreSQL, whether local or cloud-based, empowers you with real-time data access and the ability to analyze complex datasets. By understanding data modeling principles and leveraging SSL certificates for security, you can build reliable and impactful business intelligence solutions. While Power BI streamlines the analysis process, mastering SQL skills remains a critical differentiator for analysts, enabling them to optimize data retrieval, enhance performance, and deliver deeper, more accurate insights from their database connections&lt;/p&gt;

</description>
      <category>database</category>
      <category>analytics</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>JOINS AND WINDOW FUNCTIONS IN SQL</title>
      <dc:creator>JOAN NJOKI</dc:creator>
      <pubDate>Fri, 06 Mar 2026 10:40:19 +0000</pubDate>
      <link>https://dev.to/njokijoan003commits/joins-and-window-functions-in-sql-1pm5</link>
      <guid>https://dev.to/njokijoan003commits/joins-and-window-functions-in-sql-1pm5</guid>
      <description>&lt;p&gt;&lt;strong&gt;JOINS&lt;/strong&gt;&lt;br&gt;
The &lt;code&gt;JOIN&lt;/code&gt; clause is used to retrieve data from multiple tables based on logical relationships between them. Joins are fundamental to relational database operations and enable you to combine data from two or more tables into a single result set.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TYPES OF JOINS&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1. Inner Join&lt;/strong&gt;&lt;br&gt;
It returns only rows that have matching values in both tables.&lt;br&gt;
In SQL the &lt;code&gt;join&lt;/code&gt; and &lt;code&gt;inner join&lt;/code&gt; clause are the same&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%2Fhuasgi1i7vnmi0gd0hzy.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%2Fhuasgi1i7vnmi0gd0hzy.png" alt=" " width="455" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Right Join&lt;/strong&gt;&lt;br&gt;
It returns all rows from the right table, and only the matched rows from &lt;br&gt;
the left 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%2Frwkebmhoohjox4n5y5ni.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%2Frwkebmhoohjox4n5y5ni.png" alt=" " width="358" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Left Join&lt;/strong&gt;&lt;br&gt;
It returns all rows from the left table, and only the matched rows from the right 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%2Frez9v7mo71f5kqr0nml8.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%2Frez9v7mo71f5kqr0nml8.png" alt=" " width="452" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Full Join&lt;/strong&gt;&lt;br&gt;
It returns all rows when there is a match in either the left or right 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%2Fbjv7bz48yxb0iuqf1ix3.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%2Fbjv7bz48yxb0iuqf1ix3.png" alt=" " width="473" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WINDOW FUNCTIONS&lt;/strong&gt;&lt;br&gt;
A window function performs a calculation across a set of table rows that are somehow related to the current row. Unlike aggregate functions, which return a single value for a group of rows, window functions retain the identity of individual rows.&lt;br&gt;
The basic word that turns a regular function into a window function is &lt;code&gt;OVER&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LEAD FUNCTION&lt;/strong&gt;&lt;br&gt;
It provides access to a row at a specified physical offset that follows the current row.&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%2Fyyyrlitjieh3kr3bad7f.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%2Fyyyrlitjieh3kr3bad7f.png" alt=" " width="676" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LAG FUNCTION&lt;/strong&gt;&lt;br&gt;
It provides access to a row at a specified physical offset which comes before the current row.&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%2Fv3n8zgzwj2tx5blibr5q.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%2Fv3n8zgzwj2tx5blibr5q.png" alt=" " width="653" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NTILE FUNCTION&lt;/strong&gt;&lt;br&gt;
It allows you to break the result set into a specified number of approximately equal groups, or buckets by assigning each group a bucket number starting from one. For each row in a group, the &lt;code&gt;NTILE()&lt;/code&gt; function assigns a bucket number representing the group to which the row belongs.&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%2Fr450x2ejcrpdfl98njhj.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%2Fr450x2ejcrpdfl98njhj.png" alt=" " width="665" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PARTITION BY FUNCTION&lt;/strong&gt;&lt;br&gt;
This clause divides the result into partitions to which the window function is applied&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%2Fg1h7su9jd19udyh54hqe.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%2Fg1h7su9jd19udyh54hqe.png" alt=" " width="660" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ranking Functions: ROW_NUMBER, RANK, and DENSE_RANK&lt;/strong&gt;&lt;br&gt;
Ranking is one of the most common use cases. Imagine you have a list of students and their scores, and you want to see who came in first.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT 
    student_name, 
    score,
    ROW_NUMBER() OVER(ORDER BY score DESC) as row_num,
    RANK() OVER(ORDER BY score DESC) as rank_val,
    DENSE_RANK() OVER(ORDER BY score DESC) as dense_rank_val
FROM students;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ROW_NUMBER()&lt;/code&gt;: Assigns a unique, sequential number to each row (1, 2, 3, 4).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;RANK()&lt;/code&gt;: If two rows have the same score, they get the same rank, but the next rank is skipped (1, 2, 2, 4).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;DENSE_RANK()&lt;/code&gt;: Similar to rank, but it doesn’t skip any numbers (1, 2, 2, 3).&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>SCHEMAS AND DATA MODELLING IN POWER BI.</title>
      <dc:creator>JOAN NJOKI</dc:creator>
      <pubDate>Mon, 02 Feb 2026 14:12:53 +0000</pubDate>
      <link>https://dev.to/njokijoan003commits/schemas-and-data-modelling-in-power-bi-13il</link>
      <guid>https://dev.to/njokijoan003commits/schemas-and-data-modelling-in-power-bi-13il</guid>
      <description>&lt;p&gt;Effective data modelling is the cornerstone of powerful and performant Power BI reports. It involves structuring your data in a way that optimizes for analysis, reporting, and efficient data processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fact and Dimension Tables: The Building Blocks&lt;/strong&gt;&lt;br&gt;
The foundation of most analytical data models, including those in Power BI, rests on two primary types of tables:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Dimension (Lookup) tables&lt;/strong&gt;&lt;br&gt;
These tables describe the "who, what, where, when, and how" of your business. They contain descriptive attributes that provide context to data such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customer Dimension: Customer Name, Address, City, Region&lt;/li&gt;
&lt;li&gt;Product Dimension: Product Name, Category, Sub-Category, Brand&lt;/li&gt;
&lt;li&gt;Date Dimension: Year, Quarter, Month, Day of Week&lt;/li&gt;
&lt;li&gt;Location Dimension: Store Name, City, State, Country&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dimension tables are typically wider (more columns) but have fewer rows than fact tables. They are often normalized to reduce data redundancy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Fact (Event) Tables&lt;/strong&gt; &lt;br&gt;
These tables record the "measurements" or "metrics" of your business processes. They contain numerical values that can be aggregated and analyzed. Fact tables also contain foreign keys that link them to dimension tables. Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sales Fact: Order Quantity, Sales Amount, Discount, Unit Price (along with foreign keys to Customer, Product, Date, and Store dimensions)&lt;/li&gt;
&lt;li&gt;Web Traffic Fact: Page Views, Session Duration, Bounce Rate (along with foreign keys to User, Page, and Date dimensions)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fact tables are typically deeper (more rows) but narrower (fewer columns) than dimension tables. They can grow very large as they record every event or transaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Star Schema&lt;/strong&gt;&lt;br&gt;
The star schema is the simplest and most widely used schema design in data warehousing and business intelligence. It gets its name because the central fact table is surrounded by its related dimension tables, resembling a star. When you click a filter on a Product (Dimension), Power BI only has to make one "jump" to filter the Sales (Fact)&lt;/p&gt;

&lt;p&gt;Key Characteristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Central Fact Table: Contains all the measurable data and foreign keys to all dimension tables.&lt;/li&gt;
&lt;li&gt;Directly Linked Dimension Tables: Each dimension table is directly linked to the fact table. There are no intermediate dimension tables.&lt;/li&gt;
&lt;li&gt;Denormalized Dimensions: Dimension tables contain all the attributes related to that dimension in a single table, even if some attributes could logically belong to a separate, more granular dimension.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy to understand, design, and implement.&lt;/li&gt;
&lt;li&gt;Excellent for query performance due to fewer joins required to retrieve data. Most queries only need to join the fact table with a few dimension tables.&lt;/li&gt;
&lt;li&gt;Business users can easily navigate the model and understand the relationships.&lt;/li&gt;
&lt;li&gt;Power BI's VertiPaq engine is highly optimized for star schemas, leading to faster aggregations and calculations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Disadvantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Denormalized dimension tables can lead to some data redundancy.&lt;/li&gt;
&lt;li&gt;Can be less efficient for handling very complex or deep hierarchical relationships within dimensions&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%2Fzyacjpzu0dup5pcqrsgw.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%2Fzyacjpzu0dup5pcqrsgw.png" alt=" " width="557" height="406"&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%2Fginucrkj0skshse6ecia.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%2Fginucrkj0skshse6ecia.png" alt=" " width="761" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snowflake Schema&lt;/strong&gt;&lt;br&gt;
The snowflake schema is an extension of the star schema where dimensions are normalized into multiple related tables. This means that a dimension table might have its own "sub-dimension" tables, creating a hierarchical structure that resembles a snowflake.&lt;/p&gt;

&lt;p&gt;Key Characteristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dimension tables are normalized, breaking them down into multiple related tables to reduce data redundancy.&lt;/li&gt;
&lt;li&gt;Dimensions can have multiple levels of sub-dimensions. For example, a "Product" dimension might have a linked "Product Category" dimension and a "Product Subcategory" dimension.&lt;/li&gt;
&lt;li&gt;Involves more tables than a star schema due to the normalization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Normalization minimizes redundant data storage, which can be beneficial for very large dimension tables with repeating attributes.&lt;/li&gt;
&lt;li&gt;Improved data integrity due to normalization.&lt;/li&gt;
&lt;li&gt;Better suited for handling complex and deep hierarchical dimensions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Disadvantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More complex to design, understand, and maintain due to the increased number of tables and joins.&lt;/li&gt;
&lt;li&gt;Queries often require more joins to retrieve data, which can negatively impact performance, especially with large datasets.&lt;/li&gt;
&lt;li&gt;Can be more difficult for business users to navigate and understand the relationships between tables.&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%2Fakod6c7f9wy50o4pz7ri.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%2Fakod6c7f9wy50o4pz7ri.png" alt=" " width="764" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationships: Connecting the Dots&lt;/strong&gt;&lt;br&gt;
Relationships define how tables are connected in your data model. In Power BI, relationships are crucial for filtering and aggregating data correctly across different tables. The most common relationship type is one-to-many, where one record in the dimension table relates to multiple records in the fact table.&lt;br&gt;
For example, one customer (in the Customer Dimension) can place many orders (in the Sales Fact).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Importance of Good Data Modelling&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Performance Optimization: A well-structured model significantly reduces the amount of data Power BI needs to process for each query translating to faster report loading times, quicker interactions, and a smoother user experience. Poorly modelled data can lead to slow reports, long refresh times, and even crashes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Accuracy and Consistency: A clear data model ensures that calculations and aggregations are performed correctly and consistently across all reports thus minimizing ambiguity and reducing the likelihood of incorrect insights due to flawed data relationships.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ease of Use and Maintainability: A logical and intuitive data model makes it easier for report developers to find and use the correct data fields. It also simplifies maintenance and updates, as changes in the underlying data sources can be managed more efficiently.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalability: As your data volumes grow, a well-designed model can scale more effectively, preventing performance bottlenecks and ensuring that Power BI remains a viable solution for your expanding analytical needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data Storytelling and Insight Generation: Ultimately, good data modelling enables you to tell compelling data stories. By presenting data in a logical and easy-to-understand format, you empower users to extract meaningful insights and make informed decisions&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>datascience</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>analytics</category>
    </item>
    <item>
      <title>The Beginner's Guide to Ms Excel</title>
      <dc:creator>JOAN NJOKI</dc:creator>
      <pubDate>Sun, 25 Jan 2026 16:46:09 +0000</pubDate>
      <link>https://dev.to/njokijoan003commits/the-beginners-guide-to-ms-excel-23o6</link>
      <guid>https://dev.to/njokijoan003commits/the-beginners-guide-to-ms-excel-23o6</guid>
      <description>&lt;p&gt;Microsoft Excel is a spreadsheet program that allows users to organize, format, and calculate data in a spreadsheet and perform detailed analysis across both personal and professional settings. &lt;br&gt;
Excel supports a wide range of tasks, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data entry and organization&lt;/li&gt;
&lt;li&gt;Creating charts and visualizations&lt;/li&gt;
&lt;li&gt;Automating tasks with Excel macros&lt;/li&gt;
&lt;li&gt;Advanced calculations with built-in functions&lt;/li&gt;
&lt;li&gt;Managing large datasets with Pivot Tables&lt;/li&gt;
&lt;li&gt;Time tracking and project management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Excel for Data Analytics&lt;/strong&gt;&lt;br&gt;
The first step to analyzing data on Excel is cleaning the data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Removing Duplicates&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;ctrl+A&lt;/code&gt; to select the data in the spreadsheet &amp;gt; Click Data from the ribbon &amp;gt; select the 'remove duplicates" icon&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%2F2lr0g8geyzhze0su729r.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%2F2lr0g8geyzhze0su729r.png" alt=" " width="800" height="400"&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%2Fqe0yzl7pqp41l5xrulse.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%2Fqe0yzl7pqp41l5xrulse.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Filtering Data/Conditional Formatting&lt;/strong&gt;&lt;br&gt;
Highlight the data to be filtered&amp;gt; click data&amp;gt;filter&amp;gt; select the desired field&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%2Fi7jc81stuscstoh464ku.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%2Fi7jc81stuscstoh464ku.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;br&gt;
For conditional formatting, click home&amp;gt;conditional formatting&amp;gt;highlight cell rules&amp;gt; select the desired criteria&amp;gt; select text color&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%2Ftcwn2m2sjqku6q84dxnl.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%2Ftcwn2m2sjqku6q84dxnl.png" alt=" " width="800" height="384"&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%2Fku6zdqfgxmhtuzftfblv.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%2Fku6zdqfgxmhtuzftfblv.png" alt=" " width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Performing Calculations&lt;/strong&gt;&lt;br&gt;
Basic Excel functions include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=SUM(E2:E15) computes the total for all the numbers in a column
=AVERAGE(E2:E15) computes the average for all the numbers in a column
=MAX(E2:E15) computes the maximum number in a column
=MIN(E2:E15) computes the minimum number in a column
=COUNT(E2:E15) computes the count for all the cells in a column
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fe97m24bhbeoe7pxhy7sm.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%2Fe97m24bhbeoe7pxhy7sm.png" alt=" " width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conditional functions &lt;br&gt;
Same as basic functions, but they only work if the given condition is met.&lt;br&gt;
Example: &lt;code&gt;=SUMIF(E2:E877,"&amp;gt;100,000")&lt;/code&gt; returns the sum of salaries from column E greater than 100,000&lt;br&gt;
&lt;code&gt;=SUMIFS(I2:I877,O2:O877,"Intern",P2:P877,"Berlin")&lt;/code&gt; returns the total performance score for interns in Berlin&lt;br&gt;
Other functions include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AVERAGEIF
COUNTIF
COUNTIFS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Text functions&lt;br&gt;
They're used to manipulate text data and include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=UPPER(B2) converts the text in a cell into uppercase
=LOWER(B2) converts the text in a cell into lowercase
=PROPER(B2) capitalizes the first letter of text in a cell 
=TRIM(B2) removes any excess characters e.g space before the text
=LEN(B2) counts the number of characters in a cell
=LEFT(B2,x) extracts the first "x" characters from the text in a cell
=RIGHT(B2,x) extracts the last "x" characters
=CONCATENATE(B2," ",C2) joins text from multiple cells into one e.g combining the first and last name
=VLOOKUP finds data vertically
=HLOOKUP finds data horizontally

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Pivot Tables&lt;/strong&gt;&lt;br&gt;
They allow one to turn large datasets into clear summaries, grouped insights, and simple side‑by‑side comparisons.&lt;br&gt;
How to create one:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;select all the data from the original dataset&lt;/li&gt;
&lt;li&gt;Click insert, select pivot table, choose to start on a new worksheet&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%2Fjsl1evdokvolyfzj8qys.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%2Fjsl1evdokvolyfzj8qys.png" alt=" " width="800" height="373"&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%2F2ak9b1ku833zx9xz7vb2.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%2F2ak9b1ku833zx9xz7vb2.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;drag fields into rows, values and columns&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%2F6ekrgs24oc0h8dx38c5e.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%2F6ekrgs24oc0h8dx38c5e.png" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One can also add slicers to filter out more data faster.&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%2F8btbc5l5q9agnqfoaek3.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%2F8btbc5l5q9agnqfoaek3.png" alt=" " width="800" height="385"&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%2Ff2ynpr8satqogmfea4hc.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%2Ff2ynpr8satqogmfea4hc.png" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Visualizing data with charts/graphs.&lt;/strong&gt;&lt;br&gt;
Data visualization is commonly done using pie charts, line graphs and column charts &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%2Fb03yek8bwenr5bj351mg.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%2Fb03yek8bwenr5bj351mg.png" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Summary&lt;/strong&gt;&lt;br&gt;
While advanced coding languages like Python and SQL handle massive datasets, Excel remains the industry standard for rapid data exploration, ad-hoc cleaning, and quick visualization. Its powerful features, specifically Power Query for data transformation and Pivot Tables for instant summarization, allow analysts to spot errors, test ideas, and turn raw numbers into simple data.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>datascience</category>
      <category>analytics</category>
    </item>
    <item>
      <title>🚀 Getting Started with Git and GitHub: A Beginner’s Guide</title>
      <dc:creator>JOAN NJOKI</dc:creator>
      <pubDate>Sun, 18 Jan 2026 05:50:08 +0000</pubDate>
      <link>https://dev.to/njokijoan003commits/getting-started-with-git-and-github-a-beginners-guide-2k93</link>
      <guid>https://dev.to/njokijoan003commits/getting-started-with-git-and-github-a-beginners-guide-2k93</guid>
      <description>&lt;p&gt;&lt;strong&gt;🛑 The "What" and "Why": Git vs. GitHub 🧐&lt;/strong&gt;&lt;br&gt;
Git is a distributed version control system that tracks code changes, and allows you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;go back to earlier versions if something breaks&lt;/li&gt;
&lt;li&gt;work with teammates without overwriting each other's work &lt;/li&gt;
&lt;li&gt;see who made what changes and when.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub is a cloud-based platform that hosts Git repositories, providing additional tools for collaboration, issue tracking, and code review. GitHub offers remote repository hosting and integrates with Git for easier teamwork. &lt;br&gt;
It's like the "showcase" for your code, enabling collaboration, public visibility for your portfolio, and secure backups of your work.&lt;br&gt;
If Git is the "camera" taking snapshots of your work, GitHub is the "online gallery" where those snapshots are stored and shared.&lt;/p&gt;

&lt;p&gt;🛠 Your First Steps: Setting Up a Project 📂&lt;br&gt;
&lt;strong&gt;1. Tracking changes&lt;/strong&gt;&lt;br&gt;
To start tracking a project, you first need to initialize Git in your project folder using your terminal: &lt;code&gt;git init&lt;/code&gt;&lt;br&gt;
Once Git is watching your folder, tracking changes follows a simple three-step "Save" process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;check your status (&lt;code&gt;git status&lt;/code&gt;): see files that are untracked (new) or modified&lt;/li&gt;
&lt;li&gt;stage (&lt;code&gt;git add&lt;/code&gt;): Pick which changes you want to include in your next "snapshot."&lt;/li&gt;
&lt;li&gt;commit (&lt;code&gt;git commit&lt;/code&gt;): take the snapshot and give it a descriptive label.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;2. Pushing code to GitHub&lt;/strong&gt;&lt;br&gt;
"Pushing" is the act of sending your local commits (the snapshots on your computer) to a remote server like GitHub. This makes your code accessible to others and acts as a backup.&lt;br&gt;
The steps are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a new repository on GitHub.com.&lt;/li&gt;
&lt;li&gt;Copy the URL of the repository (e.g., &lt;a href="https://github.com/your-username/my-project.git" rel="noopener noreferrer"&gt;https://github.com/your-username/my-project.git&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Link your local folder to GitHub (you only do this once): &lt;code&gt;git remote add origin https://github.com/your-username/my-project.git&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Push code &lt;code&gt;git push -u origin main&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;3. Pulling code from GitHub&lt;/strong&gt;&lt;br&gt;
Pulling is essentially a combination of fetching the latest version from GitHub and merging it into your local files using the command &lt;code&gt;git pull origin main&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Basic Workflow Summary:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a new repository on GitHub using the web interface&lt;/li&gt;
&lt;li&gt;Clone it to your machine with &lt;code&gt;git clone [url]&lt;/code&gt; (this creates your local repository)&lt;/li&gt;
&lt;li&gt;Make some changes to the files in your working directory&lt;/li&gt;
&lt;li&gt;Stage changes with &lt;code&gt;git add .&lt;/code&gt; (moving them to the staging area)&lt;/li&gt;
&lt;li&gt;Commit with &lt;code&gt;git commit -m "Describe your changes"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Push to GitHub with &lt;code&gt;git push -u origin main&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Happy Coding and may your code always be perfectly version-controlled! ✨💻&lt;/p&gt;

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