<?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: Mwikali</title>
    <description>The latest articles on DEV Community by Mwikali (@mwikalidee).</description>
    <link>https://dev.to/mwikalidee</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3984487%2F064ebc9e-5720-4b4f-867e-7d27d779ac72.png</url>
      <title>DEV Community: Mwikali</title>
      <link>https://dev.to/mwikalidee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mwikalidee"/>
    <language>en</language>
    <item>
      <title>Understanding Data Modeling, Relationships, Schemas, and Joins in Power BI</title>
      <dc:creator>Mwikali</dc:creator>
      <pubDate>Wed, 01 Jul 2026 15:32:42 +0000</pubDate>
      <link>https://dev.to/mwikalidee/understanding-data-modeling-relationships-schemas-and-joins-in-power-bi-2cgj</link>
      <guid>https://dev.to/mwikalidee/understanding-data-modeling-relationships-schemas-and-joins-in-power-bi-2cgj</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Microsoft's Power BI is a well-known business intelligence tool, commonly used for data visualization and reporting. Power BI, however, is more than a visualization tool; it is also used to design data models for accurate dashboards. &lt;/p&gt;

&lt;p&gt;Some of the data sources used by businesses include Excel, SQL databases, cloud storage, CRMs, and APIs. This data is sourced raw and is unlikely to be ready for analysis. Data engineers and analysts must organize, clean, and connect these datasets before creating reports.&lt;/p&gt;

&lt;p&gt;Power BI achieves this through &lt;strong&gt;data modeling, relationships, schemas,&lt;/strong&gt; and &lt;strong&gt;joins&lt;/strong&gt;. These concepts directly influence the quality of the data, the performance of dashboards and reports, and analytical accuracy. A strong Power BI solution depends on the quality of the underlying data model. Effective application of these concepts ensures reliable, efficient, and meaningful business insights.&lt;/p&gt;

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

&lt;p&gt;Data modeling is the process of visually representing either parts of or entire communication systems. It illustrates the types of data used and stored within a system and how they interact. Data model components represent real-world data sources and the data they contain.&lt;/p&gt;

&lt;p&gt;The three foundational concepts on which all data models are based are entities, attributes, and relationships. &lt;strong&gt;Entities&lt;/strong&gt; represent real-world objects of interest to a business, such as customers and orders. They are also referred to as tables. &lt;strong&gt;Attributes&lt;/strong&gt; describe the characteristics of entities, such as a customer's name and address. &lt;strong&gt;Relationships&lt;/strong&gt; represent complex data structures and connect related information between entities. &lt;/p&gt;

&lt;p&gt;Rather than simply importing tables, Power BI allows users to create a model that represents how business entities interact. Effective data models meet the needs of organizations and support data-driven decision making. Benefits of a good data model in Power BI include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better Performance &lt;/li&gt;
&lt;li&gt;Improved Accuracy&lt;/li&gt;
&lt;li&gt;Simplicity&lt;/li&gt;
&lt;li&gt;Maintainability&lt;/li&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Relationships in Power BI
&lt;/h2&gt;

&lt;p&gt;Relationships define how tables communicate. Cardinalities are the relationships in a data model that define how rows in one table relate to rows in another table. &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Cardinality&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;One-to-Many&lt;/td&gt;
&lt;td&gt;One row in the dimension corresponds to many rows in the fact&lt;/td&gt;
&lt;td&gt;One product appears in many sales transactions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Many-to-One&lt;/td&gt;
&lt;td&gt;The same relationship, viewed from the other direction&lt;/td&gt;
&lt;td&gt;Many sales transactions reference one product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One-to-One&lt;/td&gt;
&lt;td&gt;One row in table A matches exactly one row in table B&lt;/td&gt;
&lt;td&gt;Employee table and EmployeeDetails table&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Many-to-Many&lt;/td&gt;
&lt;td&gt;Multiple rows in A can match multiple rows in B&lt;/td&gt;
&lt;td&gt;Students and courses (each student takes many courses, each course has many students)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Power BI allows users to create and manage relationships either automatically or manually. The &lt;strong&gt;auto-detect&lt;/strong&gt; option automatically creates relationships when two or more tables are loaded or when activated under the &lt;em&gt;Manage Relationships&lt;/em&gt; tab. Power BI looks for columns with matching names and compatible data types to create relationships automatically. Auto-detect works well when column names are an exact match in both tables, data types are compatible, and values between tables correspond.&lt;/p&gt;

