Principal Data Engineer (W2)

⭐ - Featured Role | Apply direct with Data Freelance Hub
This role is for a Principal Data Engineer (W2) in Indianapolis, IN, for 9 months, offering a hybrid work model. Key skills include ETL, data modeling, and cloud technologies. A Bachelor's degree in a related field is required; a Master's is a plus.
🌎 - Country
United States
💱 - Currency
$ USD
💰 - Day rate
Unknown
Unknown
680
🗓️ - Date discovered
April 5, 2025
🕒 - Project duration
More than 6 months
🏝️ - Location type
Hybrid
📄 - Contract type
W2 Contractor
🔒 - Security clearance
Unknown
📍 - Location detailed
Indianapolis, IN
🧠 - Skills detailed
#Hadoop #Spark (Apache Spark) #Synapse #Programming #Computer Science #Scala #Redshift #Batch #C# #Oracle #Snowflake #Ruby #Lambda (AWS Lambda) #Data Lake #REST (Representational State Transfer) #Big Data #PostgreSQL #BI (Business Intelligence) #Data Pipeline #Data Science #Documentation #Data Architecture #Databases #NoSQL #Monitoring #Data Modeling #Cloud #Mathematics #Data Ingestion #Data Integration #Python #Data Warehouse #SQL (Structured Query Language) #Data Engineering #ML (Machine Learning) #R #"ETL (Extract #Transform #Load)" #MySQL #Data Quality #Java
Role description

Job Title - Principal Data Engineer

Duration – 09 Months

Location – Indianapolis IN 46219 Hybrid - 3 days on-site

Job Description:

The Principal Data Engineer has the responsibility of preparing data for operational or analytical uses and delivering data engineering capabilities for the organization. The data engineer role would be responsible for building data pipelines to bring together information from different data source systems. Integrating, consolidating, and cleansing data, and structuring it for use in data science and data-driven applications, such as analytics or ML applications. They will make data easily accessible and strive to optimize their organization's data ecosystem and maintain the business’s identified data quality standards. The idea candidate engineers must understand different approaches to data architectures and applications to handle various data types (such as structure and unstructured data) and a variety of big data and cloud technologies, such as data ingestion and processing frameworks.

Required Skills:

  • Bachelor's degrees in applied mathematics, computer science, physics or related engineering field

  • Master’s degrees in computer science or computer engineering a plus

  • Skilled in high level programming languages such as C#, Java, Python, R, Ruby, Scala and SQL

  • Knowledge of using ETL tools and REST-oriented APIs for creating and managing data integration jobs

  • Knowledge of data warehouses and data lakes technologies and practices

  • Knowledge of NoSQL databases

  • Knowledge of and experience using data modeling techniques and tools

-Experience with creating and communicating technical documentation for data architectures and designs

  • Knowledge of and experience in designing and developing data pipelines workflows

  • Knowledge of and experience with relational database such as MySQL, PostgreSQL, Oracle etc.

  • Knowledge of Lambda architecture for unified data pipelines for batch and real-time processing

  • Knowledge of and ability to adhere to quality and governance policies

  • Experience with monitoring and optimizing data performance

  • Knowledge of Data Quality Management practices

  • Experience using Business intelligence (BI) platforms, such as MS PowerBI and the ability to configure them

  • Ability to work with the interactive dashboards BI platforms use

  • Basic understanding of machine learning and data scientist

  • Knowledge of big data technologist such as: Hadoop, Spark, Hive, Redshift, Snowflake,

  • Knowledge of and experience utilizing cloud-based data technologies such as: MS Data Factor, Synapse Data Engineering, Synapse Data Science, Synapse Data Warehousing, MS One Lake

### Turned off script const MAX_VIEWS_PER_DAY = 5; // Function to get the current date in YYYY-MM-DD format function getCurrentDate() { return new Date().toISOString().split('T')[0]; } // Function to manage role description views (only for logged-in users) function manageRoleViews() { const today = getCurrentDate(); let viewData = JSON.parse(localStorage.getItem('roleViewData')) || {}; // Check if the data for today exists, if not, initialize it if (!viewData[today]) { viewData[today] = { count: 0 }; } // Update the count and check if the limit is reached if (viewData[today].count < MAX_VIEWS_PER_DAY) { viewData[today].count++; localStorage.setItem('roleViewData', JSON.stringify(viewData)); console.log(`✅ View count updated: ${viewData[today].count} of ${MAX_VIEWS_PER_DAY}`); return true; // Allow viewing } else { console.log("❌ View limit reached."); return false; // Limit reached } } // Function to display role descriptions and manage button visibility function displayRoleDescriptions() { const roleDescriptions = document.querySelectorAll('.role-description'); const applyButton = document.querySelector('.apply-button'); const upgradeMessage = document.querySelector('.upgrade-message'); const upgradeButton = document.querySelector('.upgrade-button'); let canView = manageRoleViews(); // Check if the user can view more descriptions roleDescriptions.forEach((desc) => { desc.style.display = canView ? 'block' : 'none'; }); if (canView) { applyButton.style.display = 'block'; upgradeMessage.style.display = 'none'; upgradeButton.style.display = 'none'; } else { applyButton.style.display = 'none'; upgradeMessage.style.display = 'block'; upgradeButton.style.display = 'block'; } } // Run only if the user is logged in document.addEventListener("DOMContentLoaded", function () { if (window.$memberstackDom) { window.$memberstackDom.getCurrentMember().then((member) => { if (member && member.data) { console.log("✅ User is logged in:", member.data.id); displayRoleDescriptions(); // Apply view limits } else { console.log("❌ User is NOT logged in - script will not run."); } }).catch((err) => console.error("⚠️ Error fetching Memberstack user:", err)); } else { console.log("⚠️ Memberstack DOM is not available. Script will not run."); } }); script document.addEventListener('DOMContentLoaded', function() { fetch('https://ipwho.is/') .then(response => response.json()) .then(data => { if (data.country && data.success) { const standardPriceElements = document.querySelectorAll('[ms-code-display-price]'); const lowerPriceElements = document.querySelectorAll('[ms-code-display-price-lower]'); let standardPrice = '$74.99'; // Default USD price let lowerPrice = '$19.99'; // Default lower-tier USD price const pricing = { 'United Kingdom': { standard: '£59.99', lower: '£16.99' }, 'Canada': { standard: 'C$109.99', lower: 'C$29.99' }, 'India': { standard: '₹5999', lower: '₹1399' }, 'Pakistan': { standard: 'Rs 18999', lower: 'Rs 4479' }, 'Australia': { standard: 'A$119.99', lower: 'A$29.99' }, 'South Africa': { standard: 'R1399.99', lower: 'R299.99' } }; const euroCountries = [ 'Austria', 'Belgium', 'Bulgaria', 'Croatia', 'Cyprus', 'Czechia', 'Denmark', 'Estonia', 'Finland', 'France', 'Germany', 'Greece', 'Hungary', 'Ireland', 'Italy', 'Latvia', 'Lithuania', 'Luxembourg', 'Malta', 'Netherlands', 'Poland', 'Portugal', 'Romania', 'Slovakia', 'Slovenia', 'Spain', 'Sweden' ]; if (pricing[data.country]) { standardPrice = pricing[data.country].standard; lowerPrice = pricing[data.country].lower; } else if (euroCountries.includes(data.country)) { standardPrice = '€69.99'; lowerPrice = '€19.99'; } standardPriceElements.forEach(element => { element.textContent = standardPrice; }); lowerPriceElements.forEach(element => { element.textContent = lowerPrice; }); } }) .catch(error => { console.error('Error fetching country:', error); }); });