Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

📩 Data Engineer

MĂ©tier “colonne vertĂ©brale” data : concevoir et opĂ©rer des pipelines fiables (batch & streaming), garantir la qualitĂ©, la traçabilitĂ©, la performance et la gouvernance jusqu’au DWH/Lakehouse et aux usages (BI, ML, produits data).

Scope : ingestion → transformation → modĂ©lisation → serving → observabilitĂ© → sĂ©curitĂ© → coĂ»ts. Stack typique : SQL/Python, Spark, Airflow, Kafka, dbt, BigQuery/Snowflake/Databricks, S3/GCS/ADLS, Iceberg/Delta/Hudi.

1.1

Fondamentaux & rĂŽle

Pourquoi le Data Engineer est crucial : fiabilitĂ©, dĂ©lais, coĂ»ts, gouvernance, “data as a product”.

ScopeKPIMaturité
1.2

Pipelines ETL/ELT

Orchestration, dépendances, incrémental, idempotence, backfills, retries, SLA, CI/CD.

AirflowdbtSLA
1.3

Streaming & temps réel

Kafka/PubSub, partitions, ordering, exactly-once (approche), fenĂȘtres, late events, CDC.

KafkaCDCState
2.1

Modélisation analytique

Star schema, Data Vault, Kimball, métriques, SCD, grain, dimensions conformes, semantic layer.

KimballSCD2Metrics
2.2

Qualité, tests & observabilité

Data contracts, tests (schema, nulls, uniques), alerting, lineage, SLO data, incident & RCA.

Great ExpectationsContractsLineage
2.3

Sécurité & conformité

PII, RBAC/ABAC, masking, encryption, secrets, audit logs, RGPD, retention, DLP.

PIIRBACAudit
3.1

Lake / DWH / Lakehouse

Parquet, partitioning, compaction, Iceberg/Delta/Hudi, clustering, coûts, performance query.

ParquetIcebergCost
3.2

Plateforme & DevOps data

Infra as Code, environnements, CI/CD, secrets, observabilité, runbooks, finops, multi-tenant.

IaCCI/CDFinOps
4.0

Toolbox & patterns

Cheatsheet SQL, stratĂ©gies d’incrĂ©mental, idempotence, retries, backfill, dedup, SCD, CDC.

SQLIdempotentBackfill
4.1

Parcours & interviews

Junior→Senior→Staff : compĂ©tences, portfolio, questions, “senior mindset” (fiabilitĂ© & coĂ»ts).

CertifsPortfolioQ/A
1.1 Data Engineer — rĂŽle, responsabilitĂ©s, KPI, maturitĂ©
Mission (version “rĂ©alitĂ© prod”)
  • Rendre les donnĂ©es utilisables : fiables, documentĂ©es, accessibles, au bon coĂ»t.
  • RĂ©duire le “time-to-data” : du signal brut → table/feature exploitable rapidement.
  • Garantir la confiance : qualitĂ©, tests, contrats, traçabilitĂ©, audit.
  • Industrialiser : code, CI/CD, observabilitĂ©, runbooks, gestion d’incidents.
  • Optimiser : performance (IO/compute), coĂ»ts (stockage, requĂȘtes, streaming).
Livrables attendus
LivrableConcretPourquoi
PipelinesJobs batch/stream, incrémental, backfills.Data fraßche.
Modùle analytiqueStaging → marts → semantic/metrics.BI/ML stable.
QualitéTests, contracts, alerting, RCA.Confiance.
DocCatalog, lineage, owners, SLA.Autonomie.
GouvernanceRBAC, PII, retention.Risque ↓
Le modùle mental : “data supply chain”
Sources -> Ingestion -> (Bronze) -> (Silver) -> (Gold) -> Serving | | | | | CDC/APIs Orchestration Cleaning Modeling BI/ML/Apps \------------------- Observability & Quality ------------------/
ETL vs ELT (trĂšs simplement)
  • ETL : transformer avant d’écrire dans le DWH (plus “ancien” / on-prem).
  • ELT : charger d’abord puis transformer dans le DWH (cloud moderne, dbt).
  • Dans les faits : on mixe selon sources/volumes/latence.
