Skip to content
  • There are no suggestions because the search field is empty.

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

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 per DrivingKeyLink_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 calculates BG_ValidToTimestamp; with true, the table stores it.

Properties

The project properties Persist Validity and Create Result Views also apply.

Default Terms

Generated objects

These are the names on Microsoft SQL Server for the Link Satellite load_lsat with one dataflow:

RoleGenerated namePurpose
SourceRDV_LSAT_load_lsat_SourceReads the sources
DeduplicationRDV_LSAT_load_lsat_DeduplicationRemoves duplicate rows
MultiVersionRDV_LSAT_load_lsat_VersioningCombines the source versions
HashingRDV_LSAT_load_lsat_HashingCalculates the hash keys
HashingStorageRDV_LSAT_load_lsat_HashingTableStores the hashed rows
HashingLoaderRDV_LSAT_load_lsat_HashingLoaderFills the hashing table
RowCondensingRDV_LSAT_load_lsat_RowCondensingMerges equal versions
IncrementSourceRDV_LSAT_load_lsat_IncrementSourceFinds the new increment
IncrementRDV_LSAT_load_lsat_IncrementStores the increments
EmbryoLoaderRDV_LSAT_load_lsat_EmbryoLoaderAdds missing Link and Hub keys
DeltaRDV_LSAT_load_lsat_DeltaSelects new versions
LoaderRDV_LSAT_load_lsat_LoaderInserts the new versions
StorageRDV_LSAT_load_lsatLink Satellite table
ResultRDV_LSAT_load_lsat_ResultQuery 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 Type Auto.
  • 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_HK of 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 Mode None.
  • Databricks dbt and Snowflake dbt: the Link Satellite becomes the dbt models rdv_lsat_<model object name>_source and rdv_lsat_<model object name>. The model rdv_lsat_<model object name>_result exists 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_RowHash into 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 the CREATE TABLE statement. Table Compression, the tablespaces and the statistics properties also apply.
  • Foreign Key Mode Create Enforced exists 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