A Data Vault Source is a Data Catalog record definition of type DV_SOURCE. It describes a logical feed that supplies rows to hubs, links, and satellites. Model tables reference the source name, not a raw database connection.
Each definition combines:
-
DV semantics — record source indicator, optional group for partial workflow loads
-
Physical layout — database table, CSV / Parquet / Iceberg, composite multi-table query, JSON extraction, or pipeline feed from a source model (
.hsm)
Sources live under namespace hop/{project}/sources in the FILE catalog storage directory (retail example: work/edw-catalog/) and open in the Data Catalog perspective. See Data Catalog for folder layout and refresh behavior.
Field layout is stored on structured homes (dvSource.fields and, for table-backed sources, physical table fields). Do not invent a parallel layout blob in catalog JSON.
Composite sources
A COMPOSITE DV_SOURCE is published from a source-model source query. It stores:
-
Projected field list (aliases used when mapping hub/sat attributes)
-
Path to the
.hsmfile and the query name (generation prefers live SQL from the model) -
Optional cached SQL when the model file is unavailable
Data Vault Update builds either a single-connection Table Input or a Merge Join pipeline depending on the query’s generation mode. See Source modeler overview.
JSON sources
A JSON DV_SOURCE is published from a source-model Source JSON object. It stores:
-
Projected field list (pass-through keys + JsonPath extractions)
-
Path to the
.hsmfile and the Source JSON name -
Parent reference (table / query / nested JSON source) and the JSON field to parse
At load time, Data Vault Update injects the generated parent + JsonInput graph, then:
-
Adds a Constant (or rename) for the vault record-source column when the feed uses a static
sourceIndicator -
For hubs, sorts and distincts identity fields so MergeRowsPlus CDC matches database/file sources on incremental loads
Retail sample: feed_order_shipment_tracking over order_shipment_event.payload → hub_order_shipment / link / sat.
Create and edit a source
-
Open the Hop project.
-
Open the Data Catalog perspective.
-
Under
hop/{project}/sources, create or open aDV_SOURCErecord. -
Set connection, table, and fields (database-backed sources).
-
Configure record source indicator and optional group.
The model toolbar Import sources action can also create catalog entries from live database metadata.
JSON structure (file catalog)
Each source is a JSON file. Important fields:
| Field | Description |
|---|---|
|
Must match folder path (for example |
|
Unique within namespace; used in hub Record sources and satellite Default record source |
|
|
|
Database connection name, schema, table ( |
|
Optional fixed record source value for every row (for example |
|
Optional source column for per-row record source (used when indicator is empty) |
|
Optional tag for Record source group on Data Vault Update |
|
Authoritative column layout (types, lengths, primary-key / FK flags, CSV options). Location refs ( |
Example path: retail-example/work/edw-catalog/hop/retail-example/sources/E2E-customer-hub.json.
Record source indicator at runtime
The plugin applies this precedence:
-
If source indicator is non-empty (after variable resolution), that static value is used for all rows.
-
Otherwise, if source indicator field is set, the pipeline reads that column and aliases it to the model’s record source column name.
-
If neither is set, no indicator is added from this source.
The target column name comes from .hdv model configuration unless a hub or link overrides it.
Database field layout
Database-backed sources store per-column metadata used by Load from source, hashing, and type checking. See Database source details for the field editor and Import from live schema.
Keeping the field list accurate is essential for Check model and detailed data type checking.
Groups and partial loads
Set group on a source when only some feeds should run in a batch (for example nightly vs hourly). On Data Vault Update, set Record source group to match; sources with a different or empty group are skipped for that run.
Validation
-
Catalog validation — feed-level checks, proposals, acknowledgements; see Resource definition validation
-
Check model — verifies every referenced source exists and fields are present; optional live schema type checks
When detailed type checking is active, database sources resolve types from the live table. Stored catalog metadata remains the baseline; drift from the live schema produces warnings.
Practical advice
-
Name sources after the business feed, not only the physical table.
-
Agree on record source value conventions across the program.
-
Use group for scheduled partial loads without maintaining separate models.
-
Prefer a static source indicator when all rows share one feed identity.
-
Refresh the catalog (F5) after editing JSON files on disk.
Related documents
-
Record Definition Input transform (reads data rows)
-
Hub metadata == Pipeline sources
Catalog type PIPELINE points at a Hop pipeline (.hpl) and an output transform. Field layout is the declared contract (from the source modeler pipeline card or catalog fields). Data Vault Update injects the pipeline with MetaInject using those declared output fields.
Typical authoring path:
-
Add a Source pipeline card on a
.hsmmodel. -
Design convert/filter/aggregate transforms; set the output transform.
-
Get fields from transform (or edit the declared field list), mark logical keys, Publish to catalog.
-
Bind hubs/links/satellites to the published feed name.