Interfaces avec les autres métiers
  • Data Analyst : besoins mĂ©triques + sĂ©mantique + refresh + granularitĂ©.
  • ML Engineer / DS : features, training/serving parity, drift, labels.
  • Platform/DevOps : IAM, infra, observabilitĂ©, coĂ»ts, SRE.
  • Security/Legal : PII, RGPD, retention, audit.
KPI “data” (ceux qui comptent)
KPIDéfinitionPourquoi
FreshnessÂge de la donnĂ©e vs SLA.DĂ©cisions Ă  temps.
Completeness% lignes attendues reçues.Pas de trous.
AccuracyRÚgles de cohérence (ex: totaux).Confiance.
TimelinessDurée pipeline / latence.UX produit data.
ReliabilityFail rate, retry storms.Stabilité.
Cost/QueryCoĂ»t par requĂȘte/table.FinOps.
SLO data (exemple)
Table: fact_orders (Gold) - Freshness: < 30 min (P95) - Completeness: >= 99.8% daily - Validity: null_rate(order_id) = 0 - Uniqueness: order_id unique - Availability: 99.9% (read) Owner: Data Platform
Incident data (mode opératoire)
ÉtapeActionLivrable
1Qualifier impact (tables/produits).Scope + priorité.
2Stopper l’hĂ©morragie (pause, fallback).Mitigation.
3Diagnostiquer (logs + lineage).Cause probable.
4Fix + backfill contrÎlé.Data restaurée.
5RCA + actions préventives.Runbook + tests.
Dette data typique
  • Jobs “script” sans idempotence → doublons.
  • Pas de contrats → breaking changes silencieux.
  • “SELECT *” partout → explosion schĂ©ma.
  • Pas de partitioning/clustering → coĂ»ts x10.
Le paradigme Senior (data)
  • Un senior ne “fait pas un job” : il construit un systĂšme fiable avec garanties.
  • Il pense contrats, observabilitĂ©, coĂ»ts, backfills, Ă©volution.
  • Il conçoit une plateforme oĂč l’analyste/DS devient autonome.
  • Il rĂ©duit la charge on-call avec tests + automation + runbooks.
RĂšgle d’or : “Les donnĂ©es cassent tout le temps.” Donc : dĂ©tecter vite, isoler, restaurer, prĂ©venir.
Échelle de maturitĂ© (L1→L5)
  • L1 : scripts ponctuels, pas de tests, pas de logs.
  • L2 : orchestration basique, retries, doc minimal.
  • L3 : incrĂ©mental, idempotence, tests & alerting.
  • L4 : contracts, lineage, CI/CD, finops, gouvernance.
  • L5 : plateforme (self-serve), SLO data, stratĂ©gie lakehouse.
Le “senior checklist” avant prod
- Idempotent ? (re-run safe) - Incrémental ? (watermark / CDC) - Backfill plan ? (range, costs) - Data contracts ? (schema expectations) - Tests ? (schema + business rules) - Observability ? (freshness, volume, error) - Ownership ? (owner, on-call, runbook) - Cost guardrails ? (partitioning, limits) - Security ? (PII, access, audit)
DiffĂ©rence “Data product” vs “tables”

Un data product = dataset + dĂ©finition (sĂ©mantique) + SLO + doc + owner + accĂšs + tests. C’est ce qui rend la data rĂ©utilisable sans tribal knowledge.

Anti-patterns (à éviter)
  • Full refresh partout (coĂ»t + temps + risque).
  • Pas d’idempotence (doublons, inconsistences).
  • Pas de tests (dĂ©couverte par les utilisateurs).
  • Pas d’ownership (personne responsable, incidents Ă©ternels).
  • Transformation hors repo (SQL “à la main” dans le DWH).
  • Schema drift ignorĂ© (colonnes qui apparaissent/disparaissent).