&lt;p&gt;Manually creating relationships can be done via drag-and-drop, through the Manage Relationships dialog, or from the Properties panel. This way, the user configures the cardinality and cross-filter directions. Power BI can also be used to edit, delete, or deactivate a relationship.&lt;/p&gt;

&lt;p&gt;The following are recommended best practices for creating relationships:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Primary keys should always be unique&lt;/li&gt;
&lt;li&gt;Many-to-many relationships should be avoided unless necessary&lt;/li&gt;
&lt;li&gt;Duplicate keys should be removed&lt;/li&gt;
&lt;li&gt;Relationships should be kept simple&lt;/li&gt;
&lt;li&gt;The star schema should be used whenever possible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The effectiveness of relationships depends heavily on the structure of the overall schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Schemas in Power BI
&lt;/h2&gt;

&lt;p&gt;A schema is a structure that defines how data is organized and its relationships. Power BI models typically use &lt;strong&gt;dimensional modeling&lt;/strong&gt;, making databases simple and easy to understand. In dimensional modeling, we have &lt;strong&gt;fact&lt;/strong&gt; and &lt;strong&gt;dimension&lt;/strong&gt; tables.&lt;/p&gt;

&lt;p&gt;A fact table is the main table that describes events that have taken place. It is characterized by having the largest number of data fields, is likely to change or update, and likely has duplicates. A dimensional table holds information about categorical fields in the fact table. It is smaller than a fact table and should not hold duplicates.&lt;/p&gt;

&lt;h3&gt;
  
  
  Star Schema
&lt;/h3&gt;

&lt;p&gt;A star schema has one fact table at the center with multiple dimension tables radiating outward, creating a star shape. This schema is simple, fast, scalable, and intuitive. It is the preferred schema for Power BI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Snowflake Schema
&lt;/h3&gt;

&lt;p&gt;A snowflake schema has a fact table with multiple dimension tables that branch out further into sub-dimensions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Star vs Snowflake Schema
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Star Schema&lt;/th&gt;
&lt;th&gt;Snowflake Schema&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Structure&lt;/td&gt;
&lt;td&gt;Fact table surrounded by denormalized dimension tables&lt;/td&gt;
&lt;td&gt;Fact table with normalized dimension tables that branch into sub-dimensions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dimension tables&lt;/td&gt;
&lt;td&gt;Wide and flat (all attributes in one table)&lt;/td&gt;
&lt;td&gt;Narrow and deep (attributes split across multiple related tables)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Number of tables&lt;/td&gt;
&lt;td&gt;Fewer&lt;/td&gt;
&lt;td&gt;More&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Query performance&lt;/td&gt;
&lt;td&gt;Faster (fewer joins)&lt;/td&gt;
&lt;td&gt;Slower (more joins required)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;Slightly more (due to redundancy)&lt;/td&gt;
&lt;td&gt;Slightly less&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ease of use&lt;/td&gt;
&lt;td&gt;Simpler for report authors&lt;/td&gt;
&lt;td&gt;More complex&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recommended for Power BI?&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Joins in Power BI
&lt;/h2&gt;

