DataEngr

Synthetic dataset, CC0 1.0

Customer snapshots

A dbt-style snapshot history of five synthetic customers and thirteen of their orders, built to show which joins rewrite history.

20 rows in 2 files, 2 tables, 2,687 bytes

Download and licence

Source: synthetic, written by hand by DataEngr. Licence: CC0 1.0, no attribution required.

Download includes the data and NOTICE.txt with its source, changes, licence and SHA-256. If you share it, follow that licence.

About this dataset

customer_snapshots.json models the output of a dbt snapshot on the timestamp strategy: one row per customer version, valid from dbt_valid_from until dbt_valid_to, with a null dbt_valid_to on the current row. orders.json holds thirteen orders in the retail-orders shape, with a customer_id added.

dbt_scd_id is a short readable label here (s1a, s1b and so on); dbt itself writes an md5 hash. The customers and their names are invented, and the rows were written by hand, not produced by a dbt run.

Schema

customer_snapshots

Grain: One row per recorded customer version, valid from dbt_valid_from until dbt_valid_to.

Every column of customer_snapshots, its type, whether it may be null and what it means
column_namecolumn_typenullmeaning
dbt_scd_idVARCHARNOThe snapshot row's ID: a short label here, an md5 hash in dbt.
customer_idVARCHARNOThe customer the row describes, repeated once per recorded version.
customer_nameVARCHARNOAn invented name.
segmentVARCHARNOOne of standard, premium, gold. The attribute that changes over time.
regionVARCHARNOAn Australian state code.
dbt_valid_fromDATENOThe day this version became valid.
dbt_valid_toDATEYESThe day it stopped being valid; null on the current row.
dbt_updated_atDATENOThe source's change date the snapshot saw, equal to dbt_valid_from on the timestamp strategy.
  • dbt_scd_id

    VARCHAR, never null

    The snapshot row's ID: a short label here, an md5 hash in dbt.

  • customer_id

    VARCHAR, never null

    The customer the row describes, repeated once per recorded version.

  • customer_name

    VARCHAR, never null

    An invented name.

  • segment

    VARCHAR, never null

    One of standard, premium, gold. The attribute that changes over time.

  • region

    VARCHAR, never null

    An Australian state code.

  • dbt_valid_from

    DATE, never null

    The day this version became valid.

  • dbt_valid_to

    DATE, may be null

    The day it stopped being valid; null on the current row.

  • dbt_updated_at

    DATE, never null

    The source's change date the snapshot saw, equal to dbt_valid_from on the timestamp strategy.

orders

Grain: One row per order.

Every column of orders, its type, whether it may be null and what it means
column_namecolumn_typenullmeaning
order_idVARCHARNOThe order.
customer_idVARCHARNOThe customer who placed it, matching customer_snapshots.customer_id.
order_dateDATENOThe day the order was placed, which picks the snapshot version it belongs to.
channelVARCHARNOOne of web, store. Where the order was placed.
amount_centsBIGINTNOOrder value in Australian cents.
  • order_id

    VARCHAR, never null

    The order.

  • customer_id

    VARCHAR, never null

    The customer who placed it, matching customer_snapshots.customer_id.

  • order_date

    DATE, never null

    The day the order was placed, which picks the snapshot version it belongs to.

  • channel

    VARCHAR, never null

    One of web, store. Where the order was placed.

  • amount_cents

    BIGINT, never null

    Order value in Australian cents.

Sample rows

customer_snapshots

All 7 rows of customer_snapshots.json
dbt_scd_idVARCHARcustomer_idVARCHARcustomer_nameVARCHARsegmentVARCHARregionVARCHARdbt_valid_fromDATEdbt_valid_toDATEdbt_updated_atDATE
s1ac1Priya RamanstandardNSW2026-01-012026-01-152026-01-01
s1bc1Priya RamanpremiumNSW2026-01-15NULL2026-01-15
s2ac2Bao WongstandardVIC2026-01-01NULL2026-01-01
s3ac3Ariana SinghstandardQLD2026-01-012026-01-062026-01-01
s3bc3Ariana SinghgoldQLD2026-01-06NULL2026-01-06
s4ac4Devon ClarkestandardWA2026-01-012026-01-152026-01-01
s5ac5Meilin ZhaostandardNSW2026-01-22NULL2026-01-22

orders

The first 8 of 13 rows of orders.json
order_idVARCHARcustomer_idVARCHARorder_dateDATEchannelVARCHARamount_centsBIGINT
o1c12026-01-05web5000
o2c12026-01-10store3000
o3c12026-01-15web8000
o4c12026-01-25web2000
o5c22026-01-04store4000
o6c22026-01-20web6000
o7c32026-01-02web4500
o8c32026-01-04store1500

What is wrong with it on purpose

Files and provenance

Source
Synthetic, written by hand by DataEngr
How it was made
DataEngr wrote each row by hand for the dbt snapshots field note; no generator or seed was used.
Rows last changed
2 October 2026
Licence review
DataEngr, 20 October 2026: DataEngr wrote every row itself; no third-party source, person or record is in the data, so CC0 1.0 applies, the licence the site gives its own synthetic data.
Package
customer-snapshots.zip, 3,994 bytes, SHA-256 851fe43159da97645c6f1948d5e25dd83d175f68b5451a5ce4a2265f093a0cf6
Every file in the package, its rows, its size in bytes and its SHA-256
filewhat it holdsrowsbytessha256
customer_snapshots.jsonSeven snapshot rows for five customers.71,34424a893d6af301d11159ac37839c61a2eb8bc1948e6fc7fd5ef1aa960491172fc
orders.jsonThirteen orders from the same five customers.131,34376bd49f9337eee36ec3871b18a7d1801610aa6fa42afdda2eca3188b30cc9e87

Run a pipeline on this