Red flags production
SignalCause probableFix
Coûts explosentScans full tablesPartition/cluster + pruning
DoublonsUpserts absentsMERGE + keys + dedup
RetardsBacklog / skewScale + repartition
Changements silencieuxPas de contractsSchema validation
À retenir : “Sans tests & freshness monitoring, tu ne sais pas quand ta donnĂ©e ment.”
1.2 Pipelines ETL/ELT — orchestration, incrĂ©mental, idempotence, backfills, CI/CD
Orchestration (pattern moderne)
Scheduler (Airflow/Dagster/Prefect) -> Extract (API/DB/Files/CDC) -> Land (Bronze) -> Transform (dbt/Spark) : Bronze->Silver->Gold -> Validate (tests/contracts) -> Publish (marts/semantic layer) -> Observe (freshness/volume/errors)
Dépendances (le vrai problÚme)
  • Ordonnancement (upstream/downstream) + SLA (P95).
  • Gestion des Ă©checs : retries contrĂŽlĂ©s, dead-letter, alerting.
  • Idempotence : relancer ne doit pas “réécrire n’importe quoi”.
  • Versioning : schĂ©mas & transformations Ă©voluent (compat).
Data lineage (usage)
  • “Pourquoi le dashboard est faux ?” → remonter jusqu’à la source + job fautif.
  • “Quel impact si je change cette colonne ?” → blast radius.
ETL/ELT : choix pragmatiques
CasApprochePourquoi
Volumes énormesELT + partitionPushdown SQL
Transformations complexesSparkDistribué
APIs rate-limitLand raw + retryRejouable
PIIMask tÎtRéduire risque
Idempotence (2 patterns)
A) Append-only + dedup (key, latest) B) Upsert / MERGE (natural key + watermark)
SLA vs SLO

SLA = promesse. SLO = objectif interne mesuré (freshness, completeness). Le senior instrumente les deux.

Incrémental : stratégies
StratégiePrincipeLimites
Watermarkmax(updated_at)Late events
CDClog changesOpérations + schema
Partition deltarebuild partitionsSkew partitions
Hash diffcompare row hashCoût compute
Late events (fenĂȘtre de sĂ©curitĂ©)
Watermark = now - 48h On reprocess les 48h glissantes → absorbe les retards (late arriving data)
MERGE (concept)
MERGE target USING staging ON target.pk = staging.pk WHEN MATCHED THEN UPDATE... WHEN NOT MATCHED THEN INSERT...
Déduplication (propre)
Dédup = rÚgle business + clé + ordre. Ex: - key = (user_id, event_id) - order = event_time desc - keep = first
PiÚges incrémental
  • Horodatage non fiable (timezones, clocks, updates massifs).
  • Deletes : il faut gĂ©rer le “tombstone” ou soft delete.
  • Schema drift : colonnes nouvelles → contracts + compat.
  • Skew : une partition devient Ă©norme (ex: “today”).
Observabilité minimale
- rows_in / rows_out - late_events_count - null_rate(key) - freshness - cost per run
Backfill : la compĂ©tence “senior”
  • Rejouer 3 ans de donnĂ©es = risque : coĂ»ts + temps + cohĂ©rence.
  • Un senior prĂ©pare un plan : fenĂȘtres, prioritĂ©s, validation, rollback.
Plan de backfill (template)
1) DĂ©finir pĂ©riode (ex: 2023-01 -> 2023-12) 2) DĂ©couper (jour/semaine) + parallĂ©liser 3) Écrire dans une zone "shadow" (staging/backfill) 4) Valider (counts, checksums, business rules) 5) Switch atomique (rename/partition swap/view) 6) Monitor & post-mortem
Technique : partition swap

Rebuild une partition isolĂ©e, valider, puis swap → minimise impact.

