Delivery Hero · api.smartrecruiters.com · checked today
Senior Data Engineer – MarTech
Glovo is part of the Delivery Hero Group, the world’s pioneering local delivery platform, our mission is to deliver an amazing experience—fast, easy, and to your door. We operate in around 65 countries worldwide. Headquartered in Berlin, Germany.
Skills, with evidence
- Airflow / orchestration
Orchestration and integration patterns: Airflow DAG design, Pub/Sub, API and file-based ingestion (GCS, S3, CloudSQL replicas), idempotency, deduplication, backfills and late-arriving data.
must have - Data modelling
Apply dimensional and incremental modelling, historisation, partitioning and clustering, and judge when each applies.
must have - Data quality
Define tests, freshness SLAs and anomaly checks across owned domains, reducing incident rate and time-to-detect instead of reacting after stakeholders notice.
must have - Python
Software engineering practice: strong Python and SQL with modularisation, testing, CI/CD, version control and monitoring.
must have - SQL
Advanced SQL and data modelling: deep BigQuery skills, dimensional and incremental modelling, historisation, partitioning and clustering, and the judgment to know when each applies.
must have - Spark
You will work across a broad technical surface (BigQuery, dbt, Airflow, Pub/Sub, Spark) at global scale.
must have - dbt
dbt and transformation frameworks: model structure, tests, documentation and macros, keeping a large transformation DAG maintainable.
must have - Governance & security
Own lineage, access control, PII policy tags and GDPR-compliant handling across your domains.
must have · not practised here - Failure handling
Take a domain from requirements to production, monitoring and daily operation, rather than handing it over at deployment
- Schema evolution & contracts
We are looking for a Senior Data Engineer to own domains of this platform end-to-end: modelling, pipeline design, data quality, and the data contracts our stakeholders build on.
- Cost & performance
Apply dimensional and incremental modelling, historisation, partitioning and clustering, and judge when each applies
- Idempotency & backfills
Design for idempotency, deduplication, backfills and late-arriving data
- Streaming
You will work across a broad technical surface (BigQuery, dbt, Airflow, Pub/Sub, Spark) at global scale, and you will be the person stakeholders come to when a domain needs to be designed, not just maintained.
- GCP
You will work across a broad technical surface (BigQuery, dbt, Airflow, Pub/Sub, Spark) at global scale, and you will be the person stakeholders come to when a domain needs to be designed, not just maintained.
not practised here
Your plan
- The SQL screen: correct, then fast≈ 2 h
Data quality · SQL
- Median delivery time per cityIntermediate
- Bucket deliveries into quartilesIntermediate
- Median order value without a median functionIntermediate
- New and repeat orders by monthIntermediate
- Every order against its customer's averageIntermediate
- Python: the data-wrangling round≈ 3 h
Python
- Diff two snapshots of a tableIntermediate
- Explode an array column into rowsIntermediate
- Flatten nested event payloadsIntermediate
- Keep only the latest row for each eventIntermediate
- Pivot a long metrics table to wideIntermediate
- Data modelling: the round most people fail≈ 3 h
Data modelling · dbt
- Addresses that stay true to the pastIntermediate
- Seat holds and the release-night raceIntermediate
- Subscription warehouse grainIntermediate
- Campaign efficiencyIntermediate
- Catalogue: products, variants and sellersIntermediate
- Pipeline design: safe to run twice≈ 4 h
Airflow / orchestration · Failure handling · Schema evolution & contracts · Idempotency & backfills · Streaming
- Is this change safe?Intermediate
- Five minutes behind the sourceIntermediate
- The source will not let youIntermediate
- The fact arrived firstIntermediate
- The table everyone depends onIntermediate
- Spark: read the plan Spark actually ran≈ 2 h
Spark · Cost & performance
- broadcast() with auto-broadcast off, and the case where Spark ignores itIntermediate
- autoBroadcastJoinThreshold compares an estimate: flip a join with select() and one settingIntermediate
- Does Spark really run your EXISTS subquery once per row?Intermediate
- left_semi and left_anti: "customers who did / never did" without a full joinIntermediate
- A self-join on a real key that still multiplies rowsIntermediate
- Say it out loud≈ 1 h
Not covered by the plan: Governance & security, GCP.
Readiness
Counted from drills you have completed anywhere on D8LooP.
leaves in 11 dremoved the moment Delivery Hero closes it
