ETL and ELT Design Patterns Questions
Trade-offs between extract-transform-load and extract-load-transform strategies, where transformation logic should live, and when to push compute into the warehouse. Covers incremental vs full loads, change-data-capture, slowly changing dimensions handling in the load path, and tooling (dbt-style transformation layers). Focuses on the processing-strategy decision rather than a specific vendor.
Write a SQL query that extracts only the rows from a source orders table that changed since the last successful run, using a stored high-water-mark timestamp (orders(order_id, updated_at, status, amount)). Then explain how you'd handle two edge cases: rows that share the exact same updated_at as your cursor, and clock skew between the source database and the job that computes the cursor.
Walk through how you'd decide where transformation logic should live for a new pipeline: pushed down into the warehouse after loading, or applied upstream before loading. What actually drives that call in practice, and how does your answer change between a small relational source and a high-volume event stream?
Write a SQL query that deduplicates a table events(event_id, user_id, event_type, event_time), keeping only the latest row per (user_id, event_type) by event_time. Then explain how the query behaves on exact ties and why it's safe to re-run.
What does it mean for a pipeline run to be idempotent, and why does that property matter once retries and reprocessing are inevitable? Give two concrete techniques you'd actually implement to make a load idempotent.
You're deduplicating a high-volume event stream. Compare exact deduplication with a durable keyed state store, hash-based approaches, and Bloom filters for approximate dedup with a lower memory footprint. When is approximate dedup actually acceptable, and how do you keep any of these approaches correct across a job restart?
Unlock Full Question Bank
Get access to all 11 ETL and ELT Design Patterns interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.