Backfill guardrails (coûts)
RisqueSymptĂŽmeProtection
Coût computeJobs x100Limiter parallélisme
Impact prodQueries lentesFenĂȘtres off-peak
IncohĂ©rence “double write”DoublonsIdempotence + locks
Explosion storageTables gigantesquesTTL + compaction
Rùgle d’or : Ne backfill jamais “direct” dans Gold sans shadow + validation.
CI/CD data (pattern)
git push -> lint (SQL/Python) -> unit tests -> build (images) -> integration (sandbox DWH) -> data tests (schema + business rules) -> deploy -> post-checks -> tag release
dbt : conventions de base
  • Staging (stg_) = normaliser sources ; Marts = tables mĂ©tiers.
  • Tests : unique, not_null, relationships + tests custom business.
  • Docs + exposures (dashboards) + owners.
Release safe
  • DĂ©ploiement par “version” (views / semantic layer).
  • Feature flags data (basculer un dashboard sur v2).
  • Rollbacks : garder N versions, switch rapide.
Le senior mesure : - change failure rate (data) - MTTR incidents data - coverage de tests
1.3 Streaming — Kafka, fenĂȘtres, ordering, late events, CDC, exactly-once (approche)
Kafka (les concepts qui comptent)
  • Topic : flux logique ; partition : parallĂ©lisme + ordering.
  • Key : garantit l’ordre par clĂ© (mĂȘme partition).
  • Consumer group : scalabilitĂ© (1 partition → 1 consumer actif).
  • Retention : temps ou taille ; permet replays.
  • Schema registry : compat backward/forward (Avro/Protobuf/JSON).
PiĂšges
  • Skew : une key domine → hotspot partition → lag.
  • Too many partitions : overhead & opĂ©rations.
  • Pas de contracts : consumers cassĂ©s au moindre changement.
Pattern streaming → lakehouse
Producers -> Kafka -> Stream Processor (Flink/Spark/KStreams) -> Bronze (raw) -> Silver (clean) -> Gold (aggregates) -> Metrics/alerts (lag, late, errors)
KPI streaming
- consumer lag (P95) - processing time - late events count - error rate / DLQ rate - throughput (msg/s)
At-least-once vs at-most-once vs exactly-once
ModeRisqueQuand
At-most-oncePerteLogs non critiques
At-least-onceDoublonsTrĂšs courant
Exactly-onceComplexitéBesoin strict
RĂ©alitĂ© : “exactly-once” = design
  • Souvent : at-least-once + idempotence (dedup keys) = rĂ©sultat correct.
  • Transactions end-to-end : plus difficile (source → sink).
Dedup streaming
Event has: - event_id (unique) - event_time Store "seen(event_id)" in state (TTL) If seen -> drop Else -> process
DLQ (Dead Letter Queue)
Si parsing/validation échoue : -> envoyer événement en DLQ -> alerter -> rejouer aprÚs fix
Stateful streaming
  • FenĂȘtres (tumbling/sliding/session) pour agrĂ©gations.
  • Late events : watermark + allowed lateness.
  • State store : checkpointing, recovery.
Window 5 min tumbling: - group by key - sum(amount) - emit on window close (watermark)
Le vrai danger : explosion de state
  • Trop de keys uniques → state Ă©norme → coĂ»ts / instabilitĂ©.
  • Solution : TTL, compaction, dimensionnement, clĂ© mieux choisie.
Guardrails : - TTL sur state - limites cardinalité - monitor memory & checkpoints
CDC (Change Data Capture)
  • Capture inserts/updates/deletes depuis logs DB.
  • Permet sync near real-time vers lake/DWH.
  • Besoin : gestion schema evolution + ordering + replays.
Tombstones

Pour les deletes : Ă©vĂ©nement “delete” ou soft-delete + rĂšgles downstream.

PiĂšges CDC
  • Changements de PK → casse la dĂ©dup.
  • Transactions multi-tables → ordering subtil.
  • Schema drift non gĂ©rĂ© → consumers cassent.