&lt;p&gt;Power BI joins enable us to establish relationships between data tables.  Joins occur primarily in Power Query during data transformation, while relationships occur after data is loaded inside the model. Power BI supports all standard joins as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inner join: Returns all rows in the left and right tables that are a match. If no match is present, it returns zero records.&lt;/li&gt;
&lt;li&gt;Outer join: Returns all rows present in the left and right tables even when they don't match.&lt;/li&gt;
&lt;li&gt;Left outer join: Returns all rows in the left table and corresponding rows in the right table, if any.&lt;/li&gt;
&lt;li&gt;Right outer join: Returns all rows in the right table and corresponding rows in the left table, if any.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Joins in Power BI are performed using the &lt;strong&gt;Merge Queries&lt;/strong&gt; button in the &lt;em&gt;Home&lt;/em&gt; tab. It gives you the option to merge the second table inside the original table or to create a new table with the result of joining the two tables together. &lt;/p&gt;

&lt;h2&gt;
  
  
  How Data Modeling Supports Data Quality
&lt;/h2&gt;

&lt;p&gt;Data quality measures how well a dataset meets criteria for accuracy, completeness, validity, consistency, uniqueness, timeliness, and fitness for purpose. Data quality is important because it directly impacts the accuracy and reliability of information used for decision-making. Quality data is key to making accurate, informed decisions. &lt;/p&gt;

&lt;p&gt;Data modeling in Power BI improves data quality by supporting consistency, reducing redundancy, and standardizing calculations. Relationships support referential integrity, accurate filtering, and reliable aggregations. Schemas support organized datasets, scalability, and maintainability. In addition, joins support data validation, merging sources correctly, and identifying missing records. &lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices for Power BI Data Modeling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Design the model before importing data.&lt;/li&gt;
&lt;li&gt;Use a star schema whenever possible.&lt;/li&gt;
&lt;li&gt;Create meaningful table and column names.&lt;/li&gt;
&lt;li&gt;Eliminate duplicate records.&lt;/li&gt;
&lt;li&gt;Define clear primary and foreign keys.&lt;/li&gt;
&lt;li&gt;Avoid unnecessary calculated columns.&lt;/li&gt;
&lt;li&gt;Use measures over calculated columns when appropriate.&lt;/li&gt;
&lt;li&gt;Validate joins before loading data.&lt;/li&gt;
&lt;li&gt;Document relationships.&lt;/li&gt;
&lt;li&gt;Keep models simple and scalable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, data modeling forms the foundation of Power BI analytics. Relationships enable tables to work together correctly. Schemas provide an organized and scalable structure. Joins integrate data during preparation. Together, these concepts improve data quality, analytical accuracy, report performance, and business decision-making. Mastering these concepts enables analysts to build trustworthy, maintainable, and high-performing Power BI solutions.&lt;/p&gt;

</description>
      <category>datamodeling</category>
      <category>powerbi</category>
      <category>analytics</category>
    </item>
    <item>
      <title>Linux Fundamentals for Data Engineering: A Practical Hands-On Guide</title>
      <dc:creator>Mwikali</dc:creator>
      <pubDate>Tue, 16 Jun 2026 10:59:14 +0000</pubDate>
      <link>https://dev.to/mwikalidee/linux-fundamentals-for-data-engineering-a-practical-hands-on-guide-4n99</link>
      <guid>https://dev.to/mwikalidee/linux-fundamentals-for-data-engineering-a-practical-hands-on-guide-4n99</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In today's data-driven world, organizations rely heavily on data engineering to collect, process, store, and analyze vast amounts of information. Behind many modern data platforms lies an operating system that has become the backbone of data infrastructure: Linux.&lt;/p&gt;

&lt;p&gt;From cloud servers and databases to big data platforms and containerized applications, Linux powers a significant portion of the world's data ecosystems. For aspiring data engineers, understanding Linux is a fundamental skill.&lt;/p&gt;

&lt;p&gt;This article explores essential Linux concepts and commands from a practical data engineering perspective. Drawing from a hands-on server administration and PostgreSQL database setup exercise, it demonstrates how Linux skills support real-world data engineering workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Linux Matters in Data Engineering
&lt;/h2&gt;

