For data engineers
Pipeline tests on data that still joins
Transformations break on the relationships, not on the columns. DataNivra subsets by entity with referential closure and masks deterministically, so the joins your pipeline depends on survive — in synthetic bundles today and on your own warehouse through the agent.
The problem
Random sampling and per-table masking quietly break the data model a pipeline was written for.
- A 1% sample of each table strands child rows whose parents were not sampled.
- Masking each system on its own turns one customer into three different pseudonyms, so cross-system joins return nothing.
- Warehouse and lakehouse test environments are either empty or full copies nobody can afford.
Live sample — synthetic, runnable now
These rows come from the published Retail & E-commerce bundle: invented records, generated from a fixed seed, with every key intact.
order_number | channel | status | order_total | currency_code |
|---|---|---|---|---|
| ORD000000001 | APP | PARTIALLY_RETURNED | 127.26 | XTS |
| ORD000000002 | WEB | DELIVERED | 566.23 | XTS |
Masked by the real engine with a fixed public sample key: SHP000000001 becomes SHP098977906 in both storefront.shoppers.shopper_id and orders.orders.shopper_ref, so the join still holds after masking.
Run it yourself
Check referential integrity between orders and order lines in the Retail & E-commerce bundle. Python 3, standard library only.
import csv, io, urllib.request
BASE = "https://www.datanivra.com/downloads/packs/retail-ecommerce/2.0.0/synthetic"
def table(name):
with urllib.request.urlopen(f"{BASE}/{name}.csv") as response:
return list(csv.DictReader(io.StringIO(response.read().decode("utf-8"))))
orders = {o["order_number"] for o in table("orders.orders")}
lines = table("orders.order_lines")
dangling = [line["line_id"] for line in lines if line["order_number"] not in orders]
print(f"{len(lines)} order lines, {len(orders)} orders, {len(dangling)} dangling")Expected output:
11 order lines, 5 orders, 0 danglingFull tested example: Relational subsetting without orphan rows. Or open the synthetic playground for this pack — no account.
| Connector | Status | What the status means |
|---|---|---|
| Snowflake | Available now | Shipped in the standard agent and backed by recorded conformance evidence. |
| Databricks | Available now | Shipped in the standard agent and backed by recorded conformance evidence. |
| Google BigQuery | Available now | Shipped in the standard agent and backed by recorded conformance evidence. |
| Amazon Redshift | Coming next | Active implementation; not yet available for production use. |
| Azure Synapse Analytics | Coming next | Active implementation; not yet available for production use. |
| Teradata | Coming next | Active implementation; not yet available for production use. |
The outcome
- Subsets that start from the entities you choose and bring every parent and child they need.
- One person, one pseudonym, in every system — so cross-system joins return the same rows after masking.
- Load scripts and DDL for the targets you test on, with every CSV header checked against its table.
- Connector statuses you can rely on: the table on this page comes straight from the capability registry.
Security: production data stays home
Runs in your environment Row-level work happens only in your environment.
- Connectors read sources read-only; the agent proves the session cannot write before it reads.
- Discovery suggests sensitive columns from metadata — names, types and keys, never values.
- Deterministic masking uses keys held in your secret store, so the same input masks the same way in every system.
Customer-resident architecture · Verify it yourself · Security model
Your first action
- Run the relational subsetting example and compare naive sampling with an entity subset.
- Check the warehouse and lakehouse connector statuses below before planning a pilot.
- Start free and connect a supported source through the agent when you are ready.
Other teams: Developer · QA automation · Platform engineering · Healthcare · Finance · Insurance · Manufacturing · All teams