Bon design CDC : - key stable - schema registry + compat - upsert sink (MERGE) - replay strategy
2.1 ModĂ©lisation analytique — Kimball, SCD, mĂ©triques, semantic layer
Grain : la décision n°1
  • Le grain = “une ligne reprĂ©sente quoi ?” (order, order_line, event
).
  • Si le grain est flou → mĂ©triques incohĂ©rentes, doublons, joins dangereux.
  • Documenter : clĂ©s, cardinalitĂ©, nullability, business meaning.
Star schema (classique)
fact_orders (grain = order_id) - order_id (PK) - customer_id (FK dim_customer) - order_date_id (FK dim_date) - amount, status, ... dimensions: dim_customer (SCD) dim_date dim_product (si besoin)
Joins : rùgles d’hygiùne
RĂšgleBut
FK explicitesÉviter many-to-many cachĂ©s.
Keys stablesRéconcilier sources.
Dimensions conformesComparables entre marts.
Surrogate keysGérer historiques SCD.

La modĂ©lisation est un contrat : elle protĂšge la BI et Ă©vite les “dashboards qui mentent”.

SCD (Slowly Changing Dimensions)
TypePrincipeUsage
SCD1OverwritePas d’historique
SCD2Versionner (valid_from/to)Historique complet
SCD3Colonnes “prev”Historique limitĂ©
SCD2 : structure
dim_customer: - customer_sk (surrogate) - customer_id (natural key) - name, segment, ... - valid_from, valid_to - is_current
PiĂšges SCD
  • Natural key pas stable → explosions de versions.
  • Late updates → corriger pĂ©riodes (backfill dimension).
  • Join fact/dim sur mauvaise clĂ© (ou sans date) → mĂ©triques fausses.
RĂšgle : facts join sur dim via surrogate key ou via (natural key + date) selon design.
Métriques : rendre le BI stable
  • DĂ©finir les mĂ©triques une fois (revenue, active users, churn
).
  • Éviter “10 dĂ©finitions de revenue” selon dashboard.
  • Semantic layer : mĂ©triques + dimensions + rĂšgles (filtres).
Template métrique
Metric: "Net Revenue" - Definition: sum(amount) where status='paid' minus refunds - Grain: order_id - Time: order_date - Owner: Finance Analytics - Tests: non-negative, reconciliation with accounting
Réconciliation (finance)

Le senior prĂ©voit les checks : totals vs systĂšmes source, Ă©carts tolĂ©rĂ©s, et “reconciliation tables” (audit-friendly).

Checks utiles : - totals daily vs source - refunds vs payments - outliers (amount > P99) - duplication rate
Data Vault (quand ?)
  • Beaucoup de sources, schĂ©mas instables, besoin d’audit/traçabilitĂ©.
  • Hub (keys), Links (relations), Satellites (attributs/historique).
  • Souvent : Vault en “silver” + marts Kimball en “gold”.
Trade-off
Data Vault: + excellent lineage/audit - plus complexe Ă  requĂȘter → marts indispensables pour BI
2.2 QualitĂ© & ObservabilitĂ© — contracts, tests, alerting, lineage, SLO data
Data contracts : pourquoi c’est “game changer”
  • Un contrat dĂ©finit : schĂ©ma, types, nullability, clĂ©s, SLA, owners.
  • Le producer s’engage ; le consumer peut se fier (ou alerte).
  • RĂ©duit drastiquement les breaking changes silencieux.
Contrat (exemple)
Dataset: events_clicks - columns: event_id (string, not null, unique) user_id (string, not null) event_time (timestamp, not null) url (string, not null) - freshness: < 10 min (P95) - expected_volume: 5M/day ±10% - owner: Web Tracking
Schema evolution : rĂšgles
ChangementCompatAction
Ajout colonne nullableOKMettre Ă  jour docs/tests
Renommer colonneDangerDeprecation + dual write
Changer typeRisqueVersionner
Supprimer colonneBreakingDeprecation window
Sans contrats : les consumers dĂ©couvrent le problĂšme “aprĂšs coup”.
Tests data (minimum viable)
TestExempleBut
Schemacolonnes/typesCompat
Nullsnot_null(order_id)Clés
Uniqueunique(order_id)Doublons
RelationshipsFK vers dimIntégrité
Businessamount >= 0Validité
Test “volume” & “freshness”
- volume_today within [P10..P90] - freshness P95 < 30 min - spike/drop alerts
Great Expectations / dbt tests (idées)
  • Checksums par partition (ex: total_amount par jour).
  • Outliers : P99, anomalies par segment.
  • Reconciliation : totals vs source systĂšme.
  • Drift de distribution : KS-test / PSI (selon besoin).
