You have a nested JSON file and no idea what's in it.
Treivu reads a sample and tells you — every field, how often it's really there, and which rules actually hold. Then it writes them out as dbt, Soda, Great Expectations, or JSON Schema.
Here's what it produces
A nested order payload — orders_sample.json, 2,000 records
order.id- 1.00
not_nullpresent in 100% of 2000 records
- 0.85
unique2000 distinct values across 2000 present records — unique in this sample, which is not proof it is unique in the source
- 1.00
order.status- 1.00
not_nullpresent in 100% of 2000 records
- 0.95
allowed_valuesonly 4 distinct values across 2000 present records
- 1.00
order.total_cents- 1.00
not_nullpresent in 100% of 2000 records
- 0.85
rangeobserved numeric range 499–48900 across 2000 present records
- 0.90
type_should_beall 2000 present values are number
- 1.00
order.customer.email- 1.00
not_nullpresent in 100% of 2000 records
- 0.95
matches_regex100% of 1996 present records match email format
- 1.00
order.created_at- 1.00
not_nullpresent in 100% of 2000 records
- 0.95
matches_regex100% of 2000 present records match iso_datetime format
- 1.00
order.line_items[]- 0.95
array_non_emptyarray populated in 100% of 2000 records (min length 1, max 14)
- 0.95
order.line_items[].sku- 1.00
not_nullpresent in 100% of 5400 array elements
- 1.00
order.line_items[].quantity- 1.00
not_nullpresent in 100% of 5400 array elements
- 0.85
rangeobserved numeric range 1–12 across 5400 present array elements
- 0.90
type_should_beall 5400 present values are number
- 1.00
order.line_items[].price_cents- 1.00
not_nullpresent in 99% of 5400 array elements
- 0.85
rangeobserved numeric range 199–12900 across 5346 present array elements
- 0.96
type_should_be96% of values are number; 4% are other types
- 1.00
Nothing proposed for order.discount_code. It's present in only 23% of records — not enough evidence for a rule that would hold. A check you'd have to delete is worse than no check.
Your file never leaves your browser. Only the profiling engine is downloaded.