&lt;p&gt;Most enterprise data platforms operate on Linux-based systems. Technologies such as Apache Spark, Hadoop, Kafka, Airflow, PostgreSQL, MySQL, and many cloud-native services are commonly deployed on Linux servers.&lt;/p&gt;

&lt;p&gt;Data engineers frequently use Linux to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access and manage remote servers&lt;/li&gt;
&lt;li&gt;Configure databases&lt;/li&gt;
&lt;li&gt;Transfer datasets securely&lt;/li&gt;
&lt;li&gt;Monitor system performance&lt;/li&gt;
&lt;li&gt;Automate data pipelines&lt;/li&gt;
&lt;li&gt;Manage permissions and security&lt;/li&gt;
&lt;li&gt;Troubleshoot infrastructure issues&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A solid understanding of Linux allows data engineers to work efficiently across development, testing, and production environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Linux File System
&lt;/h2&gt;

&lt;p&gt;One of the first concepts every Linux user encounters is the file system hierarchy.&lt;/p&gt;

&lt;p&gt;Unlike Windows, which organizes storage using drive letters such as C: and D:, Linux uses a single directory tree beginning at the root directory:&lt;/p&gt;

&lt;p&gt;/&lt;/p&gt;

&lt;p&gt;Some important directories include:&lt;/p&gt;

&lt;p&gt;/&lt;br&gt;
├── home&lt;br&gt;
├── etc&lt;br&gt;
├── var&lt;br&gt;
├── usr&lt;br&gt;
├── tmp&lt;br&gt;
└── opt&lt;br&gt;
&lt;strong&gt;Key Directories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;/home&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Contains user directories and personal files.&lt;/p&gt;

&lt;p&gt;cd /home&lt;/p&gt;

&lt;p&gt;&lt;em&gt;/etc&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Stores system configuration files.&lt;/p&gt;

&lt;p&gt;cd /etc&lt;/p&gt;

&lt;p&gt;&lt;em&gt;/var&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Contains logs and frequently changing data.&lt;/p&gt;

&lt;p&gt;cd /var/log&lt;/p&gt;

&lt;p&gt;Understanding these directories is essential when configuring databases, troubleshooting services, and locating system logs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting to Remote Servers Using SSH
&lt;/h2&gt;

&lt;p&gt;Secure Shell (SSH) is one of the most important tools for data engineers.&lt;/p&gt;

&lt;p&gt;SSH enables users to connect to remote Linux servers over a network securely.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ssh username@server-ip&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the practical assignment, a remote server was accessed using:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ssh &lt;a href="mailto:root@159.65.222.96"&gt;root@159.65.222.96&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;After authentication, commands could be executed directly on the server.&lt;/p&gt;

&lt;p&gt;SSH is commonly used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Administer cloud servers&lt;/li&gt;
&lt;li&gt;Deploy applications&lt;/li&gt;
&lt;li&gt;Manage databases&lt;/li&gt;
&lt;li&gt;Monitor infrastructure&lt;/li&gt;
&lt;li&gt;Execute scripts remotely&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because most production systems run remotely, SSH is an essential skill for every data engineer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Essential Linux Navigation Commands
&lt;/h2&gt;

&lt;p&gt;Efficient navigation is crucial when working with Linux systems.&lt;/p&gt;

&lt;p&gt;Display Current Directory&lt;br&gt;
&lt;em&gt;pwd&lt;/em&gt;&lt;br&gt;
Example output:&lt;br&gt;
/home/dorinem&lt;/p&gt;