Bon pattern : tests “cheap” à chaque run + tests “deep” en nightly.
Observabilité data = logs + metrics + lineage
  • Metrics : freshness, volume, null_rate, dedup_rate, cost/run.
  • Logs : erreurs parsing, retries, DLQ, timeouts.
  • Lineage : impact analysis (qui dĂ©pend de quoi).
Dashboard on-call (idéal)
- Top failing pipelines - Freshness heatmap (datasets) - Volume anomalies - Cost per dataset (trend) - Lineage (blast radius)
Alerting : éviter le bruit
  • Alertes “actionnables” (owner + runbook + lien logs).
  • Seuils dynamiques (baseline), pas du statique partout.
  • Regrouper incidents : “source X down” plutĂŽt que 50 tables rouges.
Alerte parfaite : - quoi (dataset) - impact (dashboards) - pourquoi probable - comment corriger (runbook)
Incidents data (cas typiques)
  • Source API rate-limited → trous + retards.
  • Schema drift → colonnes manquantes, types changĂ©s.
  • Duplication → replays, non-idempotence.
  • CoĂ»t query → scans full table, partition pruning cassĂ©e.
RCA (template)
- Résumé impact - Timeline - Root cause (tech + process) - Pourquoi non détecté - Correctifs (tests/contracts/alerts) - Owners + dates
Actions préventives (les plus efficaces)
  • Data contracts + schema registry.
  • Idempotence + dedup + MERGE.
  • Freshness/volume monitoring + alerting owners.
  • Runbooks & backfill playbook.
  • FinOps guardrails (quotas, budgets, best practices).
Ce n’est pas “si” ça casse, c’est “quand” — prĂ©pare la restauration.
2.3 SĂ©curitĂ© & ConformitĂ© — PII, RBAC, masking, encryption, audit, retention
PII : identifier & classifier
  • Cartographier oĂč se trouve la PII (sources → lake → marts → exports).
  • Minimiser : ne pas ingĂ©rer si inutile (data minimization).
  • Masquage : tokenization / hashing / partial masking selon usage.
  • Chiffrement : at-rest + in-transit + key management.
Risques majeurs
RisqueCauseFix
ExfiltrationExports non contrÎlésRBAC + audit + DLP
Sur-collecte“On prend tout”Minimisation
Fuite logsPII en logsScrubbing + policies
RBAC/ABAC : design
  • RBAC : rĂŽles (analyst, engineer, finance
)
  • ABAC : attributs (pays, Ă©quipe, device, projet)
  • Principe : least privilege + sĂ©paration prod/dev
Service accounts & secrets
  • Secrets manager, rotation, scopes minimaux.
  • Interdire clĂ©s longues durĂ©es si possible.
Golden rules
- Pas d’accĂšs direct aux raw PII pour la BI - Exports contrĂŽlĂ©s (approval) + logs - Data sharing via datasets “curated” - Environnements sĂ©parĂ©s
RGPD : points durs cÎté data
  • Retention (durĂ©e de conservation) + purge.
  • Droit Ă  l’effacement (suppression / anonymisation).
  • TraçabilitĂ© des accĂšs (audit logs).
  • Transferts (zones gĂ©ographiques), sous-traitants.
Audit logs

Qui a lu quoi, quand, depuis oĂč, pour combien de lignes ? (selon capacitĂ©s plateforme)

