← All skills
Data Engineer
Use when building data pipelines with ETL/ELT workflows, Spark, data warehousing, or pipeline orchestration.
About this skill
Use when building data pipelines with ETL/ELT workflows, Spark, data warehousing, or pipeline orchestration.
SKILL.md
data-engineer.SKILL.mdPlace it in your Syntic skills folder. For Syntic Code, install in your local skills directory, review the contents and run it in a controlled environment first.
---
name: Data Engineer
description: Use when building data pipelines with ETL/ELT workflows, Spark, data warehousing, or pipeline orchestration.
category: Data & AI
version: 1.0.0
tools: []
---
# Data Engineer — Reliable, Scalable Data Pipelines
Senior data engineer building reliable, scalable data pipelines moving data from sources to analytics-ready destinations. Design for idempotency, observability, and cost efficiency across batch and streaming architectures.
## Core Principles
- Pipelines must be idempotent. Running same pipeline twice on same input produces same output without side effects.
- Data quality is pipeline concern. Validate data at ingestion, after transformation, before delivery. Bad data silently propagated worse than failed pipeline.
- Schema evolution inevitable. Design storage formats and transformations to handle added columns, type changes, deprecated fields gracefully.
- ELT over ETL for analytical workloads. Load raw data into warehouse, then transform with SQL. Raw data is insurance policy.
## Pipeline Architecture
```
pipelines/
ingestion/
sources/ # Source connectors (API, database, file)
extractors.py # Data extraction with retry logic
validators.py # Schema and quality validation
transformation/
staging/ # Raw-to-clean transformations
marts/ # Business logic, aggregations
tests/ # dbt tests, data quality checks
orchestration/
dags/ # Airflow DAGs or Dagster jobs
schedules.py # Cron expressions, dependencies
alerts.py # Failure notifications
```
## Apache Spark
- Use PySpark DataFrame API, not RDD operations. DataFrames optimized by Catalyst and Tungsten.
- Partition data by date or high-cardinality columns used in WHERE clauses. Target partition sizes 128MB-256MB.
- Use `broadcast()` for small dimension tables in joins. Spark distributes small table to all executors.
- Avoid `collect()` and `toPandas()` on large datasets. Process in Spark, write results to storage.
- Use Delta Lake or Apache Iceberg for ACID transactions, time travel, schema enforcement on data lakes.
- Monitor Spark UI for skewed partitions, excessive shuffles, spilling to disk.
## Data Warehousing
- Use medallion architecture: Bronze (raw), Silver (cleaned), Gold (aggregated business metrics).
- Use dbt for SQL-based transformations with version control, testing, documentation.
- Write incremental models in dbt with `unique_key` to avoid full table scans on every run.
- Implement slowly changing dimensions (SCD Type 2) for tracking historical changes in dimension tables.
- Use materialized views or summary tables for dashboards. Don't let BI tools query raw tables.
## Pipeline Orchestration
- Use Airflow for batch orchestration with DAGs. Use Dagster for asset-based orchestration with materialization.
- Define task dependencies explicitly. Use `@task` decorators and `>>` operators in Airflow 2.x.
- Implement alerting on failure: Slack, PagerDuty, or email notifications with pipeline context and error details.
- Use backfill capabilities to reprocess historical data when transformations change.
- Set SLAs on critical pipelines. Alert when pipeline has not completed by expected time.
## Data Quality
- Use Great Expectations or dbt tests for automated data validation.
- Test for: null counts, uniqueness, referential integrity, value ranges, row count thresholds, freshness.
- Quarantine records failing validation into dead letter table for manual review.
- Track data quality metrics over time. Declining quality leading indicator of source system changes.
## Streaming
- Use Apache Kafka for durable event streaming. Use Kafka Connect for source and sink connectors.
- Use Apache Flink or Spark Structured Streaming for stream processing with exactly-once semantics.
- Use watermarks and event-time windows for out-of-order event handling in streaming aggregations.
- Implement dead letter queues for messages failing processing after retry exhaustion.
## Before Completing a Task
- Run data quality tests on pipeline output with Great Expectations or dbt test.
- Verify idempotency by running pipeline twice, confirming identical output.
- Check partitioning and file sizes in target storage for query performance.
- Validate orchestration DAG renders correctly, dependencies accurate.
Install
Syntic App
- 1Create a dedicated folder for this skill in your local skills library.
- 2Place SKILL.md into that folder.
- 3Restart Syntic and invoke this skill on matching tasks.
Syntic Code (CLI)
- 1Save SKILL.md in your local Syntic Code skills directory.
- 2Keep related files in the same skill folder.
- 3Run in a safe environment and validate outputs.