&lt;p&gt;List Directory Contents&lt;br&gt;
&lt;em&gt;ls&lt;/em&gt;&lt;br&gt;
Display Detailed File Information&lt;br&gt;
&lt;em&gt;ls -la&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This command shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File permissions&lt;/li&gt;
&lt;li&gt;Ownership&lt;/li&gt;
&lt;li&gt;File size&lt;/li&gt;
&lt;li&gt;Modification date&lt;/li&gt;
&lt;li&gt;Hidden files&lt;/li&gt;
&lt;li&gt;Change Directories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Move to root directory:&lt;br&gt;
&lt;em&gt;cd /&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Move to home directory:&lt;br&gt;
&lt;em&gt;cd ~&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These commands help users navigate large server environments efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Managing Files and Directories
&lt;/h2&gt;

&lt;p&gt;Data engineers constantly work with files containing logs, datasets, scripts, and configuration settings.&lt;/p&gt;

&lt;p&gt;Create a Directory&lt;br&gt;
&lt;em&gt;mkdir assignment&lt;/em&gt;&lt;br&gt;
Create a File&lt;br&gt;
&lt;em&gt;touch sample.txt&lt;/em&gt;&lt;br&gt;
Copy Files&lt;br&gt;
&lt;em&gt;cp sample.txt backup.txt&lt;/em&gt;&lt;br&gt;
Rename Files&lt;br&gt;
&lt;em&gt;mv backup.txt renamed.txt&lt;/em&gt;&lt;br&gt;
Delete Files&lt;br&gt;
&lt;em&gt;rm renamed.txt&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These commands form the foundation of file management in Linux environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Linux Users and Permissions
&lt;/h2&gt;

&lt;p&gt;Security is a critical aspect of data engineering.&lt;/p&gt;

&lt;p&gt;Linux uses users, groups, and permissions to control access to resources.&lt;/p&gt;

&lt;p&gt;Identify Current User&lt;br&gt;
&lt;em&gt;whoami&lt;/em&gt;&lt;br&gt;
Display User Information&lt;br&gt;
&lt;em&gt;id&lt;/em&gt;&lt;br&gt;
View Group Membership&lt;br&gt;
&lt;em&gt;groups&lt;/em&gt;&lt;br&gt;
Modify Permissions&lt;br&gt;
&lt;em&gt;chmod 755 script.sh&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Permission values represent:&lt;/p&gt;

&lt;p&gt;7 = Read + Write + Execute&lt;br&gt;
5 = Read + Execute&lt;br&gt;
5 = Read + Execute&lt;/p&gt;

&lt;p&gt;Permissions help prevent unauthorized access to critical systems and data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Working with System Information
&lt;/h2&gt;

&lt;p&gt;Understanding system resources is important when managing databases and processing large datasets.&lt;/p&gt;

&lt;p&gt;Display Hostname&lt;br&gt;
&lt;em&gt;hostname&lt;/em&gt;&lt;br&gt;
Display Operating System Information&lt;br&gt;
&lt;em&gt;cat /etc/os-release&lt;/em&gt;&lt;br&gt;
Display Kernel Information&lt;br&gt;
&lt;em&gt;uname -a&lt;/em&gt;&lt;br&gt;
Check Disk Usage&lt;br&gt;
&lt;em&gt;df -h&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The "-h" option displays values in human-readable format.&lt;br&gt;
Example:&lt;br&gt;
Filesystem      Size Used Avail&lt;br&gt;
/dev/sda1       50G  10G   40G&lt;/p&gt;

&lt;p&gt;Check Memory Usage&lt;br&gt;
&lt;em&gt;free -h&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This command provides insight into memory allocation and availability.&lt;/p&gt;

&lt;p&gt;Monitoring system resources helps ensure data workloads run efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Networking Fundamentals for Data Engineers
&lt;/h2&gt;

&lt;p&gt;Data systems communicate across networks, making networking knowledge essential.&lt;/p&gt;