Data deletion (pattern)
Option A: hard delete Option B: anonymize/tokenize (irreversible) Option C: tombstone + exclude from serving + reprocess partitions impacted (backfill)
Patterns robustes
  • PII vault : dataset isolĂ©, accĂšs ultra restreint.
  • Curated views : exposer uniquement ce qui est nĂ©cessaire.
  • Row-level security : filtrer selon attributs (pays, Ă©quipe).
  • Masking dynamique : affichage masquĂ© selon rĂŽle.
Erreur classique : copier de la PII dans 10 datasets “temp”. Fix : centraliser + contrîler + tracer.
3.1 Lake / DWH / Lakehouse — formats, partitions, tables, compaction, coĂ»ts
Formats
  • Parquet : colonne, compression, pushdown → standard analytique.
  • JSON : flexible mais coĂ»teux pour analytics (raw uniquement).
  • Avro/Protobuf : streaming + schema evolution (souvent avec registry).
Bronze/Silver/Gold
Bronze: raw, append-only, schema proche source Silver: cleaned, normalized, deduped Gold: marts, metrics, business-ready
Compaction (pourquoi)
  • Trop de petits fichiers = overhead Ă©norme.
  • Compaction = fusionner fichiers + optimiser metadata.
  • Scheduling : nightly/weekly selon volumes.
Symptîme: queries lentes + “small files” Fix: compaction + partition strategy
Partitioning : rĂšgle simple
  • Partitionner sur colonne souvent filtrĂ©e (souvent date).
  • Éviter trop haute cardinalitĂ© (ex: user_id) → trop de partitions.
  • Partition pruning = clĂ© pour coĂ»ts/perf.
Clustering / Z-order (selon engines)
  • Organiser physiquement pour amĂ©liorer scans (ex: par customer_id).
  • À appliquer aprĂšs avoir stabilisĂ© volumes.
Anti-pattern
Partition sur une colonne Ă  millions de valeurs → metadata Ă©norme, opĂ©rations lentes.
Heuristique
- date (day) souvent OK - hour si trÚs temps réel - cluster sur key business - compaction réguliÚre
Table formats (Iceberg/Delta/Hudi)
FonctionCe que ça apporte
ACIDTransactions sur data lake
Time travelRevenir Ă  une version
Schema evolutionChangements contrÎlés
Upserts/MergeCDC & idempotence
Pourquoi c’est clĂ©

Permet d’appliquer des pratiques DWH “propres” sur un data lake (fiabilitĂ© & replays).

Time travel (usage incident)
- pipeline a écrit des données corrompues - rollback table to previous snapshot - patch + reprocess

C’est une arme anti-incidents trùs “senior”.

FinOps data : leviers
  • Partition pruning (le plus gros gain).
  • Clustering + statistiques (si supportĂ©).
  • Limiter full scans : vues/semantic layer.
  • Budgets/quotas : alerting sur requĂȘtes coĂ»teuses.
  • Compaction, retention, tiering storage.
Cost guardrails (exemple)
- max bytes scanned per query - warn on SELECT * without filters - dashboards “cached extracts” - tables TTL (staging)
Si tu ne mesures pas les coûts, tu ne les contrÎles pas.
3.2 Plateforme & DevOps Data — environnements, IaC, observabilitĂ©, runbooks, multi-tenant
Ce que fait un Data Engineer “platform-aware”
  • IaC (rĂ©seau, IAM, storage, compute), sĂ©paration dev/stage/prod.
  • CI/CD : images, jobs, dbt, migrations de schĂ©ma.
  • ObservabilitĂ© : logs, metrics, traces pipelines.
  • Runbooks & on-call : playbooks incident/backfill.
  • FinOps : capacitĂ©, scheduling, autoscaling, budgets.
Multi-tenant (si plateforme interne)
  • Projets/teams isolĂ©s (IAM), quotas, naming conventions, catalog.
  • Templates & golden paths : “paver la route” pour les Ă©quipes.
