Syntic
← All skills
Data & AIFreeCommunityv1.0.0

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.md

Place 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.

SKILL.md
---
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

  1. 1Create a dedicated folder for this skill in your local skills library.
  2. 2Place SKILL.md into that folder.
  3. 3Restart Syntic and invoke this skill on matching tasks.

Syntic Code (CLI)

  1. 1Save SKILL.md in your local Syntic Code skills directory.
  2. 2Keep related files in the same skill folder.
  3. 3Run in a safe environment and validate outputs.