Link Satellite
Applies to
Platform: Microsoft SQL Server · Snowflake · Snowflake dbt · Databricks · Databricks dbt · Fabric Lakehouse · Fabric Warehouse · Oracle
Architecture: Data Vault
A Link Satellite stores the descriptive data of a Link's rows and its history in a table of the Raw Vault layer. Use it for attributes that belong to a relationship, such as the data of a loyalty card's holder, or to track which relationship of a Driving Key Link is current. After each load, the result view shows every version of each Link row with its validity.
Sources and relationships
A Link Satellite reads Stages, RawVault Composites and Store Entities of a linked Data Store project, in one or more dataflows. It has exactly one relationship to a Link, Driving Key Link or Hierarchical Link, and its foreign-key terms must be mapped. The foreign-key terms are the business keys of the Link's Hubs. PIT, Current View, History View, BusinessVault Composite, Vault Out and the Business Vault types can read a Link Satellite.
Create a Link Satellite
- With the wizard: open the menu of a Stage, RawVault Composite or Store Entity, choose Automate and then Create Link Satellite. Its steps are Create Model Object, Create Dataflow, Create Relations, Map Foreign Key Terms, Map Selected Terms and Add to View. See Create a Model Object with the wizard.
- Manually: create a model object of type Link Satellite in the Raw Vault layer, add a relationship to the Link, create a dataflow set, add the source model object and map the foreign-key terms and the descriptive terms.
Historization
The loader inserts a new version of a Link row when its row hash BG_RowHash differs from the current version. The new version starts at the load timestamp, the previous version ends there, and the current version ends at End of Universe. An unchanged row adds no version, and the loader never deletes or updates rows.
- The row hash covers the descriptive terms. Business keys, foreign keys, Default Terms and the terms listed in Excluded from Delta Detection are not part of it. See BG_RowHash.
- On a Driving Key Link, the Link Satellite also carries
DrivingKeyLink_HK. Its row hash includes the business keys of the relationships that are not driving, and its versions end perDrivingKeyLink_HK. A new relationship of the same driving key therefore ends the version of the previous relationship. See Driving Key Link. - With Persist Validity
false, the result view calculatesBG_ValidToTimestamp; withtrue, the table stores it.
Properties
- Implementation Type:
Permanentonly. - Foreign Key Mode: whether the table gets a foreign key to the Link table. With
Create Disabled, the default, it is created and disabled. - Load Caching: empty (default) or
Hashing, which stores the hashing view in a table before the loader runs. - Increment Management Type:
Auto(default) orUser, for an incremental load withBG_IncrementalFilter. See Configure an incremental load. - Custom Singleton Values: values of the unknown-member row.
- Excluded from Delta Detection: terms that are stored but do not start a new version.
- Version Valid From Term, per dataflow model object: loads the versions the source delivers. See Configure a multi-version load.
- Deduplication Method and Sort Order within Partition, per dataflow.
- Use Embryo Loader, on the relationship: inserts Link keys that the Link does not hold yet. When the Link's own relationships also use the Embryo Loader, it inserts the missing Hub keys too.
The project properties Persist Validity and Create Result Views also apply.
Default Terms
Link_HK: the key of the Link row, calculated from the foreign-key terms.DrivingKeyLink_HK: only on a Driving Key Link, the key of the driving relationships.BG_ValidFromTimestamp: start of the version. WithLink_HKit forms the primary key.BG_ValidToTimestamp: end of the version.BG_RowHash: hash of the descriptive terms, compared with the current version.BG_IncrementalFilter: source term for an incremental load; not stored in the table.BG_LoadTimestampandBG_SourceSystem: the load that inserted the row and its source system, empty unless you map it.BG_DataQuality_ID,BG_ErrorCountandBG_ErrorDescription: hidden terms of the data quality objects.
Generated objects
These are the names on Microsoft SQL Server for the Link Satellite load_lsat with one dataflow:
| Role | Generated name | Purpose |
|---|---|---|
| Source | RDV_LSAT_load_lsat_Source | Reads the sources |
| Deduplication | RDV_LSAT_load_lsat_Deduplication | Removes duplicate rows |
| MultiVersion | RDV_LSAT_load_lsat_Versioning | Combines the source versions |
| Hashing | RDV_LSAT_load_lsat_Hashing | Calculates the hash keys |
| HashingStorage | RDV_LSAT_load_lsat_HashingTable | Stores the hashed rows |
| HashingLoader | RDV_LSAT_load_lsat_HashingLoader | Fills the hashing table |
| RowCondensing | RDV_LSAT_load_lsat_RowCondensing | Merges equal versions |
| IncrementSource | RDV_LSAT_load_lsat_IncrementSource | Finds the new increment |
| Increment | RDV_LSAT_load_lsat_Increment | Stores the increments |
| EmbryoLoader | RDV_LSAT_load_lsat_EmbryoLoader | Adds missing Link and Hub keys |
| Delta | RDV_LSAT_load_lsat_Delta | Selects new versions |
| Loader | RDV_LSAT_load_lsat_Loader | Inserts the new versions |
| Storage | RDV_LSAT_load_lsat | Link Satellite table |
| Result | RDV_LSAT_load_lsat_Result | Query view with validity |
- Loaders are stored procedures; the Link Satellite table, the hashing table and the increment table are tables; all other objects are views.
- The deduplication view exists only with a Deduplication Method other than
None. - The versioning and row-condensing views exist only with a Version Valid From Term.
- The hashing table and hashing loader exist only with Load Caching
Hashing. - The increment table exists only with an incremental load, that is, when a dataflow maps
BG_IncrementalFilter; the increment source view only with Increment Management TypeAuto. - The embryo loader exists only when Use Embryo Loader is true on the relationship. It runs before the loader.
- The result view exists only with Create Result Views; without it, Persist Validity must be true.
- With several dataflows, all objects except the table and the result view exist once per dataflow, with the dataflow name in their names.
- The table script inserts the unknown-member row with a
Link_HKof zeros. The result view hides it.
With the default settings, a load runs this chain:
sources -> _Source -> _Hashing -> _Delta -> _Loader _Loader -> RDV_LSAT_load_lsat -> _Result _Result -> _Delta (current versions)
The delta view keeps the source rows whose Link_HK and BG_RowHash do not match a current version in the result view. The loader inserts them with the load timestamp as BG_ValidFromTimestamp. The optional objects sit in the same places as in a Satellite: _Deduplication and _Versioning before _Hashing, _HashingTable or _RowCondensing after it, and _Increment filters _Source.
Example
The Link Satellite load_lsat on Microsoft SQL Server reads the Stage LOYALTYCARD joined with the Stage CUSTOMER. It has a relationship to the Link common_loyaltycard_customer between customers and loyalty cards, and it stores the customer's data, for example CUSTOMER. Persist Validity is false. The loads deliver these rows:
- Load 1 on 2026-10-28 08:00: card 501 of Contoso Ltd (customer 1) and card 502 of Fabrikam AG (customer 2).
- Load 2 on 2026-10-29 08:00: customer 1 is renamed to Contoso Group, and card 503 of the new customer 3 Northwind arrives.
- Load 3 on 2026-10-30 08:00: the same rows as load 2.
Check the result
Query the result view with the keys of the Link, here in the schema rv:
SELECT l.FK_load_customer_hub_CUSTOMER_CUSTOMER_ID AS CUSTOMER_ID,
l.FK_common_loyaltycard_LOYALTYCARD_LOYALTYCARD_ID
AS LOYALTYCARD_ID,
s.CUSTOMER, s.BG_ValidFromTimestamp, s.BG_ValidToTimestamp
FROM rv.RDV_LSAT_load_lsat_Result AS s
JOIN rv.RDV_LNK_common_loyaltycard_customer_Result AS l
ON l.Link_HK = s.Link_HK
ORDER BY CUSTOMER_ID, s.BG_ValidFromTimestamp;
This is the result after load 3, with the column names shortened:
CUSTOMER_ID CARD CUSTOMER ValidFrom ValidTo 1 501 Contoso Ltd 2026-10-28 08:00 2026-10-29 08:00 1 501 Contoso Group 2026-10-29 08:00 9999-12-31 00:00 2 502 Fabrikam AG 2026-10-28 08:00 9999-12-31 00:00 3 503 Northwind 2026-10-29 08:00 9999-12-31 00:00
- The new name of customer 1 started a second version of the Link row of card 501 and ended the first one.
- Load 3 inserted no row.
For a Link Satellite on a Driving Key Link, see the example in Driving Key Link.
Platform differences
- Persist Validity is true by default on Snowflake, Snowflake dbt, Databricks, Databricks dbt, Fabric Lakehouse and Fabric Warehouse, and false on Microsoft SQL Server and Oracle.
- Snowflake: names are in capitals, and the loader is a stored procedure. A load control task calls it. The dataflow properties Use Stream and Warehouse Placeholder Variable Name apply.
- Databricks and Fabric Lakehouse: table and view names are in lowercase, and the loader is the notebook
RDV_LSAT_<model object name>_Loader. The properties File Format, Optimization Method, Optimization Method Columns and Use Sequential Dataflow Execution apply. Fabric Lakehouse allows only Foreign Key ModeNone. - Databricks dbt and Snowflake dbt: the Link Satellite becomes the dbt models
rdv_lsat_<model object name>_sourceandrdv_lsat_<model object name>. The modelrdv_lsat_<model object name>_resultexists only when Create Result Views is true; the default on dbt is false. Load Caching, Increment Management Type and Use Embryo Loader are not available. - Fabric Warehouse: the same objects as on Microsoft SQL Server, deployed by notebooks.
- Oracle: names are in capitals, and the loader is a PL/SQL package. Hash Group Size splits the input of
BG_RowHashinto groups of terms; with the value 2, every two terms are hashed together and the results are hashed again. Partition Clause adds its text to theCREATE TABLEstatement. Table Compression, the tablespaces and the statistics properties also apply. - Foreign Key Mode
Create Enforcedexists only on Microsoft SQL Server and Oracle.
Limitations
- A Link Satellite has exactly one relationship to a Link, Driving Key Link or Hierarchical Link. Business keys on a Link Satellite raise a validation warning.
- With a Version Valid From Term, a Link Satellite allows one dataflow, one dataflow set and no aggregation.
- A dataflow delivers at most one row per Link row and load. Two rows with different values for a new Link row make the loader fail with a primary key violation.
Release differences
- Generator 2.2: Increment Management Type, Use Embryo Loader and Persist Validity are available.
- Generator 2.3: Custom Singleton Values is available, and Hash Group Size on Oracle.
- Generator 2.4: Excluded from Delta Detection is available. On a Driving Key Link, versions end per
DrivingKeyLink_HK.
Related articles
- Previous: Link, Driving Key Link, Hierarchical Link
- Next: Configure a multi-version load, Configure an incremental load
- Reference: Link_HK, DrivingKeyLink_HK, BG_RowHash, Excluded from Delta Detection (Model Object), Version Valid From Term (Dataflow Model Object), Persist Validity (Project), Create Result Views (Project), Custom Singleton Values (Model Object), Hash Group Size (Model Object), Foreign Key Mode (Model Object)
- See also: Satellite, Change detection and historization, How biGENIUS-X builds hash values, Embryo Loader, Create a Model Object with the wizard