Golden path (exemple)
Créer un nouveau dataset : 1) Repo template (dbt + tests + docs) 2) Data contract (yaml) 3) Pipeline (Airflow) + alerting 4) Catalog + owner + SLO 5) CI/CD + promotion stage->prod
Éviter la jungle
Sans standards : - 200 tables “temp” - personne ne sait quoi utiliser - incidents non assignĂ©s Fix : - catalog + ownership + conventions
4.0 Toolbox — patterns concrets : incrĂ©mental, idempotence, backfill, dedup, SCD
SQL (cheatsheet utile)
-- Dedup: garder la derniĂšre ligne par key WITH x AS ( SELECT *, ROW_NUMBER() OVER(PARTITION BY key ORDER BY updated_at DESC) AS rn FROM staging ) SELECT * FROM x WHERE rn = 1; -- Incremental window WHERE updated_at >= :watermark_start AND updated_at < :watermark_end; -- Basic quality checks (ex) SELECT COUNT(*) AS rows, SUM(CASE WHEN order_id IS NULL THEN 1 ELSE 0 END) AS null_order_id FROM fact_orders;
Idempotence : options
  • MERGE/UPSERT (clĂ© stable) + watermark.
  • Append-only + dedup (window function) + “latest wins”.
  • Partition rebuild + swap (pour corrections/backfills).
Backfill playbook (résumé)
- Shadow write (backfill tables) - Validate (counts + checksums + business rules) - Atomic switch (view/rename/partition swap) - Monitor - Post-mortem + runbook
SCD2 (pseudo)
If attribute changed: close current version (valid_to = now, is_current=false) insert new version (valid_from = now, is_current=true) Else: do nothing
Streaming dedup (idée)
state = set(event_id) with TTL if event_id in state: drop else: process + add(event_id)
4.1 Parcours & Interviews — compĂ©tences, portfolio, questions, senior mindset
Progression naturelle
  • Junior : SQL, pipelines simples, ingestion fichiers/APIs, conventions.
  • ConfirmĂ© : orchestration, incrĂ©mental, dbt, tests, partitioning.
  • Senior : streaming/CDC, observabilitĂ©, contracts, backfills, finops.
  • Staff/Lead : plateforme self-serve, gouvernance, stratĂ©gie lakehouse.
Compétences qui font la différence
  • Concevoir idempotence + backfills (replay safe).
  • Lire/optimiser plans (pruning, clustering, skew).
  • Mettre en place contrats + tests + alerting.
  • GĂ©rer coĂ»ts & performance (FinOps).
  • Communication : doc, ownership, sĂ©mantique claire.
IdĂ©es de projets (trĂšs “senior”)
  • Pipeline CDC DB → lakehouse (MERGE + time travel + backfills).
  • Framework “data contracts” + validation schema + alerting.
  • Data observability : freshness/volume anomalies + lineage impact.
  • Optimisation coĂ»ts DWH : partitioning + guardrails + reporting.
  • Semantic layer : mĂ©triques centralisĂ©es + tests de rĂ©conciliation.
Ce que le recruteur veut voir
- “Comment tu garantis la qualitĂ© ?” - “Comment tu fais un backfill sans casser ?” - “Comment tu contrĂŽles les coĂ»ts ?” - “Comment tu gĂšres schema drift ?” - “Comment tu prouves une mĂ©trique ?”
Questions fréquentes
  • Explique idempotence et comment tu Ă©vites les doublons.
  • Watermark vs CDC : avantages/limites.
  • Comment tu fais un backfill d’un an sans exploser les coĂ»ts ?
  • Qu’est-ce qu’un data contract et comment tu gĂšres schema evolution ?
  • Comment tu dĂ©finis et mesures la freshness d’un dataset ?
  • Partitioning/clustering : comment tu choisis ?
  • Pourquoi les dashboards “mentent” et comment tu l’empĂȘches ?
Réponse attendue (style senior)
- clarifier le grain & la sémantique - expliquer design incrémental + replay safe - détailler tests + contracts + observability - mentionner backfill strategy - parler coûts (pruning, compaction) - ownership + runbooks + RCA