Data Engineer
Data warehousing and dbt questions
145 questions on Data warehousing and dbt for data engineers, easiest first.
Easy 38
- What a dbt model iseasy
- Built-in dbt testseasy
- Data lake vs warehouseeasy
- Kimball versus Inmoneasy
- Bronze, silver and gold layerseasy
- Job of a dbt staging modeleasy
- Schema on read versus schema on writeeasy
- OLTP and OLAP workloadseasy
- Why warehouses store columnseasy
- Facts and dimensionseasy
- Star versus snowflake schemaeasy
- Slowly changing dimension type 1easy
- ETL compared with ELTeasy
- Snowflake storage and computeeasy
- Loading files as they landeasy
- Cost of a BigQuery scaneasy
- SELECT * in BigQueryeasy
- Kimball and Inmon approacheseasy
- A warehouse slice for one teameasy
- A measure you can always sumeasy
- Pointing dbt at raw tableseasy
- A small mapping table in dbteasy
- View or table materializationeasy
- Rebuilding an incremental modeleasy
- Reusing SQL logic in dbteasy
- Where dbt keeps connection detailseasy
- Installing dbt_utilseasy
- Layers in a dbt projecteasy
- Seeing the SQL dbt really runseasy
- What the _delta_log folder iseasy
- Row format or column formateasy
- One copy, many engineseasy
- Exploring Parquet on a laptopeasy
- Folders named dt=2026-10-01easy
- Schema-on-read and schema-on-writeeasy
- Sending warehouse data back to the CRMeasy
- Selecting 3 of 200 columnseasy
- What Delta Lake adds to Parqueteasy
Medium 67
- Why use ref() in dbtmedium
- How Parquet skips datamedium
- Undoing a bad loadmedium
- LIMIT and BigQuery costmedium
- Idle Snowflake warehouse costmedium
- Filtering new rows in dbtmedium
- Detecting stale source datamedium
- Running a dbt project in Airflowmedium
- dbt snapshot strategiesmedium
- A schema change that breaks no onemedium
- Rerunning COPY on the same foldermedium
- Warning before failing on stale sourcesmedium
- Queries slow on a streaming tablemedium
- Choosing the grain of a fact tablemedium
- Slowly changing dimension type 2medium
- Surrogate keys in dimensionsmedium
- Summing account balances over timemedium
- Comparing sales and returnsmedium
- Queries queue at month endmedium
- Credits after resizing a warehousemedium
- A repeated query returns instantlymedium
- Cloning a 5 TB database for testingmedium
- How Snowflake skips datamedium
- Querying JSON arrays in Snowflakemedium
- Sharing tables with a partnermedium
- Stopping full scans of a big tablemedium
- Rows from a repeated fieldmedium
- A dashboard that aggregates every minutemedium
- Storage cost for old partitionsmedium
- Redshift sort key for date filtersmedium
- Distributing a small dimensionmedium
- Speeding up a Redshift COPYmedium
- Querying S3 from Redshiftmedium
- Keeping the latest row per customermedium
- Applying a batch of changesmedium
- One big table for analystsmedium
- Hiding phone numbers from most usersmedium
- Keeping history of a source tablemedium
- What an ephemeral model doesmedium
- Updated rows in an incremental modelmedium
- Selecting a model and its parentsmedium
- dbt build compared with dbt runmedium
- Passing a start date into a modelmedium
- Smaller data in developmentmedium
- A one-off business rule testmedium
- The same check on many columnsmedium
- Tolerating a few bad rowsmedium
- Seeing which rows failed a testmedium
- Showing dashboards in dbt lineagemedium
- Permissions lost after each rebuildmedium
- Rerunning after a failuremedium
- A write with an extra columnmedium
- Adding a column on purposemedium
- Old snapshots fill object storagemedium
- Filtering on a non-partition columnmedium
- Why Iceberg needs a catalogmedium
- Why a status column compresses wellmedium
- Snowflake and Iceberg togethermedium
- Applying CDC to a lake tablemedium
- Reading only changed rows downstreammedium
- Capping monthly Snowflake spendmedium
- Three different revenue numbersmedium
- Upserting a stream into a tablemedium
- Delta MERGE for new and changed rowsmedium
- Reading yesterday's table versionmedium
- Thousands of tiny Delta filesmedium
- Appending a new column to Deltamedium
Hard 40
- Millions of tiny fileshard
- Why table formats existhard
- Distinct users on billions of rowshard
- Iceberg hidden partitioninghard
- VACUUM and time travelhard
- Two writers, one lakehouse tablehard
- Copy-on-write vs merge-on-readhard
- Clustering for two filter columnshard
- Choosing a Redshift DISTKEYhard
- New column in a dbt incremental modelhard
- Changing a field type in a topichard
- A new CSV column shifts the datahard
- Fast single-order lookups in Snowflakehard
- A fact table with no measureshard
- Where the invoice number liveshard
- Many small flag columnshard
- Revenue tripled after a joinhard
- A Snowflake stream that keeps returning rowshard
- Billing for a ten-second queryhard
- On-demand or reserved slotshard
- A sale for an unknown producthard
- Building blocks of Data Vaulthard
- A query that spills to remote storagehard
- Data dropped two weeks agohard
- Staging tables that cost too muchhard
- Snapshot of a table with no updated_athard
- Duplicates after a rerunhard
- Rebuilding the last three dayshard
- dbt's microbatch strategyhard
- Faster CI for a 900-model projecthard
- Stopping a column type changehard
- Testing logic on fixed inputshard
- Changing partitioning on a live tablehard
- How Iceberg plans a queryhard
- Deleting a few rows cheaplyhard
- Reading a Delta table as Iceberghard
- Checking data before readers see ithard
- Monthly users from daily usershard
- A new column missing on readhard
- Time travel fails after VACUUMhard