&lt;p&gt;View IP Addresses&lt;br&gt;
&lt;em&gt;ip addr&lt;/em&gt;&lt;br&gt;
Test Connectivity&lt;br&gt;
&lt;em&gt;ping google.com&lt;/em&gt;&lt;br&gt;
Display Listening Ports&lt;br&gt;
&lt;em&gt;ss -tulnp&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This command shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open ports&lt;/li&gt;
&lt;li&gt;Active services&lt;/li&gt;
&lt;li&gt;Listening network processes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding networking enables data engineers to diagnose connectivity issues and verify service availability.&lt;/p&gt;

&lt;h2&gt;
  
  
  PostgreSQL Administration on Linux
&lt;/h2&gt;

&lt;p&gt;Databases are central to data engineering.&lt;/p&gt;

&lt;p&gt;In the practical assignment, PostgreSQL was used as the relational database management system.&lt;/p&gt;

&lt;p&gt;Verify PostgreSQL Installation&lt;br&gt;
&lt;em&gt;psql --version&lt;/em&gt;&lt;br&gt;
Example:&lt;br&gt;
psql (PostgreSQL) 16.14&lt;br&gt;
Check PostgreSQL Status&lt;br&gt;
sudo systemctl status postgresql&lt;/p&gt;

&lt;p&gt;View PostgreSQL Clusters&lt;br&gt;
&lt;em&gt;pg_lsclusters&lt;/em&gt;&lt;br&gt;
Example:&lt;br&gt;
Ver Cluster Port Status&lt;br&gt;
16  main    5432 online&lt;/p&gt;

&lt;p&gt;This confirms that PostgreSQL is running and accepting connections.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Users and Databases
&lt;/h2&gt;

&lt;p&gt;A common database administration task is creating users and databases.&lt;/p&gt;

&lt;p&gt;Create PostgreSQL User&lt;br&gt;
&lt;em&gt;CREATE USER dorinem WITH PASSWORD 'StrongPassword123';&lt;/em&gt;&lt;br&gt;
Create Database&lt;br&gt;
&lt;em&gt;CREATE DATABASE dorinem;&lt;/em&gt;&lt;br&gt;
Grant Privileges&lt;br&gt;
&lt;em&gt;GRANT ALL PRIVILEGES ON DATABASE dorinem TO dorinem;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This separates database ownership and access control from the default administrative account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Schemas
&lt;/h2&gt;

&lt;p&gt;Schemas help organize database objects.&lt;/p&gt;

&lt;p&gt;As part of the assignment, a staging schema was created.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;CREATE SCHEMA staging;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A staging schema is commonly used as a temporary landing area before data is transformed and loaded into production tables.&lt;/p&gt;

&lt;p&gt;Typical workflow:&lt;/p&gt;

&lt;p&gt;Raw Data&lt;br&gt;
    ↓&lt;br&gt;
Staging Schema&lt;br&gt;
    ↓&lt;br&gt;
Transformation&lt;br&gt;
    ↓&lt;br&gt;
Production Tables&lt;/p&gt;

&lt;p&gt;This approach improves data quality and pipeline reliability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Loading Sample Data into PostgreSQL
&lt;/h2&gt;

&lt;p&gt;Once the database and schema are created, data can be loaded.&lt;/p&gt;

&lt;p&gt;Create Table&lt;br&gt;
&lt;em&gt;CREATE TABLE staging.sales (&lt;br&gt;
    id SERIAL PRIMARY KEY,&lt;br&gt;
    product VARCHAR(50),&lt;br&gt;
    quantity INT,&lt;br&gt;
    price NUMERIC,&lt;br&gt;
    sale_date DATE&lt;br&gt;
);&lt;/em&gt;&lt;br&gt;
Insert Data&lt;br&gt;
&lt;em&gt;INSERT INTO staging.sales&lt;br&gt;
(product, quantity, price, sale_date)&lt;br&gt;
VALUES&lt;br&gt;
('Laptop',2,1200,'2025-01-01'),&lt;br&gt;
('Mouse',5,25,'2025-01-02'),&lt;br&gt;
('Keyboard',3,45,'2025-01-03');&lt;/em&gt;&lt;br&gt;
Verify Data&lt;br&gt;
&lt;em&gt;SELECT * FROM staging.sales;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This process mirrors real-world ETL workflows where data is ingested into staging environments before processing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Secure File Transfers Using SCP
&lt;/h2&gt;

