Data Engineer
Data modelling questions
113 questions on Data modelling for data engineers, easiest first.
Easy 39
- Fact and dimension tableseasy
- Purpose of a primary keyeasy
- Partitioning a big tableeasy
- Star vs snowflake schemaeasy
- Grain of a fact tableeasy
- Why use surrogate keyseasy
- SCD type that overwriteseasy
- Goal of normalisationeasy
- Primary key for order lineseasy
- Modelling doctors and patientseasy
- Several phones in one columneasy
- Several unique columnseasy
- Picking the natural keyeasy
- Reading crow's foot notationeasy
- The model with indexes and typeseasy
- Why denormalise a reporting tableeasy
- A fully additive measureeasy
- Invoice number in the fact tableeasy
- Why keep a date dimensioneasy
- One customer dimension for two factseasy
- A nullable coupon_ideasy
- Lookup table for status codeseasy
- Storing age or date of birtheasy
- Kimball versus Inmoneasy
- OLTP schema versus OLAP schemaeasy
- What "one big table" meanseasy
- Bronze, silver and gold layerseasy
- created_at and updated_at columnseasy
- Data type for phone numberseasy
- Job of a dbt staging modeleasy
- Where DynamoDB design startseasy
- Where a JSON column fitseasy
- GENERATED ALWAYS AS IDENTITYeasy
- Addresses for UAE customerseasy
- Schema on read versus schema on writeeasy
- Why a dimension has its own keyeasy
- Slowly changing dimension type 1easy
- Kimball and Inmon approacheseasy
- Layers in a dbt projecteasy
Medium 43
- Tracking customer address historymedium
- Revenue doubled after a joinmedium
- Keeping just the previous valuemedium
- Data Vault building blocksmedium
- Product name in order itemsmedium
- Department name in employeesmedium
- Changing a supplier phone numbermedium
- Monthly total of daily balancesmedium
- Storing a conversion rate in a factmedium
- Recording class attendancemedium
- Daily stock level per warehousemedium
- Tracking order milestonesmedium
- Many small flags on a factmedium
- Order date and ship date keysmedium
- Visits with several diagnosesmedium
- Which address was valid on a datemedium
- Fact arrives before its customermedium
- Storing who reports to whommedium
- Facts with a missing productmedium
- Rows in a daily stock snapshotmedium
- Keeping salary data apartmedium
- Comments on posts and photosmedium
- Enum type or lookup tablemedium
- Which customer key the fact storesmedium
- Spotting changed rows with a hashmedium
- dbt snapshot strategiesmedium
- Fiscal quarter of 15 February 2026medium
- Tax rates that change over timemedium
- Grain of an exchange rate tablemedium
- Comparing budget with actual salesmedium
- A DynamoDB key on order statusmedium
- Embedding every login eventmedium
- Wide or narrow sensor tablemedium
- Two clerks edit the same recordmedium
- Clustering a partitioned tablemedium
- Redshift distribution for a big joinmedium
- A schema change that breaks no onemedium
- Why add a semantic layermedium
- Hashing a business key for a surrogatemedium
- Keeping every status changemedium
- Slowly changing dimension type 2medium
- One big table for analystsmedium
- Keeping history of a source tablemedium
Hard 31
- Double counting in an SCD2 joinhard
- 3NF but not BCNFhard
- Combining orders and returns factshard
- Attributes that change every monthhard
- Shipping charge counted three timeshard
- Weights in a joint account bridgehard
- Fast reads of a category treehard
- A country with no region levelhard
- Sales in AED, INR and SARhard
- What we knew about a salaryhard
- Product specs as attribute rowshard
- Adding an id to an enrolment tablehard
- Only one current SCD2 rowhard
- Date key for a late-night Dubai orderhard
- Reprinted invoice shows a new pricehard
- Basket analysis on a daily summary facthard
- is_weekend for UAE dateshard
- Invoices pointing at another tenanthard
- A region rename in a wide tablehard
- Hash diff misses some changeshard
- Rebuilding a dimension renumbered keyshard
- Why Data Vault 2.0 uses hash keyshard
- Two accounts with the same emailhard
- Storing money as integer filshard
- Two tables that reference each otherhard
- A partition that never stops growinghard
- A product moved to a new categoryhard
- A company that buys and sells to youhard
- Building blocks of Data Vaulthard
- Snapshot of a table with no updated_athard
- Monthly users from daily usershard