&lt;p&gt;Data engineers frequently move files between local machines and servers.&lt;/p&gt;

&lt;p&gt;Secure Copy Protocol (SCP) enables encrypted file transfer.&lt;/p&gt;

&lt;p&gt;Upload File to Server&lt;br&gt;
&lt;em&gt;scp sales.csv &lt;a href="mailto:dorinem@159.65.222.96"&gt;dorinem@159.65.222.96&lt;/a&gt;:/home/dorinem/&lt;/em&gt;&lt;br&gt;
Download File from Server&lt;br&gt;
&lt;em&gt;scp &lt;a href="mailto:dorinem@159.65.222.96"&gt;dorinem@159.65.222.96&lt;/a&gt;:/home/dorinem/sales.csv&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;SCP is commonly used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dataset uploads&lt;/li&gt;
&lt;li&gt;Log retrieval&lt;/li&gt;
&lt;li&gt;Configuration backups&lt;/li&gt;
&lt;li&gt;Script deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because SCP uses SSH, data remains encrypted during transfer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting Common Linux Issues
&lt;/h2&gt;

&lt;p&gt;Throughout the assignment, several common Linux challenges were encountered.&lt;/p&gt;

&lt;p&gt;Directory Not Found&lt;/p&gt;

&lt;p&gt;Incorrect: &lt;em&gt;cd var/log&lt;/em&gt;&lt;br&gt;
Correct: &lt;em&gt;cd /var/log&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The leading slash indicates an absolute path.&lt;/p&gt;

&lt;p&gt;Returning Home&lt;/p&gt;

&lt;p&gt;Incorrect: &lt;em&gt;cd~&lt;/em&gt;&lt;br&gt;
Correct: &lt;em&gt;cd ~&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Command Not Found&lt;/p&gt;

&lt;p&gt;When running Linux-specific commands on macOS, users may see:&lt;br&gt;
&lt;em&gt;zsh: command not found&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This highlights the importance of distinguishing between local and remote environments.&lt;/p&gt;

&lt;p&gt;Understanding these errors improves troubleshooting efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices for Data Engineers Using Linux
&lt;/h2&gt;

&lt;p&gt;To work effectively in Linux environments, data engineers should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use SSH keys instead of passwords whenever possible.&lt;/li&gt;
&lt;li&gt;Follow least-privilege access principles.&lt;/li&gt;
&lt;li&gt;Organize files logically.&lt;/li&gt;
&lt;li&gt;Regularly monitor disk and memory usage.&lt;/li&gt;
&lt;li&gt;Keep databases and packages updated.&lt;/li&gt;
&lt;li&gt;Document all administrative changes.&lt;/li&gt;
&lt;li&gt;Use version control systems such as Git.&lt;/li&gt;
&lt;li&gt;Automate repetitive tasks using shell scripts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Adopting these practices improves security, reliability, and maintainability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Linux is more than just an operating system; it is the foundation of modern data engineering infrastructure. Whether managing databases, transferring files, monitoring resources, or administering cloud servers, Linux skills are indispensable.&lt;/p&gt;

&lt;p&gt;Through practical exercises involving SSH access, PostgreSQL administration, schema creation, data loading, Linux command execution, and secure file transfers, we can see how Linux directly supports everyday data engineering responsibilities.&lt;/p&gt;

&lt;p&gt;As organizations continue to generate and rely on increasing volumes of data, professionals who understand Linux will be better positioned to build scalable, secure, and reliable data solutions. Mastering Linux fundamentals is, therefore, one of the most valuable investments an aspiring data engineer can make.&lt;/p&gt;

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